// Меняем значение реквизита
//подчиненых элементов на значение взятое у родителя
Процедура ОбходЭлементовВГруппе(Источник)
Выборка = Справочники.Номенклатура.ВыбратьИерархически(Источник.Ссылка);
Пока Выборка.Следующий() Цикл
ОбъектНом = Выборка.ПолучитьОбъект();
ОбъектНом.Контрагент = Источник.Контрагент;
ОбъектНом.Записать();
КонецЦикла;
КонецПроцедуры
//Работа с реквизитом
Процедура ОбработкаРеквизитаКонтранент(Источник) Экспорт
Если НЕ Источник.ЭтоГруппа Тогда // Если это элемент справочника тогда заполняем контра из контра родителя
Источник.Контрагент = Источник.Родитель.Контрагент;
ИначеЕсли Источник.ЭтоГруппа Тогда // Если это группа справочника.
// Группа может быть корневой и вложенной
// Если группа корневая, контрагента у ней принудительно не устанавливаем
Если Источник.Уровень()=0 Тогда
Если НЕ Источник.Контрагент.Пустая() Тогда
ОбходЭлементовВГруппе(Источник);
КонецЕсли;
Иначе
Если НЕ Источник.Родитель.Пустая() Тогда
Источник.Контрагент = Источник.Родитель.Контрагент;
ОбходЭлементовВГруппе(Источник);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если НЕ Источник.ДополнительныеСвойства.РодительДоИзменения = Источник.Родитель Тогда
Источник.Контрагент = Источник.Родитель.Контрагент;
Источник.Записать();
ОбходЭлементовВГруппе(Источник);
КонецЕсли;
КонецПроцедуры
//Подписка на событие
Процедура ЛК_НоменклатураПередЗаписью(Источник, Отказ) Экспорт
Источник.ДополнительныеСвойства.Вставить("РодительДоИзменения", Справочники.Номенклатура.НайтиПоКоду(Источник.Код).Родитель);
КонецПроцедуры
//Подписка на событие
Процедура ЛК_НоменклатураПриЗаписи(Источник, Отказ) Экспорт
ОбработкаРеквизитаКонтранент(Источник);
КонецПроцедуры
Задача такая: У справочника программно реализованно отображение реквизита контрагенты. У групп - доступ для редактирования Истина, у элементов - доступ для редактирования ложь.
При изменении реквизита контрагент в корневой группе (без родителя), устанавливаем значение этого реквизита у всех дочерних. - работает.
При переносе из группы в группу значение контрагента у групп и элементов так же меняется, НО не могу запретить менять реквизит контрагент у вложенных групп.
Что только не пробовал (..
Может есть идеи?
Лучше стрим. Потом - выполнять реквесты, собирать донат.
(0) у тебя ведь все группы вложенные, кроме самого верхнего уровня, а говоришь - "У групп - доступ для редактирования Истина". ты с логикой работы разберись, а потом уже её в коде реализуй.
(0)Как связано то, что ты присваиваешь значение реквизиту Контрагент и запрет на изменение данного реквизита?
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой