При активном использовании характеристик для учета товаров в программе 1С:Управление нашей фирмой (УНФ) пользователи часто сталкиваются с ситуацией, когда при формировании исходящих электронных документов (ЭДО) в XML-файл выгружается составное наименование: Наименование Номенклатуры (Характеристика).
Далеко не всех контрагентов устраивает такой формат отображения номенклатуры в их учетных системах. Покупатели часто просят убрать характеристики из строковой части наименования товара, сохранив при этом внутренний учет по характеристикам у продавца. В рамках данной статьи мы подробно разберем, как решить эту задачу программными методами, рассмотрим альтернативные штатные способы настройки системы без изменения кода, а также проанализируем важные риски, связанные с маркировкой товаров.
Выясним, почему программа ведет себя именно так. При формировании электронного XML-документа (например, УПД или накладной) система обращается к специальным механизмам конфигурации для сбора данных о товарах. В 1С:УНФ версии 1.6 за этот процесс отвечает общий модуль УправлениеНебольшойФирмойЭлектронныеДокументыСервер.
Внутри этого модуля находится экспортный метод ПолучитьСтруктуруДопДанныхНоменклатуры. Именно этот метод собирает информацию о номенклатурной позиции и принудительно дополняет базовое наименование товара строковым представлением его характеристики, если учет по характеристикам включен в программе. На выходе в XML-файле получается следующая строка:
<СведТов НомСтр="4" НаимТов="Ячмень (Свин-кс от 06.12.2015 )" ОКЕИ_Тов="168" КолТов="24.34" ЦенаТов="10000" СтТовБезНДС="221272.73" НалСт="10%" СтТовУчНал="243400">
Наша задача — сделать так, чтобы в тег НаимТов попадало только «чистое» наименование номенклатуры (в данном случае — "Ячмень"). Рассмотрим пошагово способы решения этой задачи.
Прямое редактирование типовой конфигурации («снятие с поддержки») усложняет процесс последующих обновлений программы. Современным и безопасным стандартом разработки в среде 1С:Предприятие является использование расширений конфигурации. Этот механизм позволяет перехватить выполнение стандартного метода и скорректировать его результат без изменения основной конфигурации.
Выполним доработку по шагам:
КорректировкаНаименованийЭДО). Назначение расширения укажем как "Адаптация".УправлениеНебольшойФирмойЭлектронныеДокументыСервер.ПолучитьСтруктуруДопДанныхНоменклатуры и добавим ее в расширение с аннотацией &Вместо или &После.Проанализируем пример кода, который возвращает структуру с очищенными от характеристик наименованиями:
&Вместо("ПолучитьСтруктуруДопДанныхНоменклатуры")
Функция Расш1_ПолучитьСтруктуруДопДанныхНоменклатуры(Номенклатура, Характеристика = Неопределено)
// Вызываем базовое заполнение структуры через стандартный механизм
СтруктураДанных = ПродолжитьВызов(Номенклатура, Характеристика);
// Проверяем, заполнена ли номенклатура
Если ЗначениеЗаполнено(Номенклатура) Тогда
// Заменяем наименование в структуре на "чистое" наименование из карточки номенклатуры
СтруктураДанных.НаименованиеПолное = Номенклатура.НаименованиеПолное;
СтруктураДанных.Наименование = Номенклатура.Наименование;
КонецЕсли;
Возврат СтруктураДанных;
КонецФункции
Этот простой код перехватывает структуру данных, которая передается в модуль формирования XML для ЭДО, и принудительно перезаписывает поля полного и краткого наименования значениями непосредственно из карточки номенклатуры, игнорируя приписанную в скобках характеристику.
В решениях 1С существует стандартный инструмент, разработанный специально для тех случаев, когда покупателю требуется отправлять документы с наименованиями, отличными от вашей внутренней учетной системы. Этот инструмент называется Номенклатура контрагентов.
Рассмотрим, как им воспользоваться:
Преимущества этого подхода: гибкость. Одному клиенту характеристики могут мешать, а другому они могут быть жизненно необходимы. Данный способ позволяет решать задачу точечно, не затрагивая остальных участников обмена.
Иногда авторы конфигураций или пользователи настраивают автоматическую генерацию рабочего и полного наименования номенклатуры по шаблонам.
Проанализируем настройки программы: перейдем в раздел настроек номенклатуры и проверим шаблоны наименований для категорий товаров. Если характеристика жестко прописана в формуле генерации «Наименования для печати», то она физически записывается в реквизиты самой карточки номенклатуры при ее создании. В таком случае программный код бессилен, так как в базе данных само название уже содержит эту информацию в скобках. Если это так, необходимо скорректировать формулу генерации шаблона и переименовать элементы номенклатуры.
Если ваши товары подлежат обязательной маркировке (например, обувь, одежда, текстиль, молочная продукция, шины и т.д.), удаление характеристик из XML-документов может повлечь за собой серьезные технические и юридические проблемы.
Разберем причины возможных рисков:
Поэтому, если вы работаете с маркированной продукцией, настоятельно рекомендуем согласовать отказ от выгрузки характеристик с вашим юристом и техническим специалистом по маркировке.
При планировании перехода с редакции 1.6 на редакцию 3.0 следует учитывать, что архитектура подсистемы ЭДО претерпела значительные изменения. В новой редакции 1С:УНФ интеграция с электронным документооборотом реализована на базе БЭД (Библиотеки электронных документов) актуальных версий.
Описанный в Решении №1 метод общего модуля УправлениеНебольшойФирмойЭлектронныеДокументыСервер может изменить свое поведение или вообще перестать вызываться при формировании новых форматов документов (например, УПД по формату 5.03). При переходе на версию 3.0 программный код расширения потребуется адаптировать под новые методы Библиотеки электронных документов.