|
УФ - В обработке заполнения передать параметры между формами | ☑ | ||
---|---|---|---|---|
0
ildary
22.12.16
✎
11:25
|
Уважаемые специалисты, подскажите пожалуйста новичку, как правильно в дополнительной обработке заполнения документов передавать некие параметры между формами?
Я делаю обработку, в которой будет открываться форма, в которую мне надо передать дату документа, из которого вызвана обработка заполнения. Для этого я у обработки создаю реквизит ДатаДок, и в процедуре ВыполнитьКоманду() делаю так: ТекДок = ВладелецФормы.Объект; Объект.ДатаДок = ТекДок.Дата; Сообщить( "ДатаДок: " + Объект.ДатаДок ); // тут выходит верная дата после чего мне надо открыть форму, в которой пользователь готовить данные для заполнения: Оповещение = Новый ОписаниеОповещения( "ПослеВыбораГруппыНоменклатуры", ЭтотОбъект ); ОткрытьФорму( "ВнешняяОбработка.ПодборГруппыВДокументе.Форма.ФормаНастройки",,ЭтотОбъект,,,, Оповещение ); в которой в ПриОткрытии() Сообщить( "ДатаДок: " + Объект.ДатаДок ); // тут выходит пустая дата Скажите пожалуйста, как это исправить? |
|||
1
Мимохожий Однако
22.12.16
✎
11:27
|
Отладчиком на ОткрытьФорму и проверить все значения параметров для начала
|
|||
2
ildary
22.12.16
✎
11:37
|
(1) в обработке 2 формы: Форма и ФормаНастройки. Правильно ли я вызываю вторую форму, как ВнешняяОбработка.ПодборГруппыВДокументе.Форма.ФормаНастройки? Получается ли у обоих открытых форм этой обработки ссылка на Объект? В отладчике выглядит как будто нет. А как надо правильно?
|
|||
3
ildary
22.12.16
✎
11:48
|
Простите новичка- нашел в ОткрытьФорму() второй аргумент - параметры....
|
|||
4
ildary
22.12.16
✎
13:31
|
Еще такой вопрос - при открытии формы в ПриСозданииНаСервере() я могу получить ссылку на форму, из которой я ее открыл - ВладелецФормы.Объект, тип: ДанныеФормыСтруктура. Но далее я пытаюсь сохранить эту ссылку в переменной
&НаСервере Перем ДокВладелец; на далее в серверной процедуре я пытаюсь обратиться к этой переменной - и получаю ее пустой (Неопределено). Скажите пожалуйста, как правильно сохранить эту ссылку в форме? |
|||
5
Мимохожий Однако
22.12.16
✎
13:40
|
Сделай серверную функцию с возвратом из формы ссылку на владельца формы
|
|||
6
ildary
22.12.16
✎
13:48
|
(5) ну я примерно так и сделал, только серверная процедура - ПриСозданииНаСервере(). Вот так:
&НаСервере Перем ДокВладелец; &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ДокВладелец = ЭтаФорма.Параметры.Док; ОбщегоНазначенияКлиентСервер.СообщитьПользователю( "" + ТипЗнч( ДокВладелец ) ); // тут все выводится ОбщегоНазначенияКлиентСервер.СообщитьПользователю( "" + ДокВладелец.Ссылка ); // тут все выводится КонецПроцедуры далее вызываю &НаСервере Процедура Тест() ОбщегоНазначенияКлиентСервер.СообщитьПользователю( "" + ТипЗнч( ДокВладелец ) ); //тут ругается ОбщегоНазначенияКлиентСервер.СообщитьПользователю( "" + ДокВладелец.Ссылка ); КонецПроцедуры |
|||
7
Мимохожий Однако
22.12.16
✎
14:01
|
(6) "&НаСервере
Процедура Тест() ОбщегоНазначенияКлиентСервер.СообщитьПользователю( "" + ТипЗнч( ДокВладелец ) );//тут ругается " У сервера нет ушей и глаз. Поэтому здесь и ругается. Попробуй эту процедуру запустить на сервере, а ссылку передать в параметрах. Например &НаКлиенте Процедура Тест(ДокВладелец) |
|||
8
ildary
22.12.16
✎
14:31
|
(7) можно поподробнее? Я не совсем понял, что надо поменять. У меня делается так:
&НаКлиенте Процедура Заполнить(Команда) Тест(); КонецПроцедуры &НаСервере Процедура Тест() ОбщегоНазначенияКлиентСервер.СообщитьПользователю( "" + ТипЗнч( ДокВладелец ) ); ОбщегоНазначенияКлиентСервер.СообщитьПользователю( "" + ДокВладелец.Ссылка ); КонецПроцедуры Я не могу передать ДокВладелец как параметр из Заполнить(), потому что сама переменная обьявлена на сервере и там же на сервере заполняется &НаСервере Перем ДокВладелец; &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ДокВладелец = ЭтаФорма.Параметры.Док; ОбщегоНазначенияКлиентСервер.СообщитьПользователю( "" + ТипЗнч( ДокВладелец ) ); //тут все хорошо ОбщегоНазначенияКлиентСервер.СообщитьПользователю( "" + ДокВладелец.Ссылка ); //тут все хорошо КонецПроцедуры |
|||
9
Мимохожий Однако
22.12.16
✎
14:33
|
(8) Мне не понятно, что можно сообщить пользователю в процедуре на сервере. Объясни.
|
|||
10
ildary
22.12.16
✎
14:38
|
(9) Процедура ОбщегоНазначенияКлиентСервер.СообщитьПользователю(); - присутствует в УТ11 и вызывает
Сообщение = Новый СообщениеПользователю; Сообщение.Текст = ТекстСообщенияПользователю; и прекрасно работает на сервере. |
|||
11
ildary
22.12.16
✎
14:38
|
+(10) я ее использую для отладки внешних обработок
|
|||
12
Мимохожий Однако
22.12.16
✎
14:40
|
(10) Ты из первоначального сабжа плавно перешёл к выводу сообщений. Если вернуться к началу, то достаточно в обработку добавить реквизит типа любая ссылка и в неё положить нужное значение. Из другой формы оно будет видно. Это к тому как и что передать.
|
|||
13
ildary
22.12.16
✎
14:42
|
(12) идея интересная, но:
Ошибка при установке значения атрибута контекста (ДокВладелец) Объект.ДокВладелец = ЭтаФорма.Параметры.Док; по причине: Тип "ДанныеФормыСтруктура" не может использоваться в данных формы |
|||
14
Мимохожий Однако
22.12.16
✎
14:44
|
Проверь в отладчике значение ЭтаФорма.Параметры.Док
|
|||
15
ildary
22.12.16
✎
14:48
|
В процедуре ПриСозданииНаСервере()
ДокВладелец = ЭтаФорма.Параметры.Док; ОбщегоНазначенияКлиентСервер.СообщитьПользователю( "" + ТипЗнч( ДокВладелец ) ); ОбщегоНазначенияКлиентСервер.СообщитьПользователю( "" + ДокВладелец.Ссылка ); Выдает: ДанныеФормыСтруктура Пересчет товаров N666 от 66.66.66 |
|||
16
ildary
22.12.16
✎
14:50
|
Попытка присвоить ЭтаФорма.Параметры.Док в реквизит объекта с типом "Произвольный" выдает ошибку из (13)
|
|||
17
Мимохожий Однако
22.12.16
✎
14:54
|
Нужен тип Ссылка в принимаемом реквизите и передавать в этот реквизит Ссылка. (15) и (16) этому не соответствует. Поэтому и ошибка, поэтому и не получается.
|
|||
18
Мимохожий Однако
22.12.16
✎
14:56
|
Посмотри соседнюю ветку
НЕ присваивает значение |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |