Почему слетают розничные цены и движения регистра при обмене между 1С:Управление торговлей 10.3 и 1С:Розница?

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

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

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

Выясним причины сброса цен и движений документа

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

  1. Перезапись объекта при двустороннем обмене. Если документ Поступление товаров и услуг зарегистрирован к обмену в обе стороны, при синхронизации узлов периферийная база возвращает подтверждение или загружает объект обратно. Поскольку в базе-приемнике нетиповые колонки отсутствуют (или не внесены в правила обмена), входящий поток XML не содержит соответствующих узлов. При вызове платформенного метода чтения XML данные в документе-источнике перезаписываются, а отсутствующие колонки сбрасываются в значения по умолчанию.
  2. Автоматическое перепроведение документа при загрузке. В правилах конвертации объектов (ПКО) или параметрах плана обмена может быть установлен флаг автоматического проведения документов при загрузке. При вызове процедур проведения платформа очищает текущие движения документа. Если в этот момент табличная часть документа оказалась очищенной от розничных цен, модуль документа не может сформировать новые движения по регистру Цены номенклатуры, и старые записи удаляются.
  3. Некорректная обработка свойства ОбменДанными.Загрузка. Если алгоритм записи в регистр сведений Цены номенклатуры вынесен в модуль документа или подписки на события (ПередЗаписью, ПриЗаписи), но в коде отсутствует проверка ОбменДанными.Загрузка = Истина, типовой механизм загрузки сбрасывает движения.

Варианты решения проблемы

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

Способ 1. Корректировка правил обмена в конфигурации «Конвертация данных»

Для исправления правил обмена выполним следующие действия:

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

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

Способ 2. Отключение регистрационной выгрузки документа из базы-приемника

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

Способ 3. Переход на типовой механизм ценообразования

Проанализируем архитектуру конфигурации. Доработка табличной части документа поступления нетиповыми колонками цен часто приводит к конфликтам при обновлениях и обменах. Рекомендуется использовать стандартный механизм платформы:

  1. Ввод цен производить специализированным документом Установка цен номенклатуры, создаваемым на основании документа Поступление товаров и услуг.
  2. Документ Установка цен номенклатуры штатно участвует в обмене данными с конфигурацией 1С:Розница и формирует корректные движения по регистру Цены номенклатуры без риска сброса данных.
← На главную