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