Имя: Пароль:
1C
1С v8
1с перебрать реквизиты формы 8.2
0 kanalex
 
10.09.12
17:47
Искал тут способ перебрать реквизиты формы, с тем, чтобы отправить все настройки, которые набъет пользователь в отчет себе на мэйл и потом посмотреть на тех же настройках, что получается по отчету.
Получилось так:

Процедура ОтправитьНастройкиПоЭлПочтеНажатие(Элемент)
   ИмяФайла = "nastroiki.txt";
   
   // Попытка инициализации Outlook
   Попытка
       Outlook = Новый COMОбъект("Outlook.Application");
   Исключение
       Предупреждение("Не удалось создать объект Outlook.Application!");
       Возврат;
   КонецПопытки;
   
   Настройки = Новый Соответствие;
   РеквизитыВСтрутуру(Настройки);
   
   // Попытка сохранения отчета
   Попытка        
       ЗначениеВФайл(КаталогВременныхФайлов() + ИмяФайла, Настройки);
       //ЗначениеВФайл(КаталогВременныхФайлов() + ИмяФайла, Налоги_Сч20);
   Исключение
       Предупреждение("Не удалось создать файл " + ИмяФайла + "!");
       Возврат;
   КонецПопытки;
   
   // Заполнение реквизитов письма
   Письмо = Outlook.CreateItem(0);
   Письмо.Subject = "Настройки отчета Себестоимость";
   Письмо.Body    = "Настройки отчета Себестоимость во вложении";
   Письмо.to      = "[email protected]";
   Письмо.Attachments.Add(КаталогВременныхФайлов() + ИмяФайла);
   
   // Попытка открытия подготовленного письма
   Попытка
       Письмо.Send();
   Исключение
       Сообщить("Письмо отправить не удалось!!!");
   КонецПопытки;
КонецПроцедуры

Процедура РеквизитыВСтрутуру(Структура)
   Для каждого мРеквизит ИЗ ЭтаФорма.ЭлементыФормы Цикл
       Если мРеквизит.Данные <> "" Тогда
           Структура.Вставить(мРеквизит.Имя, мРеквизит.Значение);
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры

Процедура ЗагрузитьНастройкиИзФайлаНажатие(Элемент)
   Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.Заголовок="Выбор файла настроек построителя отчета";
   Диалог.Каталог=КаталогВременныхФайлов();
   Диалог.Расширение="txt";
   Диалог.Фильтр="Настройки посторителя отчета (*.txt)|*.txt";
   Если Диалог.Выбрать() Тогда
       Попытка
           Настройки = ЗначениеИзФайла(Диалог.ПолноеИмяФайла);
       Исключение
           Сообщить("Не удалось загрузить настройки построителя отчета.", СтатусСообщения.Внимание);
   КонецПопытки;
       //тут надо втащить на форму настройки...  
   КонецЕсли;
КонецПроцедуры
1 Asmody
 
10.09.12
17:54
ЭлементыФормы <> реквизиты формы. учите матчать уже
2 kanalex
 
10.09.12
17:57
я в курсе:)
(1) при переборе реквизитов возвращается только один реквизит.
Кроме того я выбираю только те элементы, которые имеют данные.
3 DrShad
 
10.09.12
17:59
(2) а почему просто не перебрать реквизиты формы?
4 kanalex
 
10.09.12
18:17
(3) не получилось
5 zladenuw
 
10.09.12
18:20
ПолучитьРеквизиты(<Путь>)
Параметры:

<Путь> (необязательный)

Тип: Строка.
Указывает путь к родительскому реквизиту. Если параметр опущен или указана пустая строка, возвращаются реквизиты верхнего уровня.
Возвращаемое значение:

Тип: Массив.
Массив объектов РеквизитФормы.
6 jump if overflow
 
10.09.12
18:20
УправляемаяФорма.ПолучитьРеквизиты
7 kanalex
 
10.09.12
19:10
так смысл в том, чтобы перебрать все..., а не по имени к ним обращаться.
8 zladenuw
 
10.09.12
19:11
(7) тоесть по имени. тут массив всех элементов на форме твоей
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.