Перенести кнопку товарный чек в форму РМК. УТ 11.4

Клиент часто использует печать товарного чека. По умолчанию для этого нужно нажать в РМК кнопку «Прочие операции» и затем кнопку «Товарный чек»:

При этом, если чек не записан, будет задан вопрос о проведении документа:

Я бы мог создать кнопку, которая вызывала бы нужную печатную форму, но тогда нужно было бы еще повторять поведение по проведению не сохраненного документа.

Поэтому я просто решил сделать клавиатурный ускоритель, но все же немного пришлось повозиться.

Саму кнопку создаю так:

	//2022-03-22 Осипов, переносим кнопку товарного чека +++
	ИмяКоманды = "дор_Товарный";
	КомандаФормы = ЭтаФорма.Команды.Добавить(ИмяКоманды);
	КомандаФормы.Действие = ИмяКоманды;
	КомандаФормы.Заголовок = "Товарный";
	КомандаФормы.ИзменяетСохраняемыеДанные = Ложь;
	КомандаФормы.Отображение = ОтображениеКнопки.Текст;
	
	НовыйЭлемент = ЭтаФорма.Элементы.Добавить(ИмяКоманды, Тип("КнопкаФормы"), КоманднаяПанель);
	НовыйЭлемент.ИмяКоманды = ИмяКоманды;
	НовыйЭлемент.Ширина = 10;
	НовыйЭлемент.АвтоМаксимальнаяШирина = ложь;
	НовыйЭлемент.РастягиватьПоГоризонтали = ложь;
	//2022-03-22 Осипов, переносим кнопку товарного чека ---

Выглядит кнопка в меню так:

Команду печати вызвываем так:

&НаКлиенте
Процедура дор_Товарный(Команда) Экспорт
	//2022-03-23 Осипов копируем из процедуры ОткрытьМенюПрочихОпераций(Команда) +++
	
	ПараметрыОткрытияФормы = Новый Структура;
	ПараметрыОткрытияФормы.Вставить("КассаККМ",       Объект.КассаККМ);
	ПараметрыОткрытияФормы.Вставить("Кассир",         Объект.Кассир);
	ПараметрыОткрытияФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр);
	ПараметрыОткрытияФормы.Вставить("Документ",       Объект.Ссылка);
	
	ПараметрыОткрытияФормы.Вставить("ПроверитьКоличествоВДокументе",         Истина);
	ПараметрыОткрытияФормы.Вставить("ПродажаПодарочногоСертификата",         ИспользоватьПодарочныеСертификаты);
	ПараметрыОткрытияФормы.Вставить("ВозвратПодарочногоСертификата",         ИспользоватьПодарочныеСертификаты);
	ПараметрыОткрытияФормы.Вставить("Заблокировать",                         ПринудительнаяАвторизация);
	ПараметрыОткрытияФормы.Вставить("АдресКомандПечатиВоВременномХранилище", АдресКомандПечатиВоВременномХранилище);
	
	дор_ФормаМенюПрочихОпераций = ОткрытьФорму("Документ.ЧекККМ.Форма.МенюПрочиеОперации", ПараметрыОткрытияФормы, ЭтотОбъект);
	дор_ФормаМенюПрочихОпераций.дор_ПечатьТоварногоЧека();
	
КонецПроцедуры

В принципе, можно было просто открыть форму нажатием кнопки, а потом найти ее в открытых формах, так было бы универсальнее.

Чтобы все работало, форму МенюПрочиеОперации тоже нужно расширить:

&НаКлиенте
Функция дор_ПечатьТоварногоЧека() Экспорт
	Подключаемый_ОбработатьКомандуПечати( ЭтаФорма.Команды.ПодменюПечатьОбычное_ТоварныйЧек);
КонецФункции

Пришлось пойти на такое расширение, т.к. ОткрытьФорму возвращает неполноценную форму, без Объекта и некоторых реквизитов (например ПараметрыПодключаемыхКоманд), видимо снаружи не видных, поэтому нужно вызывать метод изнутри формы.

А ведь клиенту кажется, что это простое дело — перенести кнопку из одного места в другое. Увы, не в управляемых формах. Там нет возможности просто «кликнуть» по форме.

Среда: УТ 11.4.13.46. Объем 0.8 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован.