При эксплуатации распределенных информационных баз (РИБ) в конфигурации «1С:Розница 2.2» системные администраторы и программисты часто сталкиваются с проблемой деградации производительности периферийных узлов. Со временем объем файловых баз на торговых точках растет, что замедляет как саму работу программы, так и процессы обмена данными. Стандартная процедура свертки базы данных зачастую оказывается слишком трудоемкой и длительной. Разберем, как оптимизировать этот процесс, стоит ли заменять свертку созданием новых узлов и на какие критические нюансы следует обратить внимание.
Рассмотрим ситуацию: база периферийного узла объемом всего 4 Гб обрабатывается двое суток. В это время включены процессы создания архивов, перетаскивания данных на сервер для ускорения обработки и сама процедура свертки. Основная сложность заключается в том, что свертка на периферии без учета состояния центральной базы — процедура малоэффективная. Проанализируем причину: если мы свернем данные только на узле, при первом же обмене центральная база, «увидев» отсутствие данных, которые числятся за этим узлом, может попытаться восстановить их, отправив обратно весь массив информации. Таким образом, сверткой необходимо заниматься в первую очередь в Центральном узле, либо использовать методику создания новых узлов.
Создание нового узла часто оказывается быстрее и «чище», чем попытка вычистить старую базу. Посмотрим на алгоритм действий, который позволяет минимизировать простой торговой точки:
Преимущество этого метода в том, что мы получаем гарантированно «легкую» базу без накопленного технического мусора и ошибок в регистрах сведений.
Проанализируем еще более продвинутый способ, который минимизирует риски. Мы можем создать новый резервный узел и отрабатывать с ним в асинхронном режиме. Это означает, что пока старая база работает на кассе, мы готовим новую базу, выполняем в ней все необходимые регламентные операции, проверяем корректность остатков и цен. В момент пересменки или технологического перерыва мы просто заменяем файл базы данных 1Cv8.1CD (для файловых версий) на новый. Это позволяет избежать двухсуточного простоя магазина.
Выясним, почему при создании нового узла часто перестают работать кассы и сканеры. В «1С:Розница 2.2» настройки оборудования жестко привязаны к справочнику РабочиеМеста. Каждое рабочее место идентифицируется уникальным идентификатором (ID) базы и именем компьютера. При создании нового узла создается новый идентификатор информационной базы. В результате старые настройки оборудования становятся невидимыми.
Чтобы решить эту проблему, после развертывания нового узла необходимо:
РабочиеМеста.Рассмотрим техническую причину «раздувания» обменов. В центральной базе существуют таблицы регистрации изменений (ConfigChanges, DataChanges). Если мы просто подключим новый узел, но в центре для этого узла висит старая очередь сообщений, система начнет лавинообразную выгрузку данных. Перед подключением пересозданного или свежесвернутого узла необходимо программно очистить регистрацию изменений для этого узла.
Для этого можно использовать стандартную обработку «Регистрация изменений для обмена». Выбираем нужный узел, нажимаем правой кнопкой на корень дерева объектов и выбираем «Отменить регистрацию всех объектов».
При частичной выгрузке данных (с ограничением по дате) часто теряется история по дисконтным картам. Проанализируем ситуацию: если в базе не будет документов ВводОстатковПоБонуснымСчетам или истории покупок, накопительные скидки и бонусные баллы на кассе могут обнулиться.
Рекомендация: при настройке фильтров обмена убедитесь, что регистры, отвечающие за остатки бонусов, включены в выгрузку полностью, независимо от даты запрета, либо сформируйте актуальные документы ввода остатков на дату «свертки».
Разберем, как ускорить работу с файловой базой 4 Гб, если вы все же решили делать свертку штатной обработкой:
// Пример изменения признака узла (выполняется в копии центра)
ПланыОбмена.УстановитьГлавныйУзел(Неопределено); // Делаем базу автономной
ЭтотУзел = ПланыОбмена.ПоМагазинам.ЭтотУзел().ПолучитьОбъект();
ЭтотУзел.Код = "КодПериферийногоУзла";
ЭтотУзел.Наименование = "Магазин №1";
ЭтотУзел.Записать();
После этого необходимо программно удалить «лишние» данные, которые не относятся к данному магазину. Это работает быстрее, чем штатный механизм выгрузки через XML в режиме создания образа.
Если магазин торгует алкоголем, замена узла требует особого внимания к УТМ (Универсальному транспортному модулю). Разберем шаги:
Подводя итог, можно сказать, что создание нового узла в «1С:Розница 2.2» — это более предсказуемый и часто более быстрый процесс, чем классическая свертка периферийной базы. Однако он требует тщательной подготовки в части настройки рабочих мест и контроля регистрации изменений в центре.
Рекомендуем всегда очищать кэш 1С на клиентском компьютере после подмены базы. Для этого удалите содержимое папок в %AppData%\1C\1Cv8\. Это исключит странные ошибки графического интерфейса и сбои при первом запуске синхронизации. Проанализировав все риски, вы сможете сократить время обслуживания системы с нескольких суток до нескольких часов.