PDA

Просмотр полной версии : Нужна помощь с параметрами формы



Poluk
19.08.2013, 13:49
Доброго времени суток, господа! Проблема в следующем. В управляемой форме при выполнении процедуры &НаКлиенте не видны параметры этой Формы. Форма открывается методом ОткрытьФорму со структурой параметров для Открытия. При работе процедуры ПриСозданииНаСервере Параметры этой формы ВИДНЫ! А при обработки события Выбора строки элемента Таблица этой формы, которая выполняется &НаКлиенте, пармаетры формы НЕ ВИДНЫ. Обращение к параметрам в этой процедуре выглядит как "ЭтаФорма.Параметры.Парам". Как обойти эту проблему я знаю, просто ОООЧЕНЬ интересно по какой причине может возникать такая ситуация. Ведь в процедурах выполняемых &НаКлиенте должны быть видны все данные формы(Реквизиты, параметры, элементы). Помогите пожалуйста, если кто знает в чем дело, буду признаетелен. Платформа 8.2, УТ 11.

arccos6pi
19.08.2013, 14:07
давай весь код,пока не совсем понятно в чем проблема

Poluk
19.08.2013, 14:37
Открытие формы:
Форма открывает по команде из другой ФормыРодителя
Код:
//
...
ОткрытьФорму("Обработка.FF_ПодборНоменкла туры.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
...
///
Где ПараметрыФормы - кореектно заполненная структура параметров.

В процедуре ПриСозданииНаСервере есть такой код:
//
......
Соглашение = Параметры.Соглашение;
ДатаОтгрузки = Параметры.ЖелаемаяДатаОтг� �узки;
......
//
Где Соглашение, ДатаОтгрузки - Реквизиты Формы. В этой процедуре все работает корректно, все параметры видны, и равны значениям, соответствующим значения параметрам при открытии формы(ПараметрыФормы).

У формы есть элемент Таблица - Номенклатура. В процедуре обработки события выбора строки в этой таблице (процедура - "НоменклатураВыбор" выполняется &НаКлиенте) есть такой код:
&НаКлиенте
Процедура НоменклатураВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
//
СтандартнаяОбработка = Ложь;
...
Сообщить(Параметры.Желаема яДатаОтгрузки);
...
//
При написании слова "Параметры." интерактивный подсказчик КОРРЕКТНО подсказывает все возможные параметры этой формы. А вот при выполнении этой строчки возникает ошибка: - Поле объекта не обнаружено(ЖелаемаяДатаОт� �рузки ).

Процедура ПриОткрытии:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
Сообщить(Параметры.Желаема яДатаОтгрузки);
КонецПроцедуры

В результате возникает такая же ошибка: - Поле объекта не обнаружено(ЖелаемаяДатаОт� �рузки )

Ну вот как то так...)) в чем дело не пойму...((

arccos6pi
19.08.2013, 14:51
а отладчик что говорит?

Poluk
19.08.2013, 15:07
а отладчик что говорит?

В процедуре ПриСозданииНаСервере Значение переменной Параметры Таково:1048

В процедуре ПриОткрытии(&НаКлиенте) Значение переменной Параметры такое:1049

Какая информация может быть еще полезна?

arccos6pi
19.08.2013, 15:12
а форма открывается на клиенте?

Poluk
19.08.2013, 15:32
а форма открывается на клиенте?
Форма открывается по команде "ОткрытьПодбор", ФормыРодителя, которая исполняется на клиенте.

&НаКлиенте
Процедура ОткрытьПодбор(Команда)
//
....
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Соглашение", Объект.ЗаказОбъект.Соглаше ние);
ПараметрыФормы.Вставить("ЦенаВключаетНДС", Объект.ЗаказОбъект.ЦенаВкл ючаетНДС);
Если Объект.ЗаказОбъект.Хозяйст веннаяОперация = ПредопределенноеЗначение("Перечисление.Хозяйственны� �Операции.ПередачаНаКомисс ию") Тогда
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", ПредопределенноеЗначение("Перечисление.ТипыНоменкла� �уры.Товар"));
КонецЕсли;
ПараметрыФормы.Вставить("РежимПодбораИспользоватьС кладыВТабличнойЧасти", Истина);
ПараметрыФормы.Вставить("ИспользоватьДатыОтгрузки", Истина);
ПараметрыФормы.Вставить("СкрыватьПодакцизныеТовары", Объект.ЗаказОбъект.Налогоо бложениеНДС = ПредопределенноеЗначение("Перечисление.ТипыНалогооб� �оженияНДС.ПродажаОблагает сяЕНВД"));
ПараметрыФормы.Вставить("ОтображатьФлагСкрыватьПод акцизныеТовары", Объект.ЗаказОбъект.Налогоо бложениеНДС = ПредопределенноеЗначение("Перечисление.ТипыНалогооб� �оженияНДС.ПродажаОблагает сяЕНВД"));
ПараметрыФормы.Вставить("Склад", Объект.ЗаказОбъект.Склад);
ПараметрыФормы.Вставить("Валюта", Объект.ЗаказОбъект.Валюта);
ПараметрыФормы.Вставить("Заголовок", ПараметрЗаголовок);
ПараметрыФормы.Вставить("ЖелаемаяДатаОтгрузки", Объект.ЗаказОбъект.Желаема яДатаОтгрузки);
ПараметрыФормы.Вставить("Дата", Объект.ЗаказОбъект.Дата);
ПараметрыФормы.Вставить("Документ", Объект.ЗаказОбъект.Ссылка);

ОткрытьФорму("Обработка.FF_ПодборНоменкла туры.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
...
//
КонецПроцедуры

---------- Post added at 15:32 ---------- Previous post was at 15:17 ----------

Такая конструкция тоже не работает


// Тестовая процедура для отладки
&НаСервере
Процедура Тест()
Сообщить (Параметры.ЖелаемаяДатаОтг рузки);
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
Тест();
КонецПроцедуры

Выделенная строка выдает аналогичную ошибку.

arccos6pi
19.08.2013, 15:35
Такая конструкция тоже не работает


// Тестовая процедура для отладки
&НаСервере
Процедура Тест()
Сообщить (Параметры.ЖелаемаяДатаОтг рузки);
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
Тест();
КонецПроцедуры

Выделенная строка выдает аналогичную ошибку.ну так правильно
параметры - это для какой формы?

Poluk
19.08.2013, 15:39
Эти процедуры описаны в модуле ОТКРЫВАЕМОЙ Формы(Обработка.FF_П одборНоменклатуры.Форма) следовательно и параметры должны из Структуры ПараметрыФормы. Или я не прав?

arccos6pi
19.08.2013, 15:46
тогда совсем не понятно ничего

Poluk
19.08.2013, 16:54
тогда совсем не понятно ничего
я о том же..
а может эта проблема быть связана с тем, что ЭТА Форма открывается иэ ФормыРодителя ВНЕШНЕЙ ОБРАБОТКИИ? Внешняя обработка открывается из приложения путем Файл->Открыть. Далее в ФормеРодителя Следует команда ОткрытьПодбор, где и происходит открытие ЭТОЙ Формы.

---------- Post added at 16:01 ---------- Previous post was at 15:55 ----------

// Тестовая процедура для отладки
&НаСервере
Процедура Тест()
Сообщить (Параметры.ЖелаемаяДатаОтг рузки);
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере (Отказ)
//
...
Тест();
...
///
КонецПроцедуры

Данная конструкция работает корректно. ошибок не выдает. У меня создается такое ощущение, что параметры формы видны только в процедуре ПриСОзданииНаСервере.. в результате чего такое может быть кто-нибудь может предположить?

---------- Post added at 16:26 ---------- Previous post was at 16:01 ----------

Есть у кого-нибудь еще предположения по данной проблеме?

---------- Post added at 16:54 ---------- Previous post was at 16:26 ----------

Полазил на форумах, нашел следующее:
книга "Руководство разработчика", стр. 1-376, написано:
"После вызова обработчика ПриСозданииНаСервере все неключевые параметры формы удаляются из коллекции Параметры"/
Так что похоже ситуация Корректна, хотя зачем удаляютя все неключевые параметры, непонятно....
Но тему можно СЧИТАТЬ ЗАКРЫТОЙ.
Так что, как говориться :"Всем СПАСИБО, Все СВОБОДНЫ!!"))))