При настройке обмена данными между специализированными решениями (например, «1С:Аптечный учет в МО» / «1С:Больничная аптека») и вестибулярным бухгалтерским решением («1С:Бухгалтерия государственного учреждения») технические специалисты часто сталкиваются с критической проблемой: рассинхронизацией справочников номенклатуры.
В аптечном решении номенклатура ведется максимально детально: с указанием точного наименования, серий, сроков годности, производителей и упаковок (например, «Бинт стерильный, 120*80 см из нетканых материалов»). В то же время в 1С:БГУ бухгалтеры часто заводят упрощенные позиции (например, просто «Бинтик»). Попытка сопоставить эти справочники вручную, когда позиций тысячи, превращается в нереализуемую задачу. А простое удаление «старой» номенклатуры в БГУ приведет к нарушению ссылочной целостности базы и «битым» ссылкам в договорах, поступлениях и списаниях за прошлые периоды.
В этой статье мы подробно рассмотрим и разберем наиболее эффективные методики решения этой проблемы, начиная от организационных подходов и заканчивая автоматизированными техническими приемами.
Давайте проанализируем ситуацию: действительно ли бухгалтерии в 1С:БГУ необходима медицинская детализация до конкретной серии и производителя? Вся оперативная работа, контроль сроков годности и партионный учет уже ведутся в специализированной системе «1С:Больничная аптека».
Для оптимизации учета часто применяется метод свертки справочника:
1С:БГУ создаются укрупненные номенклатурные группы (например, «Перевязочные материалы», «Антибиотики», «Расходные материалы»).Если детальный учет в БГУ все же необходим, а справочники уже заведены хаотично, мы можем применить стратегию мягкого замещения без удаления документов:
УдалениеПомеченныхОбъектов.Для разработчиков приведем пример того, как концептуально может выглядеть программный поиск и замена дублей или сопоставленных элементов в коде:
// Пример программной замены дублирующих элементов справочника Номенклатура
Процедура ЗаменитьНоменклатуруНаНовую(СтараяСсылка, НоваяСсылка) Экспорт
// Создаем массив заменяемых значений
ТаблицаЗамены = Новый ТаблицаЗначений;
ТаблицаЗамены.Колонки.Добавить("ЧтоЗаменяем");
ТаблицаЗамены.Колонки.Добавить("НаЧтоЗаменяем");
НоваяСтрока = ТаблицаЗамены.Добавить();
НоваяСтрока.ЧтоЗаменяем = СтараяСсылка;
НоваяСтрока.НаЧтоЗаменяем = НоваяСсылка;
// Используем штатные механизмы платформы для поиска ссылок
НайтиИЗаменитьСсылки(ТаблицаЗамены);
КонецПроцедуры
Если база содержит огромный массив исторических документов за несколько лет, замена элементов во всех прошлых периодах может привести к искажению себестоимости при перепроведении. В таком случае рассмотрим сценарий поэтапного перехода:
Чтобы исключить проблему неверного сопоставления в будущем, необходимо перенастроить правила синхронизации данных. Вместо поиска по наименованию (которое пользователи могут изменить вручную в любой момент), необходимо использовать поиск по уникальному идентификатору источника:
1С:БГУ создается дополнительный реквизит для справочника Номенклатура — например, ID_Аптека (тип: Строка).ID_Аптека. Если элемент найден — обновляются его свойства, если нет — создается новый.Это полностью исключает появление дублей при случайном переименовании позиций пользователями.
Если обмен настроен через современный формат EnterpriseData, мы можем воспользоваться встроенным Помощником интерактивного сопоставления: