База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как связать табличные части по ключу в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 6 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
9 июля 2026 в 14:03 #38116
связь табличных частей по ключю
-
9 июля 2026 в 14:03 #38117
Связать табличные части по ключу в 1С можно через уникальный идентификатор, который добавляется в обе табличные части. Это классический способ реализации связи «главная-подчинённая» на форме.
Пример решения:
1. В обе табличные части добавьте реквизит типа «УникальныйИдентификатор» (например, поле ИД).
2. В модуле формы обработайте события:
— ПриНачалеРедактирования главной табличной части — при добавлении новой строки генерируйте новый уникальный идентификатор:
1С (Код)12345Процедура ГлавнаяТаблицаПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)Если НоваяСтрока ТогдаЭлемент.ТекущаяСтрока.ИД = Новый УникальныйИдентификатор;КонецЕсли;КонецПроцедуры— ПриНачалеРедактирования подчинённой табличной части — при добавлении новой строки присваивайте ей ИД из текущей строки главной табличной части:
1С (Код)12345Процедура ПодчиненнаяТаблицаПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)Если НоваяСтрока ТогдаЭлемент.ТекущаяСтрока.ИД = ЭлементыФормы.ГлавнаяТаблица.ТекущаяСтрока.ИД;КонецЕсли;КонецПроцедуры— ПриАктивизацииСтроки главной табличной части — фильтруйте подчинённую табличную часть по ИД:
1С (Код)1234567Процедура ГлавнаяТаблицаПриАктивизацииСтроки(Элемент)Если ЭлементыФормы.ГлавнаяТаблица.ТекущаяСтрока = Неопределено ТогдаВозврат;КонецЕсли;ЭлементыФормы.ПодчиненнаяТаблица.ОтборСтрок.ИД.Значение = ЭлементыФормы.ГлавнаяТаблица.ТекущаяСтрока.ИД;ЭлементыФормы.ПодчиненнаяТаблица.ОтборСтрок.ИД.Использование = Истина;КонецПроцедуры— ПриУдалении строки из главной табличной части — удаляйте связанные строки из подчинённой:
1С (Код)1234567Процедура ГлавнаяТаблицаПередУдалением(Элемент, Отказ)ИД = ЭлементыФормы.ГлавнаяТаблица.ТекущаяСтрока.ИД;СтрокиПодчиненной = ЭлементыФормы.ПодчиненнаяТаблица.НайтиСтроки(Новый Структура("ИД", ИД));Для каждого Строка Из СтрокиПодчиненной ЦиклЭлементыФормы.ПодчиненнаяТаблица.Удалить(Строка);КонецЦикла;КонецПроцедуры3. В свойствах поля ИД в табличных частях установите «Индексировать» и сделайте поле скрытым или недоступным для редактирования.
Так вы получите надёжную связь табличных частей по ключу.
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/186522/ — там подробно описан этот способ с примерами кода.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.