PDA

Просмотр полной версии : Создание отчета с уровнем топлива интервалом в 5 минут


anriradex
30.01.2012, 14:06
Подскажите как создать такой отчет в каком отображалось бы уровень топлива с интервалом 5 минут на протяжении суток?
Например:
ID Название механизма Время Уровень топлива
125600 Трактор 45623 ОР 14-10 358
125600 Трактор 45623 ОР 14-15 340
125600 Трактор 45623 ОР 14-20 305
164520 Трактор 12365 ОР 14-25 288
164521 Трактор 12563 ОР 14-30 255
135472 Трактор 45623 ОР 14-35 220
135472 Трактор 45623 ОР 14-40 400
135472 Трактор 45623 ОР 14-45 425
135472 Трактор 45623 ОР 14-50 430
135472 Трактор 45623 ОР 14-55 410

Добавлено через 1 минуту
Подскажите как создать такой отчет в каком отображалось бы уровень топлива с интервалом 5 минут на протяжении суток?
Например:
ID Название механизма Время Уровень топлива
125600 Трактор 45623 ОР 14-10 358
125600 Трактор 45623 ОР 14-15 340
125600 Трактор 45623 ОР 14-20 305
164520 Трактор 12365 ОР 14-25 288
164521 Трактор 12563 ОР 14-30 255
135472 Трактор 45623 ОР 14-35 220
135472 Трактор 45623 ОР 14-40 400
135472 Трактор 45623 ОР 14-45 425
135472 Трактор 45623 ОР 14-50 430
135472 Трактор 45623 ОР 14-55 410

Добавлено через 1 минуту
Сутки имеются в виду с 8-00 по 8-00 (7-59)

latypovar
30.01.2012, 15:17
можно поинтересоваться - зачем?
ИМХО - гораздо информативнее будет в отчет вывести график уровня топлива

SK
30.01.2012, 15:41
Такая штука делается за 180 секунд из отчета "График уровня топлива".

Редактор:
http://gyazo.com/0519d7148f92ec81d79db06841b0f9c2.png

Результат:
http://gyazo.com/301c4d79ff4c5cd67ae210fd9830ffed.png

SK
30.01.2012, 15:43
Примечание:
1. Можно оформить как угодно и вставить любые доп. поля.
2. Разбивку по 5 (или N) минут не обещаем, т.к. многое зависит от интервала и алгоритма опроса ДУТ. Таблица будет показывать все записи, сделанные по данному ДУТ (они же используются при построении графика).

anriradex
30.01.2012, 17:32
Как ето оформить в AGReports в форме таблици с последующем експортом в dbf.(c Автографа передаются даные с интервалом в 3 минуты, если конечно он включен)

Добавлено через 4 минуты
можно поинтересоваться - зачем?
ИМХО - гораздо информативнее будет в отчет вывести график уровня топлива

Нужно именно в цифровом виде для того чтоб другая програма (в даном случае 1С) смогла для себя взять за етот период нужний ей уровень топлива за сутки ето может бить любое время

SK
30.01.2012, 17:40
Как ето оформить в AGReports в форме таблици с последующем експортом в dbf.(c Автографа передаются даные с интервалом в 3 минуты, если конечно он включен)
А он (AGReports) и так берет данные из DBF-файла, создаваемого ПО АвтоГРАФ по его запросу.

Кроме того, нет никаких проблем написать на внутреннем языке 1С небольшую процедуру или отчет, которая будет сама запрашивать данные у ПО через любые интервалы времени. При этом ПО будет выгружать данные как раз-таки в DBF-файл. AGreports тут вообще не нужен. 1С + ПО АвтоГРАФ - не нужно лишних прослоек.

У Вас 7-ка или 8-ка ?
У Вас есть 1С-программер ?

Пример для 7.7 - во вложении.

anriradex
01.02.2012, 11:13
хочу научить нашего програмера 1С вибирать то что мне нужно. Но ето или слишком сложно для него или вцелом не легко. Можно ли както помочь нам в етом(задача которая стоит в названии темы)?

SK
01.02.2012, 14:40
хочу научить нашего програмера 1С вибирать то что мне нужно. Но ето или слишком сложно для него или вцелом не легко. Можно ли както помочь нам в етом(задача которая стоит в названии темы)?
Учитывая, прошедшее время - видимо человек не особо и разбирался - что там и как...
Там еще и комментарии к коду есть (в примере отчета)...

Ну а вообще: сейчас в ТехноКом-е нет штатного 1С-программиста. За ненадобностью. В любом городе есть масса представителей 1С, которые помогут с написанием любого нужного отчета, документа, справочника и т.п.
Вам же мало получить данные, они еще куда-то в 1С должны сохраняться и потом как-то использоваться в других документах/отчетах/обработках ?

anriradex
01.02.2012, 16:04
они еще куда-то в 1С должны сохраняться и потом как-то использоваться в других документах/отчетах/обработках ?
Планируется чтобы в документ учетный лист тракториста-машиниста попадал уровень топлива на определенное время (начало конц работи) соответственно списание расхода етого топлива в бухгалтерии.

SK
01.02.2012, 17:50
они еще куда-то в 1С должны сохраняться и потом как-то использоваться в других документах/отчетах/обработках ?
Планируется чтобы в документ учетный лист тракториста-машиниста попадал уровень топлива на определенное время (начало конц работи) соответственно списание расхода етого топлива в бухгалтерии.
Я Вам про это и говорю... мало получить эти данные, их еще надо записать в некие специфичные документы из Вашей специфичной нетиповой конфигурации... Даже имея 1С-ника - надо знать: как она вообще устроена и работает - эта конфигурация...

В чем затык возник у Вашего программера ?
Он что-нибудь пытался сделать ? Хотелось бы посмотреть - что он написал.

latypovar
01.02.2012, 19:07
Напишите,что получилось, а что нет, я тоже спрошу своих программеров1с, наверняка они помогут..

anriradex
02.02.2012, 08:48
Таймаут на 10 дней он чухнул в отпуск (сначала нечего не делал а потом внезапно в отпуск)

SK
02.02.2012, 09:05
Таймаут на 10 дней он чухнул в отпуск (сначала нечего не делал а потом внезапно в отпуск)
Потому и не делал, что лень перед самым отпуском - т.к. один черт до отпуска не доделать... знакомая картина...

anriradex
16.02.2012, 09:01
Такая штука делается за 180 секунд из отчета "График уровня топлива".

Редактор:
http://gyazo.com/0519d7148f92ec81d79db06841b0f9c2.png

Результат:
http://gyazo.com/301c4d79ff4c5cd67ae210fd9830ffed.png

Как сделать тоже самое только с интервалом в 5 минут (а то оно делает с интервалом 1 мин. а по некоторых ТС вообще по 5 сек.) Ето подходит просто файл с даными имеет очень много строк ето мне не подходит

storm
16.02.2012, 09:20
http://forum.tk-chel.ru/showthread.php?t=558

anriradex
16.02.2012, 13:51
http://forum.tk-chel.ru/showthread.php?t=558

НЕ могу зайти

SK
16.02.2012, 14:14
Цитирую:
Привет всем!
Клиент попросил состряпать ему отчёт по температуре, но не график, а табличкою, мол, три колонки, датавремя, датчик1, датчик2 (датчики не ванвайр, а те, которые в периодическом счётчике). С шаблоном проблем не было, но вот, возник вполне логичный вопрос: А нельзя ли оставить только каждую, к примеру, двадцатую запись, а остальные выкинуть безвозвратно, а то за месяц если печатать, то несколько сильно много бумаги уходит и нести этот отчёт потом тяжело :)

Так вот, я не могу придумать, как ненужные записи выкинуть. Есть идея отсортировать, чтоб ненужные в конце были, а потом откусить... Отсортировать - отсортирую, а как откусить????

Ну, или ещё какие-то идеи?

Спасибо.

нужно во вкладку код вставить функцию

procedure SetVisible(LineNum: integer);
var
height : double;
begin
if (LineNum % 20 = 1) then
begin
height := 20;
end
else
begin
height := 0;
end;
MasterData1.height :=height;
Memo1.height :=height;
Memo2.height :=height;
end;

вместо
MasterData1.height :=height;
вам нужно подставить имя вашей мастердаты
вместо
Memo1.height :=height;
Memo2.height :=height;
перечислить все названия ячеек, которые находятся в мастердате(абсолютно все, даже невидимые, если есть)

а потом вызвать из любой ячейки мастердаты эту функцию
[SetVisible(<Line>)]

вроде все правильно накидал, проверяйте, теперь должна выводиться каждая 20 запись, остальные прячутся

Ну, вроде всё правильно, спасибо:
procedure SetVisible(LineNum: integer);
var height: double;
begin
height:= 0;
if LineNum mod 20 = 0 then
height:= 20;
MasterData1.height:= height;
Memo1.height :=height;
Memo2.height :=height;
Memo3.height :=height;
end;

if LineNum mod 20 = 0 then
тут бы я все таки оставил сравнение с единичкой, так как нумерация строк начинается с 1, у вас вывод начнется только с 20 строки, то есть первые 19 полностью обрежутся, но в принципе, наверное, не критично

anriradex
16.02.2012, 14:49
Так не подходит. Тут получается что когда есть уровень каждые 5 сек. а есть каждые 5 мин если отфильтровать каждый 20-ая запись в первом случае останется каждую минуту в другом каждый час.

SK
16.02.2012, 14:55
Так не подходит. Тут получается что когда есть уровень каждые 5 сек. а есть каждые 5 мин если отфильтровать каждый 20-ая запись в первом случае останется каждую минуту в другом каждый час.
А если будет каждые 12 минут ???
Тогда пишите скрипт, который будет хранить предыдущее выведенное время в переменной и при переборе пропускать записи, отстоящие от него на "интервал нечувствительности". Далее выводится первая запись за пределами интервала нечувствительности (5 минут в Вашем случае). Потом время из выведенной записи записывается в переменную и так далее...
Работать будет медленнее, естественно, т.к. будут множественные операции сравнения времени в записях. Но ничего особо сложного.

