Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 06:44

Найти верхнего родителя

Автор TataRus, 16 ноя 2021, 11:18

0 Пользователей и 1 гость просматривают эту тему.

TataRus

Добрый день. Подскажите пожалуйста как найти верхнего Родителя для каждого реквизита из ТЧ и собрать их в СЗ? Значения реквизита я собрала в список, проверила на дубли и дальше пока в тупике.
1212.jpg

LexaK

TataRus, для удобства ответа, пожалуйста вставляйте свой код в виде текста (текста кода, вот тут вверху иконочка есть Код)
а не в виде картинки - как ее править? что бы вам ответ прислать?  :dfbsdfbsdf: 
если помогло нажмите: Спасибо!

alexandr_ll

TataRus, Например, найти уровень реквизита и в цикле найти родителя первого уровня для него.

TataRus

LexaK,
СписокЦфо = Новый СписокЗначений;

Для каждого ТекСтр из Объект.ТабЧасть  Цикл
  БитЦфо = ТекСтр.ДоговорыДокумента.бит_ЦФО;                                                                                                       
 Если ЗначениеЗаполнено(БитЦфо) и СписокЦфо.НайтиПоЗначению(БитЦфо) = Неопределено Тогда
 СписокЦфо.Добавить(БитЦфо);                                 
 КонецЕсли;   
КонецЦикла;                         
 Для а = 0 по СписокЦфо.Количество()-1 Цикл
 
Вроде так

TataRus

alexandr_ll, я читала про это, но при попытке реализации цикл не срабатывал

LexaK

TataRus, примерно такой код попробуйте

...
СписокЦфо = Новый СписокЗначений;
СписокРодителей = Новый СписокЗначений;

Для каждого ТекСтр из Объект.ТабЧасть  Цикл
БитЦфо = ТекСтр.ДоговорыДокумента.бит_ЦФО;                                                                                                       
Если ЗначениеЗаполнено(БитЦфо) и СписокЦфо.НайтиПоЗначению(БитЦфо) = Неопределено Тогда
СписокЦфо.Добавить(БитЦфо);                                 
КонецЕсли;   
КонецЦикла;                         

Для каждого лкСтр Из СписокЦфо Цикл

лкРодительЦФО = ПолучитьРодителя(лкСтр.Значение);
Если СписокРодителей.НайтиПоЗначению(лкРодительЦФО) = Неопределено Тогда
СписокРодителей.Добавить(лкРодительЦФО);                                 
КонецЕсли;   

КонецЦикла;
...
КонецЧегоТамУвас;

&НаСервереБезКонтекста
Функция ПолучитьРодителя(лкЦФО)

лкРодитель = лкЦФО;//сама себе родитель, если других нет
Пока ЗначениеЗаполнено(лкРодитель.Родитель) Цикл
лкРодитель = лкРодитель.Родитель;
КонецЦикла;

Возврат лкРодитель;

КонецФункции


если помогло нажмите: Спасибо!

TataRus

LexaK, я так не пробовала, вроде работает, можно дальше идти)
Спасибо большое!

Теги: #1С БП 3.0 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск