Как исправить дублирование материалов в Отчете переработчика при обмене между 1С:УНФ и 1С:БП

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

При переходе на новые релизы программных продуктов 1С пользователи часто сталкиваются с непредвиденным поведением механизмов синхронизации. Одной из наиболее заметных и критичных проблем в линейке 1С:Управление нашей фирмой (УНФ) версии 3.0.9 стала ошибка при выгрузке документа Отчет переработчика в 1С:Бухгалтерию предприятия (БП). В этой статье мы подробно разберем, почему материалы начинают «размножаться» в бухгалтерской базе, как диагностировать эту проблему и какие пути решения предлагает фирма 1С.

Суть проблемы: кратное увеличение строк материалов

Проанализируем ситуацию, с которой столкнулись пользователи после обновления УНФ с версии 3.0.8.109 на ветку 3.0.9 (начиная с релиза 3.0.9.105 и выше). При выполнении стандартной синхронизации данных через формат EnterpriseData, табличная часть (ТЧ) «Материалы» в документе Отчет переработчика на стороне Бухгалтерии заполняется некорректно. Количество строк материалов увеличивается кратно количеству строк в таблице «Продукция» того же документа в УНФ.

Рассмотрим пример: если в УНФ в документе указано три разные позиции готовой продукции, а в материалах — пять позиций сырья, то после обмена в БП мы обнаружим 15 строк материалов. При этом количество в каждой «размноженной» строке остается идентичным исходному, что приводит к колоссальному завышению себестоимости и некорректным остаткам на счетах учета (например, на счете 10.07 «Материалы, переданные в переработку на сторону»).

Выясняем причины: почему происходит «затроение» данных?

Проанализируем техническую сторону вопроса. Ошибка кроется в логике формирования XML-сообщения обмена в формате EnterpriseData. В релизах УНФ 3.0.9.105 — 3.0.9.150 был изменен алгоритм сопоставления табличных частей. Механизм синхронизации начал использовать итератор, который при наличии нескольких строк продукции ошибочно применяет каждую строку материала ко всей продукции сразу, не учитывая внутренние связи или уникальность позиций.

Ситуация осложняется в следующих случаях:

  1. Использование спецификаций: Если для части продукции спецификации заполнены, а для одной из строк материалов спецификация не указана (пустая), алгоритм обмена дает сбой.
  2. Характеристики номенклатуры: Если в УНФ ведется учет по характеристикам, а в БП — нет (данные сворачиваются), механизм сопоставления «пугается» различий в количестве строк и начинает дублировать записи для обеспечения (как ему кажется) полноты данных.
  3. Дубли строк продукции: Наличие продукции с одинаковым наименованием, но разными параметрами в ТЧ «Продукция», гарантированно вызывает мультипликацию строк в ТЧ «Материалы».

Как воспроизвести ошибку для проверки

Для того чтобы убедиться, что ваша база подвержена именно этой типовой ошибке, выполним следующие действия в тестовой среде:

  1. Создадим в 1С:УНФ документ Отчет переработчика.
  2. Добавим в таблицу «Продукция» три разные позиции.
  3. Заполним таблицу «Материалы» автоматически по спецификациям.
  4. В одной из строк материалов принудительно очистим поле Спецификация.
  5. Проведем документ и запустим синхронизацию с 1С:БП.
  6. Проверим результат в бухгалтерской базе: если количество строк материалов утроилось — вы столкнулись с зарегистрированным багом 00-00665150.

Официальное решение от фирмы 1С

Фирма 1С признала данное поведение ошибкой релиза. В реестре ошибок она зарегистрирована под номером 00-00665150 (код обращения FR-1499749). Описание гласит: «Некорректный перенос материалов в отчете переработчика при наличии дублей строк в таблице продукция».

Рассмотрим способы исправления ситуации в порядке приоритетности:

Способ 1: Обновление конфигурации (Рекомендуется)

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

Версия исправления: 1С:Управление нашей фирмой 3.0.9.163 и выше.

После обновления УНФ до указанного релиза (или более свежего), необходимо перепровести проблемные документы или просто запустить повторную синхронизацию. Правила обмена внутри конфигурации будут обновлены, и ТЧ материалов в БП станет идентична ТЧ в УНФ.

Способ 2: Установка патча (Временное решение без обновления)

Если вы не готовы к полному обновлению конфигурации (например, из-за наличия доработок), можно воспользоваться механизмом установки патчей. Фирма 1С выпускала временное исправление для этой ошибки.

Рассмотрим, как найти и установить патч:

  1. Перейдем в раздел Обслуживание — Обновление программы.
  2. Выберем пункт Установленные патчи.
  3. Найдем патч с кодом EF_00_00665150.
  4. Если он отсутствует в списке доступных для автоматической загрузки, его можно скачать с портала ИТС и установить вручную через конфигуратор или в режиме «1С:Предприятие» (в зависимости от настроек прав доступа).

Способ 3: Ручные корректировки и обходные пути

Если обновление и патчи по каким-то причинам недоступны в моменте, проанализируем, как можно минимизировать последствия ошибки программными или административными методами:

1. Группировка строк продукции. Старайтесь избегать дублирования одинаковых номенклатурных позиций в ТЧ «Продукция». Если учет позволяет, объединяйте строки с одинаковой номенклатурой в одну, суммируя количество. Это снижает кратность итератора при выгрузке.

2. Контроль спецификаций. Следите за тем, чтобы в ТЧ «Материалы» у всех позиций была заполнена спецификация, если документ предполагает производство по нормам. Пустые значения в этом поле часто становятся триггером для сбоя логики обмена.

3. Использование правил обмена в расширении. Для опытных программистов 1С доступен вариант корректировки правил обмена через расширение конфигурации. Можно перехватить процедуру выгрузки объекта и добавить проверку на уникальность выгружаемых строк. Рассмотрим пример логики, которую можно внедрить в обработчик:


// Пример логики для исключения дублей в ТЧ (схематично)
Процедура ПередВыгрузкойОбъекта(Объект, Отказ)
    Если ТипЗнч(Объект) = Тип("ДокументОбъект.ОтчетПереработчика") Тогда
        // Создаем временную таблицу для хранения уникальных соответствий
        УникальныеМатериалы = Объект.Материалы.Выгрузить();
        УникальныеМатериалы.Свернуть("Номенклатура, Количество, Спецификация");
        // Очищаем и заполняем ТЧ заново перед формированием XML, если это допустимо правилами
        // Но лучше корректировать саму схему XDTO в правилах обмена EnterpriseData
    КонецЕсли;
КонецПроцедуры

Важно помнить, что прямое редактирование ТЧ в момент выгрузки может иметь побочные эффекты, поэтому предпочтительным остается использование патча EF_00_00665150, который правит именно логику наполнения данных в XML-пакете.

Резюме

Подведем итоги нашего анализа. Ошибка «размножения» материалов в Отчете переработчика — это результат некорректной итерации по строкам продукции в правилах обмена EnterpriseData в релизах УНФ 3.0.9.105-150.

Главный совет: проверьте версию вашей конфигурации УНФ. Если она ниже 3.0.9.163, обязательно запланируйте обновление или установите соответствующий патч. После исправления правил обмена не забудьте инициировать повторную выгрузку документов за проблемный период, чтобы данные в Бухгалтерии пришли в соответствие с данными управленческого учета.

← На главную