Имя: Пароль:
1C
1С v8
Программное открытие обработки 1С
,
0 1C_User_1992
 
20.04.17
14:50
Добрый день. вопрос по управляемым формам. Впал в ступор.

1. Имеется обработка (не внешняя).
2. Имеется форма регистра сведений.
3. Создал кнопку на форме регистра, для открытия обработки с параметром "Имя файла".
Команда кнопки:
&НаКлиенте
Процедура ВыполнитьВыгрузкуДанных(Команда)
ПараметрыОткрытияОбработки=Новый Структура;
ПараметрыОткрытияОбработки.Вставить("мФайлВыгрузки",Запись.ФайлВыгрузкиДанных);
ОткрытьФорму("Обработка.ВыгрузкаДанных.Форма.УправляемаяФорма",ПараметрыОткрытияОбработки);
КонецПроцедуры

4. В процедуре "ПриСозданииНаСервере"

Если Параметры.Свойство("мФайлВыгрузки") Тогда    
ИмяФайлаДанных=Параметры.мФайлВыгрузки; // где ИмяФайлаДанных = реквизит формы обработки
КонецЕсли;

5. Однако после процедуры ПриСозданииНаСервере выполняетя "ПриОткрытии", в которой реквизит "ИмяФайлаДанных" уже пустой.

Подскажите в чем туплю? Или мне недостаточно открывать форму а нужно создавать объект обработки?
1 ГдеСобака Зарыта
 
20.04.17
14:52
ИмяФайлаДанных реквизит формы или обработки?
2 1C_User_1992
 
20.04.17
14:56
(1) Реквизит формы.
Но пробовал записывать в реквизит обработки. то же самое.
Смотрю в стандартных обработках - у них аналогичный механизм, все обрабатывает.
3 ГдеСобака Зарыта
 
20.04.17
15:02
Должно работать. Может типы данных не совпадают или очищается где по дороге.
4 dezss
 
20.04.17
15:05
(0) так заполняй ПриОткрытии, а не ПриСозданииНаСервере
5 1C_User_1992
 
20.04.17
15:09
(4) При открытии &НаКлиенте, Параметры не видно

Ошибка где то 100%, попробовал в стандартных обработках, то же самое
6 dezss
 
20.04.17
15:10
(5) Странно. СП вот что говорит
УправляемаяФорма (ManagedForm)
Параметры (Parameters)
Использование:

Только чтение.
Описание:

Тип: ДанныеФормыСтруктура.
Содержит коллекцию параметров формы.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).
7 Вафель
 
20.04.17
15:12
(6) при открытии все параметры уже пустые. раньше точно так было
8 undertaker
 
20.04.17
15:15
(6)
ВНИМАНИЕ! После вызова обработчика события ПриСозданииНаСервере все неключевые параметры формы удаляются из коллекции Параметры.
СОВЕТ. Неключевые параметры формы, необходимые для дальнейшей работы, нужно сохранять в данных формы. (с)
9 dezss
 
20.04.17
15:16
(7) спс...проверил...действительно пустые
10 dezss
 
20.04.17
15:17
(8) Это откуда? В СП такого не нашел.
11 h-sp
 
20.04.17
15:18
(9) да, но там параметре можно поставить галку Ключевой. И он никуда не денется. Удаляются неключевые.
12 RomanYS
 
20.04.17
15:18
(0) Всё должно работать. Если нет отладки на сервере сделай так

ПараметрыОткрытияОбработки.Вставить("мФайлВыгрузки",Запись.ФайлВыгрузкиДанных);

Сообщить("Передано: "+Запись.ФайлВыгрузкиДанных);

ОткрытьФорму("Обработка.ВыгрузкаДанных.Форма.УправляемаяФорма",ПараметрыОткрытияОбработки);
КонецПроцедуры

4. В процедуре "ПриСозданииНаСервере"

