Переход с распределенной информационной базы (РИБ) на централизованную работу в клиент-серверном варианте (SQL) — это серьезный шаг в эволюции ИТ-инфраструктуры розничной сети. Часто после такого переезда администраторы сталкиваются с тем, что база «помнит» свое прошлое в качестве главного узла распределенной системы. Это выражается в наличии префиксов в номерах документов (например, «00»), которые продолжают подставляться автоматически, даже если синхронизация данных удалена. Рассмотрим подробно, как полностью вывести базу из режима РИБ, разобраться с префиксацией и оптимизировать работу системы.
В системе 1С:Предприятие признак того, является ли текущая база узлом распределенной информационной базы, хранится на уровне ядра платформы. Даже если вы удалили все настройки синхронизации в интерфейсе «Синхронизация данных», база может продолжать считать себя «Главным узлом» или просто хранить установленный «Префикс этой информационной базы». Это влияет на работу механизмов нумерации, которые при создании нового документа обращаются к параметрам узла для формирования строкового номера.
Проанализируем ситуацию: если база была центральной в РИБ, она содержит записи в плане обмена. Если мы хотим, чтобы база стала «обычной» (автономной), нам необходимо программно разорвать связь с понятием «Главный узел» и очистить регистрацию изменений, которая может продолжать накапливаться в фоновом режиме, замедляя работу SQL-сервера.
Для того чтобы база перестала считать себя частью распределенной системы, необходимо выполнить специализированную команду на встроенном языке 1С. Рассмотрим, как это сделать с помощью внешней обработки или консоли кода. Основной метод, который нам потребуется — ПланыОбмена.УстановитьГлавныйУзел().
Выполним следующий алгоритм действий:
// Сброс признака главного узла РИБ
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
// Дополнительно рекомендуется проверить, не остались ли зарегистрированные изменения
// по планам обмена, чтобы очистить таблицы регистрации в SQL
Для Каждого ПланОбмена Из Метаданные.ПланыОбмена Цикл
ВыборкаУзлов = ПланыОбмена[ПланОбмена.Имя].Выбрать();
Пока ВыборкаУзлов.Следующий() Цикл
Если Не ВыборкаУзлов.Ссылка = ПланыОбмена[ПланОбмена.Имя].ЭтотУзел() Тогда
ПланыОбмена.УдалитьРегистрациюИзменений(ВыборкаУзлов.Ссылка);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Этот код делает две важные вещи: во-первых, он говорит платформе, что у данной базы больше нет вышестоящего или подчиненного узла в контексте РИБ. Во-вторых, он очищает таблицы регистрации изменений (так называемые «таблицы регистрации»), которые могут содержать миллионы записей, если обмены ранее работали нестабильно. Это существенно снизит нагрузку на SQL-сервер при проведении документов.
После того как мы «отвязали» базу от РИБ, необходимо разобраться с визуальным отображением префикса в номерах. Префикс в 1С:Розница обычно состоит из двух частей: префикса самой информационной базы и префикса организации или магазина. Выясним причину появления именно «00».
Посмотрим на настройки синхронизации:
Для решения проблемы с нумерацией после удаления префикса мы можем применить один из следующих подходов:
Рассмотрим важный аспект, упомянутый в обсуждении: работа аптеки через тонкий клиент в централизованной базе. В отличие от бутиков одежды, аптеки работают с системой МДЛП (Честный Знак). Проанализируем риски:
При использовании РИБ каждая торговая точка имела свою локальную базу. Если интернет пропадал, кассир мог продолжать отпускать товар (в рамках разрешенных законом процедур офлайн-работы или накопления чеков). В случае работы через тонкий клиент на SQL-сервере, любой обрыв связи с интернетом или сбой на центральном сервере полностью парализует работу 17 аптек одновременно.
Важный совет: Для стабильной работы в такой архитектуре необходимо обеспечить наличие резервного канала связи (например, 4G-модем с автоматическим переключением на роутере) в каждой точке. Также следует настроить библиотеку подключаемого оборудования (БПО) таким образом, чтобы тайм-ауты ожидания ответа от фискального регистратора не приводили к «зависанию» всей сессии пользователя при микроразрывах связи.
Выясним, почему база могла тормозить в файловом варианте и как не допустить этого в SQL. Файловая база 1С имеет ограничение на размер внутренних таблиц (4 Гб). При активной работе 17 точек это ограничение достигается очень быстро, особенно за счет таблиц итогов и регистров сведений по маркировке.
После миграции на SQL и отключения РИБ выполним следующие шаги по обслуживанию:
Таким образом, мы видим, что «выход» из РИБ — это не просто удаление настроек синхронизации, а комплекс мер по перенастройке платформенных параметров узла, коррекции логики нумерации и техническому обслуживанию базы данных на уровне SQL.