Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Программная кнопка в типовой конфе, НЕ УФ. (http://forums.kuban.ru/f1040/programmnaya_knopka_v_tipovoj_konfe_ne_uf-8056989.html)

pavlo 01.11.2016 07:30

Программная кнопка в типовой конфе, НЕ УФ.
 
Всем привет.
Помогите разобраться, можно ли не трогая типовой документ скажем Поступление добавить туда кнопку (с этим проблем нет) и добавить туда действие вызов обработки, которая есть в конфе не меняя код документа?

Кнопки = ФормаОбъекта.ЭлементыФормы.КоманднаяПанельТовары.Кнопки.ПодменюЗаполнить.Кнопки;
Если Кнопки.Найти("ЗагрузкаИзЕкселя") = Неопределено Тогда
НоваяКнопка = Кнопки.Добавить();
НоваяКнопка.ТипКнопки = ТипКнопкиКоманднойПанели.Действие;
НоваяКнопка.Имя = "ЗагрузкаИзЕкселя";
НоваяКнопка.Подсказка = "Загрузить из Excel";
НоваяКнопка.Пояснение = НоваяКнопка.Подсказка;
НоваяКнопка.Текст = "Загрузить из Excel";
НоваяКнопка.ИзменяетДанные = Истина;
//НоваяКнопка.Действие = Новый Действие("ЗагрузкаПоступленийИзExcel");
КонецЕсли;

Вот что в Действие записать, чтобы сделать это или это не возможно и должны быть только процедуры/функции формы документа?

android 01.11.2016 09:28

Типовой механизм обработок заполнения таб.частей не устравает?

pavlo 01.11.2016 10:31

к сожалению нет, заказчика не устраивает.

GariPortman 01.11.2016 10:43

[quote=pavlo1c;43156682] [/quote] Заказчик говорит - не надо типовой конфигурации. Мы хотим ежемесячно платить Одинэсникам за обновление нетиповой? Да и чем отличается - Действия - запустить нетленку от Заполнить - заполнить нетленкой?

pavlo 01.11.2016 10:46

Есть свои типы фактур, которые нужно загрузить. Загрузить одной кнопкой. Это и делает обработка. Нужно просто добавить кнопку (программно, а не каждый раз возвращать ее) и при ее нажатии вызвать обработку.
Просил совета, а не то как и что навязывать заказчику.

GariPortman 01.11.2016 10:49

[quote=pavlo1c;43156780]Нужно просто добавить кнопку (программно, а не каждый раз возвращать ее) [/quote]
Есть несколько способов. Наиболее логичный - обработка табличных частей. У тебя появляется одна(!!! как ты и хочешь) кнопка. Открываешь документ и у тебя в документе кнопка "заполнить - Что то заполнить". Чем этот способ противоречит сказанному в (0) и (4) ???

GariPortman 01.11.2016 10:55

А куда код из (0) вставляешь?

roma n 01.11.2016 10:55

(4) см (1)
[em]чтобы сделать это[/em] нужно куда-то написать код, который вызовет твою обработку. Такой код уже написан в механизмах подключаемых обработок заполнения и подменю печати. Не устраивает - пиши свой. Но его где-то в доступном в контексте формы месте придётся разместить.

pavlo 01.11.2016 11:45

(6) УстановитьЗаголовокФормыДокумента в РаботаСДиалогами
там одна строчка и вызывает мой общий модуль.
этот модуль через форму добавляет кнопку, а вот с действием беда.

pavlo 01.11.2016 11:50

(5) обработку то придется менять и каждый раз при обновлении следить все равно не затереть же.

GariPortman 01.11.2016 11:52

8-pavlo1c > Вот я пользователь. Как я могу отличить кнопку, которую ты добавил через ... РаботаСДиалогами и кнопку которая появилась в результате стандартного механизма подключения обработки табличных частей?

Климов Сергей 01.11.2016 11:52

2(8) У тебя два варианта:
1. Вносим изменения в конфу:
- копируем Форму ФОрмаДокумента в МояФормаДокумента;
- Устнавливаем у документа в качестве формы документа форму МояФормаДокумента;
- В форме МояФормаДокумента делаем все необходимые свистелки и перделки;
- Профит!
2. Конфу не трогаем. Никаких собственных кнопок на форме не появляется. Используем штатный механизм обработок заполнения.

pavlo 01.11.2016 11:53

характерная картинка, не?

pavlo 01.11.2016 11:55

(11) как же не трогаем? обновился и по умолчанию форма перешла назад. И в догонку не получишь новые пополнения формы от новых версий типовой.

GariPortman 01.11.2016 11:56

[quote=pavlo1c;43157184] (5) обработку то придется менять и каждый раз при обновлении следить все равно не затереть же. [/quote] ????????
Мы все таки на разных языках с тобой разговариваем
[url]https://www.google.ru/search?q=1%D1%81+%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0+%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D1%85+%D1%87%D0%B0%D1%81%D1%82%D0%B5%D0%B9&ie=utf-8&oe=utf-8&gws_rd=cr&ei=WlgYWOGsJ-bE6ATY7JFY#newwindow=1&safe=strict&q=1%D1%81+%D0%B4%D0%BB%D1%8F+%D1%87%D0%B5%D0%B3%D0%BE+%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0+%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D1%85+%D1%87%D0%B0%D1%81%D1%82%D0%B5%D0%B9[/url]

GariPortman 01.11.2016 11:59

+14 Сделал, поставил - забыл. Совсем забыл. Ничего при обновлении затереться не может.

GariPortman 01.11.2016 12:04

[quote=pavlo1c;43157196]характерная картинка, не? [/quote]для китайцев делаешь? без картинки не поймут куда жать надо?

pavlo 01.11.2016 13:04

(14) спасибо, понял о чем речь, но у меня не удается запустить этот механизм. Не дает открыть форму самой обработки :(
Саму обработку сразу открывать тоже не удается, так как Инициализировать() срабатывает, но дальше форма обработки не открывается.

pavlo 01.11.2016 13:06

(16) ну ты спросил как (ты пользователь) поймешь что жать, вот как и все остальные кнопки знают что жать. Картинку к примеру тебе написал :)

GariPortman 01.11.2016 13:16

17-pavlo1c >
Как вариант:
Перем ДокументОбъект экспорт;


Процедура Инициализировать(Объект,ТабЧасть,ТабличноеПолеОбъекта) экспорт
ДокументОбъект = Объект;
Форма = ЭтотОбъект.ПолучитьФорму("Форма");
форма.ЭлементыФормы.СсылкаНаОбъект.доступность =ложь; //Это поле на форме и данную строку можно удалить- используется для отладки (если запускать обработку не подключая к справочнику допобработок)
Форма.Открыть();

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

GariPortman 01.11.2016 13:23

18-pavlo1c >Я тебе говорил о том, что пользователю наплевать как ты сделаешь - внешней обработкой ТЧ, в копии форме, в общем модуле - он этого даже не заметит. А то что нельзя картинку подвесить к пункту меню заполнить - так это вообще не проблема, подписать кнопку для пользователя можно на любом языке мира.

pavlo 01.11.2016 15:49

(19) хм, через ОткрутьФорму() не взлетело, да и не верно было, а как ты предложил вполне верное и не плохое решение, спасибо большое.
Это решит вопрос, но вот вопрос можно ли добавлять именно программно кнопки с внешним действием остался открыт (уже из спортивного интереса)
Если действия могут быть функции/процедуры самого объекта, то возможно ли добавить туда свою динамически сначала?

(20) Как я сделаю ему наплевать, но это должно быть не мене удобно чем есть. Я и не говорил, что нужно только так, но я подумал сделать так и спросил может кто знает почему не получается.

GariPortman 01.11.2016 16:59

[quote=pavlo1c;43159016] Я и не говорил, что нужно только так[/quote]
Да ладно: Тебе в (1) сказали как надо делать.
а ты :
[quote=pavlo1c;43156780]Нужно просто добавить кнопку (программно, а не каждый раз возвращать ее) и при ее нажатии вызвать обработку. Просил совета, а не то как и что навязывать заказчику. [/quote]
ПРОСТО ДОБАВИТЬ КНОПКУ [b]и только ПРОГРАММНО[/b].


[quote=pavlo1c;43159016]но вот вопрос можно ли добавлять именно программно кнопки с внешним действием остался открыт (уже из спортивного интереса)[/quote]
Чисто из-за спортивного интереса (если оно тебе надо):
1. Создаешь пустую управляемую форму своего документа. В обработчике ПриОткрытии пишешь Закрыть(); Назначаешь эту форму основной
2. Создаешь подписку на ОбработкаПолученияФормы для ДокументМенеджер
3. В модуле подписки открываешь стандартную форму и делаешь с формой что хочешь.
При обновлении следишь что бы форма по умолчанию оставалась ТвояНоваяФорма

И как говориться успехов в личной жизни...
[img]http://samopoznanie.ru/avatars/objects/3-152127_1_6.jpg?1476481128[/img]

GariPortman 01.11.2016 17:13

+22 А обработчики свои на элементы формы ты так не повесишь. Так что бубен.

roma n 01.11.2016 17:22

(0) СП наше всё
КнопкаКоманднойПанели (CommandBarButton)
Действие (Action)
Использование:

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

Тип:[b] Действие.[/b]
=======
Читаем описание типа

Действие (Action)
....

Описание:

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

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

Толстый клиент.
Сериализуется.

pavlo 01.11.2016 19:05

(22) делаешь форму основной это вообще не вариант, снесется.
(23) так и подозревал, спс
(24) потому и спросил, может есть возможность динамически добавить процедуру и тогда она будет удовлетворять этому описанию.


Текущее время: 18:15. Часовой пояс GMT +3.