|
добавление реквизита в дерево значений формы (УФ 8.3) | ☑ | ||
---|---|---|---|---|
0
s-n-a-y
27.10.15
✎
09:38
|
Добавил реквизит в дерево значений формы (тип Строка). Добавил колонку в соответствующей таблице на форме. Указал путь к данным на рекв. дерева значений. Программно заполняю колонку (ННомер):
... СтрокаДерева = Дерево.Строки.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаДерева, Строка); СтрокаДерева.ННомер = "123"; ... В отладчике вижу, что реквизит дерева заполняется присвоенным значением. Колонка отображается на форме в таблице, но она пустая. Что не так? |
|||
1
s-n-a-y
27.10.15
✎
09:42
|
если присвавиваю уже существующему реквизиту, то все показывается
СтрокаДерева.Наименование = "123"; |
|||
2
s-n-a-y
27.10.15
✎
10:00
|
ап
|
|||
3
patria0muerte
27.10.15
✎
10:22
|
Так чего не отображается то? Наименование или ННомер?
|
|||
4
s-n-a-y
27.10.15
✎
10:29
|
(3) я добавил колонку ННомер. Она отображается, но она пустая, а должна была заполнится значением "123".
|
|||
5
Nuobu
27.10.15
✎
11:22
|
(4) РеквизитФормыВЗначение
ЗначениеВРеквизитФормы. |
|||
6
s-n-a-y
27.10.15
✎
15:59
|
проблема еще актуальна. Я добавил колонку ННомер. Она отображается, но она пустая, а должна была заполнится значением "123". Заполняю программно, см (0) вот скрин
<img alt="" src="http://www.pixic.ru/i/20o0K9a1X1j7P3g2.png"> |
|||
7
s-n-a-y
27.10.15
✎
15:59
|
||||
8
s-n-a-y
27.10.15
✎
16:02
|
(5) Дерево в коде (0) - получено из РеквизитФормыВЗначение()
|
|||
9
Nuobu
27.10.15
✎
17:19
|
(8) ЗначениеВРеквизитФормы
Делал? |
|||
10
Mort
27.10.15
✎
17:49
|
Код создания колонок покажи.
|
|||
11
s-n-a-y
28.10.15
✎
08:08
|
(9), (10) я изменяю код стандартной конфигурации. Вот полный код, мои добавления обрамлены в //н+ комз и //н- комз:
&НаСервере Процедура ОбновитьДеревоЗадачМнеСервер() ДеревоЗадач = РеквизитФормыВЗначение("ЗадачиМне"); ДеревоЗадач.Строки.Очистить(); СформироватьДеревоЗадачМне(ДеревоЗадач); СформироватьГруппировкиЗадачМне(ДеревоЗадач); Если ПустаяСтрока(ЗадачиМнеСортироватьПо) Тогда ЗадачиМнеСортироватьПо = "СрокИсполнения"; ЗадачиМнеНаправлениеСортировки = "Возр"; КонецЕсли; ДеревоЗадач.Строки.Сортировать( ЗадачиМнеСортироватьПо + " " + ЗадачиМнеНаправлениеСортировки, Ложь); ЗначениеВДанныеФормы(ДеревоЗадач, ЗадачиМнеПолный); КонецПроцедуры &НаСервере Процедура СформироватьГруппировкиЗадачМне(ДеревоЗадач = Неопределено) Если ЗадачиМнеВидГруппировки = "Автор" Тогда СформироватьСписокАвторов(ДеревоЗадач); ИначеЕсли ЗадачиМнеВидГруппировки = "Проект" Тогда СформироватьСписокПроектов(ДеревоЗадач); ИначеЕсли ЗадачиМнеВидГруппировки = "ТочкаМаршрута" Тогда СформироватьСписокТочекМаршрута(ДеревоЗадач); ИначеЕсли ЗадачиМнеВидГруппировки = "Флаг" Тогда СформироватьСписокФлагов(ДеревоЗадач); КонецЕсли; КонецПроцедуры // Формирует дерево задач в списке задачи мне // &НаСервере Процедура СформироватьДеревоЗадачМне(Дерево) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ЗадачиИсполнителя.Ссылка КАК Ссылка, | ВЫБОР | КОГДА НЕ ЕСТЬNULL(ДанныеБизнесПроцессов.Завершен, ИСТИНА) | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ КАК АктивныйПроцесс |ПОМЕСТИТЬ ЗадачиСАктивнымиПроцессами |ИЗ | Задача.ЗадачаИсполнителя КАК ЗадачиИсполнителя | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеБизнесПроцессов КАК ДанныеБизнесПроцессов | ПО (ДанныеБизнесПроцессов.ВедущаяЗадача = ЗадачиИсполнителя.Ссылка) |ГДЕ | %УсловиеОтбора% | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ЗадачиИсполнителя.Ссылка, | ВЫБОР | КОГДА НЕ ЕСТЬNULL(ДанныеБизнесПроцессов.Завершен, ИСТИНА) | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ |ИЗ | Задача.ЗадачаИсполнителя КАК ЗадачиИсполнителя | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеБизнесПроцессов КАК ДанныеБизнесПроцессов | ПО (ДанныеБизнесПроцессов.ГлавнаяЗадача = ЗадачиИсполнителя.Ссылка) |ГДЕ | %УсловиеОтбора% |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Задачи.Ссылка КАК Ссылка, | СУММА(Задачи.АктивныйПроцесс) КАК КоличествоАктивныхПроцессов |ПОМЕСТИТЬ ЗадачиСКоличествомАктивныхПроцессов |ИЗ | ЗадачиСАктивнымиПроцессами КАК Задачи | |СГРУППИРОВАТЬ ПО | Задачи.Ссылка | |ИНДЕКСИРОВАТЬ ПО | Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ЗадачиИсполнителя.Ссылка, | ЗадачиИсполнителя.Дата КАК Дата, | ЗадачиИсполнителя.Наименование, | ЗадачиИсполнителя.СрокИсполнения, | ЗадачиИсполнителя.ПринятаКИсполнению, | ЗадачиИсполнителя.Выполнена, | ВЫБОР | КОГДА ЗадачиИсполнителя.СрокИсполнения <> ДАТАВРЕМЯ(1, 1, 1) | И ЗадачиИсполнителя.СрокИсполнения < &ТекущаяДата | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК Просрочена, | ЗадачиИсполнителя.Автор, | ВЫБОР | КОГДА ЗадачиИсполнителя.Важность = ЗНАЧЕНИЕ(Перечисление.ВариантыВажностиЗадачи.Низкая) | ТОГДА 0 | КОГДА ЗадачиИсполнителя.Важность = ЗНАЧЕНИЕ(Перечисление.ВариантыВажностиЗадачи.Высокая) | ТОГДА 2 | ИНАЧЕ 1 | КОНЕЦ КАК Важность, //SS++ | ЗадачиИсполнителя.Корреспондент КАК Корреспондент, | ВЫБОР | КОГДА ЕСТЬNULL(ВложенныйЗапрос.Количество, 0) = 0 | ТОГДА -1 | ИНАЧЕ ВЫБОР | КОГДА ВложенныйЗапрос.НеВыполнена > 0 | ТОГДА 0 | ИНАЧЕ 2 | КОНЕЦ | КОНЕЦ КАК КартинкаГлавнаяЗадача, //SS-- | ВЫБОР | КОГДА ЗадачиИсполнителя.Исполнитель = &ТекущийПользователь | ТОГДА -1 | КОГДА ЗадачиИсполнителя.Исполнитель В (&Исполнители) | ТОГДА 3 | ИНАЧЕ 4 | КОНЕЦ КАК Картинка, | ЗадачиИсполнителя.БизнесПроцесс, | ЗадачиИсполнителя.ТочкаМаршрута, | ЗадачиИсполнителя.ПредметСтрокой, | ЗадачиИсполнителя.Проект, | ВЫБОР | КОГДА ЗадачиИсполнителя.Проект = ЗНАЧЕНИЕ(Справочник.Проекты.ПустаяСсылка) | ТОГДА &ИмяГруппыБезПроекта | ИНАЧЕ ЗадачиИсполнителя.Проект.Представление | КОНЕЦ КАК ПредставлениеПроекта, | ИСТИНА КАК Показывать, | ВЫБОР | КОГДА ЗадачиСКоличествомАктивныхПроцессов.КоличествоАктивныхПроцессов > 0 | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЕстьАктивныеПроцессы, | ЕСТЬNULL(ФлагиОбъектов.Флаг, ЗНАЧЕНИЕ(Перечисление.ФлагиОбъектов.ПустаяСсылка)) КАК Флаг, | ВЫБОР | КОГДА ФлагиОбъектов.Флаг = ЗНАЧЕНИЕ(Перечисление.ФлагиОбъектов.Красный) | ТОГДА 1 | КОГДА ФлагиОбъектов.Флаг = ЗНАЧЕНИЕ(Перечисление.ФлагиОбъектов.Синий) | ТОГДА 2 | КОГДА ФлагиОбъектов.Флаг = ЗНАЧЕНИЕ(Перечисление.ФлагиОбъектов.Желтый) | ТОГДА 3 | КОГДА ФлагиОбъектов.Флаг = ЗНАЧЕНИЕ(Перечисление.ФлагиОбъектов.Зеленый) | ТОГДА 4 | КОГДА ФлагиОбъектов.Флаг = ЗНАЧЕНИЕ(Перечисление.ФлагиОбъектов.Оранжевый) | ТОГДА 5 | КОГДА ФлагиОбъектов.Флаг = ЗНАЧЕНИЕ(Перечисление.ФлагиОбъектов.Лиловый) | ТОГДА 6 | ИНАЧЕ 0 | КОНЕЦ КАК НомерФлага, | ЗадачиИсполнителя.Исполнитель КАК Исполнитель, | ВЫБОР | КОГДА КешИнформацииОбОбъектах.СостояниеКонтроля = ЗНАЧЕНИЕ(Перечисление.СостоянияКонтроля.НаКонтроле) | ТОГДА ВЫБОР | КОГДА КешИнформацииОбОбъектах.СрокИсполнения = ДАТАВРЕМЯ(1, 1, 1) | ИЛИ КешИнформацииОбОбъектах.СрокИсполнения >= &ТекущаяДата | ТОГДА 1 | ИНАЧЕ 3 | КОНЕЦ | КОГДА КешИнформацииОбОбъектах.СостояниеКонтроля = ЗНАЧЕНИЕ(Перечисление.СостоянияКонтроля.СнятсКонтроля) | ТОГДА 4 | КОГДА КешИнформацииОбОбъектах.СостояниеКонтроля = ЗНАЧЕНИЕ(Перечисление.СостоянияКонтроля.НаКонтролеНесколько) | ТОГДА ВЫБОР | КОГДА КешИнформацииОбОбъектах.СрокИсполнения = ДАТАВРЕМЯ(1, 1, 1) | ИЛИ КешИнформацииОбОбъектах.СрокИсполнения >= &ТекущаяДата | ТОГДА 5 | КОГДА КешИнформацииОбОбъектах.СрокИсполненияОбщий = ДАТАВРЕМЯ(1, 1, 1) | ИЛИ КешИнформацииОбОбъектах.СрокИсполненияОбщий >= &ТекущаяДата | ТОГДА 8 | ИНАЧЕ 6 | КОНЕЦ | КОГДА КешИнформацииОбОбъектах.СостояниеКонтроля = ЗНАЧЕНИЕ(Перечисление.СостоянияКонтроля.СнятсКонтроляНесколько) | ТОГДА 7 | КОГДА КешИнформацииОбОбъектах.СостояниеКонтроля = ЗНАЧЕНИЕ(Перечисление.СостоянияКонтроля.СмешанноНесколько) | ТОГДА ВЫБОР | КОГДА КешИнформацииОбОбъектах.СрокИсполнения = ДАТАВРЕМЯ(1, 1, 1) | ИЛИ КешИнформацииОбОбъектах.СрокИсполнения >= &ТекущаяДата | ТОГДА 9 | ИНАЧЕ 10 | КОНЕЦ | ИНАЧЕ 0 | КОНЕЦ КАК СостояниеКонтроля |ПОМЕСТИТЬ Задачи |ИЗ | ЗадачиСКоличествомАктивныхПроцессов КАК ЗадачиСКоличествомАктивныхПроцессов | ЛЕВОЕ СОЕДИНЕНИЕ Задача.ЗадачаИсполнителя КАК ЗадачиИсполнителя | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФлагиОбъектов КАК ФлагиОбъектов | ПО ЗадачиИсполнителя.Ссылка = ФлагиОбъектов.Объект | И (ФлагиОбъектов.Пользователь = &ТекущийПользователь) | ПО ЗадачиСКоличествомАктивныхПроцессов.Ссылка = ЗадачиИсполнителя.Ссылка //SS++ | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ |ЗадачаИсполнителя.ГлавнаяЗадача КАК ГлавнаяЗадача, |СУММА(1) КАК Количество, |СУММА(ВЫБОР | КОГДА ЗадачаИсполнителя.Выполнена | ТОГДА 0 | ИНАЧЕ 1 | КОНЕЦ) КАК НеВыполнена |ИЗ | Задача.ЗадачаИсполнителя КАК ЗадачаИсполнителя |ГДЕ | (ЗадачаИсполнителя.ТочкаМаршрута В (&ТочкаМаршрутаПодЗадачи) //н+ комз по просьбам пользователей | или &МухаметовОС <> Неопределено И | ЗадачаИсполнителя.Исполнитель = &МухаметовОС | ) //н- комз | |СГРУППИРОВАТЬ ПО | ЗадачаИсполнителя.ГлавнаяЗадача) КАК ВложенныйЗапрос | ПО ЗадачиСКоличествомАктивныхПроцессов.Ссылка = ВложенныйЗапрос.ГлавнаяЗадача | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КешИнформацииОбОбъектах КАК КешИнформацииОбОбъектах | ПО ЗадачиСКоличествомАктивныхПроцессов.Ссылка = КешИнформацииОбОбъектах.Объект |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Задачи.Ссылка, | Задачи.Дата, | Задачи.Наименование, | Задачи.СрокИсполнения, | Задачи.ПринятаКИсполнению, | Задачи.Выполнена, | Задачи.Просрочена, | Задачи.Автор, | Задачи.Важность, // ss++ | Задачи.Корреспондент, | Задачи.КартинкаГлавнаяЗадача, | Задачи.Картинка, | Задачи.БизнесПроцесс, | Задачи.ТочкаМаршрута, | Задачи.ПредметСтрокой, | Задачи.Проект, | Задачи.ПредставлениеПроекта, | Задачи.Показывать, | Задачи.ЕстьАктивныеПроцессы, | Задачи.Флаг, | Задачи.НомерФлага, | Задачи.Исполнитель, | Задачи.СостояниеКонтроля, | ""234"" КАК ННомер |ИЗ | Задачи КАК Задачи | |УПОРЯДОЧИТЬ ПО | Задачи.Дата |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | КОЛИЧЕСТВО(*) КАК ЗадачиМнеВсего, | ЕСТЬNULL(СУММА(ВЫБОР | КОГДА Задачи.ПринятаКИсполнению = ЛОЖЬ | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ), 0) КАК ЗадачиМнеНовые, | ЕСТЬNULL(СУММА(ВЫБОР | КОГДА Задачи.Выполнена = ЛОЖЬ | И Задачи.СрокИсполнения <> ДАТАВРЕМЯ(1, 1, 1) | И Задачи.СрокИсполнения < &ТекущаяДата | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ), 0) КАК ЗадачиМнеПросроченные |ИЗ | Задачи КАК Задачи"; Запрос.УстановитьПараметр("Исполнители", БизнесПроцессыИЗадачиСервер.ИсполнителиЗадачПользователя(ТекущийПользователь)); Запрос.УстановитьПараметр("ТекущийПользователь", ТекущийПользователь); Запрос.УстановитьПараметр("ТекущаяДата", НачалоДня(ТекущаяДатаСеанса())); Запрос.УстановитьПараметр("ИмяГруппыБезПроекта", НСтр("ru = 'Без проекта'")); //н+ комз ФизЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию("Мухаметов Олег Сергеевич"); //ФизЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию("Сулимов Нияз Ильдарович"); МухаметовОС = Неопределено; Если ЗначениеЗаполнено(ФизЛицо) И ТипЗнч(ТекущийПользователь) = Тип("СправочникСсылка.Пользователи") И ЗначениеЗаполнено(ТекущийПользователь) И ТекущийПользователь.ФизЛицо = ФизЛицо Тогда МухаметовОС = ТекущийПользователь; КонецЕсли; Запрос.УстановитьПараметр("МухаметовОС", МухаметовОС); //н- комз //SS++ 27/08/2014 СписокТочкаМаршрута =Новый Списокзначений; СписокТочкаМаршрута.Добавить(Бизнеспроцессы.Исполнение.ТочкиМаршрута.Исполнить); СписокТочкаМаршрута.Добавить(Бизнеспроцессы.Поручение.ТочкиМаршрута.Выполнить); Запрос.УстановитьПараметр("ТочкаМаршрутаПодЗадачи",СписокТочкаМаршрута); //SS-- УсловиеОтбора = УсловиеОтбораЗадачМне(); Запрос.Текст = СтрЗаменить(Запрос.Текст, "%УсловиеОтбора%", УсловиеОтбора); Результат = Запрос.ВыполнитьПакет(); ТаблицаЗадач = Результат[3].Выгрузить(); ТаблицаВложенныхЗадач = Новый ТаблицаЗначений; ТаблицаВложенныхЗадач.Колонки.Добавить("Задача"); ТаблицаВложенныхЗадач.Колонки.Добавить("ВедущаяЗадача"); ТаблицаВложенныхЗадач.Колонки.Добавить("ГлавнаяЗадача"); // Заполнение корневых задач Для каждого Строка Из ТаблицаЗадач Цикл Задача = Строка.Ссылка; ЭтоКорневаяЗадача = Ложь; Если ЗначениеЗаполнено(Строка.БизнесПроцесс) Тогда РеквизитыПроцесса = ОбщегоНазначения.ПолучитьЗначенияРеквизитов( Строка.БизнесПроцесс, "ВедущаяЗадача, ГлавнаяЗадача"); Если Не ЗначениеЗаполнено(РеквизитыПроцесса.ВедущаяЗадача) И Не ЗначениеЗаполнено(РеквизитыПроцесса.ГлавнаяЗадача) Тогда СтрокаДерева = Дерево.Строки.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаДерева, Строка); //н+ комз //темп = Строка.Ссылка.Наименование; //нач = Найти(темп, "(№"); //Если нач > 0 Тогда // нач = нач + 2; // темп = Прав(темп, СтрДлина(темп) - нач); // кон = Найти(темп, " от "); // Если кон > 0 Тогда // темп = Лев(темп, кон - 1); // иначе // темп = ""; // КонецЕсли; //иначе // темп = ""; //КонецЕсли; //СтрокаДерева.ННомер = темп; СтрокаДерева.ННомер = "123"; //н- комз ЭтоКорневаяЗадача = Истина; КонецЕсли; КонецЕсли; Если Не ЭтоКорневаяЗадача Тогда СтрокаВложеннойЗадачи = ТаблицаВложенныхЗадач.Добавить(); СтрокаВложеннойЗадачи.Задача = Задача; СтрокаВложеннойЗадачи.ВедущаяЗадача = РеквизитыПроцесса.ВедущаяЗадача; СтрокаВложеннойЗадачи.ГлавнаяЗадача = РеквизитыПроцесса.ГлавнаяЗадача; КонецЕсли; КонецЦикла; // Заполнение вложенных задач Для каждого СтрокаВложеннойЗадачи Из ТаблицаВложенныхЗадач Цикл ГлавнаяЗадача = Неопределено; Если ЗначениеЗаполнено(СтрокаВложеннойЗадачи.ВедущаяЗадача) Тогда ГлавнаяЗадача = СтрокаВложеннойЗадачи.ВедущаяЗадача; ИначеЕсли ЗначениеЗаполнено(СтрокаВложеннойЗадачи.ГлавнаяЗадача) Тогда ГлавнаяЗадача = СтрокаВложеннойЗадачи.ГлавнаяЗадача; КонецЕсли; Ветвь = Дерево.Строки.Найти(ГлавнаяЗадача, "Ссылка", Истина); Если Ветвь <> Неопределено Тогда СтрокаДерева = Ветвь.Строки.Добавить(); ЗаполнитьЗначенияСвойств( СтрокаДерева, ТаблицаЗадач.Найти(СтрокаВложеннойЗадачи.Задача, "Ссылка")); Иначе СтрокаДерева = Дерево.Строки.Добавить(); ЗаполнитьЗначенияСвойств( СтрокаДерева, ТаблицаЗадач.Найти(СтрокаВложеннойЗадачи.Задача, "Ссылка")); //н+ комз //темп = Строка.Ссылка.Наименование; //нач = Найти(темп, "(№"); //Если нач > 0 Тогда // нач = нач + 2; // темп = Прав(темп, СтрДлина(темп) - нач); // кон = Найти(темп, " от "); // Если кон > 0 Тогда // темп = Лев(темп, кон - 1); // иначе // темп = ""; // КонецЕсли; //иначе // темп = ""; //КонецЕсли; //СтрокаДерева.нНомерВНаименовании = темп; СтрокаДерева.ННомер = "123"; //н- комз КонецЕсли; КонецЦикла; // Заполнение статистики по задачам Выборка = Результат[4].Выбрать(); Выборка.Следующий(); ЗаполнитьЗначенияСвойств(ЭтаФорма, Выборка); ЗначениеВРеквизитФормы(Дерево, "ЗадачиМне"); КонецПроцедуры |
|||
12
s-n-a-y
28.10.15
✎
08:15
|
(9) в (11) в первой процедуре это дерево сначала получают через РеквизитФормыВЗначение(), затем возвращают обратно через ЗначениеВДанныеФормы()
|
|||
13
s-n-a-y
28.10.15
✎
08:32
|
(10) может я чайник, но по-моему колонки там созданы жестко через конструктор форм, скрин:
http://www.pixic.ru/i/00M059r192c2l1O8.png |
|||
14
s-n-a-y
28.10.15
✎
08:33
|
(13) ННомер - моя колонка
|
|||
15
hhhh
28.10.15
✎
10:12
|
(14) ну Обновить там на форме нажать?
|
|||
16
s-n-a-y
28.10.15
✎
15:04
|
(15) при нажатии на Обновитьна мгновение видно, что колонка ННомер заполняется значением "123", затем становится пустой
|
|||
17
s-n-a-y
28.10.15
✎
16:39
|
все решилось, наводку дали в (15)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |