mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 21:24:11 +00:00
86 lines
4.1 KiB
Plaintext
86 lines
4.1 KiB
Plaintext
|
||
Процедура УстановитьФлажкиПотомков(СтрокаДерева) Экспорт
|
||
|
||
Для Каждого СтрокаДереваПотомок Из СтрокаДерева.Строки Цикл
|
||
|
||
СтрокаДереваПотомок.Метка = СтрокаДерева.Метка;
|
||
УстановитьФлажкиПотомков(СтрокаДереваПотомок);
|
||
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры // ЭлементыФормы.ДеревоПолей.ТекущаяСтрока()
|
||
|
||
Процедура УстановитьФлажкиРодителей(СтрокаДерева, ТрехЗначныйФлажок = Ложь) Экспорт
|
||
|
||
Родитель = СтрокаДерева.Родитель;
|
||
|
||
Если Родитель = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ИтоговаяМетка = Истина;
|
||
КоличествоЛожь = 0;
|
||
Для Каждого СтрокаСосед Из Родитель.Строки Цикл
|
||
Если СтрокаСосед.Метка = 0 Тогда
|
||
КоличествоЛожь = КоличествоЛожь + 1;
|
||
Если Не ТрехЗначныйФлажок Тогда
|
||
ИтоговаяМетка = Ложь;
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Если ТрехЗначныйФлажок Тогда
|
||
ИтоговаяМетка = ?(КоличествоЛожь = Родитель.Строки.Количество(), 0, ?(КоличествоЛожь = 0, 1, 2));
|
||
КонецЕсли;
|
||
|
||
Если ИтоговаяМетка <> Родитель.Метка Тогда
|
||
|
||
Родитель.Метка = ИтоговаяМетка;
|
||
УстановитьФлажкиРодителей(Родитель, ТрехЗначныйФлажок);
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры // УстановитьФлажкиРодителей()
|
||
|
||
Процедура УстановитьФлажокСтрокиПоПодчиненным(СтрокаДерева, ТрехЗначныйФлажок = Ложь) Экспорт
|
||
|
||
Если СтрокаДерева.Строки.Количество() = 0 Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ИтоговаяМетка = Истина;
|
||
КоличествоЛожь = 0;
|
||
|
||
Для Каждого ПодчиненнаяСтрока Из СтрокаДерева.Строки Цикл
|
||
|
||
УстановитьФлажокСтрокиПоПодчиненным(ПодчиненнаяСтрока, ТрехЗначныйФлажок);
|
||
Если ПодчиненнаяСтрока.Метка = 0 Тогда
|
||
КоличествоЛожь = КоличествоЛожь + 1;
|
||
КонецЕсли;
|
||
ИтоговаяМетка = ИтоговаяМетка И ПодчиненнаяСтрока.Метка ;
|
||
|
||
КонецЦикла;
|
||
|
||
Если ТрехЗначныйФлажок Тогда
|
||
ИтоговаяМетка = ?(КоличествоЛожь = СтрокаДерева.Строки.Количество(), 0, ?(КоличествоЛожь = 0, 1, 2));
|
||
КонецЕсли;
|
||
|
||
СтрокаДерева.Метка = ИтоговаяМетка;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ЕстьПолеСсылкаВТаблицеПолейРегистрации(ТаблицаПолейРегистрации) Экспорт
|
||
|
||
Результат = Ложь;
|
||
|
||
Для Каждого СтрокаТаблицы Из ТаблицаПолейРегистрации Цикл
|
||
Если СтрокаТаблицы.ПолеРегистрации.Количество() = 1 И СтрокаТаблицы.ПолеРегистрации[0].Значение = "Ссылка" Тогда
|
||
Результат = Истина;
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции |