Вход | Регистрация


Обмен в формах. ОткрытьФорму и ПолучитьФорму - в чем разница?

Обмен в формах. ОткрытьФорму и ПолучитьФорму - в чем разница?
Я
   ketzer
 
03.06.18 - 16:51
Доброго всем дня.
Только начинаю изучать 1С. Бьюсь в 1С:Предприятие 8.3 (8.3.12.1412) с 1С:Фитнес клуб КОРП, редакция 4.0 (4.0.3.9)

Делаю расширение основной конфигурации. Должен сказать, многое уже удалось реализовать, и оно работает. Но возникла проблема:

хочу модифицировать штатную процедуру оплаты услуги. После нажатия кнопки "оплатить" хочу передать в форму обработки "ПомощникПроведенияОплаты" некие данные, делаю так:


в Документы-Реализация-Формы-ФормаДокумента:

&НаКлиенте
Процедура Расш2_ОплатитьПеред(Команда)

формаОплаты = ПолучитьФорму("Обработка.ПомощникПроведенияОплаты.Форма");
        
формаОплаты.ЭтоСпецПродажа = истина;
формаОплаты.СпецСтоимость = Объект.Запасы[0].Всего;
формаОплаты.СпецПродолжительность =  Объект.Запасы[0].Количество; 


далее выполняется штатная функция оплаты, с открытием формыоплаты.

Прошу помочь:

1. Думал, что получив "ссылку" на форму, могу просто предустановить ей некоторые реквизиты (они созданы в конструкторе и нормально читаются). Но Функция ПолучитьФорму() почему-то выполняет процедуру "получаемой" формы "ПриСозданииНаСервере" расширяемой конфигурации и все что в нее вложено, что, разумеется, вызывает ряд ошибок в 90% случаев. Зачем тогда нужна функция ПолучитьФорму? получается она почти идентична функции ОткрытьФорму с указанными параметрами, но без вызова метода Открыть()?

2. Если ошибки в первом пункте все-же не появились, все равно, в итоге, в уже открывшейся форме, значения указанных выше реквизитов не изменились.

Заранее благодарю за ответы.
 
 
   triviumfan
 
1 - 03.06.18 - 18:24
   triviumfan
 
2 - 03.06.18 - 18:25
(1) Вдруг нет доступа к ИТС.. тогда вот - https://yadi.sk/d/QNWbDzJ23WyGpX
   triviumfan
 
3 - 03.06.18 - 18:32
В общем тебе нужно использовать православный метод "ОткрытьФорму()" с передачей параметров =) 
Получается, для переопределения нужно использовать аннотацию "Вместо" и изменить открытие.
   ketzer
 
4 - 03.06.18 - 19:22
(3) спасибо за ответ! Trivium!!!

Но, может можно как-то обратиться напрямую к реквизиту/параметру? или глобальную переменную намутить? Без получения формы?
   triviumfan
 
5 - 03.06.18 - 20:34
(4) вопрос не понятен.
Ты написал, что хочешь передать параметр в обработку.
ОткрытьФорму("Обработка.ПомощникПроведенияОплаты.Форма", Новый Структура("Параметр1, ..., ПараметрN", Значение1, ..., ЗначениеN));
А уже в ПриСозданииНаСервере() этой формы обращаешься к Параметры и обрабатываешь. Что не так?
   Cyberhawk
 
6 - 03.06.18 - 22:57
Разница в том, что второе - *овнокод
   ketzer
 
7 - 04.06.18 - 09:07
(5) Да, я не хочу открывать форму, она уже открывается в штатной конфигурации, мне надо "предзадать" ей параметры.

(6) Вы про 1С или?
   catena
 
8 - 04.06.18 - 10:05
(7)Как обычно, 90% проблем решается внимательным чтением СП:

Синтаксис:

ПолучитьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>)
......................................
<Уникальность> (необязательный)

Тип: Произвольный.
В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм. Если будет найдена форма с таким же ключом уникальности, вместо открытия новой формы будет активизирована найденная форма.
   Cyberhawk
 
9 - 04.06.18 - 10:44
(7) Прочитал заголовок ветки
   ketzer
 
10 - 09.06.18 - 12:46
(8) спасибо! Сработало! Ключ уникальности пуст, но идея работы с уже открытой формой помогла.
 
 Рекламное место пустует

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует