Информационное табло на 1С: от формы с автообновлением до экрана в цеху
Содержание
Табло 1С — это не отдельный объект платформы, а форма (обработка или отчёт), которая сама обновляет данные по таймеру через ПодключитьОбработчикОжидания() и показывает их крупно на отдельном экране. Работает табло так: клиент раз в N секунд делает один вызов сервера, получает свежую выборку из базы и перерисовывает таблицу или диаграмму.
Типичная боль — склад просит экран «что собирать прямо сейчас», руководитель хочет видеть выручку дня на телевизоре, а в типовой конфигурации готового механизма нет. Ниже — рабочая схема, настройка по шагам и то, как не положить сервер десятком таких экранов.
Что такое табло в 1С и какие задачи оно закрывает
Табло — это экран «только для чтения». На него смотрят издалека, с ним почти не взаимодействуют. Отсюда требования: крупный шрифт, минимум колонок, цвет вместо текста, обновление без участия человека.
Где табло на 1С реально нужно:
- 📦 склад — очередь заданий на сборку и отгрузку, просроченные отмечены красным;
- 🏭 производство — план и факт смены по участкам;
- 🧾 отдел продаж — выручка дня, число заказов, выполнение плана;
- 🍽 общепит и сервис — статусы заказов «готовится / готов», электронная очередь;
- 💼 руководитель — сводные показатели: остатки денег, долги покупателей, продажи.
Для последнего сценария в 1С:Бухгалтерии 3.0 уже есть готовый отчёт «Монитор руководителя». Если нужны только финансовые показатели, начните с него. Для склада и производства придётся делать свою форму — типовые конфигурации такого экрана не содержат.
Архитектура табло: путь данных от регистра до экрана
Схема у любого табло на 1С одинаковая, меняется только источник данных.
| Звено | Что делает | Где выполняется |
|---|---|---|
| Источник | документы, регистры накопления и сведений | база данных |
| Запрос | выбирает строки за нужный период и с отбором | сервер 1С |
| Реквизит формы | таблица значений или динамический список | форма |
| Обработчик ожидания | раз в N секунд вызывает обновление | клиент |
| Оформление | цвет, шрифт, порядок строк | форма |
Ключевой момент — граница клиент/сервер. Таймер живёт на клиенте, запрос выполняется на сервере. Каждое срабатывание таймера — это вызов сервера. Если в процедуре обновления три серверных вызова, а экранов пять и интервал 10 секунд, база получает полторы сотни обращений в минуту только от табло.
Правило одного вызова: вся работа с базой — в одной серверной процедуре. Клиентская часть только запускает её и ничего не читает из базы сама.
Второй важный момент: любой клиент 1С, открытый на экране табло, — это обычный сеанс. Он занимает клиентскую лицензию так же, как бухгалтер за компьютером. Это нужно учесть до закупки телевизоров.
Способы сделать табло в 1С: от готового отчёта до HTTP-сервиса
Вариантов четыре, по возрастанию трудозатрат.
| Способ | Когда подходит | Минусы |
|---|---|---|
| Готовый отчёт «Монитор руководителя» (БП 3.0) | финансовые показатели для директора | не про склад и производство, обновление вручную |
| Динамический список с отбором | простая очередь документов | мало контроля над оформлением и нагрузкой |
| Внешняя обработка с таймером | склад, цех, продажи — основной вариант | занимает лицензию на каждый экран |
| HTTP-сервис + веб-страница | ТВ без Windows, много экранов, внешние системы | нужна доработка конфигурации и веб-сервер |
Динамический список
Самый быстрый путь: форма списка документов с отбором по статусу и сортировкой по дате. Динамический список умеет сам перечитывать данные, но читает порциями и под пользователя за компьютером. Для экрана в цеху его обычно не хватает: нет итогов, сложно сделать крупную вёрстку.
Внешняя обработка с таймером
Основной вариант. Обработку не нужно встраивать в конфигурацию: её подключают через Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки или открывают через Файл → Открыть. Обновления типовой при этом не ломаются.
HTTP-сервис
Конфигурация отдаёт JSON по адресу, а табло — это обычная HTML-страница в браузере телевизора. Об этом варианте — в разделе про внешние системы.
Пошаговая настройка табло на управляемой форме
Пример: табло очереди заданий на сборку. Объект Документ.ЗаданиеНаСборку и его реквизиты условные — подставьте документы своей конфигурации.
Шаг 1. Создайте обработку и форму
- Откройте Конфигуратор,
Файл → Новый → Внешняя обработка. - Добавьте основную форму.
- В реквизитах формы создайте
Очередьс типомТаблицаЗначенийи колонки:Номер,Покупатель,Позиций,Срок,Просрочено(булево). - Перетащите реквизит на форму. В свойствах таблицы отключите командную панель и изменение данных.
Шаг 2. Напишите серверное обновление
&НаСервере
Процедура ОбновитьНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 20
| Задание.Номер КАК Номер,
| Задание.Покупатель КАК Покупатель,
| Задание.КоличествоПозиций КАК Позиций,
| Задание.Срок КАК Срок,
| Задание.Срок < &ТекущееВремя КАК Просрочено
|ИЗ
| Документ.ЗаданиеНаСборку КАК Задание
|ГДЕ
| Задание.Проведен
| И Задание.Дата >= &НачалоПериода
| И Задание.Статус = &СтатусВРаботе
|
|УПОРЯДОЧИТЬ ПО
| Срок";
Запрос.УстановитьПараметр("ТекущееВремя", ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(ТекущаяДатаСеанса()) - 86400 * 2);
Запрос.УстановитьПараметр("СтатусВРаботе", Перечисления.СтатусыЗаданий.ВРаботе);
ЗначениеВРеквизитФормы(Запрос.Выполнить().Выгрузить(), "Очередь");
ВремяОбновления = Формат(ТекущаяДатаСеанса(), "ДФ=HH:mm:ss");
КонецПроцедуры
Отбор по дате обязателен. Без него запрос со временем начнёт перебирать всю историю документов, и каждое обновление будет тяжелее предыдущего. ПЕРВЫЕ 20 — столько строк всё равно не поместится на экран крупным шрифтом.
ВремяОбновления — строковый реквизит формы. Выведите его в углу: по нему видно, что табло живое, а не зависло час назад.
Шаг 3. Подключите таймер
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОбновитьТабло();
ПодключитьОбработчикОжидания("ОбновитьТабло", 30, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьТабло() Экспорт
Попытка
ОбновитьНаСервере();
Исключение
ВремяОбновления = "нет связи";
КонецПопытки;
КонецПроцедуры
Третий параметр Ложь означает многократный вызов: процедура срабатывает каждые 30 секунд, пока форма открыта. Процедура-обработчик должна быть клиентской и без параметров.
Попытка нужна, чтобы кратковременный обрыв связи с сервером не оставил на экране окно ошибки, которое некому закрыть.
Шаг 4. Оформление под экран
- 🎨 Условное оформление формы: правило «Очередь.Просрочено = Истина» → красный фон строки.
- 🔠 Шрифт таблицы — крупный, жирный; высота строк — 2-3 строки текста.
- 👁 Колонка
Просроченонужна только для оформления — скройте её. - 🧹 Лишнее — заголовок окна, командные панели — уберите в свойствах формы.
Шаг 5. Отдельный пользователь и автозапуск
- Создайте пользователя, например «Табло склад», с ролью только на чтение нужных объектов.
- На компьютере у экрана сделайте ярлык запуска с параметрами базы и пользователя:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\trade" /N"Табло склад" /P"пароль" /C"tablo"
- В модуле приложения или в обработчике при начале работы проверяйте
ПараметрЗапуска: если тамtablo, открывайте форму табло. Для внешней обработки тот же эффект даёт добавление её в автозапуск через дополнительные обработки — если ваша конфигурация это поддерживает.
Пароль в ярлыке виден любому, кто подойдёт к компьютеру. Поэтому у пользователя табло — только права на чтение и никаких прав на изменение данных. Ещё лучше — аутентификация операционной системы для отдельной учётной записи Windows.
Типичные ошибки при настройке табло и как их не допустить
Отдельно про обработчик ожидания: модальные окна (вопросы, предупреждения) внутри него не используйте. На табло никто не нажмёт «ОК», и обновление встанет.
Интеграция табло с внешними системами и экранами
Когда экранов больше двух-трёх или на стене висит Smart TV без Windows, держать на каждом полноценный клиент 1С неудобно. Схема меняется: 1С публикует данные, а показывает их кто угодно.
HTTP-сервис в конфигурации
- В конфигурации (или в расширении) создайте HTTP-сервис, например
tablo, с шаблоном URL/queueи методом GET. - В обработчике выполните тот же запрос, что в шаге 2, и верните результат в JSON через
ЗаписьJSON. - Опубликуйте HTTP-сервис на веб-сервере (IIS или Apache) через
Администрирование → Публикация на веб-серверев Конфигураторе. - На стороне экрана — простая HTML-страница, которая раз в 30 секунд запрашивает адрес вида
https://srv/base/hs/tablo/queueи перерисовывает таблицу.
Страницу открывают в браузере телевизора или мини-ПК. В Chrome для этого есть режим киоска — запуск с ключом --kiosk открывает страницу во весь экран
без панелей.
Расширение конфигурации для HTTP-сервиса лучше, чем правка основной конфигурации: типовая остаётся на поддержке и обновляется без ручного сравнения.
Что ещё подключают к табло
- 📡 Бегущая строка и светодиодные табло — у многих есть свой контроллер с HTTP или COM-протоколом; 1С отправляет текст через
HTTPСоединение. - 📊 BI-системы — забирают те же JSON-данные и строят дашборды; 1С остаётся источником.
- 🔔 Электронная очередь — внешняя система присылает номер талона в 1С через тот же HTTP-сервис методом POST.
Для HTTP-сервиса нужен отдельный пользователь базы с правами на чтение — тот же принцип, что и для клиентского табло.
Как ускорить табло и снизить нагрузку на сервер 1С
Само табло лёгкое. Тяжело становится, когда экранов много, а каждый из них считает одно и то же.
Подберите интервал под задачу
| Сценарий | Разумный интервал |
|---|---|
| Очередь сборки, статусы заказов | 15-30 секунд |
| План-факт смены | 1-5 минут |
| Выручка и финансовые показатели | 5-15 минут |
Обновление каждые 3 секунды не делает табло полезнее: склад всё равно не собирает заказ за 3 секунды.
Считайте один раз — показывайте много раз
Если пять экранов показывают одну очередь, пусть расчёт делает регламентное задание раз в 30 секунд и пишет результат в регистр сведений . Табло читают готовую маленькую таблицу без соединений и группировок. Нагрузка от числа экранов почти перестаёт зависеть.
Держите запрос простым
- ⏱ отбор по периоду и статусу — всегда;
- 🔢
ПЕРВЫЕ N— по числу строк, которые помещаются на экран; - 🧮 итоги и проценты — в запросе, а не циклом на клиенте;
- 🚫 без разыменования длинных цепочек ссылок вида
Покупатель.ОсновнойДоговор.Организация— каждая точка добавляет соединение.
Проверить, сколько реально занимает обновление, удобно замером производительности в режиме отладки: он покажет время каждой строки серверной процедуры.