Динамическая кнопка VS Комбинация клавиш

0. sapervodichka 6453 08.08.22 22:00 Сейчас в теме
Часто требуется ко всем формам или к списку форм привязать новые действия. Но как это сделать не меняя каждую форму и в идеале не меняя конфигурацию?
Ниже будет описано, как запрограммировать новые действия через расширение (т.е. не меняя конфигурации) и сделать это универсально (не меняя каждую форму).

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ybatiaev 58 08.08.22 22:55 Сейчас в теме
Добрый день! Идея хорошая.
На мой взгляд, правда, направление более правильное - голосовое управление. На инфостарте уже было решение 1С+python. Один минус - потоковый стрим на клиентсерверной части не поддерживался при терминальном доступе.
Вот это бы конкретно развить )))
KRIHA; sapervodichka; NiGMa; +3 Ответить
2. quazare 3133 09.08.22 04:47 Сейчас в теме
продолжаешь развивать тему комбинаций клавиш? идея хорошая!
3. sapervodichka 6453 09.08.22 09:10 Сейчас в теме
(2) угумс, всё новое забытое старое
Прикрепленные файлы:
Lemmonbri; +1 Ответить
4. vld1973 80 09.08.22 09:53 Сейчас в теме
Спасибо за интересную идею. Плюсую.
5. Segate 193 09.08.22 10:06 Сейчас в теме
А зачем это в управлениях свойствами?
Раз уж мы используем БСП - используйте подключаемые команды, как положено
8. sapervodichka 6453 09.08.22 12:19 Сейчас в теме
(5) В разных конфах в модулях форм внутри события ПриСозданииНаСервере полно разных вызовов [ОбщийМодуль].ПриСозданииНаСервере(...) которые можно перехватить, тут УправлениеСвойствами.ПриСозданииНаСервере перехвачем с расчетом на конфу ЗУП был.
ПодключаемыеКоманды.ПриСозданииНаСервере()
ИнтеграцияС1СДокументооборот.ПриСозданииНаСервере()
СобытияФорм.ПриСозданииНаСервере()
ВерсионированиеОбъектов.ПриСозданииНаСервере()
УправлениеСвойствами.ПриСозданииНаСервере()
и т.д.

где-то есть где-то нет того или иного вызова, поэтому можно перехватить несколько модулей, в самом выводе кнопки проверяется ее наличие на форме, если уже выведена, то повторно не выводится
adhocprog; +1 Ответить
16. PLAstic 290 09.08.22 17:49 Сейчас в теме
(8) Омагад... А подключить нужные объекты к подсистеме подключаемых команд никак было? И тогда бы завязался на неё только. Всё равно у тебя есть расширение и внести нужные модификации было несложно. А так наколхозил в типовых подсистемах БСП. Ну как бы да, задачу решил, но какой ценой? У программиста должны быть принципы.
18. sapervodichka 6453 09.08.22 18:15 Сейчас в теме
(16) у меня большое количество баз, а решение должно быть универсальным, автономным, простым, не требующим доработок под любое типовое решение 1С. Сами подключаемые обработки о которых ты пишешь, можно использовать для заполнения по остаткам на складе, например, документа Перемещения. Я и их часто делаю, но тут не про них.
6. PLAstic 290 09.08.22 10:09 Сейчас в теме
А чем это лучше обычных подключаемых команд? В итоге ты и подключаешься к его событиям.
*пока читал, выше написали то же самое
9. sapervodichka 6453 09.08.22 12:22 Сейчас в теме
(6) ПодключаемыеКоманды подразумевают создание внешней обработки заполнения, а тут как бы в расширении не одна обработка а заложены целые подсистемы (наборы обработок, какие-то документы, справочники регистры и т.д.) цеплять их на внешнюю обработку мне было не удобно
adhocprog; +1 1 Ответить
15. PLAstic 290 09.08.22 17:46 Сейчас в теме
(9) Велкам, делай любую архитектуру в расширении, но подключить к формам объектов ты мог это и нормальным образом, предусмотренным подсистемой. И в пользу внешней обработки говорит в т.ч. и модифицируемость кода на бою, что недостижимо даже с расширением (динамить базу всё равно придётся).
17. sapervodichka 6453 09.08.22 18:12 Сейчас в теме
(15) тут как бы публикация про сравнение кнопки и комбинации, а не про конкретное расширение.

Но если интересен ответ про расширение, то оно
- во-первых отлажено и не требует модификации,
- во-вторых если потребует модификации, то внешняя обработка, о которой ты пишешь не особо поможет поправить код самого расширения без обновления базы.

