При работе с распределенными информационными базами (УРБД) в конфигурации «1С:Торговля и Склад 7.7» нередко возникает ситуация, когда на удаленной торговой точке остатки по номенклатурным позициям или актуальные цены расходятся с данными центральной базы. Попытка исправить ситуацию прямым вмешательством в файлы базы данных (таблицы DBF или SQL) приводит к еще более серьезным сбоям. Разберем архитектурные причины этой проблемы, выясним, почему нельзя править таблицы напрямую, и рассмотрим пошаговый алгоритм поиска и устранения расхождений.
Рассмотрим, как устроен механизм распределенных баз в платформе 1С 7.7. Пакеты обмена УРБД переносят между узлами не готовые остатки, а только сами документы и связанные с ними движения регистров (таблицы движений RA*). Таблицы итогов и остатков (RG*) формируются локально на каждом узле на основании проведенных документов.
Если внести ручные правки в файлы базы данных (например, изменить количество в таблице остатков или цену в 1SCONST):
1SDN* и 1SUP*), а значит, никогда не будут переданы в другие узлы распределенной информационной базы.Проанализируем основные факторы, вызывающие несоответствие остатков и цен между центральной базой (ЦБ) и периферийной базой (ПБ):
.CDX) на удаленной точке приводит к тому, что движения документов в базе присутствуют, но выборка итогов по регистру ОстаткиТМЦ рассчитывается некорректно.1SCONST. Если установка цен производилась нестандартными обработками без вызова механизмов регистрации изменений УРБД либо в конфигурации ограничена миграция периодических реквизитов, новые цены на точку не передаются.Разберем методику поиска причины расхождений с помощью стандартных средств конфигурации. Для корректного анализа необходимо отказаться от самописных отчетов и моментальных срезов.
После выявления характера проблемы применим один из штатных способов восстановления синхронизации:
Запускаем конфигуратор периферийной базы в монопольном режиме и открываем меню «Администрирование» → «Тестирование и исправление ИБ». Отмечаем флажками обязательные пункты: «Проверка физической целостности», «Реиндексация» и «Пересчет итогов». Данная процедура полностью пересчитывает таблицы остатков по имеющимся движениям документов и устраняет ошибки поврежденных индексов.
Если на точку не передались актуальные периодические цены или реквизиты номенклатуры, открываем центральную базу, заходим в проблемный элемент справочника Номенклатура или документ Переоценка, вносим незначительное изменение (или перевыбираем значение цены) и сохраняем объект. Это действие принудительно регистрирует изменения в очереди выгрузки УРБД для отправки в следующем пакете обмена.
Если расхождения вызваны задним числом проведенных документов, в центральной базе запускаем процедуру восстановления последовательности партионного учета, после чего передаем сформированные пакеты движений на удаленный узел.
В случаях, когда расхождения носят массовый характер или нарушена структура обмена, наиболее надежным решением является выгрузка нового образа периферийной базы из центрального узла с предварительным переносом всех локальных документов точки.