Почему при сканировании штрихкода появляется ошибка "В табличной части не найдена строка с товаром" и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1С:Комплексная автоматизация Управленческий учет Промышленность, строительство и АПК
← На главную

Рассмотрим ситуацию, с которой часто сталкиваются пользователи программ 1С:Комплексная автоматизация 2 и 1С:ERP. При создании документа "Передача сырья переработчику" на вкладке "Сырье и Материалы" использование сканера штрихкодов приводит к появлению предупреждения: В табличной части не найдена строка с товаром "Наименование / Характеристика". При этом в других документах добавление товаров сканером работает корректно. Разберем по шагам, почему возникает эта ошибка и как ее правильно устранить.

Проанализируем причины поведения системы

Чтобы понять суть проблемы, выясним архитектурную логику механизма штрихкодирования, заложенную в Библиотеку стандартных подсистем (БСП). Ключевую роль играет параметр ИзменятьКоличество, который определяет режим работы сканера для конкретной табличной части.

Разработчики 1С предусмотрели два режима работы:

  1. Режим верификации (когда ИзменятьКоличество установлено в Ложь). В этом режиме предполагается, что документ уже заполнен (например, на основании заказа). Сканирование используется только для проверки наличия товара. Если сканируемого товара нет в списке, система блокирует его добавление и выдает наше предупреждение.
  2. Режим наполнения (когда ИзменятьКоличество установлено в Истина). Здесь сканер работает на ввод данных: если товара нет, добавляется новая строка; если есть — увеличивается количество.

Для документа "Передача сырья переработчику" по умолчанию установлен режим верификации. Логика разработчиков такова: этот документ должен создаваться строго на основании документа "Заказ переработчику". Кладовщик должен лишь сверять фактически собранное сырье с заказанным. Система защищает учет от случайного добавления незапланированных позиций.

Рассмотрим решение проблемы через изменение кода

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


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

Чтобы сканер начал добавлять новые строки, нам необходимо изменить значение переменной ИзменятьКоличество на Истина.

Безопасные способы решения

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

  1. Использование расширения конфигурации (рекомендуемый путь разработчика). Создаем расширение и переопределяем процедуру ОбработатьШтрихкоды формы документа. Используя аннотацию &Вместо или &Перед, мы принудительно задаем ИзменятьКоличество = Истина;. Это позволит сохранить типовую конфигурацию на замке.
  2. Использование формы подбора (путь пользователя). Если доработки недопустимы, наполнять табличную часть можно через стандартную кнопку "Заполнить" -> "Подбор товаров". В окне подбора сканер всегда работает в режиме наполнения корзины. После сканирования всех штрихкодов позиции переносятся в документ одной кнопкой.

Возможные побочные эффекты

Принудительно включая режим наполнения для документа передачи сырья, мы должны учитывать особенности учета. Проанализируем возможные сложности:

Документ содержит множество специфических реквизитов (назначение, статьи калькуляции, счета учета). При автоматическом добавлении строки сканером система может не знать, как заполнить эту аналитику. В результате новые строки добавятся, но документ может не провестись из-за незаполненных полей. Пользователям придется дозаполнять недостающую аналитику вручную после сканирования.

← На главную