1.
user1058210
18.02.19 17:12
Сейчас в теме
Подскажите пожалуйста, кто нибудь использовал успешно ДобавитьУсловиеВидимостиКоманды в БСП 3.0.1, а точнее даже УсловияВидимости у внешней печатной формы. Добавлять он добавляет Условия к команде, но применять потом не применяет. Может кто нибудь сталкивался с подобным?
По теме из базы знаний
Найденные решения
18.
user1058210
22.02.19 14:46
Сейчас в теме
Нашел где можно прописать условия видимости что бы они работали для внешних печатных форм. В расширении нужно в общем модуле УправлениеПечатью команде "КомандыПечатиОбъекта" дописать добавление условий видимости для нужной внешней команды. И соответственно в "СведенияОВнешнейОбработке" команде добавить колонку "УсловияВидимости".
Вроде как то так. Единственное если команда одна то она становится недоступной вместо невидимой, если две и более и они в подменю "Печать" нормально становятся невидимыми. глюк...
&Вместо("КомандыПечатиОбъекта")
Функция КомандыПечатиОбъекта(ОбъектМетаданных)
Результат = ПродолжитьВызов(ОбъектМетаданных);
для каждого Команда из Результат цикл
Если Команда.Идентификатор="ПечатьФормы_РасчетаСреднего" Тогда
МассивДляОтображения=Новый массив;
МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛБР"));
МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛ"));
МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛУР"));
УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(Команда,"Начисление",МассивДляОтображения,ВидСравнения.ВСписке);
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции ПоказатьФункция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
//Команды = УправлениеПечатью.СоздатьКоллекциюКомандПечати();
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("УсловияВидимости", Новый ОписаниеТипов("Массив"));
Возврат Команды;
КонецФункции ПоказатьВроде как то так. Единственное если команда одна то она становится недоступной вместо невидимой, если две и более и они в подменю "Печать" нормально становятся невидимыми. глюк...
Прикрепленные файлы:
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) покажите код. Что-то я не помню, чтоб можно было видимость у команд во внешках менять. Все, что можно назначить команде
Я так понял написали что-то подобное
но так ругается
Я так понял написали что-то подобное
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("3.0.2.0");
ПараметрыРегистрации.Назначение.Добавить("Документ.ЗаказКлиента");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Наименование = "Отчет";
ПараметрыРегистрации.БезопасныйРежим = истина;
ПараметрыРегистрации.Информация = "Задача № ";
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Отчет'");
НоваяКоманда.Идентификатор = "Прст";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
НоваяКоманда.ПоказыватьОповещение = Истина;
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(НоваяКоманда , "Объект.Проведен", Истина);
Возврат ПараметрыРегистрации;
КонецФункции Показатьно так ругается
(1) БСП 3.0.1. Тут они сделали, что в качестве реквизитов условий можно выбирать только непосредственно реквизиты шапки документа (или реквизиты справочника), т.к. в функцию передаётся ДанныеФормыКоллекция и выполняется она на клиенте. Если вдруг надо дописать реквизиты "через точку", это возможно в процедуре УсловияВыполняются. Надо дописать вызов собственной функции, которую целесообразно расположить в модуле ПодключаемыеКомандыВызовСервера.
ps: Это не совсем ответ. Скорее, подсказка для интересующихся.
ps: Это не совсем ответ. Скорее, подсказка для интересующихся.
3.
accounting_cons
1041
19.02.19 07:44
Сейчас в теме
ВидОбработкиДополнительнаяОбработка и ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(НоваяКоманда , "Объект.Проведен", -
несовместимые вещи
несовместимые вещи
4.
user1058210
19.02.19 08:55
Сейчас в теме
#Область СведенияОВнешнейОбработкеДляРегистрации
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.РазовоеНачисление");
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("ВерсияБСП",стандартныеподсистемысервер.ВерсияБиблиотеки());
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "Расчет среднего");
ПараметрыРегистрации.Вставить("БезопасныйРежим", ложь);
ПараметрыРегистрации.Вставить("Версия", "1.0.0.5");
ПараметрыРегистрации.Вставить("Информация", "Печатная форма: Расчет среднего. Загружена: "+ТекущаяДата());
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, "Расчет среднего для разового начисления", "ПечатьФормы_РасчетаСреднего","ВызовСерверногоМетода", ИСТИНА, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("УсловияВидимости", Новый ОписаниеТипов("Массив"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = ЛОЖЬ, Модификатор)
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(НоваяКоманда,"Начисление",ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛБР"),ВидСравнения.Равно);
//ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(НоваяКоманда,"Начисление",ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛБР"),ВидСравнения.Равно);
КонецПроцедуры
#КонецОбласти ПоказатьУ меня сделано вот так. И он даже заходит в процедуру, и даже добавляет к команде УсловияВидимости. Но увы не применяет при открытии документа. Такое ощущение что либо он записывает куда то в никуда, либо я неправильно применяю эту вещь.
5.
user1058210
19.02.19 09:33
Сейчас в теме
Вот написано немного о ДобавитьУсловиеВидимостиКоманды у Печати вот так:
И вроде условия даже в конфигурации из корочки есть. Но что то не работает...
Кстати конфигурация ЗУП 3.1 (3.1.8.216)
Печать
· Для упрощения разработки внешних команд печати добавлена возможность поставки команд печати в обработках и отчетах расширений конфигурации. Подробнее см. пункт «Разработка команд печати в отчетах и обработках конфигурации и расширений» документации по внедрению подсистемы.
· Для добавления условий видимости команд печати предусмотрена процедура ДобавитьУсловиеВидимостиКоманды общего модуля УправлениеПечатью, которую необходимо использовать в процедуре ДобавитьКомандыПечати. Процедура позволяет задавать условия видимости команды в зависимости от значений реквизитов объекта. Описание процедуры см. в комментарии к ней.
· Для переключения условной видимости команд печати в формах документов, списков и журналов необходимо:
o разместить процедуру Подключаемый_ОбновитьКоманды;
o вставить вызов процедуры ОбновитьКоманды общего модуля УправлениеПечатьюКлиентСервер в событии ПриЧтенииНаСервере формы объекта/документа;
o вставить вызовы процедуры НачатьОбновлениеКоманд общего модуля УправлениеПечатьюКлиент:
§ в событии ПриИзменении реквизитов, участвующих в условиях видимости
§ в событиях формы объекта/документа ПриОткрытии
§ в событии формы списка ПриАктивизацииСтроки.
o у динамического списка формы для реквизитов, участвующих в условиях видимости необходимо установить флажок Использовать всегда.
· Подробности см. в документации.
· Для установки действия при выборе макета печатной формы в форме персональных настроек добавлена функция ЗадатьДействиеПриВыбореМакетаПечатнойФормы общего модуля УправлениеПечатьюКлиент.
Показать· Для упрощения разработки внешних команд печати добавлена возможность поставки команд печати в обработках и отчетах расширений конфигурации. Подробнее см. пункт «Разработка команд печати в отчетах и обработках конфигурации и расширений» документации по внедрению подсистемы.
· Для добавления условий видимости команд печати предусмотрена процедура ДобавитьУсловиеВидимостиКоманды общего модуля УправлениеПечатью, которую необходимо использовать в процедуре ДобавитьКомандыПечати. Процедура позволяет задавать условия видимости команды в зависимости от значений реквизитов объекта. Описание процедуры см. в комментарии к ней.
· Для переключения условной видимости команд печати в формах документов, списков и журналов необходимо:
o разместить процедуру Подключаемый_ОбновитьКоманды;
o вставить вызов процедуры ОбновитьКоманды общего модуля УправлениеПечатьюКлиентСервер в событии ПриЧтенииНаСервере формы объекта/документа;
o вставить вызовы процедуры НачатьОбновлениеКоманд общего модуля УправлениеПечатьюКлиент:
§ в событии ПриИзменении реквизитов, участвующих в условиях видимости
§ в событиях формы объекта/документа ПриОткрытии
§ в событии формы списка ПриАктивизацииСтроки.
o у динамического списка формы для реквизитов, участвующих в условиях видимости необходимо установить флажок Использовать всегда.
· Подробности см. в документации.
· Для установки действия при выборе макета печатной формы в форме персональных настроек добавлена функция ЗадатьДействиеПриВыбореМакетаПечатнойФормы общего модуля УправлениеПечатьюКлиент.
И вроде условия даже в конфигурации из корочки есть. Но что то не работает...
Кстати конфигурация ЗУП 3.1 (3.1.8.216)
6.
user1058210
21.02.19 08:35
Сейчас в теме
Неужели никто не пользовался этой полезной (но такое ощущение, что недоработанной) штукой? :(
7.
dhurricane
21.02.19 09:42
Сейчас в теме
(6) Поясните, пожалуйста, что подразумевается под некорректной работой? В форме списка при выделении разных документов внешняя печатная форма появляется/исчезает? Какие условия Вы описываете? В форме документа печатная форма всегда видна?
8.
user1058210
21.02.19 10:31
Сейчас в теме
(7) Под некорректной работой я подразумеваю то, что УсловияВидимости я прописываю, но команда печать в документе видна всегда. Условия я прописываю как написал выше Начисление=ОпределенноеНачисление. Печатная форма просто видна всегда.
9.
dhurricane
21.02.19 10:59
Сейчас в теме
(8) Прежде, чем я попытаюсь воспроизвести проблему, прошу Вас, ответьте пожалуйста на вопрос про форму списка. Там тоже не меняется условие видимости? Документ типовой?
10.
user1058210
21.02.19 11:07
Сейчас в теме
(9) Да, в форме списка вне зависимости от выделенных документов печатная форма никуда не уходит. Документ РазовоеНачисление (типовой)
12.
dhurricane
22.02.19 08:08
Сейчас в теме
(10) Зря Вас вводил в заблуждение, извините. Дополнительные обработки не хранят условия видимости, следовательно и подключаемые команды, созданные на основе команд дополнительных обработок, не имеют условий. Условия видимости доступны только для печатных форм, встроенных в конфигурацию.
Рассмотрите альтернативу - расширения. На ИТС есть рекомендации по разработке команд печати в расширениях, и здесь уже доступны условия видимости.
Рассмотрите альтернативу - расширения. На ИТС есть рекомендации по разработке команд печати в расширениях, и здесь уже доступны условия видимости.
15.
user1058210
22.02.19 11:30
Сейчас в теме
(14) Да, жаль, но по всей видимости эта фишка не для внешних печатных форм.
17.
user1058210
22.02.19 12:57
Сейчас в теме
Провел эксперимент и добавил расширением в процедуру ДобавитьКомандыПечати из модуля менеджера документа команду печати с ссылкой на внешнюю команду печати и с условием видимости и все отработало. Единственный недостаток такой схемы внешняя печатная форма все равно отображается всегда.
получается что эти условия видимости только для команд созданных в конфигураторе
&После("ДобавитьКомандыПечати")
Процедура ГС_ДобавитьКомандыПечати(КомандыПечати)
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Документ.РазовоеНачисление";
КомандаПечати.Идентификатор = "ВнешняяПечатнаяФорма.ПечатьФормы_РасчетаСреднего";
КомандаПечати.Представление = НСтр("ru = 'ПечатьФормы_РасчетаСреднего'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Ложь;
МассивДляОтображения=Новый массив;
МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛБР"));
МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛ"));
МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛУР"));
УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,"Начисление",МассивДляОтображения,ВидСравнения.ВСписке);
КонецПроцедуры
Показатьполучается что эти условия видимости только для команд созданных в конфигураторе
18.
user1058210
22.02.19 14:46
Сейчас в теме
Нашел где можно прописать условия видимости что бы они работали для внешних печатных форм. В расширении нужно в общем модуле УправлениеПечатью команде "КомандыПечатиОбъекта" дописать добавление условий видимости для нужной внешней команды. И соответственно в "СведенияОВнешнейОбработке" команде добавить колонку "УсловияВидимости".
Вроде как то так. Единственное если команда одна то она становится недоступной вместо невидимой, если две и более и они в подменю "Печать" нормально становятся невидимыми. глюк...
&Вместо("КомандыПечатиОбъекта")
Функция КомандыПечатиОбъекта(ОбъектМетаданных)
Результат = ПродолжитьВызов(ОбъектМетаданных);
для каждого Команда из Результат цикл
Если Команда.Идентификатор="ПечатьФормы_РасчетаСреднего" Тогда
МассивДляОтображения=Новый массив;
МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛБР"));
МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛ"));
МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛУР"));
УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(Команда,"Начисление",МассивДляОтображения,ВидСравнения.ВСписке);
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции ПоказатьФункция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
//Команды = УправлениеПечатью.СоздатьКоллекциюКомандПечати();
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("УсловияВидимости", Новый ОписаниеТипов("Массив"));
Возврат Команды;
КонецФункции ПоказатьВроде как то так. Единственное если команда одна то она становится недоступной вместо невидимой, если две и более и они в подменю "Печать" нормально становятся невидимыми. глюк...
Прикрепленные файлы:
(18) Подскажите, пожалуйста, что делаю неправильно.
Нужно сделать, чтобы команды печати отображались только для документов определенного вида (реквизит документа "ВидДокумента").
Код ниже - корректно отрабатывает в форме документа - данная команда печати отображается когда должна отображаться. А вот в ФормеСписка - это условие не отрабатывает - в форме списка данная команда печати отображается всегда.
Подозреваю, что дело в самом условии, а точнее в реквизите "ВидДокумента"? больше же не в чем?
Этот код у меня в модуле менеджера документа в процедуре
Процедура ДобавитьКомандыПечати(КомандыПечати)
Может быть нужно добавить какое-то условие еще перед добавлением КомандыПечати?
В форме списка выводятся все виды документов и только для одного из них нужно добавить КомандыПечати. Т.е. нужно определять вид документа, на котором сейчас стоит курсор. Реально ли таким образом реализовать?
Спасибо!
Нужно сделать, чтобы команды печати отображались только для документов определенного вида (реквизит документа "ВидДокумента").
Код ниже - корректно отрабатывает в форме документа - данная команда печати отображается когда должна отображаться. А вот в ФормеСписка - это условие не отрабатывает - в форме списка данная команда печати отображается всегда.
Подозреваю, что дело в самом условии, а точнее в реквизите "ВидДокумента"? больше же не в чем?
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Справочник.ИсходящиеДокументы";
КомандаПечати.Идентификатор = "ЗаявкаНаОтправление";
КомандаПечати.Представление = НСтр("ru = '* Заявка на почту'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Обработчик = "УправлениеПечатьюКлиентДокументооборот.ПечатьЗаявкаНаОтправление";
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "ВидДокумента", ВидИсхДокта, ВидСравнения.Равно);Этот код у меня в модуле менеджера документа в процедуре
Процедура ДобавитьКомандыПечати(КомандыПечати)
Может быть нужно добавить какое-то условие еще перед добавлением КомандыПечати?
В форме списка выводятся все виды документов и только для одного из них нужно добавить КомандыПечати. Т.е. нужно определять вид документа, на котором сейчас стоит курсор. Реально ли таким образом реализовать?
Спасибо!
22.
fedor.lyisikov
01.06.21 07:47
Сейчас в теме
(21) Тоже была такая проблема. Выяснил, что реквизит динамического списка , по которому делается отбор, должен быть на форме списка, т.е. скорее всего реквизита ВидДокумента нет на форме.
Столкнулся с такой задачей на БСП 2.3. Решил пойти другим путем. Добавил в справочник ДополнительныеОтчетыИОбработки в ТЧ "Команды" новый реквизит "УсловияВидимости" с типом "ХранилищеЗначений". Доработал регистрацию ВПФ, чтобы при указанных условиях видимости массив сохранялся в новый реквизит.
В остальном все стало отрабатывать штатно. В более свежих БСП таким же образом думаю тоже можно доработать.
В остальном все стало отрабатывать штатно. В более свежих БСП таким же образом думаю тоже можно доработать.
Если кому интересно, задался вопросом и нашел в БСП "3.1.10" функцию УправлениеПечатьюПереопределяемый.ПриПолученииКомандПечати(Знач ПолноеИмяОбъектаМетаданных, КомандыПечати), в которой просто указал условие видимости для своей внешней обработки:
Для каждого КомандаПечати из КомандыПечати Цикл
Если КомандаПечати.Идентификатор = "СогласиеПДФЛ" Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати, "ВидОперации",
Перечисления.ВидыОперацийПродажа.Заявка, ВидСравненияКомпоновкиДанных.НеРавно);
КонецЕсли;
КонецЦикла;
27.
coltraneous_monk
30.06.26 03:15
Сейчас в теме
(26) Встала аналогичная задача - работает, как швейцарские часы, спасибо!
28.
SashinPapa
01.07.26 18:15
Сейчас в теме
@user1058210
Низкий поклон тебе, мил человек, очень помог твой старинный рецепт.
Низкий поклон тебе, мил человек, очень помог твой старинный рецепт.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот