Передача параметров/значений во внешнюю печатную форму для конфигураций на БСП (1С:Предприятие 8.2/8.3)

19.05.17

Разработка - БСП (Библиотека стандартных подсистем)

В статье описан один из способов интерактивной передачи параметров во внешнюю печатную форму для конфигураций на БСП

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Расходная накладная для УТ 11.0-11.2 с диалогом выбора- РеализацияТоваров.epf
.epf 29,27Kb ver:1.0.5
451
451 Скачать (2 SM) Купить за 2 150 руб.

В некоторых случаях перед печатью документа требуется вручную указать какие-либо значения или параметры и передать в процедуру Печать() обработки. Для конфигураций линии УТ 10.3, БП 2.0 есть возможность передачи параметров, а также возможность без особых ухищрений вызвать форму обработки перед печатью с последующим выводом результата печати в штатное окно. В конфигурациях на основе Библиотеки стандартных процедур (Управление торговлей 11, Розница 2, УНФ, Бухгалтерия предприятия 3 и прочие) предусмотрены способы вызова команды печати в виде "ОткрытиеФормы" или "ВызовКлиентскогоМетода", но в этом случае вывод сформированного табличного документа необходимо реализовывать самостоятельно.

Рассмотрим один из способов передачи параметров для печати, не претендующий на оригинальность, так как используются штатные процедуры БСП.

В качестве примера выбрана печать простой накладной для УТ 11.0.9.15 - УТ 11.3 с возможностью печати со скидками или без них.

Создадим внешнюю обработку с основной формой "Форма" и реквизитом, например, "ПечататьСкидки", значение которого требуется передать в процедуру Печать() модуля обработки.

 

 

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

 

 

 

Далее определяем команду для печати или вывода печатной формы, навешиваем кнопку на форму.

 

Присваиваем команде обработчик действия (код следует поместить в модуль формы)

&НаСервереБезКонтекста
Функция ЕстьОбщийМодуль(НазваниеМодуля)
    Возврат Метаданные.ОбщиеМодули.Найти(НазваниеМодуля) <> Неопределено;
КонецФункции

&НаСервереБезКонтекста
Функция ПолучитьВерсиюБСП()
    Возврат СтандартныеПодсистемыСервер.ВерсияБиблиотеки();
КонецФункции

