Почему в 1С:УТ не обновляется статус перемещения на «Принято» после обмена с «Розницей»?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При организации совместной работы конфигураций «1С:Управление торговлей 11» и «1С:Розница 2» часто возникает типовая ситуация: документ Перемещение товаров оформляется и проводится в центральной базе УТ, затем успешно выгружается в базу розничного магазина. В «Рознице» сотрудники склада или магазина принимают товар и проводят документ, однако при обратном обмене статус документа в УТ так и остается в значении «Отгружено», не переходя в «Принято».

Разберем причины такого поведения типового механизма синхронизации и рассмотрим практические варианты решения задачи: от изменения регламентов и типовых настроек до доработки логики обмена.

Причины поведения типового обмена

Выясним причину, почему синхронизация не меняет статус автоматически. Здесь действуют два основных фактора:

  1. Различие моделей учета и реквизитного состава: В «1С:Управление торговлей 11» реализован полноценный пошаговый контроль товародвижения. Документ Перемещение товаров использует перечисление СтатусыПеремещенийТоваров со значениями КОтгрузке, Отгружено и Принято. В «1С:Розница 2» статусная модель перемещений построена иначе: проведение документа фиксирует факт хозяйственной операции без ведения сквозных статусов согласования и отгрузки, принятых в УТ.
  2. Ограничения типовых правил конвертации данных (КД 2): В поставляемых типовых правилах обмена отсутствует прямое сопоставление свойств, передающее факт завершения приемки в статус УТ. Более того, при коллизиях изменений приоритет обычно отдается центральной управляющей базе (УТ), из-за чего данные по статусам из подчиненного узла не перезаписывают реквизиты документа в УТ.

Таким образом, в стандартной поставке статус в УТ должен устанавливаться вручную ответственным менеджером либо необходимо применить один из способов автоматизации.

Вариант 1. Отключение статусов перемещений товаров в УТ (без программирования)

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

Разберем по шагам, как отключить функциональную опцию в «1С:Управление торговлей 11»:

  1. Перейдем в раздел НСИ и администрирование.
  2. Откроем пункт Склад и доставка.
  3. Развернем блок настроек Перемещение товаров.
  4. Снимем флаг Статусы перемещений товаров.

После отключения данной опции поле Статус исчезнет из формы документа, и необходимость переводить перемещение в статус Принято отпадет.

Вариант 2. Корректировка правил конвертации данных

Если учет товаров в пути необходим и требуется автоматическая смена статуса при получении данных из магазина, скорректируем правила обмена в конфигурации «Конвертация данных» (КД 2).

Рассмотрим логику доработки: при выгрузке документа из «Розницы» или при его загрузке в УТ необходимо проверять состояние документа. Если в базе-приемнике или источнике документ проведен, реквизиту Статус принудительно назначается нужное значение.

Посмотрим на пример кода в обработчике ПослеЗагрузки для правила конвертации объекта (ПКО) документа ПеремещениеТоваров на стороне УТ:


Если Объект.Проведен Тогда
    Объект.Статус = Перечисления.СтатусыПеремещенийТоваров.Принято;
    // При необходимости заполняем дату поступления, если она требуется при проведении в статусе Принято
    Если Не ЗначениеЗаполнено(Объект.ДатаПоступления) Тогда
        Объект.ДатаПоступления = Объект.Дата;
    КонецЕсли;
КонецЕсли;

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

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

Вариант 3. Автоматизация средствами расширения или регламентного задания в УТ

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

Разберем по шагам возможные варианты реализации:

  1. Подписка на событие при обмене: Перехватываем событие после загрузки данных или записи документа. Если документ пришел из узла розничной сети в проведенном состоянии, программно изменяем значение реквизита Статус на Перечисления.СтатусыПеремещенийТоваров.Принято и перезаписываем объект в режиме проведения.
  2. Регламентное задание: Настроим фоновое задание, которое с заданной периодичностью (например, раз в час) находит документы Перемещение товаров со статусом Отгружено. Задание проверяет подтверждение приемки (например, наличие зеркального входящего ордера или статус проведения в таблице регистрации изменений) и переводит документ в статус Принято.

Пример программного перевода статуса в модуле:


ДокументОбъект = СсылкаНаПеремещение.ПолучитьОбъект();
Если ДокументОбъект.Статус = Перечисления.СтатусыПеремещенийТоваров.Отгружено Тогда
    ДокументОбъект.Статус = Перечисления.СтатусыПеремещенийТоваров.Принято;
    Попытка
        ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    Исключение
        ЗаписьЖурналаРегистрации("Синхронизация.Перемещение", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
    КонецПопытки;
КонецЕсли;

Вариант 4. Регламентная ручная обработка (типовой процесс)

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

← На главную