Решение задачи по подключении печатной формы через подсистему БСП и активации функционала по прикреплению ПФ к документу-основанию!
Выделенный красной линей функционал недоступен по умолчанию при подключению ПФ, ВПФ (через БСП), для того чтобы активировать данный функционал нужно добавить две строчки кода в Функции, формирующей табличный документ. Данные строки выделены ниже: // +++ ДополнительныйФункционалСохранения. (Ниже расположена сама Функция формирования табличного документа)
Функция СформироватьПечатнуюФормуЗаказМатериаловВПроизводство(МассивОбъектов, ОбъектыПечати)
УстановитьПривилегированныйРежим(Истина);
ТабДок = Новый ТабличныйДокумент;
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ЗаказМатериаловВПроизводство.ПФ_MXL_ЗаказМатериаловВПроизводство");
ЗаголовокДокумента = Макет.ПолучитьОбласть("Заголовок");
ШапкаТаблицы = Макет.ПолучитьОбласть("Шапка");
СтрокаТаблицы = Макет.ПолучитьОбласть("Строка");
ПодвалТаблицы = Макет.ПолучитьОбласть("Подвал");
ПодвалМЗК = Макет.ПолучитьОбласть("ПодвалМЗК");
ПодвалПроминком = Макет.ПолучитьОбласть("ПодвалПроминкомНе60");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивСсылок", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказМатериаловВПроизводство.Ссылка КАК СсылкаОтбор,
| ЗаказМатериаловВПроизводство.з_ПодразделениеЗакупки КАК ПодразделениеЗакупки,
| ПРЕДСТАВЛЕНИЕ(ЗаказМатериаловВПроизводство.Ссылка) КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ЗаказМатериаловВПроизводство.Дата) КАК Дата,
| ПРЕДСТАВЛЕНИЕ(ЗаказМатериаловВПроизводство.Номер) КАК Номер,
| ПРЕДСТАВЛЕНИЕ(ЗаказМатериаловВПроизводство.Организация) КАК Организация,
| ЗаказМатериаловВПроизводство.Организация.ИНН КАК ИННОрганизации,
| ПРЕДСТАВЛЕНИЕ(ЗаказМатериаловВПроизводство.Склад) КАК Склад,
| ПРЕДСТАВЛЕНИЕ(ЗаказМатериаловВПроизводство.ЦеховаяКладовая) КАК ЦеховаяКладовая,
| ПРЕДСТАВЛЕНИЕ(ЗаказМатериаловВПроизводство.НаправлениеДеятельности) КАК НаправлениеДеятельности,
| ПРЕДСТАВЛЕНИЕ(ЗаказМатериаловВПроизводство.Ответственный) КАК Ответственный,
| ЗаказМатериаловВПроизводство.Ответственный.Наименование КАК ОтветственныйНаименование,
| ПРЕДСТАВЛЕНИЕ(ЗаказМатериаловВПроизводство.з_Спецификация) КАК Спецификация,
|ИЗ
| Документ.ЗаказМатериаловВПроизводство КАК ЗаказМатериаловВПроизводство
|ГДЕ
| ЗаказМатериаловВПроизводство.Ссылка В(&МассивСсылок)
|;
|
|////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЗаказМатериаловВПроизводствоТовары.Ссылка КАК СсылкаОтбор,
| ПРЕДСТАВЛЕНИЕ(ЗаказМатериаловВПроизводствоТовары.НомерСтроки) КАК НомерСтроки,
| ПРЕДСТАВЛЕНИЕ(ЗаказМатериаловВПроизводствоТовары.Номенклатура) КАК Номенклатура,
| ПРЕДСТАВЛЕНИЕ(ЗаказМатериаловВПроизводствоТовары.НачалоОтгрузки) КАК ДатаОтгрузки,
| ПРЕДСТАВЛЕНИЕ(ЗаказМатериаловВПроизводствоТовары.КоличествоУпаковок) КАК Количество,
| ЕСТЬNULL(спрНоменклатура.Артикул, """") КАК Артикул,
| ЕСТЬNULL(спрНоменклатура.ЕдиницаИзмерения, """") КАК ЕдИзм,
| ПРЕДСТАВЛЕНИЕ(ЗаказМатериаловВПроизводствоТовары.ВариантОбеспечения) КАК Действия,
| ПРЕДСТАВЛЕНИЕ(ЗаказМатериаловВПроизводствоТовары.з_ЦелевойСрокПоставки) КАК ЦелевойСрок,
| ПРЕДСТАВЛЕНИЕ(ЗаказМатериаловВПроизводствоТовары.з_ПлановыйСрокПоставки) КАК ПлановыйСрокПоставки
|ИЗ
| Документ.ЗаказМатериаловВПроизводство.Товары КАК ЗаказМатериаловВПроизводствоТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК спрНоменклатура
| ПО (ЗаказМатериаловВПроизводствоТовары.Номенклатура = спрНоменклатура.Ссылка)
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК спрНоменклатураДополнительныеРеквизиты
| ПО (ЗаказМатериаловВПроизводствоТовары.Номенклатура = спрНоменклатураДополнительныеРеквизиты.Ссылка
| И ДополнительныеРеквизитыИСведения.Ссылка = спрНоменклатураДополнительныеРеквизиты.Свойство)
|ГДЕ
| ЗаказМатериаловВПроизводствоТовары.Ссылка В(&МассивСсылок)
|ИТОГИ ПО
| СсылкаОтбор ";
КоллекцияРезультатов = Запрос.ВыполнитьПакет();
ВыборкаШапкаДокументов = КоллекцияРезультатов[0].Выбрать();
ВыборкаТоварыДокумента = КоллекцияРезультатов[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ПодразделениеЗакупки = Справочники.СтруктураПредприятия.НайтиПоКоду("60");
ПерваяСтраница = Истина;
Пока ВыборкаШапкаДокументов.Следующий() Цикл
НомерСтрокиНачало = ТабДок.ВысотаТаблицы + 1; // +++ ДополнительныйФункционалСохранения
ТекущаяСсылка = ВыборкаШапкаДокументов.СсылкаОтбор;
Если ПерваяСтраница Тогда
ПерваяСтраница = Ложь;
Иначе
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
// Заполнение заголовка документа.
ЗаголовокДокумента.Параметры.Заполнить(ВыборкаШапкаДокументов);
ТабДок.Вывести(ЗаголовокДокумента);
// Вывод шапки таблицы документа.
ТабДок.Вывести(ШапкаТаблицы);
// Заполнение строки таблицы документа.
ПараметрыПоиска = Новый Структура("СсылкаОтбор", ТекущаяСсылка);
ЗаписьНайдена = ВыборкаТоварыДокумента.НайтиСледующий(ПараметрыПоиска);
Если ЗаписьНайдена Тогда
// Указатель перемещен.
ВыборкаТоварыДетальные = ВыборкаТоварыДокумента.Выбрать();
Пока ВыборкаТоварыДетальные.Следующий() Цикл
СтрокаТаблицы.Параметры.Заполнить(ВыборкаТоварыДетальные);
ТабДок.Вывести(СтрокаТаблицы);
КонецЦикла;
ВыборкаТоварыДокумента.Сбросить();
КонецЕсли;
// Заполнение подвала таблицы документа.
Если ВыборкаШапкаДокументов.ПодразделениеЗакупки = ПодразделениеЗакупки Тогда
ПодвалМЗК.Параметры.Исполнитель = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(ВыборкаШапкаДокументов.ОтветственныйНаименование);
ПодвалМЗК.Параметры.РуководительЗЗ = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(РуководительЗЗ(ВыборкаШапкаДокументов.ЗЗ));
ПодвалМЗК.Параметры.НД = ВыборкаШапкаДокументов.НаправлениеДеятельности;
ТаблицаПодписантов = з_ОбщийМодульСервер.ПолучитьСведеньеОПодписантах(ТекущаяСсылка);
Для Каждого СтрокаТЧ Из ТаблицаПодписантов Цикл
Если СтрНайти(СтрокаТЧ.Ключ, "Подписант") > 0 Тогда
НомерПодписанта = СтрЗаменить(СтрокаТЧ.Ключ, "Подписант", "");
ПодвалМЗК.Параметры["Подписант" + НомерПодписанта] = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(СтрокаТЧ.Значение);
ИначеЕсли СтрНайти(СтрокаТЧ.Ключ, "Должность") > 0 Тогда
НомерДолжности= СтрЗаменить(СтрокаТЧ.Ключ, "Должность", "");
ПодвалМЗК.Параметры["ДолжностьПодписанта" + НомерДолжности] = СтрокаТЧ.Значение;
КонецЕсли;
КонецЦикла;
ТабДок.Вывести(ПодвалМЗК);
Иначе
Если ВыборкаШапкаДокументов.ИННОрганизации = "00000000000" Тогда
ПодвалПроминком.Параметры.Ответственный = ВыборкаШапкаДокументов.Ответственный;
ТабДок.Вывести(ПодвалПроминком);
Иначе
ПодвалТаблицы.Параметры.Ответственный = ВыборкаШапкаДокументов.Ответственный;
ТабДок.Вывести(ПодвалТаблицы);
КонецЕсли;
КонецЕсли;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДок.АвтоМасштаб = Истина;
УправлениеПечатью.ЗадатьОбластьПечатиДокумента( // +++ ДополнительныйФункционалСохранения
ТабДок,
НомерСтрокиНачало,
ОбъектыПечати,
ТекущаяСсылка);
КонецЦикла;
Возврат ТабДок;
КонецФункции
Добавление команды в общую форму отчета на БСП
Показать подтверждение закрытия Формы
Дополнительный доход для разработчика 1С не отходя от кассы (компьютера)
Ищем разработчиков 1С. Платим 5000 рублей за 3 обработки + 80% с каждой оплаты