В чем профит твоего напора на решение не понимаю.
У меня у самого десятки разных баз (а реально сотни), и то решение скачали десятки людей.
Всем зашло - это нормально один раз поставить расширение.
Внешняя обработка в довесок к расширению - не пришей собаке хвост.
suepifanov; +1 Ответить
21. dhurricane 10.08.22 12:49 Сейчас в теме
(17) На всякий случай переформулирую исходный вопрос, как я его понял. Почему Вы не добавили свой вид подключаемых команд? "Целые подсистемы" же здесь не преграда.
23. sapervodichka 6453 10.08.22 13:25 Сейчас в теме
(21) Ден, пожалуйста, напиши в чем профит от этого варианта по сравнению с текущим (это быстрее, это удобнее, это морально правильнее, зачем мне это переделать)?
Сразу поблагодарю (читал твои комменты ранее) ты по крайней мере примеры скидываешь, может твой вариант и лучше будет. Просто обдумывать за кого-то его идею я не стану, нет времени, работа сам понимаешь. Если напишут пример и он будет лучше, то я только за.
24. dhurricane 10.08.22 14:07 Сейчас в теме
(23) Это морально правильнее. :-) Ну на мой вкус. Не могу объяснить, нет объективных аргументов.
25. PLAstic 290 10.08.22 16:58 Сейчас в теме
(24) У меня есть. Это ТСО, включающее в себя лёгкость модификации и обслуживания. Приходит новый человек, который знает БСП. Он знает про подсистему подключаемых команд и мог бы легко выполнить задачу по модификации этой добавленной функциональности, но лезет разбираться в код и видит, что нет такой подключаемой команды, но есть какое-то уникальное решение с 10ю вызовами при открытии формы, из которых отрабатывает только первый, а остальные проверяют наличие результата.
Это выливается в кучу времени на изучение уникальных механизмов вместо известных большинству БСПшных. Это вопросы "а зачем было сделано так?" и т.п.
В результате работодателю это обойдётся дороже, чем если бы было реализовано с использованием типовых методов.
26. PLAstic 290 10.08.22 17:01 Сейчас в теме
(24) И добавлю в финале мой любимый вопрос: что ты положишь в копилку своего опыта?
В данном случае автор пилит какой-то свой механизм и благодаря тому, что ему разрешают это делать, он это делает. Но вот пришла смена конторы и в новой ему говорят "не, коллега, мы тут колхоз не приветствуем, садись и делай по-нормальному". А у него нет опыта в копилке, нет знаний механизмов БСП, нет в принципе привычки грызть вопрос "а как можно было бы правильнее сделать".

зыЖ Допускаю, что опыт/знания есть, но видимо нет принципов, о которых я писал ранее. Отсутствие принципов допускает написание кода любого уровня корректности.
27. sapervodichka 6453 10.08.22 20:57 Сейчас в теме
(26) зачем слова, скидывай свой код сюда
28. sapervodichka 6453 10.08.22 23:49 Сейчас в теме
(27) можно с легкостью переделать на 1 перехват
ПодключаемыеКоманды.ПриСозданииНаСервере()

Вместо 2 перехватов

ВерсионированиеОбъектов.ПриСозданииНаСервере()
УправлениеСвойствами.ПриСозданииНаСервере()

- когда я то расширение делал, вызова ПодключаемыеКоманды.ПриСозданииНаСервере() не было в формах, а в разных формах было то ВерсионированиеОбъектов то УправлениеСвойствами.

Вообщем, Леонид, проблемы тут нет, и надумывать её не нужно.
Там лишь 1 процедура вызывается. А у программистов есть мозг.

Давай расходиться, либо присылай свой код и обработку, я посмотрю.

