Нужна помощь/ подсказка.
Есть внешняя печатная форма. Она использует 2 команды
Как в процедуре печать определить какая команда была вызвана/ выбрана
Код:
Функция СведенияОВнешнейОбработке() Экспорт
ИмяОбработки = ЭтотОбъект.Метаданные().Имя;
Синоним = ЭтотОбъект.Метаданные().Синоним;
Синоним = ?(ЗначениеЗаполнено(Синоним),Синоним, ИмяОбработки);
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
ПараметрыРегистрации.Версия = "1.0.0.1";
ПараметрыРегистрации.Наименование = Синоним;
ПараметрыРегистрации.БезопасныйРежим = Ложь;
ПараметрыРегистрации.Информация = "Внешняя печатная форма """ + Синоним + """";
ПараметрыРегистрации.Назначение.Добавить("Документ.ОтчетОРозничныхПродажах");
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = Синоним + " без ПДВ";
Команда.Идентификатор = ИмяОбработки;
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Команда.Модификатор = "ПечатьMXLбезНДС";
Команда.ЗаменяемыеКоманды = "";// если нужно заменить существующую команду печати, укажите её идентификатор
Команда.ПоказыватьОповещение = Истина;
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = Синоним+" з ПДВ";
Команда.Идентификатор = ИмяОбработки;
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Команда.Модификатор = "ПечатьMXLНДС";
Команда.ЗаменяемыеКоманды = "";// если нужно заменить существующую команду печати, укажите её идентификатор
Команда.ПоказыватьОповещение = Истина;
Возврат ПараметрыРегистрации;
КонецФункции
Процедура Печать(МассивОбъектов,КоллекцияПечатныхФорм , ОбъектыПечати, ПараметрыВывода) Экспорт
//
ТолькоСНДС = Истина; // печать только с НДС строк
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
ЭтотОбъект.Метаданные().Имя,
НСтр("ru = 'Тест'"),
СформироватьПечатнуюФормуАКТ(МассивОбъектов,ТолькоСНДС),
,
);
//ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);
КонецПроцедуры
Profi_1C77 @ Сегодня, 10:07
,
Для БСП
Сначала в функцию СведенияОВнешнейОбработке добавляем наши команды:
ДобавитьКоманду(ТаблицаКоманд, "Спецификация Стильвер", "СпецификацияСтильвер", "ВызовСерверногоМетода", Истина, "
ДобавитьКоманду(ТаблицаКоманд, "Спецификация Вайлдберриз", "СпецификацияВайлдберриз", "ВызовСерверногоМетода",
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СпецификацияСтильвер") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СпецификацияСтильвер",
"Спецификация Стильвер",
ПечатьФормы(МассивОбъектов, "ПФ_MXL_СпецификацияСтильвер"));
ИначеЕсли УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СпецификацияВайлдберриз") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СпецификацияВайлдберриз",
"Спецификация Вайлдберриз",
ПечатьФормы(МассивОбъектов, "ПФ_MXL_СпецификацияВайлдберриз"));
КонецЕсли;
КонецПроцедуры
Функция ПечатьФормы(МассивОбъектов, ИмяМакета) Экспорт
ТабличныйДокумент = новый ТабличныйДокумент;
Макет = ПолучитьМакет(ИмяМакета);
....
КонецФункции
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
Наименование = УказатьНаименованиеВнешнейПечатнойФормы();
МассивНазначений.Добавить(ПолучитьМетаданныеДокументаПечати());
//может быть - ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов...
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
//имя под которым обработка будет зарегестрирована в справочнике внешних обработок
ПараметрыРегистрации.Вставить("Наименование", Наименование);
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
//так будет выглядеть описание печ.формы для пользователя
ПараметрыРегистрации.Вставить("Информация", Наименование);
[b]ТаблицаКоманд = ПолучитьТаблицуКоманд();[/b]
ДобавитьКоманду(ТаблицаКоманд, Наименование, УказатьНаименованиеКомандыПечати(), "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
[b]Функция ПолучитьТаблицуКоманд()[/b]
Команды = Новый ТаблицаЗначений;
//как будет выглядеть описание печ.формы для пользователя
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
//имя макета печ.формы
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
//ВызовСерверногоМетода
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Команда.Идентификатор = ИмяОбработки;
и
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм, ИмяОбработки,
НСтр("ru = 'Тест'"),
СформироватьПечатнуюФормуАКТ(МассивОбъектов,ТолькоСНДС),
,
);
и ....
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, ИмяОбработки)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua