ДобавитьУсловиеВидимостиКоманды

1. 18.02.19 17:12 Сейчас в теме
Подскажите пожалуйста, кто нибудь использовал успешно ДобавитьУсловиеВидимостиКоманды в БСП 3.0.1, а точнее даже УсловияВидимости у внешней печатной формы. Добавлять он добавляет Условия к команде, но применять потом не применяет. Может кто нибудь сталкивался с подобным?
Найденные решения
18. user1058210 22.02.19 14:46 Сейчас в теме
Нашел где можно прописать условия видимости что бы они работали для внешних печатных форм. В расширении нужно в общем модуле УправлениеПечатью команде "КомандыПечатиОбъекта" дописать добавление условий видимости для нужной внешней команды. И соответственно в "СведенияОВнешнейОбработке" команде добавить колонку "УсловияВидимости".
&Вместо("КомандыПечатиОбъекта")
Функция КомандыПечатиОбъекта(ОбъектМетаданных)
	Результат = ПродолжитьВызов(ОбъектМетаданных);
	для каждого Команда из Результат цикл
		Если Команда.Идентификатор="ПечатьФормы_РасчетаСреднего" Тогда
			МассивДляОтображения=Новый массив;
			МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛБР"));
			МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛ"));
			МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛУР"));
			УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(Команда,"Начисление",МассивДляОтображения,ВидСравнения.ВСписке);
		КонецЕсли;
	КонецЦикла;
	Возврат Результат;
КонецФункции
Показать


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

Вроде как то так. Единственное если команда одна то она становится недоступной вместо невидимой, если две и более и они в подменю "Печать" нормально становятся невидимыми. глюк...
Прикрепленные файлы:
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. dandykry 6 19.02.19 07:42 Сейчас в теме
(1) покажите код. Что-то я не помню, чтоб можно было видимость у команд во внешках менять. Все, что можно назначить команде

http://prntscr.com/mmzl52

Я так понял написали что-то подобное

Функция СведенияОВнешнейОбработке() Экспорт
    
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("3.0.2.0");
ПараметрыРегистрации.Назначение.Добавить("Документ.ЗаказКлиента"); 
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Наименование = "Отчет";
ПараметрыРегистрации.БезопасныйРежим = истина;
ПараметрыРегистрации.Информация = "Задача № ";

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


но так ругается
20. PLAstic 271 13.01.20 09:11 Сейчас в теме
(1) БСП 3.0.1. Тут они сделали, что в качестве реквизитов условий можно выбирать только непосредственно реквизиты шапки документа (или реквизиты справочника), т.к. в функцию передаётся ДанныеФормыКоллекция и выполняется она на клиенте. Если вдруг надо дописать реквизиты "через точку", это возможно в процедуре УсловияВыполняются. Надо дописать вызов собственной функции, которую целесообразно расположить в модуле ПодключаемыеКомандыВызовСервера.

ps: Это не совсем ответ. Скорее, подсказка для интересующихся.
user_2010; arslanov.rr; +2 Ответить
3. accounting_cons 363 19.02.19 07:44 Сейчас в теме
ВидОбработкиДополнительнаяОбработка и ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(НоваяКоманда , "Объект.Проведен", -

несовместимые вещи
4. user1058210 19.02.19 08:55 Сейчас в теме
#Область СведенияОВнешнейОбработкеДляРегистрации

Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = Новый Структура;
	
	МассивНазначений = Новый Массив;
	МассивНазначений.Добавить("Документ.РазовоеНачисление");
	ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
	 ПараметрыРегистрации.Вставить("ВерсияБСП",стандартныеподсистемысервер.ВерсияБиблиотеки());
	ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
	ПараметрыРегистрации.Вставить("Наименование", "Расчет среднего");
	ПараметрыРегистрации.Вставить("БезопасныйРежим", ложь);
	ПараметрыРегистрации.Вставить("Версия", "1.0.0.5");
	ПараметрыРегистрации.Вставить("Информация", "Печатная форма: Расчет среднего. Загружена: "+ТекущаяДата());
	ТаблицаКоманд = ПолучитьТаблицуКоманд();
	
	ДобавитьКоманду(ТаблицаКоманд, "Расчет среднего для разового начисления", "ПечатьФормы_РасчетаСреднего","ВызовСерверногоМетода", ИСТИНА, "ПечатьMXL");
	
	ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
	
	Возврат ПараметрыРегистрации;
	
КонецФункции	

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

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

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

#КонецОбласти
Показать

У меня сделано вот так. И он даже заходит в процедуру, и даже добавляет к команде УсловияВидимости. Но увы не применяет при открытии документа. Такое ощущение что либо он записывает куда то в никуда, либо я неправильно применяю эту вещь.
5. user1058210 19.02.19 09:33 Сейчас в теме
Вот тут написано немного о ДобавитьУсловиеВидимостиКоманды у Печати вот так:
Печать
· Для упрощения разработки внешних команд печати добавлена возможность поставки команд печати в обработках и отчетах расширений конфигурации. Подробнее см. пункт «Разработка команд печати в отчетах и обработках конфигурации и расширений» документации по внедрению подсистемы.

· Для добавления условий видимости команд печати предусмотрена процедура ДобавитьУсловиеВидимостиКоманды общего модуля УправлениеПечатью, которую необходимо использовать в процедуре ДобавитьКомандыПечати. Процедура позволяет задавать условия видимости команды в зависимости от значений реквизитов объекта. Описание процедуры см. в комментарии к ней.

· Для переключения условной видимости команд печати в формах документов, списков и журналов необходимо:

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) Зря Вас вводил в заблуждение, извините. Дополнительные обработки не хранят условия видимости, следовательно и подключаемые команды, созданные на основе команд дополнительных обработок, не имеют условий. Условия видимости доступны только для печатных форм, встроенных в конфигурацию.

Рассмотрите альтернативу - расширения. На ИТС есть рекомендации по разработке команд печати в расширениях, и здесь уже доступны условия видимости.
13. graforlow 3 22.02.19 09:45 Сейчас в теме
(12)Жаль, что только для форм встроенных в конфигурацию.
11. SlavaKron 21.02.19 12:39 Сейчас в теме
Есть подозрение, что "ДобавитьУсловиеВидимостиКоманды" предназначено для серверного контекста формы, в которой сформированы команды, а не для использования в "СведенияОВнешнейОбработке".
14. graforlow 3 22.02.19 11:00 Сейчас в теме
(11)
ДобавитьУсловиеВидимостиКоманды

В описании на ИТС для версии БСП 3.0 доступность только на Сервер, Толстый клиент, Внешнее соединение. В тонком клиенте работать не будет.
user1058210; +1 Ответить
15. user1058210 22.02.19 11:30 Сейчас в теме
(14) Да, жаль, но по всей видимости эта фишка не для внешних печатных форм.
16. SlavaKron 22.02.19 12:04 Сейчас в теме
(14) Про тонкий речи и не было. Я написал "для серверного контекста формы". Имеется в виду форма объекта.
17. user1058210 22.02.19 12:57 Сейчас в теме
Провел эксперимент и добавил расширением в процедуру ДобавитьКомандыПечати из модуля менеджера документа команду печати с ссылкой на внешнюю команду печати и с условием видимости и все отработало. Единственный недостаток такой схемы внешняя печатная форма все равно отображается всегда.
&После("ДобавитьКомандыПечати")
Процедура ГС_ДобавитьКомандыПечати(КомандыПечати)
		КомандаПечати = КомандыПечати.Добавить();
        КомандаПечати.МенеджерПечати = "Документ.РазовоеНачисление";
        КомандаПечати.Идентификатор = "ВнешняяПечатнаяФорма.ПечатьФормы_РасчетаСреднего";
        КомандаПечати.Представление = НСтр("ru = 'ПечатьФормы_РасчетаСреднего'");
        КомандаПечати.ПроверкаПроведенияПередПечатью = Ложь;
		МассивДляОтображения=Новый массив;
		МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛБР"));
		МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛ"));
		МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛУР"));
		УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,"Начисление",МассивДляОтображения,ВидСравнения.ВСписке);		
КонецПроцедуры
Показать

получается что эти условия видимости только для команд созданных в конфигураторе
18. user1058210 22.02.19 14:46 Сейчас в теме
Нашел где можно прописать условия видимости что бы они работали для внешних печатных форм. В расширении нужно в общем модуле УправлениеПечатью команде "КомандыПечатиОбъекта" дописать добавление условий видимости для нужной внешней команды. И соответственно в "СведенияОВнешнейОбработке" команде добавить колонку "УсловияВидимости".
&Вместо("КомандыПечатиОбъекта")
Функция КомандыПечатиОбъекта(ОбъектМетаданных)
	Результат = ПродолжитьВызов(ОбъектМетаданных);
	для каждого Команда из Результат цикл
		Если Команда.Идентификатор="ПечатьФормы_РасчетаСреднего" Тогда
			МассивДляОтображения=Новый массив;
			МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛБР"));
			МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛ"));
			МассивДляОтображения.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ДБЛУР"));
			УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(Команда,"Начисление",МассивДляОтображения,ВидСравнения.ВСписке);
		КонецЕсли;
	КонецЦикла;
	Возврат Результат;
КонецФункции
Показать


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

Вроде как то так. Единственное если команда одна то она становится недоступной вместо невидимой, если две и более и они в подменю "Печать" нормально становятся невидимыми. глюк...
Прикрепленные файлы:
21. user_2010 580 04.05.21 18:35 Сейчас в теме
(18) Подскажите, пожалуйста, что делаю неправильно.
Нужно сделать, чтобы команды печати отображались только для документов определенного вида (реквизит документа "ВидДокумента").
Код ниже - корректно отрабатывает в форме документа - данная команда печати отображается когда должна отображаться. А вот в ФормеСписка - это условие не отрабатывает - в форме списка данная команда печати отображается всегда.
Подозреваю, что дело в самом условии, а точнее в реквизите "ВидДокумента"? больше же не в чем?

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


Этот код у меня в модуле менеджера документа в процедуре
Процедура ДобавитьКомандыПечати(КомандыПечати)

Может быть нужно добавить какое-то условие еще перед добавлением КомандыПечати?
В форме списка выводятся все виды документов и только для одного из них нужно добавить КомандыПечати. Т.е. нужно определять вид документа, на котором сейчас стоит курсор. Реально ли таким образом реализовать?

Спасибо!
19. andy_zhav 191 05.09.19 11:36 Сейчас в теме
Столкнулся с такой задачей на БСП 2.3. Решил пойти другим путем. Добавил в справочник ДополнительныеОтчетыИОбработки в ТЧ "Команды" новый реквизит "УсловияВидимости" с типом "ХранилищеЗначений". Доработал регистрацию ВПФ, чтобы при указанных условиях видимости массив сохранялся в новый реквизит.

В остальном все стало отрабатывать штатно. В более свежих БСП таким же образом думаю тоже можно доработать.
Оставьте свое сообщение
Вопросы с вознаграждением