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

30.03.20

Интеграция - Сканер штрих-кода

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
СКУД с продажей билетов и управлением турникетом:
.epf 13,66Kb
3 1 850 руб. Купить
ДТО 2009 года
.zip 19,09Mb
1 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Всем привет. Возникла необходимость реализовать СКУД со сканером штрихкодов и турникетом. Я подумал и решил сделать данную систему на основе 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;
		ДокПечать.АвтоМасштаб = Истина;
		ДокПечать.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
    КонецЦикла;	
	//Завершение процедуры
	///////////////////////////////////////////

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

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

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

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

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

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

Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

Рабочее место Производство готовой продукции (работ, услуг) Перенос данных 1C Пользователь 1С v8.3 1С:Управление производственным предприятием 1С:Документооборот 1С:Комплексная автоматизация 2.х 1С:КА 1С:ДО Платные (руб)

Продукт "Интеграция с 1С:Документооборот" позволяет использовать функции программы "1С:Документооборот 8" напрямую из учетной системы (1С:УПП; 1С:КА, 1С:УТ 10.3, 1С:БГУ 1.0, 1С:ЗБУ 1.0, 1С:УПП для Казахстана и отраслевых решений, разработанных на их основе) на платформе "1С:Предприятие 8": выполнять и ставить задачи, просматривать документы, скан-копии и прочие файлы, штрих-кодировать документы отправлять письма, вести учет рабочего времени - не входя в "1С:Документооборот 8", работая в одной программе, что значительно сокращает время и делает работу более комфортной и эффективной. Продукт прошел сертификацию 1С-Совместимо

110400 руб.

11.06.2015    59450    38    20    

48

Зарплата Производство готовой продукции (работ, услуг) Учет рабочего времени Рабочее место Бизнес-аналитик Пользователь Руководитель проекта 1С v8.3 1С:Управление торговлей 10 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Торговля и склад 7.7 Бытовые услуги, сервис Оптовая торговля, дистрибуция, логистика Электротехника и микроэлектроника Управленческий учет Платные (руб)

Модуль или расширение «Сервисный центр для 1С» позволяет принимать в ремонт оборудование (компьютеры, бытовая техника и т.п.), оформлять заявки инженеров на посещение клиентов и вести начисление заработной платы для сотрудников. Позволяет наладить автоматизированный учет в сервисном центре на уже существующей базе.

16800 руб.

01.11.2012    98730    118    1    

129

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн - все это содержит в себе решение 1С "Штрихкод-информер" (штрих-код чекер). Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

3000 руб.

03.12.2018    63694    215    104    

182

Сканер штрих-кода Пользователь 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Стандартные конфигурации ERP, КА, УТ 11 позволяют работать с штрихкодированием серий. Есть только одно суровое ограничение – на упаковке должна быть этикетка для номенклатуры и отдельно для серии. Во многих случаях это критически неудобно.

18000 руб.

19.04.2021    25392    56    51    

69

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный ТСД (терминал сбора данных) сканер для 1С для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

3000 руб.

22.04.2019    106310    646    194    

348
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 02.07.21 18:10
Сообщение было скрыто модератором.
...
2. Mikov_Evgeniy 2 22.06.22 14:56 Сейчас в теме
Добрый день, как можно с вами связаться, для вашей помощи по настройки турникета, на платной основе?
Казахстан +77019712777
3. пользователь 22.06.22 15:15
Сообщение было скрыто модератором.
...
4. Bukaska 148 22.06.22 16:26 Сейчас в теме
(2)Создать тикет в техподдержку
5. пользователь 23.06.22 08:01
Сообщение было скрыто модератором.
...
6. пользователь 05.02.23 23:10
Сообщение было скрыто модератором.
...
7. пользователь 03.05.23 10:34
Сообщение было скрыто модератором.
...
8. Светлый ум 455 05.06.25 12:16 Сейчас в теме
Каким турникетом управляли - хотим у себя это реализовали?
9. Sandmansss 32 05.06.25 12:54 Сейчас в теме
(8) Честно говоря уже и не помню. Да это по сути и не важно.
У турникета есть колодка с пинами на которые можно подать 5в для переключения его в режим открытия. Это надо смотреть на документацию на конкретный турникет.
Ну а дальше управление происходит через веб сервер ардуино.
Послали нужный пакет - шилд подал питание на нужную ногу. А нога через реле подает напряжение на нужный пин, открытия или закрытия. Длительность подачи питания изменяется в прошивке ардуино.
Собственно все.
1С в данном случае просто посылает нужный запрос на нужный нам веб адрес.
Реализовал через веб, так как неизвестна дальность установки турникета, а через сеть это легко масштабировать.
Оставьте свое сообщение