Почему расходятся остатки при создании подчиненного узла РИБ и как это исправить

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

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

В этой статье мы подробно разберем причины возникновения такой проблемы на примере конфигурации «Управление ювелирным предприятием» (базируется на «Управление торговлей 10.3») и рассмотрим пошаговый алгоритм её решения.

Разберем механику создания начального образа

Для начала важно понимать, что создание начального образа РИБ — это не простое копирование файлов базы данных или таблиц SQL. Это сложный процесс, в ходе которого система 1С:Предприятие анализирует состав плана обмена и последовательно выгружает объекты, на которые установлена «Авторегистрация» или которые были принудительно зарегистрированы для узла.

Если документ переносится, а его движения — нет, значит, на этапе миграции данных произошел разрыв связи между объектом (документом) и его набором записей в регистре. Проанализируем основные причины, почему это происходит.

Проверяем состав плана обмена

Самая очевидная причина — отсутствие регистра накопления в составе плана обмена. Рассмотрим, как это проверить:

  1. Откроем конфигуратор и найдем используемый план обмена (обычно это Полный или ПоОрганизациям).
  2. Перейдем на вкладку Состав.
  3. Найдем в списке регистр накопления ПартииТоваровНаСкладах (или тот, по которому расходятся остатки).
  4. Убедимся, что напротив регистра стоит галочка включения в состав, а в колонке Авторегистрация выбрано значение Разрешить.

Важный момент: Если для документа авторегистрация включена, а для регистра — выключена, то при создании узла приедет только «шапка» документа. Движения появятся только в том случае, если вы вручную перепроведете документ уже в подчиненном узле, что крайне не рекомендуется делать массово в РИБ.

Анализируем программные фильтры в модуле плана обмена

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

Проанализируем модуль плана обмена, а именно процедуру ПриОтправкеДанныхПодчиненному. Именно здесь разработчики часто ставят «заглушки». Посмотрим на пример кода, который может блокировать движения:


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

КонецПроцедуры

Если в коде присутствует подобная логика, и при этом в основной базе склад в движениях по какой-то причине не заполнен (или заполнен некорректно), фильтр просто «отсечет» эти движения при создании начального образа. Проверьте этот модуль на наличие условий Игнорировать или Удалить.

Выясним причину в учетной политике

В УТ 10.3 и её производных движения по партиям критично зависят от настроек партионного учета. Если при создании узла настройки учетной политики (регистры сведений) не передались первыми, то система может вести себя непредсказуемо.

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

Проблема отложенного проведения

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

Если вы создаете начальный образ базы в момент, когда документы проведены, но партии еще не «допроведены» обработкой, в подчиненный узел уйдут пустые наборы записей. Перед созданием РИБ обязательно выполните регламентную операцию «Проведение по партиям» за весь актуальный период.

Пошаговая инструкция по исправлению ситуации

Если узел уже создан и вы обнаружили нехватку движений, выполните следующие действия для восстановления целостности данных:

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

Особенности ювелирной отрасли

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

Заключение

Чудес в 1С не бывает: если документ есть, а движений нет — значит, они либо не были зарегистрированы к обмену, либо были отсечены программным фильтром ПриОтправкеДанных. Начните диагностику с проверки состава плана обмена и ручной регистрации одного документа. Если после ручной регистрации и обмена движения появились — проблема в настройках авторегистрации. Если не появились — ищите преграду в программном коде модуля плана обмена.

← На главную