|
|
|
Значение поля дерева обработки не обновляется на форме | ☑ | ||
|---|---|---|---|---|
|
0
catzilla codzilkin
10.10.25
✎
09:37
|
Всем здравствуйте.
Есть реквизит (не табличная часть) внешней обработки типа Дерево. Инициализируется программно колонками и строками в обработчике формы "ПриСозданииНаСервере". Одна из колонок признак развернутости строки дерева. Есть дерево на форме с добавленными реквизитами, но не всеми что добавлены программно (этого признака нет). Для дерева в форме есть обработчик "ПередРазворачиванием", в котором делается вызов серверной процедуры и по параметру обработчика "НомерСтроки" устанавливается признак развернутости для дерева из реквизита обработки. Когда происходит закрытие формы по отладчику видно, что в строке которую развернули, колонка-признак строки дерева стоит ложь. То есть дерево-реквизит обработки не поменялось, но строка дерева на форме развернулась. Если после того, как устанавливается признак развернутости, вызывать процедуру ЗначениеВРеквизитФормы то дерево-реквизит обработки меняется. Но не раскрывается строка дерева на форме. Как сделать чтобы либо дерево-реквизит обработки менялось, либо строка дерева на форме раскрывалась? |
|||
|
1
catzilla codzilkin
10.10.25
✎
09:41
|
&НаСервере
// ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбъектНаСервере = РеквизитФормыВЗначение("Объект");
ОбъектНаСервере.Инициализация();
ЗначениеВРеквизитФормы(ОбъектНаСервере.ДеревоМетаданных, "Объект.ДеревоМетаданных");
КонецПроцедуры // ПриСозданииНаСервере
************************************
&НаКлиенте
// ДеревоМетаданныхПередРазворачиванием(Элемент, Строка, Отказ)
//
Процедура ДеревоМетаданныхПередРазворачиванием(Элемент, Строка, Отказ)
ДеревоМетаданныхПередРазворачиваниемИлиСворачиванием(Строка, Истина);
КонецПроцедуры // ДеревоМетаданныхПередРазворачиванием
************************************
&НаСервере
// ДеревоМетаданныхПередРазворачиваниемИлиСворачиванием(НомерСтроки, Признак) Экспорт
//
Процедура ДеревоМетаданныхПередРазворачиваниемИлиСворачиванием(НомерСтроки, Признак) Экспорт
ОбъектНаСервере = РеквизитФормыВЗначение("Объект");
СтрокаДерева = ПолучитьСтрокуДереваПоНомеру(ОбъектНаСервере.ДеревоМетаданных, НомерСтроки);
Если СтрокаДерева <> Неопределено Тогда
СтрокаДерева.Развернут = Признак;
КонецЕсли;
//ЗначениеВРеквизитФормы(ОбъектНаСервере.ДеревоМетаданных, "Объект.ДеревоМетаданных");
КонецПроцедуры // ДеревоМетаданныхПередРазворачиваниемИлиСворачиванием
************************************
&НаСервереБезКонтекста
// ПолучитьСтрокуДереваПоНомеру(Дерево, НомерСтроки) Экспорт
//
Функция ПолучитьСтрокуДереваПоНомеру(Дерево, НомерСтроки) Экспорт
Счетчик = 0;
ПрерватьЦикл = Ложь;
Результат = Неопределено;
КоллекцияСтрок = Дерево.Строки;
Если КоллекцияСтрок.Количество() <> 0 Тогда
Пока Не ПрерватьЦикл Цикл
Результат = ПеревыбратьСтроки(КоллекцияСтрок, Счетчик, НомерСтроки, ПрерватьЦикл);
КонецЦикла;
КонецЕсли;
Возврат Результат;
КонецФункции // ПолучитьСтрокуДереваПоНомеру
&НаСервереБезКонтекста
// ПеревыбратьСтроки(КоллекцияСтрок, ТекущийНомер, ИскомыйНомер) Экспорт
//
Функция ПеревыбратьСтроки(КоллекцияСтрок, ТекущийНомер, ИскомыйНомер, ПрерватьЦикл) Экспорт
Для Каждого Строка Из КоллекцияСтрок Цикл
Если ТекущийНомер = ИскомыйНомер Тогда
ПрерватьЦикл = Истина;
Возврат Строка;
Иначе
ТекущийНомер = ТекущийНомер + 1;
КоллекцияСтрок = Строка.Строки;
Если КоллекцияСтрок.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
Строка = ПеревыбратьСтроки(КоллекцияСтрок, ТекущийНомер, ИскомыйНомер, ПрерватьЦикл);
ПрерватьЦикл = Истина;
Возврат Строка;
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункции // ПолучитьСтрокуДереваПоНомеру |
|||
|
2
catzilla codzilkin
10.10.25
✎
10:05
|
Задача стоит программно запоминать и восстанавливать свернутость строк дерева при закрытии/открытии обработки.
|
|||
|
3
catzilla codzilkin
10.10.25
✎
10:05
|
Когда жмешь плюсик для раскрытия строки, эта строка активной не становится.
|
|||
|
4
catzilla codzilkin
13.10.25
✎
06:53
|
Разобрался. Надо перебирать строки дерева на форме, а не строки реквизита обработки. То есть на клиенте все делать.
Тему можно закрыть. |
|||
|
5
Волшебник
13.10.25
✎
09:25
|
Главное не мешать человеку!
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |