Имя: Пароль:
1C
1С v8
1с8.3. УФ. Группа кнопок "Печать". Как создать программно?
, , ,
0 Альберт_Уфа
 
13.01.15
13:33
Приветствую.
Создал программно на форме группу кнопок, кнопки печати с наименованием соответствующего макета. Есть одна процедура печать, макеты разные. Как вызвать одну процедуру из разных команд и передать название макета?
1 Альберт_Уфа
 
13.01.15
14:07
как вообще выполнить команду, если ее наименование определяется программно? в каком месте нужно создать эту команду?
2 Альберт_Уфа
 
13.01.15
15:05
подскажите, плизз
3 Fish
 
13.01.15
15:06
В типовых посмотри. Там команды печати обычно именно программно размещают.
4 Zamestas
 
13.01.15
15:07
(0) Прописать в кнопки вызов одной процедуры, в которой посмотреть кто её вызвал не предлагать?
5 vicof
 
13.01.15
15:08
Группу команд не предлагать?
6 Альберт_Уфа
 
13.01.15
15:09
(4) а где именно в кнопке прописывается вызов процедуры? там указана команда.
7 Альберт_Уфа
 
13.01.15
15:09
(5) как это?
8 vicof
 
13.01.15
15:12
В типовых раньше было, щас хз.
Ветка общие - группа команд.
Потом команду в документе помещаешь в эту группу
9 Альберт_Уфа
 
13.01.15
15:21
"списал" с типовой:

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


в каком месте нужно прописать выполнение этих команд? никак не могу понять. нажимаю на кнопку печати и ничего не происходит.
10 Fish
 
13.01.15
15:30
(9) В Документообороте это в модуле менеджера, в процедуре "печать". Ну и обработчики самих команд ещё нужно создать.

У тебя же написано:
КомандаФормы.Действие = "ВыполнитьКомандуПечати";

Вот эта процедура и выполняется.
11 Альберт_Уфа
 
13.01.15
15:44
(10) у меня есть такая процедура в модуле менеджера, но она не стартуется. смотрю в типовой БП, там нет ни команды ни процедуры ВыполнитьКомандуПечати
12 Fish
 
13.01.15
15:46
(11) Такая процедура должна быть в модуле формы, раз уж она выполняется по нажатию кнопки в форме. А уже оттуда идёт далее.
13 Fish
 
13.01.15
15:48
+(12) Это про "ВыполнитьКомандуПечати". БП нет под рукой, не знаю, как там сейчас реализовано.
14 Zamestas
 
13.01.15
15:48
(6) Все верно - в команде вызывается процедура - у меня в нетленке есть подобный код - доберусь отпишу.
(11) А это не общая команда ?
15 Альберт_Уфа
 
13.01.15
16:07
(14) 1. спасибо.
2. нет, проверил.
16 Альберт_Уфа
 
13.01.15
16:07
(12) нет такой процедуры ни в модуле формы, ни в модуле менеджера, ни в модуле объекта. (
17 Fish
 
13.01.15
16:17
(16) Поэтому, наверное у тебя ничего и не происходит. Ибо в СП сказано:
"КомандаФормы (FormCommand)
Действие (Action)
Использование:

Чтение и запись.
Описание:

Тип: Строка.
Содержит имя процедуры обработчика команды.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).
Примечание:

Изменение доступно только на сервере. КомандаФормы (FormCommand)
Действие (Action)
Использование:

Чтение и запись.
Описание:

Тип: Строка.
Содержит имя процедуры обработчика команды.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).
Примечание:

Изменение доступно только на сервере."
18 Альберт_Уфа
 
13.01.15
16:32
Спасибо. Разобрался. В модуле формы нужна процедура "ВыполнитьКомандуПечати"
В типовой БП есть процедура, просто я переименовал у себя и в БП искал процедуру с моим наименованием. тупанул короче.
Всем спасибо!!!