ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ»

ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ» (https://forum.tk-chel.ru/index.php)
-   Система «АвтоГРАФ»: Программное обеспечение (https://forum.tk-chel.ru/forumdisplay.php?f=4)
-   -   Создание отчета с уровнем топлива интервалом в 5 минут (https://forum.tk-chel.ru/showthread.php?t=1491)

30.01.2012 14:06

Создание отчета с уровнем топлива интервалом в 5 минут
 
Подскажите как создать такой отчет в каком отображалось бы уровень топлива с интервалом 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

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

SK 30.01.2012 15:41

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

Редактор:
Нажмите для просмотра содержимого...


Результат:
Нажмите для просмотра содержимого...

SK 30.01.2012 15:43

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

30.01.2012 17:32

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

Добавлено через 4 минуты
Цитата:

Сообщение от latypovar (Сообщение 23499)
можно поинтересоваться - зачем?
ИМХО - гораздо информативнее будет в отчет вывести график уровня топлива

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

SK 30.01.2012 17:40

Вложений: 1
Цитата:

Сообщение от anriradex (Сообщение 23515)
Как ето оформить в 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

Цитата:

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

Учитывая, прошедшее время - видимо человек не особо и разбирался - что там и как...
Там еще и комментарии к коду есть (в примере отчета)...

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

anriradex 01.02.2012 16:04

Цитата:

Сообщение от SK (Сообщение 23738)
они еще куда-то в 1С должны сохраняться и потом как-то использоваться в других документах/отчетах/обработках ?

Планируется чтобы в документ учетный лист тракториста-машиниста попадал уровень топлива на определенное время (начало конц работи) соответственно списание расхода етого топлива в бухгалтерии.

SK 01.02.2012 17:50

Цитата:

Сообщение от anriradex (Сообщение 23745)
Цитата:

Сообщение от SK (Сообщение 23738)
они еще куда-то в 1С должны сохраняться и потом как-то использоваться в других документах/отчетах/обработках ?

Планируется чтобы в документ учетный лист тракториста-машиниста попадал уровень топлива на определенное время (начало конц работи) соответственно списание расхода етого топлива в бухгалтерии.

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

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

latypovar 01.02.2012 19:07

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

anriradex 02.02.2012 08:48

Таймаут на 10 дней он чухнул в отпуск (сначала нечего не делал а потом внезапно в отпуск)

SK 02.02.2012 09:05

Цитата:

Сообщение от anriradex (Сообщение 23790)
Таймаут на 10 дней он чухнул в отпуск (сначала нечего не делал а потом внезапно в отпуск)

Потому и не делал, что лень перед самым отпуском - т.к. один черт до отпуска не доделать... знакомая картина...

anriradex 16.02.2012 09:01

Цитата:

Сообщение от SK (Сообщение 23503)
Такая штука делается за 180 секунд из отчета "График уровня топлива".

Редактор:
Нажмите для просмотра содержимого...


Результат:
Нажмите для просмотра содержимого...

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

storm 16.02.2012 09:20

http://forum.tk-chel.ru/showthread.php?t=558

anriradex 16.02.2012 13:51

Цитата:

Сообщение от storm (Сообщение 24663)

НЕ могу зайти

SK 16.02.2012 14:14

Цитирую:
Цитата:

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

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

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

Спасибо.

Цитата:

Сообщение от storm (Сообщение 7169)
нужно во вкладку код вставить функцию

Код:

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 запись, остальные прячутся

Цитата:

Сообщение от AutoKirov (Сообщение 7187)
Ну, вроде всё правильно, спасибо:
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;

Цитата:

Сообщение от storm (Сообщение 7228)
Цитата:

Сообщение от AutoKirov (Сообщение 7187)
if LineNum mod 20 = 0 then

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


anriradex 16.02.2012 14:49

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

SK 16.02.2012 14:55

Цитата:

Сообщение от anriradex (Сообщение 24682)
Так не подходит. Тут получается что когда есть уровень каждые 5 сек. а есть каждые 5 мин если отфильтровать каждый 20-ая запись в первом случае останется каждую минуту в другом каждый час.

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

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

storm 17.02.2012 05:01

Цитата:

Сообщение от anriradex (Сообщение 24682)
Так не подходит. Тут получается что когда есть уровень каждые 5 сек. а есть каждые 5 мин если отфильтровать каждый 20-ая запись в первом случае останется каждую минуту в другом каждый час.

это пример, как выводить только нужные записи, в вашем случае нужно просто поменять передаваемую переменную на дату-время, сохранять значение в какую-то переменную и в условии вывода поменять проверку на результат разницы сохраненного значения и передаваемого

anriradex 27.02.2012 14:13

Вложений: 1
Цитата:

Сообщение от SK (Сообщение 23791)
Потому и не делал, что лень перед самым отпуском - т.к. один черт до отпуска не доделать... знакомая картина...

Приступил к работе. стоит задача чтоб 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

Цитата:

Сообщение от anriradex (Сообщение 25500)
Да есть. Ну например чтоб через 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

Цитата:

Сообщение от csistra (Сообщение 25566)
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

Цитата:

Сообщение от csistra (Сообщение 25680)
динамику роста размера базы посмотрите

Имеете ввиду базу 1С?

csistra 01.03.2012 09:41

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

anriradex 19.03.2012 16:23

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

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


Текущее время: 13:06. Часовой пояс GMT.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot