Как красиво предавать/принимать параметры форме обработке

Дайнеко

Well-known member
19.11.2009
951
0
#1
Нужно форме обработки передать несколько параметров. Подсмотрел как это делается в типовой бухгалтерии:
Код:
// ----------------------- Вызов из какой-либо формы
Обработки.РедактированиеКонтактнойИнформации.Создать().ПолучитьФорму("ФормаЗаписиАдреса").РедактироватьФорму(ЭтаФорма, ДругойПараметр);

// ----------------------- Модуль формы ---------------
Перем ИсходнаяФорма;
Перем КопияПараметр;

// процедура написанная мной. Вот она и принимает параметры.
Процедура РедактироватьФорму(Форма, Параметр) Экспорт
ИсходнаяФорма	= Форма;
КопияПараметр	= Параметр;
ЭтаФорма.Открыть();
КонецПроцедуры // Редактировать
1 Вопрос такой: А как идеологически правильно это делать с позиции идеологии 1С? В 7-ке для этого был атрибут "Форма.Параметр"
Может есть возможность передавать параметры процедуре ПриОткрытии?

2 Вопрос по-серьезнее: Как вернуть измененные параметры. Поясню: Пользователь что-то изменил на форме (форма, естественно, открыта модально). Результат нужно записать в "Параметр". Но проблема в том, что входные параметры известны только процедуре "РедактироватьФорму". Для того, чтобы ими пользовались другие процедуры и делаются их копии. Как в процедуре ПриЗакрытии() добраться до входных параметров?
Опять же, проводя аналогию с 7-кой, Форма.Параметр были доступны всем процедурам формы.
 

puh14

Well-known member
11.07.2008
1 412
0
#2
Ну раз модально можно тупо использовать глобальную переменную. Собссно подходит и к первому и второму вопросу.

насчет как правильно - почитаю.
 

Дайнеко

Well-known member
19.11.2009
951
0
#3
Как учили в школе: обмен параметрами через глобальные переменные - плохой вкус. Но в 7-ке пользуюсь.
Мой вопрос в том, что обязательно внутри формы создавать процедуру с нужными параметрами?
 
G

Guest

#4
Ответ есть в универсальном отчете. Точнее в открытии формы настройки. У формы настройки есть СтруктураНастроек- переменная типа Структура. Перед открытием записываются туда параметры процедурой, которой сохраняются настройки отчета
Код:
Процедура СформироватьСтруктуруДляСохраненияНастроек(СтруктураСНастройками)
Затем в форме настройки из структуры читаются значения. При закрытии кнопками "ОК" и "Сформировать" параметры формы настройки сохраняются в структуру (ту самую переменную формы), потом оттуда читается в самой форме опять же процедурой загрузки настроек отчета
Код:
Функция ЗагрузитьНастройкиИзСтруктуры()
 

Дайнеко

Well-known member
19.11.2009
951
0
#5
Ответ есть в универсальном отчете. Точнее в открытии формы настройки. У формы настройки есть СтруктураНастроек- переменная типа Структура. Перед открытием записываются туда параметры процедурой, которой сохраняются настройки отчета
Уф! Вспотел, пока продрался через процедуры. Ключевой момент я увидел вот в чем: основная "Форма" и "ФормаНастройка" принадлежат одному Отчету. А обмениваются параметрами через "Перем мТекущаяНастройка Экспорт;" созданную в модуле отчета. А процедуры типа Сохранить/Восстановить ей пользуются. Я бы сказал: вариант глобальной переменной в рамках отчета.
Спасибо за ответ. Выходит, для передачи данных между формами из различным отчетов нужно делать глобальную переменную задачи. Некрасиво. А в 8.2 нет глобальных переменных!
 
G

Guest

#6
Дайнеко
Вы неправильно увидели ключевой момент :) Переменная глобальная используется для работы внутри формы отчета, в форме настройки ее НЕТ. А есть переменная формы типа Структура. Суть в том, что вы создаете структуру и записываете в нее все ваши параметры, а потом передаете ее во вторую форму (в вашем случае форму обработки), а точнее присваиваете значение переменной второй формы, не глобальной, а переменной формы.

В исходной форме глобальная переменная НЕ НУЖНА.