:: Вопросы по 1С
Управляемые формы. Передача параметров
ama68
Автор

Сообщений: 5278
Откуда: Кострома
Дата регистрации: 27.04.2006
Хочу передать ссылку документа из Команды документа в Общую форму (см.рис.)
вместо ?что мне написать?
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
Это зависит от "Типа параметра команды". Если тип параметра команды есть "ДокументСсылка.НужныйДокумент", то можно прямо взять переменную ПараметрКоманды, и её же передать. Другой вопрос, готова ли форма жрать параметр "Ключ".



Исправлено 1 раз(а). Последнее : pasha_usue, 01.12.21 16:58
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
ama68
Автор

Сообщений: 5278
Откуда: Кострома
Дата регистрации: 27.04.2006
А я не знаю тип параметра команды... Команда просто вызывает форму, в которой просто выбирается, что именно печатать, и это печатает (см.рис)
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
ama68
А я не знаю тип параметра команды... Команда просто вызывает форму, в которой просто выбирается, что именно печатать, и это печатает (см.рис)
Да как не знаю? Кто команду создавал? Alt+Enter - свойства объекта (команда). И вот настройка "Тип параметра команды". Более того, эта настройка определит первоначальное место в интерфейсе, где эта команда появится (потом можно чуть-чуть пошевелить, переопределить).
[attachment 35993 1c_scrsht.png]



Исправлено 1 раз(а). Последнее : pasha_usue, 01.12.21 18:37
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
ama68
Автор

Сообщений: 5278
Откуда: Кострома
Дата регистрации: 27.04.2006
это форма, которая вызывается
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
ama68
Автор

Сообщений: 5278
Откуда: Кострома
Дата регистрации: 27.04.2006
а это её кишки
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
Там может прийти не документссылка только в случае множественного режима. Тогда придёт массив документссылка. Но режим там же выбирается, в настройках команды.
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
ama68
Автор

Сообщений: 5278
Откуда: Кострома
Дата регистрации: 27.04.2006
суть в следующем: есть документ, в нём куча команд печати различных макетов.
делаю одну кнопку Печать, которая вызывает форму выбора конкретного макета
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
ama68
Автор

Сообщений: 5278
Откуда: Кострома
Дата регистрации: 27.04.2006
Мне сложно объяснить, поскольку только учусь 1эсу, поэтому прошу прощения за сумбурность
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
ama68
это форма, которая вызывается
Все. Понял. У этой формы нет ключа. Она не форма объекта. Но эта форма может обработать переданные параметры.

Правильнее всего подключить событие ПриСозданииНаСервере. А там уже обработать параметр.

Если параметры.свойство("ключ") тогда
Моесвойство = параметры.ключ;
КонецЕсли;

Ps. Только используйте другое имя параметра, не ключ. А то может потом выстрелить.



Исправлено 2 раз(а). Последнее : pasha_usue, 01.12.21 18:55
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
ama68
Автор

Сообщений: 5278
Откуда: Кострома
Дата регистрации: 27.04.2006
там пока вот так:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ЭтаФорма.Печать.Пустая() Тогда;
ЭтаФорма.Печать = Перечисления.ПечатьДоговора.ГрафикПлатежей;
КонецЕсли;
КонецПроцедуры

это я по-умолчанию заполняю поле ввода
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
ama68
Автор

Сообщений: 5278
Откуда: Кострома
Дата регистрации: 27.04.2006
а вот это - вызов этой формы команды родительской формы:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
Парам = новый Структура ("Ключ", "");
ОткрытьФорму("ОбщаяФорма.ПечатьДоговора",парам);
КонецПроцедуры

вот парам меня смущает, ибо в дочерней форме Печать я буду выводить на печать данные по макетам родительской формы

что и как мне передать из формы документа в форму печати?



Исправлено 1 раз(а). Последнее : ama68, 01.12.21 19:06
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
Пробуем ещё раз, но подробно.

1. У нас есть визуальный объект "Команда". Он настроен так, что принимет некоторый "ДокументСсылка". Для примера, пусть это будет "ДокументСсылка.Счёт". У этой команды есть подключенный обработчик - процедура.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
// Здесь нам пофиг, как называется локальная переменная. Главное, она создает объект типа "Структура", который содержит то, что нам надо. А надо нам всего-лишь завернуть "ДокументСсылка.Счёт" в правильный объект для передачи.
ПарамБарарам = Новый Структура("ДокументКоторыйПечатаем", ПараметрКоманды);
ОткрытьФорму("ОбщаяФорма.ПечатьДоговора", ПарамБарарам);
КонецПроцедуры

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

3. Когда пользователь наконец соизволить жамкнуть кнопку "Печать", или что там у нас запланировано. Мы должны взять для отбора, либо для запроса свойство формы "ОбъектДляПечати". И да. Если во всей этой схеме работает "ДокументСсылка.Счёт", то свойство формы ОбъектДляПечати должен быть "ДокументСсылка.Счет" (с рядом исключений).



Исправлено 2 раз(а). Последнее : pasha_usue, 01.12.21 19:20
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
А теперь про как это работает:

1. На первом этапе, из-за настроек самой команды мы получили объект типа "ДокументСсылка.Счёт" в качестве параметра "ПараметрКоманды" для процедуры "ОбработкаКоманды".
Для передачи в вызываемую форму мы создали специальный объект "Структура", который содержит наш же "ДокументСсылка.Счёт", но уже с удобным нам названием поля структуры "ДокументКоторыйПечатаем".

2. На серверных методах формы нам доступен специальный реквизит формы "Параметры" который имеет тип "Структура".
Раз форму вызываем мы сами из пункта 1, то серверный обработчик события ПриСозданииНаСервере почти гарантированно увидет в структурые "Параметры" наше свойство "ДокументКоторыйПечатаем".
И я намеренно сохраняю печатаемый документ не в одноимённом свойстве формы "ОбъектДляПечати", что б не было недопонимания что это всё - три большие разницы.

3. При печати мы обращаемся уже к свойству "ОбъектДляПечати", в которое прошёл объект "ДокументСсылка.Счёт" через все наши телодвижения (триггер события [1], и вызов формы с параметрами [2]).

PS. Блин. Вроде абстракции достаточно простые. А вот получается или нет объяснить, я не понимаю.



Исправлено 1 раз(а). Последнее : pasha_usue, 01.12.21 19:36
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
ama68
Автор

Сообщений: 5278
Откуда: Кострома
Дата регистрации: 27.04.2006
Здравствуйте!
Извините, что долго не отвечал: приболел...

Ваши крайние сообщения я прочёл, попытался вникнуть.

Получилось следующее:
В модуле команды Печать объекта Документы.Договор.Команды появилась следующая процедура:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрКомандыПечати = новый Структура ("ДокументДляПечати", ПараметрКоманды);
ОткрытьФорму("ОбщаяФорма.ПечатьДоговора",ПараметрКомандыПечати);
КонецПроцедуры

В модуле формы ОбщиеФормы.ПечатьДоговора появилась следующая процедура:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ЭтаФорма.Печать.Пустая() Тогда;
ЭтаФорма.Печать = Перечисления.ПечатьДоговора.Договор;
КонецЕсли;
Если Параметры.Свойство("ДокументДляПечати") И
ЗначениеЗаполнено(Параметры.ДокументДляПечати) Тогда
ОбъектДляПечати = Параметры.ДокументДляПечати;
КонецЕсли;
КонецПроцедуры

Но дело в том, что в объекте Документы.Договор есть несколько команд для печати различных форм в соответствии с имеющимися
в объекте макетами (см. рис. [attachment 36004 ])

Поэтому и создана произвольная форма ПечатьДоговора, в которой и выбирается, что именно печатать (см. рис. [attachment 36005 ])
Как мне сделать обработку выборки, чтобы обратиться к родительскому объекту и вызвать процедуру обработки конкретной команды?



Исправлено 1 раз(а). Последнее : ama68, 04.12.21 09:10
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
А занафига? Объедините все команды печати на родительской форме в группу команд. И при нажатии на кнопку группы выпадет подменю кнопок. Меньше движений пользователю.

[attachment 36009 4ama01.jpg]

[attachment 36010 4ama02.png]

PS. Компактно, и будет в 2 клика, а не в 4. И кодить не надо.



Исправлено 2 раз(а). Последнее : pasha_usue, 04.12.21 20:57
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
ama68
Автор

Сообщений: 5278
Откуда: Кострома
Дата регистрации: 27.04.2006
Это-то понятно... Я печать из произвольной формы привёл как наглядный пример, чтобы понять, как в управляемых формах происходит передача параметров туды-сюды между ними...
Никак не могу перестроиться с фокса. Там-то всё просто
А пример с печатью через произвольную форму, как мне кажется, наглядно эту взаимосвязь иллюстрирует...
Или я неправ?
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
ama68
Это-то понятно... Я печать из произвольной формы привёл как наглядный пример, чтобы понять, как в управляемых формах происходит передача параметров туды-сюды между ними...
Никак не могу перестроиться с фокса. Там-то всё просто
А пример с печатью через произвольную форму, как мне кажется, наглядно эту взаимосвязь иллюстрирует...
Или я неправ?
Нет. Не иллюстрирует. Здесь вообще использован специфичный инструмент "команда", который лучше натравливать на модуль менеджера подходящего объекта. И если сделано так, то из вызываемой формы проще вызвать те же методы модуля менеджера, что и в самих командах печати.
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
Вот текущая описываемая ситуация больше применима для работы в самой форме, когда требуется вызвать подчинённую форму, и вернуть от подчинённой формы выбранное значение.

Сейчас лучший механизм - ОповеститьОВыборе(ТоЧтоВыбрано) в подчинённой форме.
И ОбработкаВыбора(РезультатВыбора, ИсточникВыбора) в родительской форме.
Ratings: 0 negative/0 positive
Re: Управляемые формы. Передача параметров
ama68
Автор

Сообщений: 5278
Откуда: Кострома
Дата регистрации: 27.04.2006
pasha_usue
И если сделано так, то из вызываемой формы проще вызвать те же методы модуля менеджера, что и в самих командах печати.

Вот это я и хочу попробовать, только не знаю, как мне добраться до процедуры обработки необходимой мне команды, соответствующей сделанному мной выбору
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 2 (Гостей: 2)

© 2000-2024 Fox Club 
Яндекс.Метрика