При работе в распределенных информационных базах (РИБ) конфигурации 1С:Розница (начиная с версий 2.2 и выше) администраторы часто сталкиваются с крайне неприятной проблемой. После настройки синхронизации между магазинами и центральным офисом данные по продажам передаются успешно, но карточки касс ККМ и кассовые документы в центральном узле начинают пестрить битыми ссылками вида <Объект не найден> (91:a75e...) в поле Подключаемое оборудование. При попытке выполнить проверку базы данных через режим тестирования и исправления (ТиИ) система выдает тысячи ошибок ссылочной целостности.
В этой статье мы подробно разберем, почему возникает данная проблема с точки зрения архитектуры платформы «1С:Предприятие», проанализируем последствия игнорирования этой ошибки и рассмотрим по шагам несколько практических способов ее устранения.
Для начала проанализируем архитектурную логику разработчиков фирмы «1С». Начиная с интеграции современных версий БСП (Библиотеки стандартных подсистем) и БПО (Библиотеки подключаемого оборудования), справочник ПодключаемоеОборудование (в некоторых редакциях — ЭкземплярыПодключаемогоОборудования) был намеренно исключен из стандартных планов обмена РИБ.
Логика такого решения вполне понятна:
Но здесь разработчики допустили серьезную методологическую ошибку. Заблокировав миграцию самого справочника ПодключаемоеОборудование, они оставили в планах обмена справочник РабочиеМеста, а также все финансовые документы (такие как ОтчетОРозничныхПродажах, ЧекККМ, КассоваяСмена) и справочник КассыККМ, которые содержат прямые реквизитные ссылки на конкретное оборудование. В итоге в центральную базу прилетают документы со ссылками на уникальные идентификаторы (GUID) оборудования, которого в этой базе физически не существует. Так и рождаются раздражающие битые ссылки <Объект не найден>.
---
Рассмотрим самый надежный практический способ решения проблемы, не требующий внесения изменений в конфигурацию программы. Наша задача — перенести сами элементы справочника оборудования из подчиненных узлов (где они физически настроены и работают) в центральную базу с сохранением их уникальных идентификаторов (GUID).
Разберем этот процесс по шагам:
ВыгрузкаЗагрузкаДанныхXML83.epf (ее можно найти на диске ИТС или в каталоге инструментов разработчика).Экземпляры подключаемого оборудования (или Подключаемое оборудование). Отметим его галочкой.ВыгрузкаЗагрузкаДанныхXML83.epf.Что произошло в результате? Обработка перенесла элементы оборудования, сохранив их точные внутренние GUID. Теперь все кассовые документы и карточки касс ККМ, прилетающие из этого магазина по каналам РИБ, увидят реально существующие элементы в справочнике оборудования центральной базы. Битые ссылки пропадут, а тестирования базы данных больше не будут сыпать ошибками. Настраивать порты и драйверы для этих виртуальных карточек в центральной базе не требуется — они нужны там исключительно для соблюдения ссылочной целостности данных.
---
Если в вашей торговой сети десятки или сотни магазинов, заниматься ручным переносом XML-файлов при подключении каждого нового фискального регистратора становится нецелесообразно. Рассмотрим, как автоматизировать этот процесс программным путем с помощью механизма расширений.
Для реализации этого сценария выполним следующие действия:
ПланОбмена.ПоМагазинам).ПодключаемоеОборудование в состав этого плана обмена с авторегистрацией.Проанализируем пример кода, который предотвратит затирание локальных настроек торгового оборудования:
Процедура ПередЗаписьюРегистрацииПараметровОборудования(Источник, Отказ) Экспорт
// Если запись происходит в подчиненном узле при приеме данных из ЦБ,
// предотвратим перезапись локальных физических параметров подключения.
Если Источник.ОбменДанными.Загрузка Тогда
// Очищаем или блокируем перезапись полей: ПараметрыПодключения, РабочееМесто, ЛокальныйДрайвер
Источник.ПараметрыПодключения = Новый ХранилищеЗначений(Неопределено);
КонецЕсли;
КонецПроцедуры
Использование данного метода позволяет автоматически передавать наименования и GUID оборудования во все узлы РИБ, полностью решая проблему битых ссылок «на лету» без ручного вмешательства администратора.
---
Рассмотрим ситуацию, когда вы по каким-то причинам решили временно проигнорировать проблему и оставить битые ссылки в базе данных. В таком случае вам нужно быть предельно осторожными при проведении регламентных технических работ в конфигураторе.
При запуске процедуры Тестирование и исправление в окне настроек проверки ссылочной целостности система предлагает три варианта действий при наличии битых ссылок:
Почему нельзя выбирать очистку ссылок? Если вы выберете этот пункт, платформа безвозвратно удалит информацию о кассовом оборудовании из всех закрытых документов ОтчетОРозничныхПродажах и ЧекККМ за всю историю ведения учета. В результате вы полностью потеряете аналитическую связь продаж с конкретными кассовыми аппаратами, что сделает невозможным проведение качественного аудита и сверки кассовых смен в разрезе конкретных ККТ.
Поэтому, выполняя регламентные операции ТиИ, всегда выбирайте либо режим Не изменять, либо Создавать объекты.