Имя: Пароль:
1C
 
Помогите с ВПФ для БСП 3.1.7
,
0 mikecool
 
26.03.23
10:22
Если описание впф такое

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


то как мне добавить еще один вариант с факсимиле, который отличается только доп параметром?
пока что понял - в таблицу команд надо добавить колонку ДополнительныеПараметры и запихивать туда структуру
но что изменится в описании регистрации? добавится еще одна команда или надо целиком повторить
весь кусок кода?
пните в модуль формирования описаний пф, пожалуйста ))
1 mikecool
 
25.03.23
12:25
ДобавитьКомандыПечати в ММ объекта уже получает таблицу на входе...
2 mikecool
 
25.03.23
12:30
добавил вторую команду, в описании впф она появилась, в документе - нет (
3 mikecool
 
25.03.23
12:33
в настройки видимости - команда есть, странно
4 Garykom
 
гуру
25.03.23
16:35
(0) никак не добавить и не надо
впф одна будет и сама должна из параметров понимать надо выводить или нет факсимиле
5 mikecool
 
25.03.23
19:46
(4) а кто параметр передаст для печати?
6 mikecool
 
27.03.23
09:46
подниму, мож кто еще подскажет
7 mikecool
 
27.03.23
09:48
в обычных формах было просто - ТЧ доп параметров указывалась напрямую в элементе ВПФ, а здесь где искать?
8 Momus
 
27.03.23
09:56
почему нельзя тупо
ДобавитьКоманду(ТаблицаКоманд, ПредставлениеОтчета()+"1", ИдентификаторОтчета()+"1", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
и в процедуре Печать:
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, ИдентификаторОтчета()+"1") Тогда
    ПараметрыПечати = Новый Структура("ПечатьФаксимиле", Истина);
    ПечатьДокумента(ПечатьФаксимиле);
КонецЕсли;
в ПечатьДокумента проверять заполненность параметра.
9 Новиков
 
27.03.23
09:58
Какая типовая?
10 mikecool
 
27.03.23
10:05
(9) ут11.5
11 mikecool
 
27.03.23
10:05
(8) гм, вот так не пробовал, попробую
12 mikecool
 
27.03.23
10:05
+11 вот только как я попаду в эту ветку, если у меня нет в списке вариантов формы с факсимиле?
13 mikecool
 
27.03.23
10:07
я имею две команды в форме элемента ВПФ и только одну - в меню печати
14 Новиков
 
27.03.23
10:09
(13) ты посмотри, там БСП вариант используется, или дописка как в БП. Просто в БП нет возможности этим рулить и приходится самому эту печать выводить, без типового механизма.
15 Garykom
 
гуру
27.03.23
10:12
(0) для начала у тебя кривое СведенияОВнешнейОбработке

ты хотя бы в своей БСП открой ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке()

// Формирует шаблон сведений о внешнем отчете или обработке для последующего заполнения.
//
// Параметры:
//   ВерсияБСП - см. СтандартныеПодсистемыСервер.ВерсияБиблиотеки.
//
// Возвращаемое значение:
//   Структура - параметры внешнего отчета или обработки:
//       * Вид - Строка - вид внешнего отчета или обработки. Для указания вида рекомендуется использовать функции
//           ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработки<ИмяВида>.
//           Также вид можно указать явно:
//           "ПечатнаяФорма",
//           "ЗаполнениеОбъекта",
//           "СозданиеСвязанныхОбъектов",
//           "Отчет",
//           "ШаблонСообщения",
//           "ДополнительнаяОбработка" или
//           "ДополнительныйОтчет".
//      
//       * Версия - Строка - версия отчета или обработки (далее - обработки).
//           Задается в формате: "<Старший номер>.<Младший номер>".
//      
//       * Назначение - Массив - полные имена объектов конфигурации (Строка), для которых предназначен эта обработка.
//                               Необязательное свойство.
//      
//       * Наименование - Строка - представление для администратора (наименование элемента справочника).
//                                 Если не заполнено, то берется представление объекта метаданных внешней обработки.
//                                 Необязательное свойство.
//      
//       * БезопасныйРежим - Булево - признак подключения внешней обработки в безопасном режиме.
//                                    Значение по умолчанию Истина (обработка будет выполняться безопасно).
//                                    В безопасном режиме:
//                                     Игнорируется привилегированный режим.
//                                     Запрещены внешние по отношению к платформе 1С:Предприятия действия:
//                                      COM;
//                                      загрузка внешних компонент;
//                                      запуск внешних приложений и команд операционной системы;
//                                      доступ к файловой системе, кроме временных файлов;
//                                      доступ к Интернету.
//                                    Необязательное свойство.
//      
//       * Разрешения - Массив из ОбъектXDTO - дополнительные разрешения, необходимые внешней обработке при работе в
//                               безопасном режиме. Элемент массива - ОбъектXDTO - разрешение типа
//                               {http://www.1c.ru/1cFresh/ApplicationExtensions/Permissions/a.b.c.d}PermissionBase.
//                               Для формирования описания разрешения рекомендуется использовать функции
//                               РаботаВБезопасномРежиме.Разрешение<ВидРазрешения>(<ПараметрыРазрешения>).
//                               Необязательное свойство.
//      
//       * Информация - Строка - краткая информация о внешней обработке.
//                               В этом параметре для администратора рекомендуется дать описание ее возможностей.
//                               Если не заполнено, то берется комментарий объекта метаданных внешней обработки.
//      
//       * ВерсияБСП - см. СтандартныеПодсистемыСервер.ВерсияБиблиотеки.
//      
//       * ОпределитьНастройкиФормы - Булево - только для дополнительных отчетов, подключенных к общей форме ФормаОтчета.
//                                             Позволяет переопределять некоторые настройки общей формы отчета и
//                                             подписываться на ее события.
//                                             Если Истина, то в модуле объекта отчета следует определить процедуру по шаблону:
//      
//       * НазначениеВариантаОтчета - Строка - назначение варианта отчета в строковом виде (Десктоп, МобильныйКлиент, Везде).
//          
//           // Задать настройки формы отчета.
//           //
//           // Параметры:
//           //   Форма - ФормаКлиентскогоПриложения, Неопределено -
//           //   КлючВарианта - Строка, Неопределено -
//           //   Настройки - см. ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию
//           //
//           Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
//               // Код процедуры.
//           КонецПроцедуры
//          
//           Подробнее см. в документации к подсистемам "Дополнительные отчеты и обработки" и "Варианты отчетов".
//           Необязательное свойство.
//      
//       * Команды - ТаблицаЗначений - настройки команд, поставляемых внешней обработкой (необязательно для отчетов):
//           ** Идентификатор - Строка - внутреннее имя команды. Для внешних печатных форм (когда Вид = "ПечатнаяФорма"):
//                 Идентификатор может содержать имена одной или нескольких команд печати,
//                 разделенные запятыми. Подробнее см. описание колонки Идентификатор
//                 в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати.
//           ** Представление - Строка - пользовательское представление команды.
//           ** Использование - Строка - тип команды:
//               "ВызовКлиентскогоМетода",
//               "ВызовСерверногоМетода",
//               "ЗаполнениеФормы",
//               "ОткрытиеФормы" или
//               "СценарийВБезопасномРежиме".
//               Для получения типов команд рекомендуется использовать функции
//               ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКоманды<ИмяТипа>.
//               В комментариях к этим функциям также даны шаблоны процедур-обработчиков команд.
//           ** ПоказыватьОповещение - Булево - если Истина, то при запуске команды выводится оповещение "Команда выполняется...".
//              Действует для всех типов команд, кроме команд по открытию формы (Использование = "ОткрытиеФормы").
//           ** Модификатор - Строка - дополнительная классификация команды.
//               Для внешних печатных форм (когда Вид = "ПечатнаяФорма"):
//                 "ПечатьMXL" - для печатных форм на основе табличных макетов.
//               Для загрузки данных из файла (когда Вид = "ПечатнаяФорма" и Использование = "ЗагрузкаДанныхИзФайла"):
//                 Модификатор является обязательным для заполнения
//                 и должен содержать полное имя объекта метаданных (справочника),
//                 для которого выполняется загрузка данных.
//           ** Скрыть - Булево - необязательный. Признак того, что это служебная команда.
//               Если установить в значение Истина, то команда скрывается в карточке дополнительного объекта.
//
Функция СведенияОВнешнейОбработке(ВерсияБСП = "") Экспорт
    ПараметрыРегистрации = Новый Структура;
    
    ПараметрыРегистрации.Вставить("Вид", "");
    ПараметрыРегистрации.Вставить("Версия", "0.0");
    ПараметрыРегистрации.Вставить("Назначение", Новый Массив);
    ПараметрыРегистрации.Вставить("Наименование", Неопределено);
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
    ПараметрыРегистрации.Вставить("Информация", Неопределено);
    ПараметрыРегистрации.Вставить("ВерсияБСП", ВерсияБСП);
    ПараметрыРегистрации.Вставить("ОпределитьНастройкиФормы", Ложь);
    ПараметрыРегистрации.Вставить("НазначениеВариантаОтчета", "");
    
    РеквизитыТабличнойЧасти = Метаданные.Справочники.ДополнительныеОтчетыИОбработки.ТабличныеЧасти.Команды.Реквизиты;
    
    ТаблицаКоманд = Новый ТаблицаЗначений;
    ТаблицаКоманд.Колонки.Добавить("Представление", РеквизитыТабличнойЧасти.Представление.Тип);
    ТаблицаКоманд.Колонки.Добавить("Идентификатор", РеквизитыТабличнойЧасти.Идентификатор.Тип);
    ТаблицаКоманд.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
    ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение", РеквизитыТабличнойЧасти.ПоказыватьОповещение.Тип);
    ТаблицаКоманд.Колонки.Добавить("Модификатор", РеквизитыТабличнойЧасти.Модификатор.Тип);
    ТаблицаКоманд.Колонки.Добавить("Скрыть",      РеквизитыТабличнойЧасти.Скрыть.Тип);
    ТаблицаКоманд.Колонки.Добавить("ЗаменяемыеКоманды", РеквизитыТабличнойЧасти.ЗаменяемыеКоманды.Тип);
    
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    ПараметрыРегистрации.Вставить("Разрешения", Новый Массив);
    
    Возврат ПараметрыРегистрации;
КонецФункции
16 Momus
 
27.03.23
10:13
(13) небось идентификатор одинаковый...
17 Momus
 
27.03.23
10:14
(13) напишите именно так:
ДобавитьКоманду(ТаблицаКоманд, ПредставлениеОтчета()+"1", ИдентификаторОтчета()+"1", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
18 mikecool
 
27.03.23
10:14
(16) да, одинаковый, сейчас поправлю
(15) обратная совместимость видимо работает
19 Garykom
 
гуру
27.03.23
10:15
20 mikecool
 
27.03.23
10:16
да, проблема была в одинаковом идентификаторе
21 mikecool
 
27.03.23
10:17
всем спасибо ))
22 Garykom
 