Либо писать свой запрос к файлу с данными об уровне топлива.

storm
17.02.2012, 05:01
Так не подходит. Тут получается что когда есть уровень каждые 5 сек. а есть каждые 5 мин если отфильтровать каждый 20-ая запись в первом случае останется каждую минуту в другом каждый час.
это пример, как выводить только нужные записи, в вашем случае нужно просто поменять передаваемую переменную на дату-время, сохранять значение в какую-то переменную и в условии вывода поменять проверку на результат разницы сохраненного значения и передаваемого

anriradex
27.02.2012, 14:13
Потому и не делал, что лень перед самым отпуском - т.к. один черт до отпуска не доделать... знакомая картина...
Приступил к работе. стоит задача чтоб 1С нашла в АВТОГРАФе и взяла себе уровни топлива в конкретное врямя 1647 тоисть нужен уровень топлива на 9-13 и 11-45 и вставить его в учетный лист такториста машиниста. Какие команды для етого нужно?

SK
27.02.2012, 15:13
В смысле, команды ? У Вас есть 1С-программер ?

anriradex
27.02.2012, 16:53
Да есть. Ну например чтоб через OLE взять уровень топлива на начало рейса "EntryTank1StartLevel", уровень топлива на конец рейса "EntryTank1EndLevel", пробег рейса CrdEntryDistance и моточасов в движении ???(не нашол) но у нас конкретный рейс 9-13 по 11-45. Правильно, или как? Если не так поправте меня.

SK
27.02.2012, 20:49
Да есть. Ну например чтоб через OLE взять уровень топлива на начало рейса "EntryTank1StartLevel", уровень топлива на конец рейса "EntryTank1EndLevel", пробег рейса CrdEntryDistance и моточасов в движении ???(не нашол) но у нас конкретный рейс 9-13 по 11-45. Правильно, или как? Если не так поправте меня.
И что мешает ?
Интервал времени с отключенной через OLE разбивкой на рейсы - и есть один единый рейс длиной в интервал расчета.

csistra
28.02.2012, 08:27
ГМ... или нет ХМ.... :)
Мне кажется вы не с той стороны заходите.
1-Опишите внятно что вы хотите получить на выходе. Т.е. какой вам необходим результат.
2-Разработаный алгоритм решения, который вы выбрали для решения.
Просто из того что я бегло прочитал скажу:
1-Я бы не стал брать данные с периодами 5 или еще сколько то минут. Это уже некорректно. Т.к. в рамках 1 рейса это нормально,а за период месяц эти 5 минут преврятятся уже в большую цифру.
2-Также я бы не стал загружать 1с первичкой..... Конечно автоматизация это классно, но не путем загрузки в бд кучи ненужного хлама.
3-Уж если это необходимо, то ваш путьдолжен проходить в промежуточную базу между 1с и автографом. И база на мой взгляд должны быть mssql. 1с и скл замечтательно общаются запросами. Да и промежуточная база пухнуть особо сильно не будет. .

Но это я уже свои мыслми излагаю

anriradex
28.02.2012, 12:49
1-Я бы не стал брать данные с периодами 5 или еще сколько то минут.
Ето был как один из вариантов для поиска 1С-кой нужного уровня топлива на определенное время. (В даном случае на 9-13 и 11-45)
Было решено не формировать отчет с уровнем топлива с интервалом в 5 минут а брать необходимые даные с помощю OLE непосредственно с АВТОГРАФа, неформируя еще одной дополнительной базы даных с уровнем топлива с интервалом в 5 минут.

SK
28.02.2012, 14:04
Уточнение:
Если данные берутся на начало и конец рейса, то нужно использовать
TripTankNStartLevel
TripTankNEndLevel

а не EntryTankNStartLevel

Entry... - это для другого.

anriradex
28.02.2012, 17:01
Наконец то свершилось. То что нужно(конкретную информацию) помаленьку тянем с АВТОГРАФа в 1С

csistra
29.02.2012, 07:08
Хозяин барин.... динамику роста размера базы посмотрите....

anriradex
29.02.2012, 13:44
динамику роста размера базы посмотрите
Имеете ввиду базу 1С?

csistra
01.03.2012, 09:41
да... Если у меня скл база припухает в месяц на пол гига.... то что же с 1с то будет.... Я то скл в любой момент обрежу по бекап, а 1с вы как вычищать то будете ????

anriradex
19.03.2012, 16:23
Чтоб не создавать новую тему напишу здесь.
Хочу ххххххххххххххххххххххххх ххххххххххххххххххххххххх хххххххххххх. Как ето сделать, точнее какую команду прописывать?

Предупреждение за оффтоп. Создайте новую тему.