Если он лучше и удобнее, то я возьму на вооружение и буду тебе благодарен.
В любом случае спасибо за критику.
Прикрепленные файлы:
fatman78; PLAstic; +2 Ответить
29. PLAstic 290 11.08.22 10:07 Сейчас в теме
(27) Да я и не сходился. Если есть такой монстр и он работает, то тут речь можно вести только об оптимизации, чтобы прям красиво было. Это как 5 и 5+ в школе. У меня нет каких-то интеллектуальных доработок на эту тему. Недавно сделал вызов клиентского метода (открытие формы) через подключаемые команды, но и там всё по инструкции, ничего интересного.
Вангую, скоро ты увидишь массу моего кода, но это в личку. :)
7. user654641_yaga_m 5 09.08.22 11:04 Сейчас в теме
10. bulpi 209 09.08.22 14:16 Сейчас в теме
Плюсанул, но есть замечание :
код процедуры ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
написан отвратительно. Зачем там столько Попытка - Исключение ?
Я бы постыдился такое выкладывать.
zhuntovda; +1 Ответить
14. sapervodichka 6453 09.08.22 14:59 Сейчас в теме
(10) Я не могу всё предупредить по разным формам в 1С (они далеко не все стандартные), где-то есть вероятность ошибки. Чтобы в рабочей базе ошибка не помешала пользователю дальше продолжить работать на некоторых моментах поставил попытка исключение. На практике исключения не возникали, но сам оператор оставил (я перестраховщик).
11. Eralashka 09.08.22 14:31 Сейчас в теме
Найти(пИмяФормы, "Справочник.Сотрудники") > 0
какой то убогий код немного

Попробуй покурить Метаданные.Содержит()
PLAstic; zhuntovda; +2 1 Ответить
13. sapervodichka 6453 09.08.22 14:54 Сейчас в теме
(11) я не курю (>_<) напиши какой параметр передать туда?
19. sapervodichka 6453 09.08.22 18:19 Сейчас в теме
(13) всем кто лайкает предложение использовать Метаданные.Содержит() для начала напишите, что туда передать )))
20. dhurricane 10.08.22 12:45 Сейчас в теме
(19) Может речь была впринципе об использовании метаданных?
МетаданныеФормы = Метаданные.НайтиПоПолномуИмени(пИмяФормы);
ЭтоСправочникСотрудников = (МетаданныеФормы.Родитель() = Метеданные.Справочники.Сотрудники);
22. sapervodichka 6453 10.08.22 13:18 Сейчас в теме
(20) пусть использую, что хотят, дальше все равно проверять имя формы и основной объект в форме сотрудника (он там в отличие от стандартного называется Сотрудник, вместо Объект) (тебе в любом случае спасибо)
34. fatman78 16 13.12.22 20:53 Сейчас в теме
(22)Согласен с Дмитрием, тоже нахлебался с этими именами форм (особенно форм списков) - каких только вариантов названий не встретишь, программисты в типовых конфигурациях сами пренебрегают своими же стандартами.
Еще одна боль - отсутствие удобной штатной возможности программно определить "основной реквизит" на форме, встречал в типовых реализацию даже с применением спец. реквизита что-то типа "ИмяОсновногоРеквизита" строкового типа, который и хранил имя "основного реквизита" формы.
30. PLAstic 290 11.08.22 10:12 Сейчас в теме
(20) В БСП есть масса методов для работы с метаданными (ОМ ОбщегоНазначения) и в т.ч. для многих случаев можно использовать не сами метаданные, а ИдентификаторыОбъектовМетаданных - это удобнее и кодом они тоже сильно обвязаны.
31. sapervodichka 6453 11.08.22 10:34 Сейчас в теме
(30) Леонид, если они тут применимы =))) напиши пример, что вместо Найти(пИмяФормы, "Справочник.Сотрудники") > 0 использовать из БСП, чтобы понять что основной объект формы не Форма.Объект, а Форма.Сотрудник?
32. PLAstic 290 11.08.22 12:40 Сейчас в теме
(31) Ну, в конкретном случае я бы поставил 5 за целеустремлённость и 2 за грамотность реализации.
В механизме подключаемых команд тебе передаётся множество параметров, которые помогут ответить, откуда идёт вызов и к кому его хотели применить. Например, во внешнюю обработку заполнения с типом ОткрытиеФормы передаётся как сама исходная форма, так и объект(ы). Поэтому тут ничего выдумывать не надо, делаем по инструкции.
Ты сам признал, что есть вариант подключить нужные объекты к подсистеме "Подключаемые команды". Сделай это и у тебя откроется возможность реализовать этот механизм без колхоза.

На всякий случай ссылка на описание подсистемы.
33. sapervodichka 6453 11.08.22 13:55 Сейчас в теме
(32) спасибо, я ранее читал, но кому-нибудь обязательно пригодятся эти ссылки
Оставьте свое сообщение
Вакансии
Руководитель группы 1С
Екатеринбург
зарплата от 200 000 руб.
Полный день

Функциональный архитектор
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб.
Полный день

Ведущий программист 1С (удаленно)
Пермь
зарплата от 150 000 руб.
Полный день

Программист 1С
Домодедово
зарплата от 150 000 руб. до 180 000 руб.
Полный день