&НаКлиенте
Процедура ВыполнитьОткрытиеПечатнойФормы(Команда)
    
    ВыполняемаяКоманда = Параметры;
    
    СтандартнаяОбработка = Истина;
    //Проверка на релиз БСП для универсальности.
    //Общий модуль ДополнительныеОтчетыИОбработкиКлиентПереопределяемый существует в версии БСП выше 2.0.1.19
    Если ЕстьОбщийМодуль("ДополнительныеОтчетыИОбработкиКлиентПереопределяемый") Тогда
        Выполнить("ДополнительныеОтчетыИОбработкиКлиентПереопределяемый.ПередВыполнениемКомандыПечатиВнешнейПечатнойФормы(ВыполняемаяКоманда.ОбъектыНазначения, СтандартнаяОбработка);");
    КонецЕсли;
    
    Отказ = Ложь;
    //Проверка на релиз БСП для универсальности.
    //Если необходимо печатать из непроведённых документов, удалите этот фрагмент
    ВерсияБСП = ПолучитьВерсиюБСП();
    Если СравнитьВерсии(ВерсияБСП, "2.2.3") >= 0 Тогда
        Выполнить("СписокДокументов = ВыполняемаяКоманда.ОбъектыНазначения;
            |НепроведенныеДокументы = ОбщегоНазначенияВызовСервера.ПроверитьПроведенностьДокументов(СписокДокументов);
            |Если СтандартнаяОбработка И НепроведенныеДокументы.Количество() > 0 Тогда Отказ = Истина; КонецЕсли;
            |");
    Иначе
        Выполнить("Если СтандартнаяОбработка И Не УправлениеПечатьюКлиент.ПроверитьДокументыПроведены(ВыполняемаяКоманда.ОбъектыНазначения) Тогда Отказ = Истина; КонецЕсли;");
    КонецЕсли;
    
    Если Не Отказ Тогда
        
        //Определение и заполнение штатных параметров для общей формы ПечатьДокументов
        ПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");
        ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;
        ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");
        ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ВыполняемаяКоманда.ИдентификаторКоманды;
        
        //Здесь передаём наши значения в модуль обработки.
        //Структура для передачи параметров или значений в процедуру Печать обработки
        //В процедуре печати она будет доступна в качестве первого элемента массива МассивОбъектовНазначения
        ДополнительныеПараметры = Новый Структура();
        //Значения для передачи
        ДополнительныеПараметры.Вставить("ПечататьСкидки", ЭтаФорма.ПечататьСкидки);
        
        //Еще какие-то значения
        //ДополнительныеПараметры.Вставить("РеквизитФормы1", РеквизитФормы1);
        //ДополнительныеПараметры.Вставить("РеквизитФормы2", РеквизитФормы2);
        
        //В массиве ОбъектыНазначения будут содержаться ссылки на вызвавший форму объект (документ, справочник)
        // и наши значения из реквизитов формы или обработки
        ОбъектыНазначения = Новый СписокЗначений;
        ОбъектыНазначения.Добавить(ДополнительныеПараметры);
        
        //Ссылки на вызвавшие форму объекты
        Для каждого ОбъектНазначения Из ВыполняемаяКоманда.ОбъектыНазначения Цикл
            ОбъектыНазначения.Добавить(ОбъектНазначения);
        КонецЦикла; //Для каждого ОбъектНазначения Из
        ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = ОбъектыНазначения;
        
        //Вывод сформированного табличного документа в штатную форму.
        ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);
    КонецЕсли;
    ЭтаФорма.Закрыть();
    
КонецПроцедуры

В модуле обработки создаём экспортную процедуру Печать(), с параметрами согласно стандартам БСП для печати с использованием серверной процедуры примерно такого вида

// Экспортная процедура печати, вызываемая из основной программы
//
// Параметры:
// ВХОДЯЩИЕ:
//  МассивОбъектовНазначения - Массив - список объектов ссылочного типа для печати документа
//              Как правило, содержит один элемент с ссылкой на вызвавший форму объект (документ, справочник)
//
// ИСХОДЯЩИЕ:
//  КоллекцияПечатныхФорм - ТаблицаЗначений - таблица сформированных табличных документов.
//              Как правило, содержит одну строку с именем текущей печатной формы
//  ОбъектыПечати - СписокЗначений - список объектов печати.
//  ПараметрыВывода - Структура - Параметры сформированных табличных документов. Содержит поля:
//                        ДоступнаПечатьПоКомплектно - булево - по умолчанию Ложь
//                        ПолучательЭлектронногоПисьма
//                        ОтправительЭлектронногоПисьма
//
Процедура Печать(МассивОбъектовНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
    
    //Получаем переданные из формы параметры для печати документа
    //Из формы МассивОбъектовНазначения передаётся как список значений, поэтому преобразуем его в массив
    Если ТипЗнч(МассивОбъектовНазначения) = Тип("СписокЗначений") Тогда
        МассивОбъектовНазначения = МассивОбъектовНазначения.ВыгрузитьЗначения();
    КонецЕсли;
    
    //Присваиваем значение по умолчанию нашему параметру, переданному из формы
    ПечататьСкидки = Истина;
    
    //Смотрим, что содержится в первом элементе массива МассивОбъектовНазначения
    //Если это структура, значит есть дополнительные параметры, почти как в прежних конфигурациях
    Если ТипЗнч(МассивОбъектовНазначения[0]) = Тип("Структура") Тогда
        ДополнительныеПараметры = МассивОбъектовНазначения[0];
        Если ДополнительныеПараметры.Свойство("ПечататьСкидки") Тогда
            ПечататьСкидки = ДополнительныеПараметры.ПечататьСкидки;
        КонецЕсли;
        //А теперь структуру из массива объектов можно удалить, больше она там не нужна
        МассивОбъектовНазначения.Удалить(0);
    КонецЕсли;
    
    //Дальше используем штатный функционал БСП
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "РасходнаяНакладнаяСДиалогомВыбора") Тогда
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "РасходнаяНакладнаяСДиалогомВыбора", "Расходная накладная", СформироватьПечатнуюФормуНакладная(МассивОбъектовНазначения, ОбъектыПечати, ПечататьСкидки));
    КонецЕсли;

 

Реализация функции СформироватьПечатнуюФормуНакладная() зависит от конкретной задачи и здесь не рассматривается.

В экспортной функции СведенияОВнешнейОбработке() необходимо указать использование команды печати "ОткрытиеФормы" с модификатором "ПечатьMXL".

Подробнее смотрите статью Внешние обработки и отчеты 1С:Предприятие 8.2 или прилагаемый пример обработки.

    //Определяем команды для печати формы
    
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    
    ДобавитьКоманду(ТаблицаКоманд,
        "Расходная накладная (с диалогом выбора)", // Представление команды в пользовательском интерфейсе
        "РасходнаяНакладнаяСДиалогомВыбора", // Уникальный идентификатор команды
        "ОткрытиеФормы", // Использование команды
        Истина, // Показывать оповещение.
        "ПечатьMXL" // Дополнительный модификатор команды.
    );

Если всё сделано правильно, после регистрации внешней печатной формы в справочнике "ДополнительныеОбработки" она будет доступна из формы списка или документа в меню "Дополнительные печатные формы". После выбора из списка ВПФ на экране появится форма обработки.

 

 

Всё описанное выше изложено и прокомментировано в прилагаемой обработке.

Другой пример обработки можно скачать в  Cпецификация на товар к договору с контрагентом - Бухгалтерия предприятия 3.0

См. также

БСП (Библиотека стандартных подсистем) Программист Платные (руб)

Синтакс-помощник БСП - cправочник по библиотеке стандартных подсистем. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП.

1800 руб.

21.11.2024    587    1    0    

3

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

Некоторые нюансы, если вы захотите создавать свои расширения. Доработка отчета "Связанные документы" для отражения документов расширения. Печатные формы с шаблоном Word.

20.11.2024    2629    milkers    3    

8

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

В статье описан алгоритм для включения документа или справочника в систему БСП. Будет полезно программистам 1С, начинающим работать с БСП.

24.10.2024    1269    PROSTO-1C    0    

15

БСП (Библиотека стандартных подсистем) Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

В материале описан универсальный механизм работы с добавленными элементами на общую форму «ФормаОтчета». Думаю, облегчит работу многим разработчикам.

08.10.2024    1098    PROSTO-1C    4    

13

БСП (Библиотека стандартных подсистем) Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В статье рассмотрим пошаговую инструкцию создания дополнительного отчета с фоновым формированием результата.

04.10.2024    1968    MadRave    11    

24

БСП (Библиотека стандартных подсистем) Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример отслеживания прогресса фонового выполнения дополнительной обработки с использованием программного интерфейса длительных операций БСП.

10.09.2024    2017    MadRave    1    

17

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

А что, если долгожданная реализация Паузы в 1С смутно напоминает старую, проверенную? А?!

06.09.2024    1395    n_mezentsev    10    

8

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Добавим дополнительные свойства в новый документ средствами БСП

02.09.2024    4250    John_d    10    

52
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. EddieTocha 28 02.12.13 21:26 Сейчас в теме
Бухгалтерия предприятия, редакция 3.0 (3.0.26.11)

Все скопировал из Вашего описания. Функция СформироватьПечатнуюФормуНакладная() пустая, только создает ТабличныйДокумент и возвращает его. Поставил в этой функции Сообщить("ааа"), сообщение не появилось, видимо она не выполнялась.

Результат работы, ошибка:

