|
v7: Заполнить реквизит диалога
| ☑ |
0
gugolovski
17.04.19
✎
05:25
|
В форме есть некие реквизиты диалога.
Например: поле1, поле2, итп.
При открытии формы из "списка значения" получаю данные для заполнения этих полей. Как связать полученные данные к реквизитам формы?
|
|
1
Ясный перец
17.04.19
✎
05:35
|
Присвоение не работает?
|
|
2
gugolovski
17.04.19
✎
06:44
|
(1) работает. если напишу
поле1 = "значение_полученноеизСЗ"; но тогда надо перечислять все реквизиты формы.
А хотелось бы наоборот. Устроить перебор списка значения. Получить пары идентификатор_поля и значение. Найти по идентификатору реквизит и присвоить значение.
|
|
3
SiAl-chel
17.04.19
✎
06:48
|
(2) В семерке нет такой коллекции реквизитов формы из "коробки". Можно использовать ВК Формекс, там есть такая возможность.
|
|
4
Mikeware
17.04.19
✎
06:51
|
(2) шаблон?
Ну или выполняемыйМодуль.
Реквизиты формы можно получить формекслм
|
|
5
dk
17.04.19
✎
07:56
|
через formex:
Процедура глВосстановитьВсеАтрибутыФормы(Форма, СЗ, Таблицы = 0) Экспорт
Перем спНужныеВидыАтрибутов, ФормаРасш, Сч, Атрибут, Зн, флОшибкаЧтенияНастроек;
Если ПустоеЗначение(Форма) = 1 Тогда
Сообщить("Не передали форму");
Возврат;
КонецЕсли;
Если ПустоеЗначение(СЗ) = 1 Тогда
Сообщить("Не передали параметры");
Возврат;
КонецЕсли;
спНужныеВидыАтрибутов = СоздатьОбъект("СписокЗначений");
спНужныеВидыАтрибутов.ДобавитьЗначение(2); //2 - 1CEDIT (Поле ввода)
спНужныеВидыАтрибутов.ДобавитьЗначение(11); //11 - LISTBOX (Список)
спНужныеВидыАтрибутов.ДобавитьЗначение(12); //12 - CHECKBOX (Флажок)
спНужныеВидыАтрибутов.ДобавитьЗначение(13); //13 - RADIO (Переключатель)
спНужныеВидыАтрибутов.ДобавитьЗначение(14); //14 - COMBOBOX (Поле со списком)
Если Таблицы = 1 Тогда
спНужныеВидыАтрибутов.ДобавитьЗначение(15); //15 - TABLE (Таблица)
КонецЕсли;
ФормаРасш = СоздатьОбъект("РасширениеФормы");
ФормаРасш.УстановитьФорму(Форма);
флОшибкаЧтенияНастроек = 0;
Для Сч = 0 По ФормаРасш.КоличествоАтрибутов() - 1 Цикл
Атрибут = ФормаРасш.ПолучитьАтрибут(Сч);
Если ПустоеЗначение(Атрибут.Идентификатор) = 1 Тогда
Продолжить;
КонецЕсли;
Если спНужныеВидыАтрибутов.Принадлежит(Атрибут.Тип) = 0 Тогда
Продолжить;
КонецЕсли;
Зн = ЗначениеИзСтрокиВнутр(СЗ.Получить(Атрибут.Идентификатор));
Если ТипЗначения(Зн) <> ТипЗначения(Атрибут.Значение) Тогда
флОшибкаЧтенияНастроек = 1;
Сообщить("Ошибка чтения настроек: " + Атрибут.Идентификатор);
Продолжить;
ИначеЕсли (ТипЗначения(Зн) = 11) ИЛИ (ТипЗначения(Зн) = 12) Тогда
Если Зн.Вид() <> Атрибут.Значение.Вид() Тогда
флОшибкаЧтенияНастроек = 1;
Сообщить("Ошибка чтения настроек: " + Атрибут.Идентификатор);
Продолжить;
КонецЕсли;
КонецЕсли;
Попытка
Если (ТипЗначенияСтр(Зн) = "СписокЗначений") или ((ТипЗначенияСтр(Зн) = "ТаблицаЗначений") и (Таблицы = 1)) Тогда
Зн.Выгрузить(Атрибут.Значение);
Иначе
Атрибут.Значение = Зн;
КонецЕсли;
Исключение
флОшибкаЧтенияНастроек = 1;
Сообщить("Ошибка чтения настроек: " + Атрибут.Идентификатор);
Продолжить;
КонецПопытки;
Попытка
Если (Атрибут.Тип = 11) ИЛИ (Атрибут.Тип = 14) Тогда
Зн = СЗ.Получить(Атрибут.Идентификатор+"_dk_ТекущаяСтрока");
Атрибут.Значение.ТекущаяСтрока(Зн);
КонецЕсли;
Исключение
флОшибкаЧтенияНастроек = 1;
Сообщить("Ошибка чтения настроек: " + Атрибут.Идентификатор);
Продолжить;
КонецПопытки;
КонецЦикла;
Если флОшибкаЧтенияНастроек <> 0 Тогда
глОшибкаВосстановленияНастроекФормы(Форма);
КонецЕсли;
КонецПроцедуры //ВосстановитьВсеАтрибутыФормы(Форма, СЗ)
|
|