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