{Форма.ФормаПечати.Форма(83)}: Ошибка при вызове метода контекста (ОткрытьФорму)
ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'val':
форма: Элемент
имя: {http://v8.1c.ru/8.2/mngsrv/ws}val
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'Value':
форма: Элемент
имя: {http://v8.1c.ru/8.1/data/core}Value
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'value':
форма: Элемент
имя: {http://v8.1c.ru/8.1/data/core}value
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'Value':
форма: Элемент
2. Поручик 4693 02.12.13 21:33 Сейчас в теме
(1) Откуда мне знать, куда вы что скопировали и как что сделали.
3. Поручик 4693 02.12.13 23:45 Сейчас в теме
(1) Добавил печатную форму с выбором для Бухгалтерии предприятия 3.0. Ссылку найдёте в описании. Учитесь.
4. Поручик 4693 28.12.13 14:38 Сейчас в теме
Ещё одна обработка с использованием методики.
Внешняя печатная форма "Счет на оплату покупателю" для БУ 3.0 с ручным выбором параметров http://infostart.ru/public/248458/
temdj; simy4; MaximKor; qwinter; SlavaVNL; TorLink; +6 1 Ответить
5. Поручик 4693 04.03.14 09:37 Сейчас в теме
Небольшие изменения в обработке для БСП недавних релизов.
6. SlavaVNL 8 16.04.14 08:10 Сейчас в теме
7. Dima69 71 18.04.14 10:16 Сейчас в теме
Небольшие изменения в обработке для БСП недавних релизов.?????????

А что за изменения, а то моя обработка вдруг перестала работать
выдает ошибку МЕТОД ОБЪЕКТА НЕ ОБНАРУЖЕН (МЕТАДАННЫЕ)
8. Поручик 4693 18.04.14 10:30 Сейчас в теме
(7) Одноэсники через одного дятлы, точнее из трёх два дятла. И вот почему - что за обработка, какая конфигурация, типа протелепатируй, мне лень писать.
Короче, разбирайся сам как знаешь. Приложенная ВПФ нормально работает в Управление торговлей 11.0.9 - 11.1.4.
9. alexpvs 64 19.05.14 17:57 Сейчас в теме
Большое спасибо за подсказанную методику по использованию общей формы ПечатьДокументов. У меня как раз с этим был затык, открытие формы для ввода параметров делается без проблем просто в описании сведений о внешней обработке
10. Поручик 4693 18.06.14 12:44 Сейчас в теме
Обработка портирована для использования с БСП 2.2.3
11. Поручик 4693 23.06.14 13:02 Сейчас в теме
Обработка портирована для использования с УТ 11.1.6
12. davdykin 25 26.07.14 07:18 Сейчас в теме
Поручик, спасибо большое за классную инструкцию. Хотелось бы уточнить:
1. Где можно почитать мануал про БСП, на ИТС разбирался с данной обработкой печати - ни хорошего примера, нифига не нашел.
2. Как отлаживать такую обработку?
14. jobkostya1c_ERP 100 09.11.14 09:42 Сейчас в теме
(12) davdykin, (12) davdykin, найти то в закрытке на ИТС, но там паролик нужен. Отдельно то конфигурация БСП поставляется как демка, но она, как и вся документация больше разработчикам в крупных фирмах нужна, где есть корпоративные стандарты.
И это только для разработчиков новых конфигураций. Все равно подстраиваться приходится под то что есть.
Прикрепленные файлы:
13. jobkostya1c_ERP 100 09.11.14 09:06 Сейчас в теме
Хорошо написано. Главное по делу и с примером.
Возможность то вызова есть
Для конфигураций линии УТ 10.3, БП 2.0 есть возможность передачи параметров, а также возможность без особых ухищрений вызвать форму обработки перед печатью с последующим выводом результата печати в штатное окно.
вот только никто не использует :(
В отраслевом ВДГБ Ломбард столкнулся. Печатные формы реализованы в виде отчета в конфигурации. Чтоб не передавать параметры (или, вернее чтоб передать параметр-объект документа, для вызова его (ДокументОбъекта) методов:
ИначеЕсли ИмяМакета = "ЗалоговыйБилетМакетНаБланке" Тогда
		
		ОтчетЗБ = Отчеты.ЛМБ_ЗалоговыйБилетПоМакету.Создать();
		ОтчетЗБ.мДокументОбъект          = ЭтотОбъект;
		ОтчетЗБ.СсылкаНаОбъект           = Ссылка;
		ОтчетЗБ.мДанныеОСхеме            = мДанныеКредитования;
		ОтчетЗБ.мУчетнаяПолитикаЛомбарда = мУчетнаяПолитикаЛомбарда;
		
		ТабДокумент = ОтчетЗБ.Печать(Истина);
		
	КонецЕсли;
Показать

А уже от нажатой кнопки и как параметра "галочки" зависит вариант печати. Такой вот "штатный" механизм передачи параметров.
Прикрепленные файлы:
for-elenak; +1 Ответить
15. Pipapalamm 13.01.15 10:34 Сейчас в теме
Автору спасибо.
Разжевано специально для ленивых программистов.
16. cassyan 12.02.15 09:12 Сейчас в теме
Спасибо за статью. Всё разжёвано, и при этом ни капли воды. То, что нужно.
17. markgenuine 24.02.15 10:26 Сейчас в теме
Спасибо за статью, очень интересный метод.
18. пользователь 24.02.15 13:04
Сообщение было скрыто модератором.
...
19. пользователь 24.02.15 16:31
Сообщение было скрыто модератором.
...
20. Sam13 347 17.03.15 09:55 Сейчас в теме
Все верно. Кроме как таких "танцев с бубном" передать в обработку печати свое значение невозможно.
Почему в БСП процедура написана таким образом? Что мешает добавить еще один параметр для передачи произвольных значений в эту процедуру. Непонятно.
Если бы в процедуре печати была доступна ссылка на внешнюю обработку (справочник "ДополнительныеВнешниеОтчетыИОбработки"), то это облегчило бы жизнь.

Иногда бывает нужно печатать с доп.параметрами, но при этом не открывать предварительно диалоговое окно. Классический пример - печатная форма с какими-нибудь ответственными или должностями, которые меняются время от времени, но не часто. Вбивать их в макет - тупо, показывать каждый раз при печати тоже не айс.
Я использовал такой метод: сделал две команды печати, одна команда печатной формы - для настройки параметров печати, вторая команда - для печати с уже настроенными ранее параметрами.
Форма для настройки параметров открывается и сохраняет значения в реквизит "ХранилищеНастроек" справочника "ДополнительныеВнешниеОтчетыИОбработки".
Вторая команда (печать с готовыми настройками) при открытии имея ссылку на справочник "ДополнительныеВнешниеОтчетыИОбработки" читает сохраненные настройки и сразу уходит на печать не открывая форму.
Единственный недостаток такого метода - видимость двух команд печати в списке команд (с открытием формы и без). Победить можно, но это предмет отдельного поста, пожалуй.
21. andreycom 8 18.03.15 10:17 Сейчас в теме
При запуске печатной формы такие проблемы:
{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(54)}: Поле объекта не обнаружено (БезопасныйРежим)
ВнешняяОбработкаОбъект = ПолучитьОбъектВнешнейОбработки(ИсточникДанных, ПараметрыИсточника.БезопасныйРежим);

Подскажите пжл куда копать?
22. Поручик 4693 18.03.15 10:41 Сейчас в теме
(21) И как мне протелепатировать релиз используемой БСП или конфы? И какая именно обработка?
23. andreycom 8 18.03.15 11:07 Сейчас в теме
обработка - "Расходная накладная с диалогом выбора" (параметры в печатную форму передать нужно)
конфигурация - УТ11.0.6.9 платформа 8.3.5.1383

При выборе печатной формы с документа происходит открытие диалогового окна, после нажатия "печать" вываливается в данную ошибку.
24. Поручик 4693 18.03.15 11:27 Сейчас в теме
(23) Спасибо, поржал. Вы бы ещё УТ 11.0.4 от 2010 года использовали. Со старой УТ разбирайтесь сами.
25. WhiteOwl 442 03.04.15 13:31 Сейчас в теме
Благодарю, пригодилось!
26. FarFar 47 20.05.15 14:16 Сейчас в теме
Нашел, скачал, заработало.
Хороший пример!
УТ 11.1.9.66
27. Nx6600 24 04.06.15 10:13 Сейчас в теме
А можно ли как-нибудь реализовать печать с выводом диалоговой формы при печати комплекта? Команда печати комплекта отличается от команды печати отдельной формы тем, что комплект подготавливается полностью серверной процедурой.

Имеется ввиду комплект, настраиваемый через форму "НастройкаПечатиКомплекта". Готовый комплект (список форм и их количество) печатаются модулем менеджера регистра НастройкаПечатиОбъектов (процедура СформироватьКомплектВнешнихПечатныхФорм). Я не знаю как вызвать форму (причем логично и удобней) один раз для всего комплекта. (это где то в БСП 2.1.9)
28. Поручик 4693 04.06.15 11:03 Сейчас в теме
(27) Наверное, можно. Сам не интересовался
29. avsav 01.07.15 11:35 Сейчас в теме
Работает ли подобный код в Бухгалтерии предприятия 3.0?
У меня возникает ошибка "Поле объекта не обнаружено(ИдентификаторКоманды)"
30. Поручик 4693 01.07.15 12:23 Сейчас в теме
(29) С чего она у тебя возникает? Скачай обработку для БП 3.0 и сделай по образцу. Предварительно вкурись в матчасть.
31. smallwood13 21.08.15 05:27 Сейчас в теме
Спасибо, хоть и не с первого раза, но всё получилось.
32. JimmyBacsk 11.09.15 10:55 Сейчас в теме
Спасибо ERP 2.0 все работает. Долго парился с задачей пока не нашел эту статью.
33. tofree 15 24.11.15 23:40 Сейчас в теме
Отличная статья. Можно еще ВызовКлиентскогоМетода вместо ОткрытиеФормы опробывать, все равно в итоге общая форма .печатьдокументов вызывается.
34. Perk0n 13 10.03.16 19:01 Сейчас в теме
Подскажите, как методами БСП вывести ВПФ документа (Акт) из произвольной обработки?
Сама ВПФ превосходно зарегистрирована и печатается из самого документа, а вот из обработки/другого документа (Реализация) не получается.

Разобрался. При вызове общей формы "ПечатьДокументов" в качестве "ПараметрыОткрытия.ИсточникДанных" передал Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(Моя_ВПФ).
35. user597906_kivolgin 12.10.16 20:21 Сейчас в теме
Добрый день,

Очень интересная и разжеванная статья!
Подскажите как модуле формы обработки можно получить ссылку на документ? Мне необходимо вывести для пользователя некоторые реквизиты из документа.
36. Поручик 4693 12.10.16 23:42 Сейчас в теме
(35)
        //Ссылки на вызвавшие форму объекты
        Для каждого ОбъектНазначения Из ВыполняемаяКоманда.ОбъектыНазначения Цикл
            ОбъектыНазначения.Добавить(ОбъектНазначения);
        КонецЦикла; //Для каждого ОбъектНазначения Из
37. salikoff 21.09.17 10:21 Сейчас в теме
Передо мной стояла аналогичная задача и я решил её таким же способом — посредством передачи параметра в первом элементе массива ОбъектыНазначения. Решение не очень красивое, но работает и альтернативы ему я не вижу. Жаль что 1С не предоставила удобного механизма решения этой задачи.
38. ulovka 10 24.11.17 20:29 Сейчас в теме
Добрый вечер!
Подскажите пожалуйста: у вас в форме обработки есть реквизит ТаблицаНоменклатуры, в которую попадает номенклатура из документа, и можно установить пометку. А как сделать так, чтоб в печатную форму попадала только помеченная номенклатура? У меня аналогичная задача. С обычными реквизитами все ок, а вот с тз что-то никак (((
39. Поручик 4693 24.11.17 22:03 Сейчас в теме
(38) Только помеченная и попадает, что не так?
41. ulovka 10 27.11.17 09:10 Сейчас в теме
(39) Странно, попадает вся. Приложу скриншоты, чтоб не быть голословным. УТ 11.3.4.103
Прикрепленные файлы:
40. Поручик 4693 24.11.17 22:05 Сейчас в теме
(38) https://infostart.ru/public/73548/
ТоварныйЧек для УТ 11078 (с выбором товара).epf - для Управление Торговлей 11.0.7.8 и позднее (для документов Чек ККМ, реализация товаров/услуг, заказ клиента) с формой выбора позиций для печати
42. koloss 67 05.12.17 15:35 Сейчас в теме
Использовал Вызов клиентского метода. В форме обработки в процедуре Печать(ИдентификаторКоманды,ОбъектыНазначения) Экспорт

АдресХранилища=ПоместитьВоВременноеХранилище(ОбъектыНазначения,Новый УникальныйИдентификатор);	
КлючУникальностиФормы = АдресХранилища;
ОткрытьФорму(ПолучитьПолноеИмяФормы("Форма"),,ЭтаФорма,КлючУникальностиФормы);

Функция ПолучитьПолноеИмяФормы(ИмяФормы)
     Возврат Лев(ЭтотОбъект.ИмяФормы, СтрНайти(ЭтотОбъект.ИмяФормы, ".", НаправлениеПоиска.СКонца)) + ИмяФормы; 
КонецФункции


На кнопку Выполнить формы повесил команду, в ней написал
ОбъектыНазначения = ПолучитьИзВременногоХранилища(ЭтаФорма.КлючУникальности);
Через реквизиты формы(обработки) достал нужные данные (ЭтаФорма.Объект.ИмяРеквизита)
https://infostart.ru/public/310553/
43. XelOla 19 18.12.17 15:14 Сейчас в теме
А как перед печатью ВПФ задать вопрос и по ответу печатать ту или иную форму (без кнопочки печать)
44. lisav 137 22.02.18 07:39 Сейчас в теме
ошибка как в первом посте "Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа." может возникнуть, когда в список в качестве значения добавляется элемент списка, а не его значение. Надо тогда исправить следующую строчку:
            ОбъектыНазначения.Добавить(ОбъектНазначения.Значение);    
45. leda69@list.ru 28.09.18 12:41 Сейчас в теме
Спасибо большое за подробное объяснение! Всё получилось.
46. tmixsam 56 06.05.19 10:24 Сейчас в теме
У меня была задача перед выполнением печати открыть форму внешней печатной формы,
там указать дополнительные параметры и потом только печатать.
Для этого в форме создала параметр "ОбъектыНазначения" тип Произвольный и обязательно галочку "Ключевой параметр"
иначе при открытии формы этот параметр не заполняется
Затем в процедуре НаКлиенте ПриОткрытииФормы добавила ваш текст

ВыполняемаяКоманда = Параметры;

СтандартнаяОбработка = Истина;
//Проверка на релиз БСП для универсальности.
//Общий модуль ДополнительныеОтчетыИОбработкиКлиентПереопределяемый существует в версии БСП выше 2.0.1.19
Если ЕстьОбщийМодуль("ДополнительныеОтчетыИОбработкиКлиентПереопределяемый") Тогда
Выполнить("ДополнительныеОтчетыИОбработкиКлиентПереопределяемый.ПередВыполнениемКомандыПечатиВнешнейПечатнойФормы(ВыполняемаяКоманда.ОбъектыНазначения, СтандартнаяОбработка);");

Попытка
Для Каждого ОбъектНазначения Из Параметры.ОбъектыНазначения Цикл
Объект.ДокСпр = ОбъектНазначения;
Сообщить(ОбъектНазначения);
Сообщить(ТипЗнч(ОбъектНазначения));
КонецЦикла;
Исключение
КонецПопытки;
КонецЕсли;

потом в процедуры формы
&НаКлиенте
Процедура ПечатьТЧ(Команда)
ТабДок = Новый ТабличныйДокумент;
СтекОповещений = Новый Массив;
ПечатьФормыНаСервере(ТабДок);
ТабДок.ТолькоПросмотр = Истина;
ТабДок.Показать("Печать ТЧ");
КонецПроцедуры

&НаСервере
Процедура ПечатьФормыНаСервере(ТабДок)
ЭтотОбъектВПФ = РеквизитФормыВЗначение("Объект");
//МассивОбъектов = Новый Массив;
//МассивОбъектов.Добавить(Объект.ДокСпр);
МассивОбъектов = Параметры.ОбъектыНазначения;

КоллекцияПечатныхФорм = Новый ТаблицаЗначений;
КоллекцияПечатныхФорм.Колонки.Добавить("ТабличныйДокумент");
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяМакета");
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяВРЕГ");
КоллекцияПечатныхФорм.Колонки.Добавить("СинонимМакета");
КоллекцияПечатныхФорм.Колонки.Добавить("Экземпляров");
СтрокаП = КоллекцияПечатныхФорм.Добавить();
СтрокаП.ИмяМакета = "ПечатьТЧ";
СтрокаП.ИмяВРЕГ = ВРег("ПечатьТЧ");
СтрокаП.Экземпляров = 1;
СтрокаП.СинонимМакета = "Печать ТЧ";

ОбъектыПечати = Новый Структура;
ПараметрыВывода = Новый Структура;

ЭтотОбъектВПФ.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
ТабДок = КоллекцияПечатныхФорм[0].ТабличныйДокумент;
КОнецПРоцедуры

Плюс в модуле объекта
Функция СведенияОВнешнейОбработке() Экспорт
...
НоваяКоманда.Использование = "ОткрытиеФормы";
....
КонецФункции

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

Все благодаря Вашим подробным объяснениям получилось и открыть форму и в форме печать МассивОбъектов сохранить
Спасибо!
HIVvich; Vancy43; +2 Ответить
47. Yelloow1 14.10.19 12:31 Сейчас в теме
48. skyvixen 34 13.01.20 13:27 Сейчас в теме
Решение ситуации двумя способами: с изменением конфигурации и с использованием внешних печатных форм - https://expert.chistov.pro/public/502742/
49. lhfrjy 12.10.23 14:35 Сейчас в теме
Не знаю откуда у автора такое хамское отношение к собеседникам. Если у тебя есть обработка на сайте, за которую нужно платить стратмани - то уж хоть поддерживай ее в актуальном состоянии. На БСП 3.1.9.144 она не будет работать.
50. sergeyshik 5 20.10.23 10:56 Сейчас в теме
(49)с этим же столкнулся. сижу разбираю, как можно исправить.
51. korppinen 70 23.10.23 10:01 Сейчас в теме
52. korppinen 70 23.10.23 10:28 Сейчас в теме
53. sergeyshik 5 23.10.23 13:29 Сейчас в теме
(50) я сделал вот так

&НаКлиенте
Процедура Печать(ИдентификаторКоманды, ОбъектыНазначения) Экспорт

ПараметрыИсточника = Новый Структура;
ПараметрыИсточника.Вставить("ИдентификаторКоманды", ИдентификаторКоманды);
ПараметрыИсточника.Вставить("ОбъектыНазначения", ОбъектыНазначения);

ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("ИсточникДанных", ПолучитьСсылкуНаДопОбработку(ИдентификаторКоманды));
ПараметрыОткрытия.Вставить("ПараметрыИсточника", ПараметрыИсточника);
ПараметрыОткрытия.Вставить("ПараметрКоманды", ОбъектыНазначения);
ПараметрыОткрытия.Вставить("ПараметрыПечати",Новый Структура);


ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, Неопределено, Строка(Новый УникальныйИдентификатор));

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

учтите, что надо получить ссылку на доп обработку.
Оставьте свое сообщение