СКУД с продажей билетов и управлением турникетом

Публикация № 1217411

Администрирование - Торговое оборудование - Сканер штрих-кода

Обработка СКУД Ардуино Билет со штрихкодом

Обработка, позволяющая печатать билеты со штрихкодом и управлять турникетом. Система контроля доступа с одним считывателем (сканером штрихкода) и турникетом.

Всем привет. Возникла необходимость реализовать СКУД со сканером штрихкодов и турникетом. Я подумал и решил сделать данную систему на основе 1С.Розница 2.3. Причина выбора 1с в том, что через нее легко можно продавать (подключение КТТ онлайн) и вести учет, ну а СКУД - всего лишь надстройка.

Тестировалось на Розница, редакция 2.3 (2.3.3.19), платформа 1С:Предприятие 8.3 (8.3.15.1869)

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

Практически весь функционал реализован в самой обработке, но кое где все таки пришлось влазить в основную конфигурацию.

Схема работы.

При продаже через РКМ, в процедуру 

Процедура ПробитьЧекККМЗавершение(РезультатВыполнения, ПараметрыОперации) Экспорт

Добавлен код формирования и печати билета с ШК:

  • Проверяем все позиции в чеке. Если есть номеклатура, принадлежащая товарной группе "Билеты", то по количеству этой номеклатуры, в независимом регистре сведений "БилетыНаПроход" формируется запись с новым штрих кодом и указанием времени продажи, ссылкой на чек, и на саму номеклатуру
  • По количеству позиций отправляем на принтер этикеток печать билетов со штрих кодом

Далее для прохода через турникет должна быть запущена обработка СКУД, она и управляет возможностью прохода. При срабатывании внешнего события от сканера, проверяется принадлежит ли штрихкод текущим суткам и не является ли он погашенным. Если штрихкод не погашен, то дается команда турникету на открытие, далее штрихкод гасится.

Турникет управляется посылкой команды "open" http запросом на запрограммированный адрес, у меня  192.168.0.250.

Управление турникетом я реализовал на базе ардуино уно + шилд 5100.

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

////////////////////////////////////////////////////////////////
// Открытие турникета в потоке по условиям
// 1 - ШК принадлежит текущим суткам
// 2 - ШК непогашен 
// Погашение ШК в случае успешного прохода через турникет
Процедура ОткрытьТурникет(Штрихкод,IP_Port,CMD) Экспорт
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	БилетыНаПроход.Штрихкод КАК Штрихкод,
		|	БилетыНаПроход.ДатаГенерации КАК ДатаГенерации,
		|	БилетыНаПроход.Погашен КАК Погашен
		|ИЗ
		|	РегистрСведений.БилетыНаПроход КАК БилетыНаПроход
		|ГДЕ
		|	БилетыНаПроход.Штрихкод ПОДОБНО &Штрихкод 
		|	И БилетыНаПроход.Погашен = Ложь";
	
	Запрос.УстановитьПараметр("Штрихкод", Штрихкод);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Если (Формат(ВыборкаДетальныеЗаписи.ДатаГенерации, "ДЛФ=Д") = Формат(ТекущаяДата(), "ДЛФ=Д")) Тогда
	    
		    Соединение = Новый HTTPСоединение(IP_Port,,,,,10);
		    Заголовки = Новый Соответствие();
		    Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded; charset=Windows-1251");
		    Запрос = Новый HTTPЗапрос("/" + CMD , Заголовки);
		    ОтветСервера = Соединение.Получить(Запрос);      // Ответ от контроллера
		    Ответ = ОтветСервера.ПолучитьТелоКакСтроку();    // переводим в строку и получаем код странички			
			Если Ответ="event_step_in" Тогда                 // Ответ "event_step_in" говорит, о совершенном переходе через турникет
	 			ТекущийБилет = РегистрыСведений.БилетыНаПроход.СоздатьНаборЗаписей(); 
				//ТекущийБилет.Отбор.Погашен.Установить(Ложь);
				ТекущийБилет.Отбор.Штрихкод.Установить(Штрихкод);			
				ТекущийБилет.Прочитать();					
				Для Каждого Билет Из ТекущийБилет Цикл
				     Билет.Погашен = Истина;
					 Билет.ДатаПогашения = ТекущаяДата();
				 КонецЦикла;	
				 ТекущийБилет.Записать(); 
			КонецЕсли;			
		КонецЕсли;
	КонецЦикла;

