Имя: Пароль:
1C
1С v8
БСП 3.1.2.306. Новая ПФ с запросом доп параметров.
,
0 withoutname
 
11.11.21
20:50
Создал команду у объекта, добавил ее в группу Печать, но теперь у меня появилось два подменю Печать.
совместил )))
https://its.1c.ru/db/bsp312doc#content:53:1:issogl2_разработка_команд_печати
и https://infostart.ru/public/502742/
Вроде как надо в процедуре  ДобавитьКомандыПечати заполнить параметр Обработчик, но там написано только для отчета и обработки
Хелп) как правильно сделать?
1 withoutname
 
11.11.21
20:54
Внешняя обработка не подходит, надо чтобы встроенная была
2 withoutname
 
12.11.21
09:55
ап
3 withoutname
 
12.11.21
12:33
Не понятно написал? )
4 withoutname
 
12.11.21
20:08
может вечерком кто подключиться? )
5 withoutname
 
13.11.21
11:35
еще денёк попробую )
6 ДенисЧ
 
13.11.21
11:41
ЯНХНП.
Что ты хочешь сделать? Внешнюю со своей формой?
7 withoutname
 
13.11.21
11:42
(6) нет, внутреннию с запросом доп параметров
8 rphosts
 
13.11.21
11:43
Дополнительные отчёты и обработки -> Печатные формы... чем-то не устраивают?
9 withoutname
 
13.11.21
11:44
(8) да, необходимо сделать именно в конфигурации
10 rphosts
 
13.11.21
12:33
(9) что-бы иметь извращение с каждым обновлением?
11 Aleksey
 
13.11.21
12:45
(10) Как будто вариант в (8) безопасен.
12 withoutname
 
13.11.21
14:27
(10) нет, эта база не на поддержке
13 rphosts
 
13.11.21
14:31
(11) обновлять не мешает
14 hhhh
 
13.11.21
14:33
(13) если он добавит обработку в конфигурацию, то тоже, обновлению точно не помешает.
15 DrZombi
 
гуру
13.11.21
14:38
(0) На пальцах покажи, в картинках, а то ЯНХНП...
При определённых доработках БСП можно печатать из внешней обработки с открытием формы обработки и подставляя параметры прописанные в расширении... (0) все понял? :)
...и мы тебя тоже...
16 withoutname
 
13.11.21
16:13
(15) не, мне из внешней не надо)
https://b.radikal.ru/b08/2111/6c/eb3a9b8a5fb1.png
17 withoutname
 
13.11.21
16:22
Из ИТС
Формирование печатной формы в клиентском контексте
В отдельных случаях для формирования некоторых печатных форм может потребоваться клиентский контекст. Например, для запроса дополнительных параметров печатной формы у пользователя непосредственно перед печатью. В таких случаях механизм формирования печатной формы необходимо размещать в клиентском модуле, а при описании команды печати в процедуре ДобавитьКомандыПечати использовать параметр Обработчик для передачи управления в этот модуль.
...
2. Добавить клиентскую экспортную функцию формирования печатной формы с единственным параметром, в который подсистема «Печать» будет передавать структуру параметров команды. Имя функции может быть произвольным
...
Параметр Команды печати
Обработчик (необязательный) Строка
Клиентский обработчик команды, в который необходимо передать управление вместо стандартного обработчика команды печать. Используется, например, когда печатная форма формируется на клиенте.

Формат "<ИмяОбщегоМодуля>.<ИмяПроцедуры>" используется, когда процедура размещена в общем модуле.

Формат "<ИмяПроцедуры>" используется, когда процедура размещена в модуле основной формы отчета или обработки, указанной в МенеджерПечати.
18 withoutname
 
13.11.21
16:22
Я вот думаю, а может мне создать встроенную обработку....
19 RomanYS
 
13.11.21
16:23
(16) То что на рисунке - механизмы платформы.
В БСП обработка включается в подсистему подключаемых обработок и подключение прописывается кодом в модуле менеджера. Отдельную команду для этого создавать НЕ надо
20 withoutname
 
13.11.21
16:29
(19) я не въеду, как мне прописать "Команду печати", чтобы у меня вызывалась доп форма с параметрами
21 RomanYS
 
13.11.21
16:57
(20) открой типовую какую-нибудь или демо БСП скачай. В (17) вроде всё довольно понятно: у команды указываешь обработчик <ИмяПроцедуры>, саму процедуру пихаешь в основную форму. В процедуре делаешь ОткрытьФорму - уже нужную, на а как при этом не потерять контекст разберёшься в отладчике или на ИТС
22 withoutname
 
13.11.21
17:06
(21) скачал демо БСП, там такого примера нет (
23 RomanYS
 
13.11.21
17:14
(22) плохо смотрел _ДемоПечатьКарточкиОрганизации

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    КомандаПечати = КомандыПечати.Добавить();
    КомандаПечати.Идентификатор = "ПечатьКарточкиОрганизации";
    КомандаПечати.Представление = НСтр("ru = 'Карточка организации'");
    КомандаПечати.Обработчик = "ПечатьКарточкиОрганизации";
КонецПроцедуры
24 RomanYS
 
13.11.21
17:16
(16) а в твоей конфигурации БСП точно есть? Авторы зачем-то команды создавали в метаданных...
25 withoutname
 
18.11.21
09:34
(23) там нет запроса доп параметров
(24) точно есть)
26 withoutname
 
18.11.21
09:40
В итоге разобрался:

1. Добавить дополнительную форму для объекта. Создать Параметр ДанныеДляПечати с признаком Ключевой параметр.
2. В Общем модуле с признаком Клиент разместить команду открытия дополнительной формы

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

3. В модуле менеджера объекта, указать Обработчик команды печати

      КомандаПечати = КомандыПечати.Добавить();
      КомандаПечати.МенеджерПечати = "Справочник.Учащиеся";
      КомандаПечати.Идентификатор = "СправкаОбУспеваемости";
      КомандаПечати.Представление = НСтр("ru = 'Справка об успеваемости...'");
      КомандаПечати.Обработчик = "УчащиесяКлиент.ОткрытьДополнительнуюФормуПечатиСправкаОбУспеваемости";

4. На дополнительной форме создать Команду Печать

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

5. Ну и соответственно в модуле менеджера добавить в процедуру Печать и описать формирование табличного документа
2 + 2 = 3.9999999999999999999999999999999...