|
Аварийное завершение после "РеквизитФормыВЗначение"
| ☑ |
0
mwide
29.11.13
✎
12:56
|
Есть управляемая форма отчета. На форму выведена таблица отбора компоновщика настроек.
Возникает необходимость обратиться к процедуре, описанной в модуле формы. Код такой:
&НаКлиенте
Процедура Действие(Команда)
Действие_сервер();
КонецПроцедуры
&НаСервере
процедура Действие_сервер()
ЭтотОбъект = РеквизитФормыВЗначение("Отчет");
ЭтотОбъект.Действие();
ЗначениеВРеквизитФормы(ЭтотОбъект, "Отчет");
конецПроцедуры
Если теперь попробовать добавить элемент отбора, программа аварийно закрывается (выгрузка дампа и все такое). С чем это может быть связано?
P.S. если закоментировать строки (хоть обе, хоть по одной)
// ЭтотОбъект.Действие();
// ЗначениеВРеквизитФормы(ЭтотОбъект, "Отчет");
ничего не меняется, все-равно вылетает. То есть на ошибку влияет только вызов РеквизитФормыВЗначение.
|
|
1
mwide
29.11.13
✎
14:15
|
Еще интереснее... Дело даже не в РеквизитФормыВЗначение, а просто в вызове серверной процедуры из клиентской. То есть вешаем на форму кнопку с коммандой. В обработчике команды вызываем процедуру, объявленную на сервере. После этого попытка изменить настройки компоновщика (хоть через элементы управления, хоть программно) валит 1С....
|
|
2
mwide
29.11.13
✎
14:29
|
Решилось через одно место, но работает: серверную процедуру объявляем &НаСервереБезКонтекста. В неё передаем все нужные параметры. Понятно, что менять реквизиты объекта она не сможет.
&НаКлиенте
Процедура Действие(Команда)
сформировать_Сервер(этаФорма.Отчет, ЕщеЧтоНибудь);
КонецПроцедуры
&НаСервереБезКонтекста
процедура Сформировать_сервер(знач Отчет, знач ЕщеЧтоНибудь)
объект = ДанныеФормыВЗначение(отчет, тип("ОтчетОбъект.Отчет"));
объект.Действие(данныеФормыВЗначение(ЧтоНибудь, тип("ТипЧегоНибудь"));
конецПроцедуры
|
|
3
banco
29.11.13
✎
15:01
|
(2) вообще то про это в СП написано
В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере.
|
|
4
mwide
29.11.13
✎
16:25
|
(3) о каком событии идет речь? У меня серверный вызов делает обработчик команды формы, и он отрабатывает нормально. Но после него, если обратиться к компоновщику настроек, тот валит программу.
|
|