|
Обмен в формах. ОткрытьФорму и ПолучитьФорму - в чем разница? | ☑ | ||
---|---|---|---|---|
0
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. Если ошибки в первом пункте все-же не появились, все равно, в итоге, в уже открывшейся форме, значения указанных выше реквизитов не изменились. Заранее благодарю за ответы. |
|||
1
triviumfan
03.06.18
✎
18:24
|
||||
2
triviumfan
03.06.18
✎
18:25
|
(1) Вдруг нет доступа к ИТС.. тогда вот - https://yadi.sk/d/QNWbDzJ23WyGpX
|
|||
3
triviumfan
03.06.18
✎
18:32
|
В общем тебе нужно использовать православный метод "ОткрытьФорму()" с передачей параметров =)
Получается, для переопределения нужно использовать аннотацию "Вместо" и изменить открытие. |
|||
4
ketzer
03.06.18
✎
19:22
|
(3) спасибо за ответ! Trivium!!!
Но, может можно как-то обратиться напрямую к реквизиту/параметру? или глобальную переменную намутить? Без получения формы? |
|||
5
triviumfan
03.06.18
✎
20:34
|
(4) вопрос не понятен.
Ты написал, что хочешь передать параметр в обработку. ОткрытьФорму("Обработка.ПомощникПроведенияОплаты.Форма", Новый Структура("Параметр1, ..., ПараметрN", Значение1, ..., ЗначениеN)); А уже в ПриСозданииНаСервере() этой формы обращаешься к Параметры и обрабатываешь. Что не так? |
|||
6
Cyberhawk
03.06.18
✎
22:57
|
Разница в том, что второе - *овнокод
|
|||
7
ketzer
04.06.18
✎
09:07
|
(5) Да, я не хочу открывать форму, она уже открывается в штатной конфигурации, мне надо "предзадать" ей параметры.
(6) Вы про 1С или? |
|||
8
catena
04.06.18
✎
10:05
|
(7)Как обычно, 90% проблем решается внимательным чтением СП:
Синтаксис: ПолучитьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>) ...................................... <Уникальность> (необязательный) Тип: Произвольный. В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм. Если будет найдена форма с таким же ключом уникальности, вместо открытия новой формы будет активизирована найденная форма. |
|||
9
Cyberhawk
04.06.18
✎
10:44
|
(7) Прочитал заголовок ветки
|
|||
10
ketzer
09.06.18
✎
12:46
|
(8) спасибо! Сработало! Ключ уникальности пуст, но идея работы с уже открытой формой помогла.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |