|
Не работает ЗначениеВРеквизитФормы | ☑ | ||
---|---|---|---|---|
0
Karambol
25.11.13
✎
18:44
|
Добрый день!
Задача: сделать на форме таблицу значений с динамическим количеством колонок. На форме есть реквизит ТЗ, тип -таблица значений, без колонок. Пишу: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Выборка = Справочники._Конкуренты.Выбрать(); ТЗФормы = РеквизитФормыВЗначение("ТЗ"); Пока Выборка.Следующий() Цикл Наим = СтрЗаменить(Выборка.Наименование," ",""); ТЗФормы.Колонки.Добавить(Наим); КонецЦикла; ЗначениеВРеквизитФормы(ТЗФормы, "ТЗ"); КонецПроцедуры Но почему-то после выполнения процедуры таблица значений и ее колонки на форме не появляются. Что я делаю не так? В ТЗФормы колонки создаются, а на форме не появляются. |
|||
1
Ерепень
25.11.13
✎
18:46
|
покури вот это
&НаСервере Процедура Инициализация() ГСЧ=Новый ГенераторСлучайныхЧисел; ДобавляемыеРеквизитыТЗ=Новый Массив; УдаляемыеРеквизитыТЗ=Новый Массив; ТЗ=Объект.ТЗ.Выгрузить(); Для й=4 По ТЗ.Колонки.Количество() Цикл УдаляемыеРеквизитыТЗ.Добавить("Объект.ТЗ."+ТЗ.Колонки[й-1].Имя); КонецЦикла; ИзменитьРеквизиты(, УдаляемыеРеквизитыТЗ); ТЗ=Объект.ТЗ.Выгрузить(); ОписаниеЧисла=Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0, ДопустимыйЗнак.Неотрицательный)); ТЗ=Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Товар", Новый ОписаниеТипов("СправочникСсылка.Номенклатура")); ТЗ.Колонки.Добавить("ДатаПрихода", Новый ОписаниеТипов("Дата")); ТЗ.Колонки.Добавить("КоличествоПрихода", ОписаниеЧисла); Для й=1 По КоличествоСкладов Цикл ИмяКолонки="ОстатокНаСкладе"+Формат(й, "ЧЦ=2; ЧВН="); ТЗ.Колонки.Добавить(ИмяКолонки); ДобавляемыеРеквизитыТЗ.Добавить(Новый РеквизитФормы(ИмяКолонки, ОписаниеЧисла, "Объект.ТЗ")); КонецЦикла; Для й=0 По ГСЧ.СлучайноеЧисло(1, 99) Цикл НоваяСтрока=ТЗ.Добавить(); НоваяСтрока.Товар=СерверныйМодуль.ПолучитьСлучайнуюНоменклатуру(); НоваяСтрока.ДатаПрихода='20010101'+ГСЧ.СлучайноеЧисло(0, 12*365*86400); НоваяСтрока.КоличествоПрихода=ГСЧ.СлучайноеЧисло(0, 99); Для ж=1 По КоличествоСкладов Цикл НоваяСтрока["ОстатокНаСкладе"+Формат(ж, "ЧЦ=2; ЧВН=")]=ГСЧ.СлучайноеЧисло(0, 99); КонецЦикла; КонецЦикла; ИзменитьРеквизиты(ДобавляемыеРеквизитыТЗ); Объект.ТЗ.Загрузить(ТЗ); Элементы.ТЗ.Обновить(); КонецПроцедуры |
|||
2
Classic
25.11.13
✎
18:48
|
(0)
Потому что на форме не реквизит, а элемент формы, который связан с реквизитом. |
|||
3
zakidonoff
25.11.13
✎
18:50
|
Обнови, кароч
|
|||
4
Classic
25.11.13
✎
18:51
|
(3)
Не взлетит |
|||
5
Karambol
25.11.13
✎
18:59
|
(1)Курю, не помогает
(2)А как преобразовать элемент формы в значение(и потом обратно)? |
|||
6
GROOVY
25.11.13
✎
18:59
|
(0) Создай колонки на форме, свяжи их с данными. Оно само как бы не создает.
|
|||
7
Karambol
25.11.13
✎
19:01
|
(6)А если заранее неизвестно количество колонок?
|
|||
8
Ерепень
25.11.13
✎
19:02
|
(7) попробуй покурить ещё раз ;)
|
|||
9
DexterMorgan
25.11.13
✎
19:02
|
(7) Выходит программно создавать. Ура.
|
|||
10
GROOVY
25.11.13
✎
19:03
|
https://www.google.ru/search?q=Создать+колонки+управляемая+форма
|
|||
11
samozvanec
25.11.13
✎
19:20
|
вот, держи. я как раз недавно заморачивался
&НаСервере Процедура ОбновитьКолонкиВТаблице(Знач Таблица, ИмяТаблицы) ДобавляемыеРеквизиты = Новый Массив; УдаляемыеРеквизиты = Новый Массив; СоответствиеИменаКолонокПодразделения = Новый Соответствие; КолонкиТаблицы = ДанныеФормыВЗначение(Таблица, Тип("ТаблицаЗначений")).Колонки; Для Каждого ЭлементСпискаПодразделений Из СписокЦелевыхПодразделений Цикл ИмяКолонкиСуммаПоПодразделению = УбратьНедопустимыеСимволыИзПодстроки(СтрЗаменить("ЦП_" + ЭлементСпискаПодразделений.Значение + "Сумма", " ", "")); Если КолонкиТаблицы.Найти(ИмяКолонкиСуммаПоПодразделению) = Неопределено Тогда НовыйРеквизитСуммаПоПодразделению = Новый РеквизитФормы(ИмяКолонкиСуммаПоПодразделению , Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2)) , ИмяТаблицы , Строка(ЭлементСпискаПодразделений.Значение) + " сумма"); ДобавляемыеРеквизиты.Добавить(НовыйРеквизитСуммаПоПодразделению); КонецЕсли; СоответствиеИменаКолонокПодразделения.Вставить(ИмяКолонкиСуммаПоПодразделению, ЭлементСпискаПодразделений.Значение); КонецЦикла; Для Каждого КолонкаТаблицы Из КолонкиТаблицы Цикл Если НЕ Найти(КолонкаТаблицы.Имя, "ЦП_") Тогда Продолжить; КонецЕсли; Если СоответствиеИменаКолонокПодразделения[КолонкаТаблицы.Имя] = Неопределено Тогда УдаляемыеРеквизиты.Добавить(ИмяТаблицы + "." + КолонкаТаблицы.Имя); КонецЕсли; КонецЦикла; ИзменитьРеквизиты(ДобавляемыеРеквизиты, УдаляемыеРеквизиты); Для Каждого ДобавляемыйРеквизит Из ДобавляемыеРеквизиты Цикл НовыйЭлемент = Элементы.Добавить(ДобавляемыйРеквизит.Имя, Тип("ПолеФормы"), Элементы[ИмяТаблицы]); НовыйЭлемент.ПутьКДанным = ИмяТаблицы + "." + ДобавляемыйРеквизит.Имя; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.Заголовок = ДобавляемыйРеквизит.Заголовок; КонецЦикла; Для Каждого УдаляемыйРеквизит Из УдаляемыеРеквизиты Цикл УдаляемыйЭлемент = Элементы.Найти(Сред(УдаляемыйРеквизит, СтрДлина(ИмяТаблицы) + 2)); Если НЕ УдаляемыйЭлемент = Неопределено Тогда Элементы.Удалить(УдаляемыйЭлемент); КонецЕсли; КонецЦикла; СсылкаНаСоответствиеИменКолонокЦПВХранилище = ПоместитьВоВременноеХранилище(СоответствиеИменаКолонокПодразделения, УникальныйИдентификатор); КонецПроцедуры // ОбновитьКолонкиВТаблицах() |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |