|
Программное добавление команд печати на УФ документа | ☑ | ||
---|---|---|---|---|
0
vladimir80
01.03.19
✎
11:35
|
Всем привет! Есть нужда - добавить кнопки печати в документ расходный ордер, реализующие печать кусков отдельно по рабочим участкам. Печатная форма добавлена к документу и нарисована в расширении. Список рабочих участков, конечно же, получаем при создании формы на сервере, там же хотелось бы добавить команды печати по каждому из присутствующих в конкретном документе рабочих участков. Подскажите порядок действий, с УФ пока тяжело, в модуль менеджера объекта как-то логически не получается засунуть добавление команд... Конфа УТ 11.4.
|
|||
1
sqr4
01.03.19
✎
11:52
|
ВПФ не предлагать?
|
|||
2
vladimir80
01.03.19
✎
12:02
|
Не принципиально. Главное рабочий механизм добавления команд в зависимости от содержимого документа, доступный из расширения.
|
|||
3
sqr4
01.03.19
✎
12:03
|
||||
4
sqr4
01.03.19
✎
12:03
|
Без расширений без доработки конфигурации
|
|||
5
vladimir80
01.03.19
✎
12:34
|
Ммм, а в каком моменте я смогу сформировать список команд в зависимости от содержимого документа? Печатные формы сформировать я могу без проблем - мне бы с набором команд разобраться... Ссори, возможно этот момент в коде проскочил - но я не заметил.
Т.е. в документе товары по трем рабочим участкам - на форме три команды. именованные "Печать раб уч 1", "Печать раб уч 2" и т.п., если один участок - значит одна команда, 10 - значит десять команд. |
|||
6
vladimir80
01.03.19
✎
13:16
|
Или это предложение внедрить команду для вызова формы, на которой можно расположить команды печати в зависимости от контекста?
|
|||
7
sqr4
01.03.19
✎
13:32
|
(6) да наверно плохая идея с ВПФ
|
|||
8
vladimir80
01.03.19
✎
14:54
|
Ну видимо как обычно через гланды придется...
В расширении в процедуре ПриСозданииНаСервере, вернее ПриСозданииНаСервереПосле пишем: Для Каждого РУ ИЗ СоответствиеРабочихУчастковДокумента Цикл ИмяКоманды = Строка("Печать_" + СтрЗаменить(РУ.Значение.УникальныйИдентификатор(), "-", "_")); НоваяКоманда = Команды.Добавить(ИмяКоманды); НоваяКоманда.Действие = "СделатьЧтото"; КнопкаКоманднойПанели = Элементы.Добавить(ИмяКоманды+"Кнопка", Тип("КнопкаФормы"), Элементы.ПодменюПечать); КнопкаКоманднойПанели.ИмяКоманды = ИмяКоманды; КнопкаКоманднойПанели.Заголовок = "Печать по учатку "+ Строка(РУ.Значение); КонецЦикла; СоответствиеРабочихУчастковДокумента получить не проблема. В процедуре СделатьЧтоТо берем Команда.ИмяКоманды, отсекаем строку "Печать_", меняем "_" на "-", получаем строковый УИД рабочего участка, ну и дальше печатаем с отбором по этому рабочему участку. Всем спасибо. |
|||
9
vladimir80
01.03.19
✎
15:32
|
&НаСервере
Процедура РО_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка) СоответствиеРабочихУчастковДокумента = ЗаполнитьРабочиеУчасткиНаСервере(); // Возврат Соответствие Для Каждого РУ ИЗ СоответствиеРабочихУчастковДокумента Цикл ИмяКоманды = "Печать_" + СтрЗаменить(РУ.Значение.УникальныйИдентификатор(), "-", "_"); НоваяКоманда = Команды.Добавить(ИмяКоманды); НоваяКоманда.Действие = "СделатьЧтото"; КнопкаКоманднойПанели = Элементы.Добавить(ИмяКоманды+"Кнопка", Тип("КнопкаФормы"), Элементы.ПодменюПечать); КнопкаКоманднойПанели.ИмяКоманды = ИмяКоманды; КнопкаКоманднойПанели.Заголовок = "Печать по участку "+ Строка(РУ.Значение); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура СделатьЧтото(Команда) ТабДок = Новый ТабличныйДокумент; СтрокаГУИД = СтрЗаменить(Команда.Имя, "Печать_", ""); СтрокаГУИД = СтрЗаменить(СтрокаГУИД, "_", "-"); СделатьЧтотоНаСервере(ТабДок, СтрокаГУИД); ТабДок.Показать("Заголовок таб док"); КонецПроцедуры &НаСервере Процедура СделатьЧтотоНаСервере(ТабДок, СтрокаГУИД) РабочийУчасток = Справочники.РабочиеУчастки.ПолучитьСсылку( Новый УникальныйИдентификатор(СтрокаГУИД) ); ПроцедураЗаполненияТабличногоДокумента(ТабДок, РабочийУчасток); КонецПроцедуры Вот как-то так в итоге |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |