Back to top

Поиск документов по штрихкоду в 1С 8

Опубликовано e-1c@mail.ru - вс, 08/21/2016 - 15:00

Рассмотрим подключение подсистемы штрихкодирования документов на примере подключения такого механизма в конфигурации 1С 8.2 и 8.3 Управление торговлей.

Зачем нужно штрихкодирование документов в 1С?

Штрихкодирование документов может понадобится для наведения порядка в бумажном документообороте — любому бумажному документу за считанные секунды можно найти электронный аналог в системе. Например, очень удобно когда клиенты приходят в офис с уже распечатанным заказом, в котором есть штрихкод — в этом случае обслуживание клиента занимает существенно меньше времени.

Настройка штрихкодирования документов 1С

Первый шаг к настройке штрихкодирования — создание штрихкода, хранение его в базе данных и распечатка на бумажном носителе.

Генерация штрихкода и сохранение его в 1С

Для хранения штрихкода создадим у документа новый реквизит — назовём его «штрихкод».
С генерацией нового штрихкода — немного труднее. Необходимо воспользоватся процедурой РаботаСТорговымОборудованием.СформироватьШтрихКод() из конфигурации управление торговлей, и сформировать его перед записью нового документа:

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
 
.....
 
Если ЭтоНовый() Тогда
Штрихкод = РаботаСТорговымОборудованием.СформироватьШтрихКод();
КонецЕсли;
 
.....
 
КонецПроцедуры;

Распечатка штрихкода на печатной форме описана в отдельной статье — вывод на печатную форму штрихкода.
С установкой, хранением и распечаткой документов мы разобрались. Перейдем к другому этапу — поиск документов по штрихкоду.

Настройка поиска документа в 1С по штрихкоду

Рассмотрим поиск документа по штрихкоду из формы списка документа «Заказ покупателю».
Первым делом необходимо скопировать из других форм (например форма списка номенклатуры), отвечающие за работу с внешним оборудованием — сканером штрихкода. Вот процедуры, которые необходимо поместить в форму списка:

Процедура ВнешнееСобытие(Источник, Событие, Данные)
ПолучитьСерверТО().ОбработатьВнешнееСобытие(Источник, Событие, Данные, ЭтаФорма);
КонецПроцедуры
 
Функция ПоддерживаетсяВидТО(Вид) Экспорт
 
Результат = Ложь;
 
Если Вид = Перечисления.ВидыТорговогоОборудования.СканерШтрихКода Тогда
Результат = Истина;
КонецЕсли;
 
Возврат Результат;
 
КонецФункции // ПоддерживаетсяВидТО()
 
Функция СШКНоменклатура(Номенклатура, Характеристика, Серия, Качество,
Единица, Количество, СШК) Экспорт
 
Результат = Истина;
Возврат Результат;
 
КонецФункции // СШКНоменклатура()
 
Функция СШКСерийныйНомер(Номер, СШК) Экспорт
 
Возврат Истина;
 
КонецФункции // СШКСерийныйНомер()
 
Функция СШКИнформационнаяКарта(Карта, СШК) Экспорт
 
Результат = Истина;
Возврат Результат;
 
КонецФункции // СШКИнформационнаяКарта()
 
Функция СШКНеизвестныйКод(Штрихкод, ТипКода, СШК) Экспорт
 
НайтиЗаказПоШтрихкоду(Штрихкод);
Возврат Истина;
 
КонецФункции // СШКНеизвестныйКод()
 
Процедура СШКОшибка(Ошибка, Штрихкод, ТипШК, СШК) Экспорт
 
Текст = ПолучитьСерверТО().ПолучитьТекстОшибкиСШКТО(Ошибка, Штрихкод, ТипШК);
Предупреждение(Текст);
 
КонецПроцедуры // СШКОшибка()

Обратите внимание на процедуру СШКНеизвестныйКод, если стандартные механизмы не смогли найти номенклатуру — они вернут нас в функцию «СШКНеизвестныйКод» где мы его и обработаем.
Опишем процедуру НайтиЗаказПоШтрихкоду, с помощью которой мы найдем нужный документ по штрихкоду и откроем его форму:
Процедура НайтиЗаказПоШтрихкоду(ТекШтрихкод)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателя.Ссылка
|ИЗ
| Документ.ЗаказПокупателя КАК ЗаказПокупателя
|ГДЕ
| ЗаказПокупателя.Штрихкод= &Штрихкод";
Запрос.УстановитьПараметр("Штрихкод", ТекШтрихкод);
Результат = Запрос.Выполнить();
 
Если Результат.Пустой() Тогда
Сообщить("Заказ с штрихкодом " + ТекШтрихкод + " не найден");
Возврат;
Иначе
Выборка = Результат.Выбрать();
Выборка.Следующий();
СсылкаНаДокумент = Выборка.Ссылка;
СсылкаНаДокумент.ПолучитьФорму().Открыть();
КонецЕсли;
КонецПроцедуры

При выполнении данной процедуры будет происходить поиск нужного заказа по штрихкоду. Если заказ найден по штрихкоду — то система откроет заказ, не найден — сообщит об этом.

Теги