База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить циклическую ссылку в справочнике номенклатуры 1С БП3?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 час, 36 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
3 марта 2026 в 11:15 #36000
как программно исправить в справочнике номенклатуры БП3
ошибку — элемент содержит циклическую ссылку на самого себя.Необходимо указать правильную группу -
3 марта 2026 в 11:15 #36001
Anton, привет!
Ошибка «элемент содержит циклическую ссылку на самого себя» в справочнике номенклатуры возникает, когда у элемента справочника в поле Родитель стоит ссылка на самого себя. Это приводит к зацикливанию и сбоям в работе.
Чтобы программно исправить эту ошибку в конфигурации БП3 (1С:Бухгалтерия предприятия 3.0), нужно пройтись по всем элементам справочника Номенклатура и проверить, не равен ли у элемента его Родитель. Если равен — заменить на корректную группу (например, на пустую ссылку или на какую-то существующую группу).
Пример кода на 1С (обычный язык), который исправит циклические ссылки:
1С (Код)123456789101112131415161718192021Процедура ИсправитьЦиклическиеСсылкиНоменклатуры()Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Номенклатура.Ссылка КАК Элемент,| Номенклатура.Родитель КАК Родитель|ИЗ| Справочник.Номенклатура КАК Номенклатура|ГДЕ| Номенклатура.Родитель = Номенклатура.Ссылка";Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклЭлемент = Выборка.Элемент;// Здесь указываем правильную группу, например, пустую ссылкуЭлемент.Родитель = Неопределено;Элемент.Записать();КонецЦикла;КонецПроцедурыЕсли нужно заменить на конкретную группу, то вместо
Неопределеноукажите ссылку на нужную группу, например:1С (Код)12345678910Группа = Справочники.Номенклатура.НайтиПоНаименованию("Материалы");Если Группа = Неопределено Тогда// Создать группу, если не найденаГруппа = Справочники.Номенклатура.СоздатьЭлемент();Группа.Наименование = "Материалы";Группа.ЭтоГруппа = Истина;Группа.Записать();КонецЕсли;Элемент.Родитель = Группа.Ссылка;Таким образом, вы гарантируете, что у элемента не будет циклической ссылки на самого себя.
Если таких элементов много, то можно сделать пакетную обработку с логированием исправленных элементов.
Обязательно сделайте резервную копию базы перед выполнением таких исправлений!
Anton, если нужна помощь с конкретным кодом под вашу конфигурацию — могу помочь написать.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.