Если Параметры.Свойство("мФайлВыгрузки") Тогда    
ИмяФайлаДанных=Параметры.мФайлВыгрузки;// где ИмяФайлаДанных = реквизит формы обработки

Сообщить("Получено: "+Параметры.мФайлВыгрузки);
иначе
Сообщить("Не получено.");


КонецЕсли;
13 dezss
 
20.04.17
15:20
А какой тип у Параметры.мФайлВыгрузки?
14 1C_User_1992
 
20.04.17
15:23
(12) Отладка на сервере включена.
Параметр передается в процедуру при создании на сервере корректно!
Отладчиком смотрю:
В последней строке процедуры при создании на сервере реквизит заполнен, нажимаю f11, в процедуре при открытии реквизит уже пустой.
15 undertaker
 
20.04.17
15:23
(10) руководство разработчика, гл.7.4
https://its.1c.ru/db/v837doc#bookmark:dev:TI000000399
16 Cyberhawk
 
20.04.17
15:24
Пади у реквизита стоит флажок сохранения, вот он и восстанавливается пустым
17 1C_User_1992
 
20.04.17
15:24
Проблема решилась, форма сохраняла значения.
18 Cyberhawk
 
20.04.17
15:25
+(16) Покури события формы ПередЗагрузкойДанныхИзНастроекНаСервере
ПриЗагрузкеДанныхИзНастроекНаСервере
19 1C_User_1992
 
20.04.17
15:25
(16) Да, спасибо, начал рыться так и было.)))
20 1C_User_1992
 
20.04.17
15:26
(16) При отладке такие вещи как сохранения значения не отловить?
21 Cyberhawk
 
20.04.17
15:28
(20) Что значит "отловить"?
22 Cyberhawk
 
20.04.17
15:29
Сохранение и загрузка осуществляются платформой, и только потом может быть еще определен прикладной код. Если прикладного кода нет, то и строчки, на которой отладчик может остановиться до смены значений, нет. Вернее она будет "КонецПроцедуры"
23 1C_User_1992
 
20.04.17
15:31
(22) То есть если не знать что есть такой механимз как сохранение значений, то отлаживай сколь угодно, причину не найти?
24 dezss
 
20.04.17
15:34
(17) тоже думал про это, но ведь ты писал, что и в реквизит объекта пытался запихнуть? или ты его тоже сохранял?
25 Вафель
 
20.04.17
15:34
(23) если не знать ничего, то и ничего не сделаешь.
Это однозначно
26 Cyberhawk
 
20.04.17
15:34
(23) Если не знать, как отлаживать, то отладка тоже не заработает. Что тебя смущает?
27 1C_User_1992
 
20.04.17
15:35
(24) Да, он тоже сохранял.
28 1C_User_1992
 
20.04.17
15:38
(26) Просто к примеру. я знал базовые операции отладки (точки остановки, Шагнуть в/из/через, стек).
И при отладке своей ошибки не мог понять почему после конецпроцедуры реквизит стирается.
То есть программно не увидеть фрагмент кода где происходит очистка.
Сейчас снял галочки сохранения и все заработало, и получается хз где происходит очистка, это заложено в платформу эти вещи просто нужно знать.
29 dezss
 
20.04.17
15:51
(28) многие вещи нужно просто знать...
Это и есть тот самый пресловутый опыт - сын ошибок трудных...
И именно поэтому опытные специалисты ценятся выше...
30 1C_User_1992
 
21.04.17
06:07
(29) Ну да. Не зря говорят нужно 10000 часов потратить чтобы стать специалистом в своем деле.
31 FIXXXL
 
21.04.17
08:25
(28) у тебя ж нет фрагметов кода, только галки стоят
что ты хотел увидеть?
32 1C_User_1992
 
21.04.17
08:46
(31) это к тому что если не знать то отлаживая не понять!
33 FIXXXL
 
21.04.17
09:52
(32) сейчас в платформе навтыки множество мест, не зная которых, можно долго "отлаживать"
надо читать описание платформы...
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан