Имя: Пароль:
1C
1С v8
Добавить кнопку на все формы документов,справочников
0 serg-lom89
 
29.01.19
15:24
Добрый день
Подскажите пожалуйста как программно добавить кнопку на все формы объектов?
что бы не прописывать приОткрытии() в каждом объекте.
8.3.10 обычное приложение
1 OldCondom
 
29.01.19
15:26
МодифиукацияКонфигурацииПереопределяемый.ПриСозданииНаСервере()
2 serg-lom89
 
29.01.19
15:26
Есть ли возможность сделать как через подписку на событие?
3 Махони402
 
29.01.19
15:27
Самописка или типовая с ОФ?
Ищи процедуру, которая вызывается всегда и в ней подключайся. Мы в своё время в формирование печатных форм подрубились.
4 Махони402
 
29.01.19
15:27
Нету у форм нормальных событий, токмо у объектов.
5 serg-lom89
 
29.01.19
16:34
(3) типовая ОФ

вот сделал в модуле РаботаСДиалогами.установитьзаголовок

    
     КоллекцияКнопок = ФормаДокумента.ЭлементыФормы.ДействияФормы.Кнопки;
          
     ДействиеОткрытияФормы = Новый Действие("ВыполнитьДействиеНажатие");
     НоваяКнопка =  КоллекцияКнопок.добавить( "ВыполнитьДействиеНажатие",ТипКнопкиКоманднойПанели.Действие,"ВыполнитьДействиеНажатие",ДействиеОткрытияФормы ); ;
    
    
добавил в тот же модуль проц
Процедура ВыполнитьДействиеНажатие() экспорт
    
    ///тут что то делаем
    
КонецПроцедуры


Кнопка появилась но она неактивна..что не так?
6 Ёпрст
 
29.01.19
16:58
(5) нет своответствующего обработчика при нажатии этой кнопки
7 Ёпрст
 
29.01.19
16:58
процы ВыполнитьДействиеНажатие() в форме нема, если че
8 OldCondom
 
29.01.19
17:14
(5) То есть специальный для этого случая модуль, который к тому же таки и называется: ПЕРЕОПРЕДЕЛЯЕМЫЙ ты решил обойти стороной и влезть в типовой код?
9 Вафель
 
29.01.19
17:28
может лучше внешнюю обработку заполнения объекта прикрутить?
10 Tatitutu
 
29.01.19
17:54
Процедура ВыполнитьДействиеНажатие(Элемент) экспорт
11 palsergeich
 
29.01.19
19:57
(10) Не пройдет проверку СОВМЕСТИМО(
12 Мимохожий Однако
 
29.01.19
19:59
(5) какая конфигурация?
13 serg-lom89
 
30.01.19
09:31
(7) да процедуры в форме объекта нету...поэтому и хотелось бы что бы не в каждой форме прописывать
14 serg-lom89
 
30.01.19
09:37
т.е. по сути мне надо во всех объектах ИБ сделать эту кнопку ,и тогда в каждый зайди,пропиши..это одуреть можно будет)))
15 Tatitutu
 
30.01.19
09:42
(11) а зачем она ему в данном контексте?

(10) все прекрасно добавляется и работает
16 serg-lom89
 
30.01.19
09:44
(15) в модуль работаСДиалогами добавил ,
Процедура ВыполнитьДействиеНажатие(элемент) экспорт
и ничего не работает
17 Мимохожий Однако
 
30.01.19
09:49
на заданные вопросы ответь
18 serg-lom89
 
30.01.19
09:53
(12) УТ 10.3 но очень допилена
19 Мимохожий Однако
 
30.01.19
10:01
ответь на (8)
20 serg-lom89
 
30.01.19
10:08
(8) нету такого модуля
21 Мимохожий Однако
 
30.01.19
10:23
Есть пример
// Процедура добавления кнопки
    ДействиеКнопки = Новый Действие("ОбработатьНажатиеКнопки");
    НоваяКнопка    =
ЭлементыФормы.КоманднаяПанель2.Кнопки.Добавить(ИмяКнопки, ТипКнопкиКоманднойПанели.Действие, "Тест",ДействиеКнопки);

Процедура ОбработатьНажатиеКнопки(Элемент)// ОБРАТИТЬ ВНИМАНИЕ НА ПАРАМЕТР ПРОЦЕДУРЫ
       Если Элемент.Имя = "Закрыть" Тогда
            Форма.Закрыть();
       КонецЕсли;
КонецПроцедуры
22 catena
 
30.01.19
10:26
(16)Потому что форма не знает, в какой именно модуль ты добавил процедура-обработчик.
23 serg-lom89
 
30.01.19
10:34
(22) ведь если я добавлю в действие
новый Действие("МойМодуль.ОбработатьНажатиеКнопки");
он ругнется же
24 Галахад
 
гуру
30.01.19
10:38
В УТ10. Для документов можно. Для справочников нет. Ну или я  не знаю.
25 Мимохожий Однако
 
30.01.19
10:40
(23) Если я не ошибаюсь, на сервере процедура добавления кнопки не работает. Твой общий модуль имеет признак На клиенте?
26 serg-lom89
 
30.01.19
10:44
(25) Сервер,Клиент(обыч приложение)
27 bolobol
 
30.01.19
14:14
Разве нельзя собственный глобальник завести, куда процедуру экспортную сунуть?
28 Ёпрст
 
30.01.19
15:47
(27) можно, только толку нуль будет
29 bolobol
 
30.01.19
17:10
(28) Я поясню вопрос: Разве нельзя решить поставленную задачу путём внедрения собственного глобальника, куда процедуру экспортную сунуть, которую назначить обработчику?
30 Ёпрст
 
30.01.19
18:00
(29) нет.
Твой глобальник ничего не даст от слова совсем.

Автору поможет только, если код вызова нажатия кнопки будет уже в каждой форме нужного объекта.
А его там нема.
Свои кнопки он и так создаёт из общего модуля, надеясь на то, что в каждой форме есть этот вызов.
Кнопку то он создаст, а вот с обработчиком - обломсъ.
31 Ёпрст
 
30.01.19
18:01
А ёпт, глобальник.. ну да, с глобальником прокатит
32 Ёпрст
 
30.01.19
18:13
Хотя не.. глобальный модуль ничего не даст, ибо в действия н не запихнешь ИмяМодуля.ИмяМетода

Даже модуль обычного приложения не спасает, действие не работает..
33 Мимохожий Однако
 
30.01.19
18:31
(26) А если убрать признак Сервер?
34 Ёпрст
 
31.01.19
08:27
(33) да кнопка у него добавляется, у него проблема с назначением действия в этой кнопке.
Он может назначить туда только локальную процу модуля формы. Которой у него просто нет.
35 Мимохожий Однако
 
31.01.19
08:43
(34) Копипастой добавить полчаса-час работы. ИМХО.
36 Ёпрст
 
31.01.19
08:48
(35) Это понятно, но автор не хочет втыкать код во все формы. А чтоб в одном месте и автоматом.

Проще такие вещи решать, добавлением чего-либо в ВПФ или во внешние  обработки изменения ТабЧасти
37 Галахад
 
гуру
31.01.19
08:57
(36) Это только для документов. Для справочников фига.
38 bolobol
 
31.01.19
09:21
(32) Для глобальника не нужно писать "ИмяМодуля.", глобальник должен быть клиентским. Тогда процедура попадает в область видимости, но вот что по этому поводу думает 1С - это да, это проблема.
39 Галахад
 
гуру
31.01.19
09:41
(38) Да не работает это.
40 Ёпрст
 
31.01.19
09:47
(37) ну,для справочников, только печать (если есть)
41 Ёпрст
 
31.01.19
09:49
(38) не добавишь в Новый Действие имя любой процы, кроме локальной.
Можно добавить имя процы из обычного приложения, но, всё равно она не срабатывает, хотя действие и создаётся