Контакты
+7 (495) 231-95-53
Заказать обратный звонок
Пожалуйста, сложите 3 и 3.

Тестовая новость

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Откроем форму ФормаДокумента, и создадим обработчик ПриСозданииНаСервере. Скопируем в модуль формы следующий код:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма)

КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)

УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Объект)

КонецПроцедуры

 

Теперь откроем Модуль менеджера и скопируем туда следующий код:

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "Акт";
КомандаПечати.Представление = "Дополнительный акт";
КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
КомандаПечати.СписокФорм = "ФормаСписка,ФормаДокумента";

КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "Приказ";
КомандаПечати.Представление = "Приказ";
КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
КомандаПечати.СписокФорм = "ФормаСписка,ФормаДокумента";

КонецПроцедуры

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;

Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Акт") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Акт", "Акт",
СформироватьНесколькоАктов(МассивОбъектов),"Документ.Приказ.Акт");
КонецЕсли;


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

КонецПроцедуры

Функция СформироватьНесколькоАктов(МассивОбъектов)

ТабДокумент = Новый ТабличныйДокумент;
Для каждого Ссылка из МассивОбъектов Цикл
ТабДокументОбъекта = СформироватьАкт(Ссылка);
Если ТабДокумент.ВысотаТаблицы > 0 И ТабДокументОбъекта.ВысотаТаблицы > 0 Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц()
КонецЕсли;
ТабДокумент.Вывести(ТабДокументОбъекта)
КонецЦикла;

Возврат ТабДокумент

КонецФункции

Функция СформироватьНесколькоПриказов(МассивОбъектов)

ТабДокумент = Новый ТабличныйДокумент;
Для каждого Ссылка из МассивОбъектов Цикл
ТабДокументОбъекта = СформироватьПриказ(Ссылка);
Если ТабДокумент.ВысотаТаблицы > 0 И ТабДокументОбъекта.ВысотаТаблицы > 0 Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц()
КонецЕсли;
ТабДокумент.Вывести(ТабДокументОбъекта)
КонецЦикла;

Возврат ТабДокумент

КонецФункции

Функция СформироватьАкт(Ссылка)

ТабДокумент = Новый ТабличныйДокумент;
// подготовка ТабДокумента
Возврат ТабДокумент

КонецФункции

Функция СформироватьПриказ(Ссылка)

ТабДокумент = Новый ТабличныйДокумент;
// подготовка ТабДокумента
Возврат ТабДокумент

КонецФункции

Все готово, в форме документа у нас теперь программно будут добавляться кнопки печати. Чтобы они появились и в форме списка, проделайте с ней тоже самое (создайте обработчик ПриСозданииНаСервере и скопируйте код в Модуль формы ФормаСписка, в Модуле менеджера уже ничего менять не надо). Единственное отличие в третьем параметре функции ВыполнитьПодключаемуюКомандуПечати: вместо Объект нужно написать Элементы.Список. Также у этого списка обязательно должна быть колонка Ссылка, пусть даже невидимая.

 

/////////////////////////////////////////////////////////////////////////////////////////////////////\
отладка врем таблиц


Функция ПроверитьВремТаб(МенеджерВремТаб,ИмяВремтаб ="",Порядок = "") Экспорт

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВремТаб;
Запрос.Текст =
"ВЫБРАТЬ
| *
|ИЗ
| ВремТаб КАК ВремТаб
|
|УПОРЯДОЧИТЬ ПО Порядок";

Запрос.Текст = СтрЗаменить(Запрос.Текст,"ВремТаб",ИмяВремтаб);
Если Порядок = "" тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст,"УПОРЯДОЧИТЬ ПО Порядок","");
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст,"Порядок",Порядок);
КонецЕсли;

ТЗ = Запрос.Выполнить().Выгрузить();

Возврат ТЗ;

КонецФункции


Р_ОбщийМодуль.ПроверитьВремТаб(Запрос.МенеджерВременныхТаблиц,"ТЗМагазинВидЦены")

 


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\\


&НаСервере
Функция ПолучитьСтавкуНДСчислом(СтавкаНДС)

Если СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда
Ставка = 10;
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС18 Тогда
Ставка = 18;
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
Ставка = 0;
КонецЕсли;

Возврат Ставка

КонецФункции // ()

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