Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Заполнить реквизит диалога

v7: Заполнить реквизит диалога
Я
   gugolovski
 
17.04.19 - 05:25
В форме есть некие реквизиты диалога.
Например: поле1, поле2, итп.

При открытии формы из "списка значения" получаю данные для заполнения этих полей. Как связать полученные данные к реквизитам формы?
 
 
   Ясный перец
 
1 - 17.04.19 - 05:35
Присвоение не работает?
   gugolovski
 
2 - 17.04.19 - 06:44
(1) работает. если напишу
поле1 = "значение_полученноеизСЗ"; но тогда надо перечислять все реквизиты формы.

А хотелось бы наоборот. Устроить перебор списка значения. Получить пары идентификатор_поля и значение. Найти по идентификатору реквизит и присвоить значение.
   SiAl-chel
 
3 - 17.04.19 - 06:48
(2) В семерке нет такой коллекции реквизитов формы из "коробки". Можно использовать ВК Формекс, там есть такая возможность.
   Mikeware
 
4 - 17.04.19 - 06:51
(2) шаблон?
Ну или выполняемыйМодуль.
Реквизиты формы можно получить формекслм
   dk
 
5 - 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 Тогда
        глОшибкаВосстановленияНастроекФормы(Форма);
    КонецЕсли;
    
КонецПроцедуры    //ВосстановитьВсеАтрибутыФормы(Форма, СЗ)


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует