Имя: Пароль:
1C
1С v8
УстановитьКнопкиПечати
,
0 dextermorgan777
 
12.01.15
10:37
Добрый день.

В типовой бухгалтерии создал свой документ. В модуле формы добавил процедуру УстановитьКнопкиПечати(). Скопировал её из документа реализации. В модуле объекта создал функцию ПолучитьСтруктуруПечатныхФорм()  где описал нужные мне печатки. Добавил вызов УстановитьКнопкиПечати() в процедуру перед открытием. Все добавляет, но кнопки все не активны. Ничего нажать нельзя. Подскажите пожалуйста, что я еще забыл сделать.
Спасибо за ответы.
1 Бертыш
 
12.01.15
10:39
Этих бухий типовых как грязи.
2 Cube
 
12.01.15
10:40
(0) В модуле формы документа нет процедуры, на которую ссылкаются все твои кнопки...
3 dextermorgan777
 
12.01.15
10:55
(2) в модуле объекта создал процедуру печати и там в зависимости имени кнопки вызываю соответствующие функции заполнения табл. документа.
4 dextermorgan777
 
12.01.15
10:56
(1) 1.6.56.2
Это Беларуская. Не знаю аналог какой именно Росийской.
5 Cube
 
12.01.15
10:56
(3) Процедура-обработчик кнопки на форме может располагаться только в модуле этой самой формы. Что ты нам написал в модуле объекта, кнопку не волнует.
6 dextermorgan777
 
12.01.15
11:03
(5) так я же программно создаю эти кнопки. Подменю печати создаю и в него пихаю свои печатки. Я скопировал как в доке реализации, там процедур обработчиков на форме для печати ТТН нет. Они все в модуле объекта.
7 Cube
 
12.01.15
11:04
(6) "там процедур обработчиков на форме для печати ТТН нет. Они все в модуле объекта."
Сам придумал?
8 Serg_1960
 
12.01.15
11:06
(0) "В модуле формы добавил процедуру УстановитьКнопкиПечати(). Скопировал её из документа..." - это ,случайно, не локальная процедура конкретного документа? В УПП, например, универсальный типовой вызов, где чётко указано:

ФормированиеПечатныхФорм.СоздатьКнопкиПечати(ЭтотОбъект, ЭтаФорма);
9 dextermorgan777
 
12.01.15
11:11
(8)
Процедура УстановитьКнопкиПечати()
    
    мДеревоМакетов = РаботаСДиалогами.ПолучитьДеревоМакетовПечати(Ссылка, ПолучитьСтруктуруПечатныхФорм(), Новый Действие("ОсновныеДействияФормыПечать"), Новый Действие("ОсновныеДействияФормыУстановитьПечатьПоУмолчанию"));

    РаботаСДиалогами.УстановитьПодменюПечати    (мПодменюПечати, ЭлементыФормы.ОсновныеДействияФормы, мДеревоМакетов.Строки.Количество() > 0);
    РаботаСДиалогами.УстановитьПечатьПоУмолчанию(мПечатьПоУмолчанию, ЭлементыФормы.ОсновныеДействияФормы, мДеревоМакетов, Метаданные().Имя,Новый Действие("ОсновныеДействияФормыПечатьПоУмолчанию"));

    Если НЕ мПодменюПечати = Неопределено Тогда
        РаботаСДиалогами.СформироватьПодменю(мДеревоМакетов, мПодменюПечати,Истина,Истина);
    КонецЕсли;

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

Тоже вроде все из общего модуля вызывается. Просто сама процедура в модуле формы.
10 dextermorgan777
 
12.01.15
11:13
11 Serg_1960
 
12.01.15
11:14
(7) В некоторых справочниках и документах используется и такой типовой функционал - через локальную процедуру УстановитьКнопкиПечати()

(9) Переменные мДеревоМакетов, мПодменюПечати и мПечатьПоУмолчанию не забыл объявить в модуле формы?
12 dextermorgan777
 
12.01.15
11:15
(11) все есть.
13 Cube
 
12.01.15
11:16
(10) По фотографии не гадаю.
14 dextermorgan777
 
12.01.15
11:16
http://6.firepic.org/6/images/2015-01/12/b2z541bgbeat.png

Вот так выглядит на форме.
15 cube033
 
12.01.15
11:16
При программном создании элемента - события всё равно прописывать надо: НовыйЭлемент.УстановитьДействие("ПриИзменении", "НовыйЭлементПриИзменении");
И процедуру нужно:
&НаКлиенте
Процедура "НовыйЭлементПриИзменении"
....
КонецПроцедуры
16 dextermorgan777
 
12.01.15
11:17
(13) я просто показал, что функции именно в модуле объекта лежат. И я не сам это придумал.
17 Cube
 
12.01.15
11:18
dextermorgan777 если не веришь мне, то на тебе выдержку из СП:

Расширение элементов управления, расположенных в форме (Extension for controls located in a form)
УстановитьДействие (SetAction)

Синтаксис:
УстановитьДействие(<ИмяСобытия>, <Действие>)

Параметры:
<ИмяСобытия> (обязательный)
Тип: Строка.
Имя события.

<Действие> (обязательный)
Тип: Действие; Неопределено.
Устанавливаемое действие.


Ну и далее:

Действие (Action)
Конструкторы:
На основании процедуры

Описание:
Предназначен для получения действия, которое можно назначить в качестве обработчика события элемента управления или команды пользовательского интерфейса.
Для обработки события может быть вызвана процедура или функция модуля формы или общего модуля, имя которой задано в конструкторе.
При использовании в форме в качестве имени процедуры может использоваться только процедура модуля данной формы.


Читать-то хоть умеешь?
18 dextermorgan777
 
12.01.15
11:18
(15) так это вы про управляемые формы наверно?
19 Cube
 
12.01.15
11:20
(16) А я говорю, что кнопке плевать, что ты в модуле объекта написал...
20 cube033
 
12.01.15
11:22
(18) да
21 dextermorgan777
 
12.01.15
11:28
Всем спасибо за ответы.

(19) я вас сразу не так понял, я думал что вы имеете ввиду добавить обработчики для каждой кнопки. Функции для них действительно в модуле объекта лежат. А вот Процедуру одну я действительно забыл скопипастить

Процедура ОсновныеДействияФормыПечать(Кнопка)
    
    РаботаСДиалогами.ПечатьПоДополнительнойКнопке(мДеревоМакетов, ЭтотОбъект, ЭтаФорма, Кнопка.Текст);
    
КонецПроцедуры

Возможно если бы мне сразу так ответили, то это бы мне не отложилось в мозгу, а так действительно буду помнить уже.  Спасибо что потратили на меня свое время.
22 dextermorgan777
 
12.01.15
11:29
Я в отладчике посмотрел стек вызовов по кнопке печать и убедился что первая процедура из модуля формы идет.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.