LaCastet
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору ZloyBrawler Всё оказалось проще, чем здесь обсуждалось. Самой главной оказалась идея: Цитата: И как известно в расходной накладной нет функций ДанныеДляПечатиЦенников и ДанныеДляПечатиЭтикеток. Словим ошибку. Значит эти функции нужно тащить во внешнюю обработку (в модуль обработки, не в форму, в форму не культурно) и модифицировать чтобы они брали данные по документу РеализацияТоваровУслуг. | Я поместил в модуль внешней печатной формы эти процедуры и исправил текст запроса, чтобы они брали данные из документа РеализацияТоваров. Самый простой вариант: Код: Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; МассивНазначений = Новый Массив; МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг"); ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); ПараметрыРегистрации.Вставить("Наименование", "ВПФ Печать Этикеток и Ценников"); ПараметрыРегистрации.Вставить("Версия", "1.1"); ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ); ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма к документу РеализацияТоваровУслуг "); //команды ТаблицаКоманд = Новый ТаблицаЗначений; ТаблицаКоманд.Колонки.Добавить("Представление"); ТаблицаКоманд.Колонки.Добавить("Идентификатор"); ТаблицаКоманд.Колонки.Добавить("Использование"); ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение"); ТаблицаКоманд.Колонки.Добавить("Модификатор"); //ПечатьМХL НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = "ВПФ Печать Ценников"; НоваяКоманда.Идентификатор = "Ценники"; НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; НоваяКоманда.ПоказыватьОповещение = Истина; НоваяКоманда.Модификатор = "ПечатьMXL"; НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = "ВПФ Печать Этикеток"; НоваяКоманда.Идентификатор = "Этикетки"; НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; НоваяКоманда.ПоказыватьОповещение = Истина; НоваяКоманда.Модификатор = "ПечатьMXL"; ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); Возврат ПараметрыРегистрации; КонецФункции | В модуле формы: Код: &НаКлиенте Процедура Печать(ИдентификаторКомандыОбработки, ОбъектыНазначенияМассив) Экспорт ДополнительныеПараметры = Новый Структура("МенеджерПечати", "Документ.ПоступлениеТоваровУслуг"); АдресВХранилище = ФормаДанныеДляПечатиЦенниковИЭтикеток( ИдентификаторКомандыОбработки, ОбъектыНазначенияМассив, ДополнительныеПараметры); ОткрытьФорму( "Обработка.ПечатьЭтикетокИЦенников.Форма.ФормаТовары", Новый Структура("АдресВХранилище, НазначениеШаблона", АдресВХранилище, Неопределено), Неопределено, Новый УникальныйИдентификатор); КонецПроцедуры &НаСервере Функция ФормаДанныеДляПечатиЦенниковИЭтикеток( ИдентификаторКомандыОбработки, ОбъектыНазначенияМассив, ДополнительныеПараметры) ВПФОбъект = РеквизитФормыВЗначение("Объект"); Возврат ВПФОбъект.ДанныеДляПечатиЦенниковИЭтикеток( ИдентификаторКомандыОбработки, ОбъектыНазначенияМассив, ДополнительныеПараметры); КонецФункции | Всё великолепно сработало. Затем реализовал ваши рекомендации. Получилось несколько сложнее. Код: Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.3.3.0"); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма(); ПараметрыРегистрации.Наименование = ЭтотОбъект.Метаданные().Представление(); ПараметрыРегистрации.Версия = "0.1"; ПараметрыРегистрации.БезопасныйРежим = Ложь; ПараметрыРегистрации.Назначение.Добавить("Документ.РеализацияТоваровУслуг"); НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = "Ценники"; НоваяКоманда.Идентификатор = "ЦенникиВнешняя"; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы(); НоваяКоманда.ПоказыватьОповещение = Истина; НоваяКоманда.Модификатор = "ПечатьMXL"; НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = "Этикетки"; НоваяКоманда.Идентификатор = "ЭтикеткиВнешняя"; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы(); НоваяКоманда.ПоказыватьОповещение = Истина; НоваяКоманда.Модификатор = "ПечатьMXL"; Возврат ПараметрыРегистрации; КонецФункции | В модуле формы: Код: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //Вставить содержимое обработчика Сообщить("ОткрываетсяФорма"); ДополнительныеПараметры = Новый Структура("МенеджерПечати", "Документ.ПоступлениеТоваровУслуг"); ВПФОбъект = РеквизитФормыВЗначение("Объект"); АдресВХранилище = ВПФОбъект.ДанныеДляПечатиЦенниковИЭтикеток( Параметры.ИдентификаторКоманды, Параметры.ОбъектыНазначения, ДополнительныеПараметры); КонецПроцедуры | Добавил на форму реквизит АдресВХранилище. Код: &НаКлиенте Процедура ПриОткрытии(Отказ) //Вставить содержимое обработчика Отказ = Истина; ОткрытьФорму( "Обработка.ПечатьЭтикетокИЦенников.Форма.ФормаТовары", Новый Структура("АдресВХранилище, НазначениеШаблона", АдресВХранилище, Неопределено), Неопределено, Новый УникальныйИдентификатор); КонецПроцедуры | Всё сработало. Спасибо!!!
---------- Пиво — это еще одно доказательство того, что Господь любит нас и хочет, чтоб мы были счастливы! |
| Всего записей: 4560 | Зарегистр. 27-07-2005 | Отправлено: 02:44 16-07-2017 | Исправлено: LaCastet, 02:59 16-07-2017 |
|