При работе с алкогольной продукцией в программе 1С:Розница 2.2 пользователи часто сталкиваются с ситуацией, когда во входящей ТТН ЕГАИС одна или несколько строк подсвечиваются красным, а номенклатура не сопоставляется автоматически. Одной из критических проблем в этом случае является отсутствие данных о Справке 2 (справке Б) при попытке ручного подбора. Давайте разберем причины этой ошибки и правильные алгоритмы её устранения.
Проанализируем ситуацию: входящая ТТН — это электронный документ, который приходит из системы ЕГАИС через УТМ (Универсальный транспортный модуль). В этом документе содержатся данные от поставщика: наименование продукции, алкокод, количество и идентификаторы справок. Если 1С не может автоматически сопоставить позицию, это означает, что связь между Классификатором алкогольной продукции ЕГАИС и справочником Номенклатура не установлена или данные в ТТН повреждены.
Рассмотрим подробнее основные причины:
Часто программисты пытаются найти причину в отсутствии остатков в Регистре №1 (складской регистр ЕГАИС). Важно понимать: для входящей ТТН остатков в Регистре №1 у вас быть и не должно. Продукция зафиксируется на вашем балансе только после подтверждения ТТН (отправки акта подтверждения). Справка 2 должна подтянуться из входящего XML-пакета поставщика, а не из ваших текущих остатков.
Выясним причину, почему справка не видна: если при открытии формы сопоставления список справок пуст, это означает, что документ не содержит ссылки на идентификатор справки, переданный поставщиком. Программная правка реквизитов в этом случае — крайняя и опасная мера.
Прежде чем использовать программные методы, проанализируем стандартный путь решения проблемы. Пройдем по шагам:
Если классификатор алкогольной продукции пуст или данные по справкам не отображаются, попробуем обновить информацию напрямую из системы ЕГАИС. Рассмотрим, как это сделать:
Как отмечалось в обсуждении, иногда пользователи прибегают к использованию внешних обработок для редактирования реквизитов табличной части. Посмотрим на пример логики, которая может использоваться для программного заполнения (используйте этот метод с осторожностью):
// Пример логики заполнения сопоставления в ТТН
Процедура ИсправитьСопоставление(ДокументОбъект)
Для Каждого СтрокаТЧ Из ДокументОбъект.Товары Цикл
Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Номенклатура) Тогда
// Поиск соответствия в регистре
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СоответствиеНоменклатурыЕГАИС.Номенклатура
|ИЗ
| РегистрСведений.СоответствиеНоменклатурыЕГАИС КАК СоответствиеНоменклатурыЕГАИС
|ГДЕ
| СоответствиеНоменклатурыЕГАИС.АлкогольнаяПродукция = &АлкогольнаяПродукция";
Запрос.УстановитьПараметр("АлкогольнаяПродукция", СтрокаТЧ.АлкогольнаяПродукцияЕГАИС);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
СтрокаТЧ.Номенклатура = Выборка.Номенклатура;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ДокументОбъект.Записать();
КонецПроцедуры
Важное предупреждение: Прямое редактирование табличной части "Товары" во входящей ТТН через РедакторРеквизитов без наличия данных о Справке 2 может привести к тому, что документ проведется в 1С, но при попытке дальнейшей продажи или списания программа выдаст ошибку, так как движения по регистрам ЕГАИС (Справки 2) не будут сформированы корректно.
Если стандартные методы сопоставления не помогают и данные о справках не появляются, самым надежным способом будет перезагрузка ТТН:
Таким образом, мы проанализировали ситуацию, выяснили, что отсутствие остатков в Регистре №1 не является ошибкой для входящего документа, и определили, что наиболее безопасным методом решения является запрос классификаторов или повторная загрузка ТТН, а не "силовое" редактирование реквизитов.