Обработка превращает ПК с запущенной 1С в информационный киоск для вывода информации о товаре при сканирования штрих-кода.
Скачать файл
ВНИМАНИЕ:
Файлы из Базы знаний - это исходный код разработки.
Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы.
Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных.
Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Минимальное разрешение экрана для корректного вывода информации - 1024х768.
В конфигураторе, при желании, можно настроить под любое разрешение.
Следующие параметры обработки автоматически устанавливаются из настроек пользователя:
Фирма - реквизит "Основная фирма"
Склад - реквизит "Основной склад"
Тип цен - реквизит "Основной тип цен продажи".
Валюта - реквизит "Основная валюта взаиморасчетов".
Данные параметры обязательно должны быть определены для пользователя.
ВНИМАНИЕ! Для разных релизов конфигурации Торговля и Склад отдельный файл обработки.
Можно организовать автозапуск обработки создав пользователя "Киоск" и добавив следующий код в процедуру глобального модуля конфигурации "ПриНачалеРаботыСистемы()":
Если (ИмяПользователя()="Киоск") Тогда
ОткрытьФормуМодально("Отчет", ФлагЗапускаНастроек, КаталогИБ()+"\ExtForms\kiosk.ert");
КонецЕсли;
Когда пользователь "Киоск" будет заходить в систему, автоматически запустится обработка. Обратите внимание, что форма откроется модально, то есть остальной функционал 1С будет заблокирован до закрытия окна обработки.
В процедуре "обработка внешнего события" есть код:
Обработка представляет собой аналог обработки обслуживания для подключения сканеров штрихкодов на базе драйверов от Атол к типовым конфигурациям 1С8. Как правило, интеграция сканера штрихкодов в конфигурациях 1С7.7 ограничивается подключением при старте системы внешней компоненты из поставки драйверов Атол и прописыванием во всех нужных местах ОбработкиВнешнегоСобытия() для реакции на считываемые штрихкоды. Настройки подключения сканера можно установить на дополнительной вкладке в меню Сервис \ Драйвера устройств ввода. К сожалению настройки эти надо производить непосредственно под сеансом конечного пользователя (и для каждого пользователя). Кроме того, они иногда слетают и приходится заново их настраивать. Устранить эти недочеты и призвана моя обработка.
Тестировалось на версии драйвера торгового оборудования Атол 6.4.1.359, версия платформы 1С 7.7.027, конфигурация ТиС для Украины 036 (Хотя конфигурация не важна, общие процедуры и функции или объекты конфигурации не используются).
ПО «Информационный киоск» предназначено для организации offline доступа клиента (покупателя) к информации о товарах, услугах или дисконтных картах посредством сканирования штрих-кода. Основная цель – мгновенно предоставить наиболее актуальную информацию о цене, остатках, наименовании товара (услуги) или накоплениях, держателе, состоянии дисконтной карты.
Обработка работает на платформе 1С 7.7 УСН (без изменения конфигурации). Предназначена для регистрации розничных продаж в торговом зале небольшого магазина (мини- микро маркета). Использует штрих-код номенклатуры. Обработка делалась для себя и, в принципе, продолжает дорабатываться в процессе эксплуатации, посему кому интересно - следите за обновлениями. В 2015 году планируется опубликовать аналог под 1С 8.2-8.3
Если под рукой нет сканера штрих-кода, а нужно проверить, отладить, работу программы. Работу сканера штрих-кода можно эмулировать с помощью программ. Описан пример эмуляции: настройка используемых программ и настройка подключения сканера штрих-кода в 1С 7.7 и 1С 8.
Удобная вещь - человек подносит товар к сканеру, даже не касаясь клавиатуры, и ему за несколько последних дней открывается список документов, где фигурирует этот товар. Реализовано в виде внешней обработки, нужно только открыть эту обработку и все. Поддерживаются сканеры в ком-порт и в разрыв клавиатуры.
Wsh = СоздатьОбъект("Wscript.shell");
Wsh.SendKeys("{RIGHT}");
Объект "Wsh" эмулирует нажатие стрелки на клавиатуре. Таким образом выключаем скринсейвер с рекламой :-)
(1) "... нажатие стрелки на клавиатуре. Таким образом выключаем скринсейвер с рекламой :-) Гениально, я считаю", - таймаут на бездействие.. зачем принудительное с клавиатуры, сканера (6).. наверное, тоже нужно, пригодится.. но зачем? - не понимаю
(7)- таймаут на бездействие.. зачем принудительное с клавиатуры, сканера (6)..
Сергей, не понял... Как "зачем" - ? Как по другому? Ну, таймаут на бездействие, включился режим заставки, все так сейчас и есть. А выключить заставку и перейти к работе прайсчекера, как по таймеру?
А так, поднесли товар ШК к сканеру, "пикнуло", по внешнему событию заставка выключилась, отработала процедура поиска товара и вывела инфу на экран. Запустился опять таймер из обработки ожидания. Если за период, заданный в константе, внешних событий со сканера не последует, то по истечении времени, опять сработает процедура заставка. Пока заставка "ползает" по экрану, таймер остановлен, может до бесконечности ползать.
(10)Да, именно так.
Входит в режим заставки сам, по таймеру. Принудительно ввести его в режим заставки нельзя никак, просто нечем(клавы и мыши нет, экран не сенсорный).
(15)Назовите как хотите, скринсэйвер, заставка... Какая разница? Суть одна - вместо рабочего окна, появляется черный экран, по которому "плавает" строчка текста: "Отсканируйте ШтрихКод проверяемого товара", еще и изменяя свой цвет. По сути, это хранитель экрана, скринсэйвер. Или заставка, так в винде он называется.
И ничего я не заблуждаюсь, как можно что-то сделать принудительно, если банально нечем? Органов управления нет.
(15)Еще раз повторюсь - у меня не было задачи выводить на прайс-чекер в период бездействия рекламу, или еще что-то. Какой смысл на малюсеньком 8-ми дюймовом мониторчике? Кто ее увидит? Поэтому, ограничился плавающей строкой, чисто как хранитель экрана. Если-бы это все хозяйство на локальной машине крутилось, то вообще бы ничего делать не стал-бы, штатного хранителя экрана Windows(закладка "заставка" в параметрах экрана) хватило-бы. Но, в терминале штатный хранитель не передается с сервера, просто чернеет экран. А просто черный экран - не понятно, включен он или выключен. Поэтому и пришлось делать в 1С.
Может чуть не по теме, а кто знает, как вообще "скринсейвер с рекламой" включить? В RDP(Serwer 2003 r2), имеется в виду... Не могу добиться "рекламы"(ну, просто бегущая строка Отсканируйте ШтрихКод!), вместо этого черный экран, и все...По внешнему событию и Wscript пробуждается, тут вопросов нет.
Может чуть не по теме, а кто знает, как вообще "скринсейвер с рекламой" включить?
штатные сейверы для рекламы примитивны.. как вариант:
* прямо в 1с:предприятии рисовать,.. в окне без ничего, например так:
* или с браузером интегрировать, так еще шире возможности.
* если же есть возможность промежуточный сервер поднять - тогда вообще безграничные просторы для творчества.
Понятно.
В общем, я пошел по пути "изобретения велосипеда". Заставку написал на 1С. Цели выводить рекламную информацию, у меня не стояло. Да и какая может быть реклама на 8" мониторе? Просто "плавающая" строка "Отсканируйте ШтрихКод проверяемого товара". Плавно перемещается по всему экрану, меняя цвет.
Крутится это все в терминальной сессии, на "тонком" клиенте, собранном из "мусора" конца прошлого века, из самой 1С. С помощью Formexa, растянуто окно на весь экран и убрано все лишнее, в том числе рамка и заголовок окна, и курсор мыши. Клиент под WtWare, без жесткого диска, загрузчик с флешки, далее все по сети. На клиенте из средств ввода/вывода - только монитор. Ни клавы, ни мышки нет. Включается кнопкой, выключается сканированием ШК со специально напечатанной карточки. В общем, практически "аппаратный" прайс-чекер получился :-)
Основной экран:
(4) отличное решение 👍 Прекрасное занятие для развлечения. Я тоже собрал из компьютерного хлама 3 прайс-чекера, которые вешаются на стену. С экраном, на котором крутится реклама, когда устройство висит без дела. Было весело :-) Напишите свою статью о реализации. С удовольствием прочитаю.
Да что там писать в статье... ИМХО, на статью это не тянет.
Ставить полноценную машину, с операционной системой, под это дело, как-то не рационально показалось. Все равно все пользователи работают в терминальном режиме, через RDP. Стал изучать, как тонкого клиента из металолома собрать, и чтоб при этом он работал :-))))
Наткнулся поиском на вот это: http://wtware.ru/ . Попробовал установить, на сервер 2003 R2. Не ставится, ошибку выдает! Попробовал более раннюю версию - сразу получилось. Зарегился у них на форуме, обсудил с автором этого чуда, выяснилось, что 2003 сервак ему просто лень поддерживать: https://forum.wtware.ru/viewtopic.php?f=1&t=20363 - ссылка на тему на их форуме, где я это обсуждал. Ну, да ладно - функционала, который заложен в последней работающей на 2003 сервере версии, 5.6.24, мне для текущей задачи более, чем достаточно. Да, ВТварь - платная, но, даже если покупать одну(с количеством цена уменьшается) лицензию, всего 1000 руб. стоит. Это на порядок дешевле операционки для компа. Для "поиграться" есть демо-режим, полноценно работает, только банер по правому краю экрана.
По настройкам самой ВТвари, у них подробно расписано, пересказывать не вижу смысла. Единственное, надо обратить внимание на три момента:
1. Разрешение экрана, под тот монитор, который будет работать. В моем случае, это 800 Х 600, 8-ми дюймовый моник от кассы.
2. Параметр "shell" - в нем прописываем строку запуска 1С, вот в таком виде: "C:\Program Files\1Cv77\BIN\1cv7.exe" enterprise /DD:\1C_Base\KKS_molotok /NKiosk
это нужно для того, что-бы 1С сама стартовала, без рабочего стола.
3. Параметр "turnoffmenu" - ставим "poweroff", для того, что-бы при выходе из 1С, клиент завершал корректно терминальную сессию.
Ну, COM порт сканера пробрасывается на сервер штатно, в ВТваре все для этого есть.
В самой обработке(за основу взята Ваша) при открытии, подгружается Formex, и вот эти строчки добавлены:
Окно.НаПереднийПлан(Форма);
Окно.Максимизировать(Форма);
Окно.ЦентрироватьОкно(Форма);
Окно.ПоказыватьСтрокуСостояния(0);
Окно.СтильОкна(Форма,2); // убираем заголовок окна и рамку
Расш.УстановитьКурсор(КаталогИБ() + "cur.cur"); // устанавливаем прозрачный курсор из файла, что-бы штатный не мешал.
Расш.ОбработкаОжидания("Заставка",1000 * Константа.ВремяЗастКиоска); // в константе задается время срабатывания заставки в секундах.
Процедура "Заставка()" сделана на основе одной из публикаций с ИнфоСтарта, "бегущая строка", только добавлено еще и вертикальное перемещение, плавает с лева на право, опускается вниз постепенно, доходит до низу, начинает подниматься вверх, и т.д.
Выключение:
Процедура ЗакрытьПринудительно()
Форма.Закрыть(0);
ЗавершитьРаботуСистемы(0);
КонецПроцедуры
В обработку внешнего события добавлено:
Если Штрихкод = "9999999999994" Тогда // ШтрихКод для выключения терминала
глСканерПосылкаДанных(1);
ЗакрытьПринудительно();
КонецЕсли;
Показать
В общем-то, и все.
Да, кто не понял для чего пришлось "огород городить" с заставкой на 1С, почему нельзя было использовать заставку Windows...
Да все по тому, что в терминальную сессию заставка с сервера не транслируется, во всяком случае в 2003 сервере.
Если включаешь режим заставки на рабочем столе пользователя, то при консольном входе она есть, а при терминальном, на клиенте просто гаснет экран...
Как-то победить это мне не удалось, поэтому просто отключил заставку в Windows, и "нарисовал" ее в самой 1С. Соответственно, выходит из "спячки" просто по внешнему событию, и никакие скрипты для пробуждения из Вашей разработки не используются.