gifts2017

Вариант реализации динамического табло в 1С 7.7

Опубликовал Юрий (1с2с) в раздел Программирование - Практика программирования

Позволяет отображать на экране (монитора или большого телевизора) результат работы требуемого отчета при изменении определенных данных без необходимости интерактивного участия пользователя

Предлагается следующий вариант реализации:

1. Добавляем нового пользователя, например: "Табло";

2. Добавляем новую константу: "ТребуетсяОбновитьТабло" (типа Булево или 0. 1);

3. Глобальный модуль:

Перем Табло Экспорт;     // в начале

Табло = СоздатьОбъект("Таблица");     // в конце

перед ПриНачалеРаботыСистемы():

Процедура ОбновитьТабло()
     Если Константа.ТребуетсяОбновитьТабло = Да Тогда
          Если ИмяПользователя() = "Табло" Тогда
               ОткрытьФорму("Отчет.аТабло");     // свое название отчета
          КонецЕсли;
     КонецЕсли;
КонецПроцедуры

в конце ПриНачалеРаботыСистемы():

Если ИмяПользователя() = "Табло" Тогда
     ОткрытьФорму("Отчет.аТабло");     // свое название отчета
КонецЕсли;
ОбработкаОжидания("ОбновитьТабло",10);

4. В определенных местах конфигурации, связанных с изменением интересующих данных (пр-ры ПриЗаписи() или ОбработкаПроведения()...):

Константа.ТребуетсяОбновитьТабло = Да;

 5. В отчете:

Процедура ПриОткрытии()
    Сформировать();
    Константа.ТребуетсяОбновитьТабло = Нет;
    СтатусВозврата(0);
КонецПроцедуры

до вывода чего-либо:

Табло.Очистить();

 

Для использования:

войти в базу под пользователем "Табло".

 

 

В итоге, после конструктивной критики:

1. Добавляем новую константу: "ТребуетсяОбновитьТабло";

2. В определенных местах конфигурации, связанных с изменением интересующих данных (пр-ры ПриЗаписи() или ОбработкаПроведения()...):

Константа.ТребуетсяОбновитьТабло = Да;

3. В отчете

Перем Таб;     // первой строкой

Если Константа.ТребуетсяОбновитьТабло = Да Тогда     // доп. условие
Таб.Очистить();     // до вывода чего-либо

Константа.ТребуетсяОбновитьТабло = Нет;

Таб = СоздатьОбъект("Таблица");     // 2 последние строки
Форма.ОбработкаОжидания("Сформировать", 10);

таблицу из отчета перенести в Общие или во внешний файл (внутреннюю не видит...)

видит...

 

Можно без константы, если нет желания вносить такие изменения в конфигурацию и достаточно ресурсов, чтобы гонять отчет "вслепую"...

 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. г. Казань Рустем Гумеров (Rustig) 15.03.11 10:12
простая реализация хорошей идеи
2. Епрст (Ёпрст) 15.03.11 12:15
да уж..
Вот когда автор наконец узнает, что ОбработкаОжидания есть штатно у любой формы, тогда весь этот бред с правкой глобальника и заведением пользователя окажется бесполезной тратой времени.
3. Юрий (1с2с) 15.03.11 12:48
(2) предложите свой вариант...
Исходные:
есть отчет, формирующий нужную таблицу.
Требуется:
при изменении определенных данных динамически отображать на отдельном экране результат работы этого отчета.
4. Епрст (Ёпрст) 15.03.11 13:59
(3) Форма.ОбработкаОжидания("Печать",10);
1с2с; vitapi; +2 Ответить 1
5. Александр Рытов (Арчибальд) 15.03.11 14:14
6. Епрст (Ёпрст) 15.03.11 14:24
(5) не всё коту масленница..
Да и весна, настроения нема.
7. Юрий (1с2с) 15.03.11 17:28
Дополнено в публикации с учетом (4)...
8. Епрст (Ёпрст) 15.03.11 17:36
>>>таблицу из отчета перенести в Общие или во внешний файл (внутреннюю не видит...)

Вранье.. ЕЩЕ как видит!
9. Юрий (1с2с) 15.03.11 17:49
10. Сергей (Che) Коцюра (CheBurator) 16.03.11 01:07
Модже все-таки не будем перерисовывать табло каждые ЭН секунд, а будем перерисовывать только тогда когда данные для табло изменились?
11. Александр Рытов (Арчибальд) 16.03.11 08:53
(7) Вот чем Ёпрст силен: было черт-те что, а теперь почти хорошая штука.
Еще 10 пост отработать - и вовсе круто будет ;)
12. Юрий (1с2с) 16.03.11 10:06
(10), (11) пункты 1, 2 и доп. условие из 3 в итоговом варианте?...
13. Сергей (Che) Коцюра (CheBurator) 16.03.11 12:14
(12)обработкаожидания и необходимость перерисовывать табло только при изменении данных - и рядом не стояли имхо
14. Юрий (1с2с) 17.03.11 01:42
(13)
1. Форма.ОбработкаОжидания запускает процесс формирования отчета с заданной периодичностью (пока открыта сама форма отчета);
2. В отчете первым же действием осуществляется контроль необходимости его формирования по значению константы, таким образом неинформативные "перерисовывания" исключаются...
(11)
...кстати, первоначальный вариант вполне рабочий...,
несколько строк в ГМ, особенно для конфигураций, не требующих типовых обновлений... не напрягает...
хотя, безусловно, итоговый вариант оптимален...
15. Сергей (Che) Коцюра (CheBurator) 18.03.11 21:28
(13) обоснуйте, зачем мне каждые, например, 10 секунд, перерисовывать табло (проверять, надо ли перерисовыват табло), если событие перерисовки может случаться ну допустим раз в час.. а может и 5 раз в минуту? хочется - чтобы табло перериосывалось ПО ФАКТУ ПРОИСШЕДШИХ ИЗМЕНЕНИЙ. Чтобы было понятно: мне неохота каждые 10 секунд бегать заглядывать в почтовый ящик - пришло ли письмо? мне хочется ПО СТУКУ В ЛВЕРЬ - встать с дивана, открыть дверь и получить письмо из рук почтальона...
16. Юрий (1с2с) 22.03.11 01:46
(15) ошиблись номером комментария, досель не знал о его существовании...
имхо, без использования ОбработкаОжидания() штатными методами... вряд-ли...
насчет аналогий, предлагаю такую:
Вы создали такой почтовый ящик, который с заданной периодичностью сам проверяет наличие нужной корреспонденции и сам же отрабатывает ее определенным образом. Все это время Вы - занимаетесь своими делами, в том числе, используя при этом Ваш диван по назначению...
17. Сергей (Che) Коцюра (CheBurator) 22.03.11 02:37
(16) ваше предложение с "почтовым ящиком" - тупое (сорри!) - это не значит что оно плохое - но эта - та же самая "обработкаожидания", я бы делал такой почтовый ящик ПРИНЦИПИАЛЬНО по-другому: например:
- на дне ПЯ - площадка на пружинке. все. ЯЩИК САМ НИЧЕГО НЕ ПРОВЕРЯЕТ.
- падает в ПЯ письмо, площадка на пружинке под тяжестью письма - опускается и замфкает контакт, срабатывает "исполнительное устройство".
ВСЕ.
.чувствуете разницу между вашим ПЯ и моим ПЯ...?
18. Юрий (1с2с) 22.03.11 17:15
(17) вообще, инновации - это сейчас атуально...,
а инновации в области усовершенствования конструкции почтовых ящиков - несомненно, актуальны особо...
Зачем в третий раз писать фактически одно и то же?...
В (16) дан ответ по сути:
я не вижу варианта реализации требуемого функционала штатными средствами без использования метода ОбработкаОжидания()...
Моя аналогия, естественно, описывает именно этот вариант...
Субъективная разница между "ПЯ":
чем меньше механики и "замфканий контактов", тем выше надежность...
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа