При работе в связке «1С:Управление торговлей 11» и «1С:Бухгалтерия» часто возникает неприятная ситуация: после настройки серийного учета в УТ и выгрузки документов в бухгалтерию, при обратном обмене (например, после закрытия месяца в БП) серии номенклатуры в документах «Приобретение товаров и услуг» и «Реализация товаров и услуг» в торговле просто исчезают. Разберем, почему это происходит и как с этим бороться.
Корень проблемы кроется в различии моделей учета двух конфигураций. В «Управлении торговлей» серийный учет — это мощный инструмент управленческого и складского учета. В «Бухгалтерии предприятия» типовой функционал не предполагает ведение учета в разрезе серий номенклатуры. Для бухгалтерии важны суммовые и количественные показатели, а не конкретная партия или серийный номер товара.
Процесс выглядит так:
Таким образом, проблема не в том, где хранятся серии (в табличной части «Товары» или в отдельной таблице «Серии»), а в самой логике двустороннего обмена данными.
Прежде чем переходить к настройке обмена, убедимся, что сам учет серий в УТ настроен верно. Автор вопроса хотел, чтобы серии записывались в отдельную табличную часть документа. Выясним, от чего это зависит.
Способ указания серий напрямую зависит от типа склада (ордерный или неордерный).
Шаг 1. Включаем учет серий.
Перейдем в раздел НСИ и администрирование → Настройка НСИ и разделов → Номенклатура → Разрезы учета. Установите флаг «Серии товаров».
Шаг 2. Настраиваем политику учета серий.
Создайте новую политику в справочнике Политики учета серий. Здесь вы определяете, на каких этапах и для каких операций указание серий будет обязательным. Например, тип политики «Управление остатками серий» требует обязательного указания серий во всех движениях.
Шаг 3. Применяем политику к номенклатуре.
Откройте карточку Вид номенклатуры, к которой относятся ваши товары. На вкладке «Основное» в поле «Политика учета серий» выберите созданную ранее политику.
Шаг 4. Определяем, где будут указываться серии.
А теперь самое главное — связь со складом:
Вывод: чтобы серии указывались в отдельной форме, как и хотел автор, необходимо, чтобы склад, по которому оформляется документ, не использовал ордерную схему для поступления и отгрузки.
Даже при правильной настройке учета серий проблема их затирания при обратном обмене останется. Рассмотрим несколько способов ее решения, от простого к сложному.
Самый простой, надежный и часто рекомендуемый метод — это настроить обмен документами реализации и поступления только в одном направлении: из УТ в БП.
Суть подхода:
Этот подход исключает саму возможность перезаписи данных в УТ из системы, которая не ведет учет в нужных аналитических разрезах.
Если двусторонний обмен документами необходим по требованиям бизнес-процессов, придется дорабатывать правила обмена. Задача — запретить обновление данных о сериях при загрузке документа из БП.
Современный обмен между типовыми конфигурациями часто использует «Универсальный формат обмена» (EnterpriseData). Редактировать его правила «на лету» нельзя. Потребуется выполнить следующие шаги:
Шаг 1. Выгружаем текущие правила обмена.
В УТ зайдите в НСИ и администрирование → Синхронизация данных → Настройки синхронизации данных. Откройте вашу настройку обмена с БП. В меню «Еще» найдите пункт для выгрузки правил обмена и сохраните их в XML-файл.
Шаг 2. Редактируем правила в «Конвертации данных».
Для этого понадобится конфигурация «1С:Конвертация данных, редакция 2» или «редакция 3».
РеализацияТоваровУслуг, которое отвечает за загрузку данных В УТ ИЗ БП.Товары.СерияНоменклатуры. Однако, поскольку серии хранятся в отдельной таблице, скорее всего, нужно модифицировать обработчики самого ПКО или ПКС для табличной части.РеализацияТоваровУслуг. Перейдите в обработчик события ПередЗаписью.Шаг 3. Добавляем код в обработчик.
В обработчик ПередЗаписью можно добавить следующий код, который не даст системе очистить данные о сериях, если они уже были в документе.
// Проверяем, что объект не новый (т.е. он обновляется)
Если НЕ ЭтоНовый() Тогда
// Получаем текущее состояние объекта из базы данных
СтарыйОбъект = Ссылка.ПолучитьОбъект();
// Если в старом объекте были указаны серии, а в загружаемом их нет,
// то копируем серии из старого объекта в новый (загружаемый)
Если СтарыйОбъект.Серии.Количество() > 0 И Объект.Серии.Количество() = 0 Тогда
Объект.Серии.Загрузить(СтарыйОбъект.Серии.Выгрузить());
КонецЕсли;
КонецЕсли;
Другой, более простой, но и более "грубый" вариант — это в ПКС для реквизита СерииНоменклатуры (если такой есть) в обработчике ПередВыгрузкой (со стороны БП) установить свойство:
НеОчищать = Истина;
Это может предотвратить очистку значения в приемнике, если из источника приходит пустое значение. Пробуйте разные подходы в зависимости от структуры ваших правил.
Шаг 4. Сохраняем и загружаем новые правила.
Сохраните измененные правила в новый XML-файл. Затем в настройках синхронизации в УТ загрузите этот файл как измененный комплект правил. После этого синхронизация будет работать по вашей новой логике.
Важно: Этот способ требует хорошего понимания работы «Конвертации данных» и структуры объектов 1С. Перед внесением изменений в рабочую базу обязательно сделайте резервную копию и протестируйте обмен на копии.