гуру
27.03.23
10:18
Но там в БП для вывода или не вывода факсимиле и печати не надо отдельную комманду
Там это через параметры!
23 Garykom
 
гуру
27.03.23
10:21
(22)+ https://i.paste.pics/c5a8bbb7fe667e9b281fc3fdda8372d8.png
вот эта галочка отвечает - отследи отладчиком как/что меняется
https://its.1c.ru/db/answers1c/content/13/hdoc

ЗЫ вроде бы УправлениеПечатьюБП.ДобавитьФаксимилеВФоне(ТабДок, Ссылка)
24 Новиков
 
27.03.23
10:38
(23) в БП факсимиле завязано на УправлениеПечатьюБП.ДополнитьДокументПодписьюИПечатью, которая юзается во всех типовых печатных формах. Она работает только с общей формой и тем флажком на форме. Отдельно этот параметр из ВПФ уже не передать. Интересно, что внутрь по стеку там где-то внутри, можно даже передать адрес хранилищ, где лежат картинки факсимиле, но в конце по коду, все равно все факсимиле кодом же и очищаются, и заточка идет именно на параметр с формы. Таким образом, в БП, если ты хочешь рулить факсимиле сам в ВПФ, тебе самому же их и надо выводить.
25 Garykom
 
гуру
27.03.23
10:58
(24) Так ВПФ же тоже можно через БСПшную общую форму выводить с этой галочкой?
26 Новиков
 
27.03.23
11:01
(25) Да, можно. Но ты не сможешь, имея картинки где-то в базе, подменять их налету. Допустим, у тебя ВПФ на ней есть выбор подписантов. И ты хочешь в зависимости от выбора подписи, чтобы скан его подписи выводился в табдок. Так вот, такую задачу, ты не сможешь уже сделать на этой типовой форме, т.к. ты не прокинешь туда этот флажок, т.к. он идет с формы. Или, у тебя есть внешние условия, которые сами определяют, когда печать должна идти с факсимиле, а когда - без (допустим по той же организации). Разрабы, почему то не заложили такой функционал, уйдя от стандартного БСПшного.
27 Garykom
 
гуру
27.03.23
11:51
(26) Хмм я делал выбор чью подпись выводить логикой в коде обработки выводя их в специальную область
А галочка уже просто делала показывать ее или нет