Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут! (в рабочие часы)

Поиск документов по штрих-коду в 1С 8.3 (8.2)

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

Пример использования штрихкода на документах

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

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

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

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

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

Для хранения штрих-кода создадим у документа новый реквизит — назовём его «штрихкод».

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

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

.....

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

.....

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

Распечатка штрих-кода на печатной форме описана в отдельной статье — вывод на печатную форму штрих-кода.

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

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

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

Рассмотрим поиск документа по штрих-коду из формы списка документа «Заказ покупателю».

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

Процедура ВнешнееСобытие(Источник, Событие, Данные)
ПолучитьСерверТО().ОбработатьВнешнееСобытие(Источник, Событие, Данные, ЭтаФорма);
КонецПроцедуры

Функция ПоддерживаетсяВидТО(Вид) Экспорт

Результат = Ложь;

Если Вид = Перечисления.ВидыТорговогоОборудования.СканерШтрихКода Тогда
Результат = Истина;
КонецЕсли;

Возврат Результат;

КонецФункции // ПоддерживаетсяВидТО()

Функция СШКНоменклатура(Номенклатура, Характеристика, Серия, Качество,
Единица, Количество, СШК) Экспорт

Результат = Истина;
Возврат Результат;

КонецФункции // СШКНоменклатура()

Функция СШКСерийныйНомер(Номер, СШК) Экспорт

Возврат Истина;

КонецФункции // СШКСерийныйНомер()

Функция СШКИнформационнаяКарта(Карта, СШК) Экспорт

Результат = Истина;
Возврат Результат;

КонецФункции // СШКИнформационнаяКарта()

Функция СШКНеизвестныйКод(Штрихкод, ТипКода, СШК) Экспорт

НайтиЗаказПоШтрихкоду(Штрихкод);
Возврат Истина;

КонецФункции // СШКНеизвестныйКод()

Процедура СШКОшибка(Ошибка, Штрихкод, ТипШК, СШК) Экспорт

Текст = ПолучитьСерверТО().ПолучитьТекстОшибкиСШКТО(Ошибка, Штрихкод, ТипШК);
Предупреждение(Текст);

КонецПроцедуры // СШКОшибка()

Обратите внимание на процедуру СШКНеизвестныйКод, если стандартные механизмы не смогли найти номенклатуру, они вернут нас в функцию «СШКНеизвестныйКод», где мы его и обработаем.

Опишем процедуру НайтиЗаказПоШтрихкоду, с помощью которой мы найдем нужный документ по штрих-коду и откроем его форму:

Процедура НайтиЗаказПоШтрихкоду(ТекШтрихкод)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателя.Ссылка
|ИЗ
| Документ.ЗаказПокупателя КАК ЗаказПокупателя
|ГДЕ
| ЗаказПокупателя.Штрихкод= &Штрихкод";
Запрос.УстановитьПараметр("Штрихкод", ТекШтрихкод);
Результат = Запрос.Выполнить();

Если Результат.Пустой() Тогда
Сообщить("Заказ с штрихкодом " + ТекШтрихкод + " не найден");
Возврат;
Иначе
Выборка = Результат.Выбрать();
Выборка.Следующий();
СсылкаНаДокумент = Выборка.Ссылка;
СсылкаНаДокумент.ПолучитьФорму().Открыть();
КонецЕсли;
КонецПроцедуры

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

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 23 на “Поиск документов по штрих-коду в 1С 8.3 (8.2)
  1. А в каком месте нужно проводить вызов «НайтиЗаказПоШтрихкоду(ТекШтрихкод)»
    Из какой процедуры или функции?
    В какой функции 1с анализирует данные, полученные со сканера?

    Ответить

  2. Все получилось более чем отлично, если бы на все документы не формировался один и тоже ШК, как это можно исправить?

    Ответить

    • А как вы генерируете новый штрих-код для документа?

      Ответить

    • С помощью РаботаСТорговымОборудованием.СформироватьШтрихКод() ?

      Ответить

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

        Ответить

    • Получается по какой то причине косячит типовая функция 🙁

      Посмотрите в отладке что там происходит, иначе никак помочь не могу 🙁

      Ответить

  3. А если мне в документе надо преобразовать в штрих-код числовой реквизит, т.е. сформировать ШК с определённым значением. Это возможно?

    Ответить

    • Конечно возможно. Штрих-код это и есть, чаще всего, числовой параметр.

      Ответить

  4. Здравствуйте. у меня почему-то ничего не работает. при сканировании в форме списка заказов ничего не происходит. в форме списка номенклатуры все работает нормально. насколько я успеваю заметить при сканировании вводятся данные как при ручном вводе в журнале(ищет по дате). у меня УТП для Укр.

    Ответить

    • Добрый день!

      Проверьте процедуру «ВнешнееСобытие» — попадает вообще туда в отладке7

      Ответить

      • Такая же проблема с реализацией. Не заходит в точку остановки может где-то, что-то ещё нужно воткнуть?

        Ответить

        • Где стоит точка? Процедура прописана в обработчиках формы?

          Ответить

          • Разобрался. Нужно в событиях (свойства формы) Как внешнее событие установить нашу процедуру. Ещё не проверял, но думаю из-за этого.. Если что напишу 😉

            Ответить

            • Да, скорее всего из-за этого))

              Спасибо что отписались — кому то поможете :))

              Ответить

              • Это не помогло… так же не «заныривает» в отладку.

                Ответить

              • Есть какие ни будь ещё предложения как эту проблему решить можно?

                Ответить

            • В общем как дело обстоит. При открытии формы нужно ещё подключать клиент ТО к этой форме. Это делается в одну строчку
              ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);
              У меня 1с ут 10.3 переписанная в хламину включая РЛС и т.д. на 1с сервере. Мб пригодится кому

              Ответить

              • ПолучитьСерверТО(). ПодключитьКлиента(ЭтаФорма);

                Ответить

              • Спасибо за коммент)
                Я уже был бессилен ))

                Ответить

              • Владислав, большая просьба, напишите, пожалуйста, подробнее, что и где дописывать. У нас УТ 10.3 (33.1) Пытаюсь делать Ваши рекомендации, но для чайника нужно по шагам. Что открыть и куда и что добавить. Большое Вам спасибо, если ответите. Можно на почту [email protected] Буду безмерно благодарен. Очень нужно внедрить ШК в доки.

                Ответить

  5. Что бы система работала и создавался новый ШК тебуется добавлять запись в РС.ШтрихКод , А не проще задействовать УнИдентификатор ?

    Ответить

  6. Процедура «РаботаСТорговымОборудованием.СформироватьШтрихКод()» сформирует новый штрихкод на основании данных регистра сведений «Штрихкоды», при этом в статье написано, что мы этот новый штрихкод сохраним не в регистре сведений, а в реквизит документа! Таким образом, если новых записей в регистре сведений не будет, то у нас процедура будет формировать один и тот же штрихкод — соответственно такой подход к штрихкодированию документа не сработает

    Ответить

Добавить комментарий:

Ваш адрес email не будет опубликован.