КонецПроцедуры

Особенность подключения сканера ШК в том, что он подключается с использованием драйверов DTO 2009 года, тех что еще бесплатны. Сделано это для того, чтобы событие сканирования не возникало в РМК.

Вот код вставленный в РМК

&НаКлиенте
Процедура ПробитьЧекККМЗавершение(РезультатВыполнения, ПараметрыОперации) Экспорт
	ПараметрыЗаполнения = ПараметрыОперации.ПараметрыЗаполнения;
	
	Если РезультатВыполнения.Результат Тогда
		
		// Установить полученное значение номера чека реквизиту документа.
		ПараметрыЗаполнения.Вставить("СтатусЧекаККМ", ПредопределенноеЗначение("Перечисление.СтатусыЧековККМ.Пробитый"));
		ПараметрыЗаполнения.Вставить("Дата", ОбщегоНазначенияКлиент.ДатаСеанса());
		ПараметрыЗаполнения.Вставить("НомерСменыККМ", РезультатВыполнения.ВыходныеПараметры[0]);
		ПараметрыЗаполнения.Вставить("НомерЧекаККМ" , РезультатВыполнения.ВыходныеПараметры[1]);
		
		Если НЕ ЗначениеЗаполнено(ПараметрыЗаполнения.НомерЧекаККМ) Тогда
			Если НомерДокументаКассыККМ[ПараметрыОперации.КассаККМ] <> Неопределено Тогда
				НомерЧекаККМ  = НомерДокументаКассыККМ[ПараметрыОперации.КассаККМ];
			Иначе
				НомерЧекаККМ  = ПорядковыйНомерПродажи;
			КонецЕсли;
			
			ПараметрыЗаполнения.Вставить("НомерЧекаККМ", НомерЧекаККМ);
		КонецЕсли;
	Иначе
		ЗаголовокИнформации = НСтр("ru = 'При печати чека произошла ошибка.'");
		ТекстСообщения = НСтр("ru = 'Чек не напечатан на устройстве для печати чеков.
		                            |Дополнительное описание: %ДополнительноеОписание%'");
		ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ДополнительноеОписание%", РезультатВыполнения.ОписаниеОшибки);
		ОбщегоНазначенияРТКлиент.ВывестиИнформациюДляРМКУправляемой(ЗаголовокИнформации, ТекстСообщения);
		
	КонецЕсли;
	
	ПараметрыЗаполнения.ЧекПробит = РезультатВыполнения.Результат;
	
	ВыполнитьОбработкуОповещения(ПараметрыОперации.ОповещениеПриЗавершении, ПараметрыЗаполнения);
	///////////////////////////////////////////////////////////////
	//Процедура генерации штрихкода
	НовыеШК = Массив_ШК(ПараметрыОперации.ЧекККМСсылка);
	Для Каждого Штрихкод из НовыеШК Цикл
		ДокПечать = ПечатьБилета(Штрихкод);
		//ДокПечать.ИмяПринтера="HP LaserJet 3055 PCL5 LAN";
		ДокПечать.ОтображатьСетку = Ложь;
		ДокПечать.Защита = Ложь;
		ДокПечать.ТолькоПросмотр = Ложь;
		ДокПечать.ОтображатьЗаголовки = Ложь;
		ДокПечать.ПолеСлева=3;
		ДокПечать.ПолеСправа=3;
		ДокПечать.АвтоМасштаб = Истина;
		ДокПечать.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
    КонецЦикла;	
	//Завершение процедуры
	///////////////////////////////////////////

КонецПроцедуры

В конце модуля формы РМК

////////////////////////////////////////////////////////////////////
//Вызовы серверным методов из модуля менеджера обработки СКУД
Функция Массив_ШК(ЧекККМСсылка)
	Возврат Обработки.СКУД.ГенерацияШК(ЧекККМСсылка);
КонецФункции

&НаСервере
Функция ПечатьБилета(ШК)
	Возврат Обработки.СКУД.ПечатьБилетаНаСервере(ШК);
КонецФункции
////////////////////////////////////////////////////////////////////

Для упрощения работы, я создал подсистему "СКУД", пользователя "СКУД" и назначил пользователю все необходимые права. При заходе под пользователем "СКУД", ему доступна только его подсистема и обработка запускается автоматически, т.е. от продажи билетов управление турникетом отделено.

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

Скачать файлы

Наименование Файл Версия Размер
СКУД с продажей билетов и управлением турникетом:
.epf 13,66Kb
30.03.20
0
.epf 13,66Kb Скачать
ДТО 2009 года
.zip 19,09Mb
30.03.20
0
.zip 19,09Mb Скачать

Специальные предложения

Оставьте свое сообщение

См. также

daСклонение: склонение ФИО, должностей, чисел, прилагательных, существительных на языке 1С + ТестЦентр Промо

Универсальные функции v8 1cv8.cf Абонемент ($m)

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

1 стартмани

14.02.2015    99276    96    daMaster    88    

Сравнение реального дохода со средним доходом из API.HH.RU

Зарплата Управленческие v8 v8::СПР ЗУП3.x УУ Абонемент ($m)

Внешняя обработка на управляемой форме для 1С:Предприятие 8.3 по интеграции с HH.RU используя HH REST API. Ключевые функции: получение списка вакансий по должностям (Ключ для работы не нужен); расчет среднего дохода; Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.13.1513) Зарплата и управление персоналом, редакция 3.1 (3.1.11.68) совместно с API.HH.RU.

1 стартмани

11.11.2019    3676    4    solaru    2    

Конфигурация для рекламного агентства

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) v8 Реклама, PR и маркетинг УУ Абонемент ($m)

Данная конфигурация выполнена для решения тестового задания: Цель задания: 1) Понять, на каком из клиентов сколько мы заработали;  2) Понять, по какому виду СМИ сколько мы заработали;  3) Проследить по каждой услуге: у кого за сколько купили и кому за сколько продали, с возможностью перейти в соответствующий документ. Реализовано с помощью: 1. Справочники - контрагенты, номенклатура 2. Документы - Поступление услуг, реализация услуг 3. Отчеты - отчет по контрагентам, номенклатуре и движений.

1 стартмани

21.05.2019    3974    0    solaru    0    

Загрузка номенклатуры в УТ 10.3 из Excel файла с генерацией штрихкодов

Загрузка и выгрузка в Excel Обработка справочников Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 УТ10 Россия Абонемент ($m)

Обработка позволяет генерировать новые номенклатурные позиции на основе данных из файла Excel с последующей генерацией штрихкодов (ШК). Может быть полезна при больших поступлениях товаров на склад, где ручное создание и присваивание штрихкода  (ШК) может занимать много времени.

1 стартмани

24.03.2017    7551    6    solaru    0    

Под капотом управляемых форм

Практика программирования v8 1cv8.cf Бесплатно (free)

Управляемые формы уже давно и плотно вошли в жизнь 1С-разработчика. Однако, судя по недавним публикациям на Инфостарте, многие до сих пор мало знакомы с ними. Предлагаю разобраться с тем, что же это такое.

26.08.2013    260856    0    Evil Beaver    266    

[NotaBene] Универсальный отчет по таблице значений

Практика программирования v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Абонемент ($m)

1C v.7.7 Готовое решение. Не требует настройки. Не требует допрограммирования. Данная обработка решает часто встречающуюся задачу вывода в "красивом" виде таблицы значений (полученной, например, из запроса). Поддерживается произвольное группирование данных, отключение/включение группировок, в т.ч и создание "шахматок" (типа "продажи понедельно"). Обработка может использоваться как и в отладочных целях (для нормального просмотра ТЗ), так и в составе вполне рабочих отчетов. По крайней мере, я неоднократно клиентам данную обработку ставил вместо того, чтобы каждый раз писать замороченные выводы данных. И клиенты довольны, и мне - проще...

2 стартмани

07.05.2007    27961    1    CheBurator    61