Выполнение глобальной команды программно

1. keyn5565` 18 24.02.22 12:41 Сейчас в теме
собственно вопрос: Как можно вызвать глобальную команду справочника программно?
По теме из базы знаний
Найденные решения
18. gruk 15 08.06.23 06:12 Сейчас в теме
(3)
ПерейтиПоНавигационнойСсылке("e1cib/command/ОбщаяКоманда.ИМЯ_КОМАНДЫ?cmdprm=СправочникСсылка.Контрагенты:a63bbcaec5e1325f11edb259cba3cf9e");
starik-2005; ixijixi; keyn5565`; +3 Ответить
17. keyn5565` 18 24.02.22 19:20 Сейчас в теме
(16) Сделал 2 кнопки. Одна выполняет глобальную команду. Другая для тонкого клиента. Обозвал одинаково. Выполняю установку видимости в зависимости от типа клиента. Пока оставлю это решение
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 24.02.22 15:40 Сейчас в теме
(1)
ПерейтиПоНавигационнойСсылке("e1cib/command/Справочник.ИмяСправочника.Команда.ИмяКоманды");
keyn5565`; vv2; +2 Ответить
3. keyn5565` 18 24.02.22 15:55 Сейчас в теме
(2) имеется в виду "Глобальная параметризируемая команда". Как ее можно вызвать из элемента справочника прораммно
18. gruk 15 08.06.23 06:12 Сейчас в теме
(3)
ПерейтиПоНавигационнойСсылке("e1cib/command/ОбщаяКоманда.ИМЯ_КОМАНДЫ?cmdprm=СправочникСсылка.Контрагенты:a63bbcaec5e1325f11edb259cba3cf9e");
starik-2005; ixijixi; keyn5565`; +3 Ответить
4. coollerinc 188 24.02.22 16:03 Сейчас в теме
Вызываете процедуру, которую вызывает команда, если все описано в модуле команды, то выносите в общий модуль
5. keyn5565` 18 24.02.22 16:12 Сейчас в теме
(4) это процедура должна выполняться исключительно на "Толстом клиенте".
При наличии этой процедуре в тонком клиенте возникает критическая ошибка.
Было решено добавить глобальную команду что бы не возникала ошибка, и вызывать ее когда запущен толстый клиент.
Но как ее вызвать не добавляя команду на форму в виде кнопки я не знаю.
6. coollerinc 188 24.02.22 16:39 Сейчас в теме
(5) Вообще не понимаю при чем тут Толстый клиент. Хотите в толстом, вызывайте процедуру в толстом.
7. keyn5565` 18 24.02.22 17:21 Сейчас в теме
(6) при наличии в процедуре метода не поддерживаемого тонким клиентом например "Новый СхемаКомпоновкиДанных"
при простом наличии его в модуле формы.
Возникает критическая ошибка. Которая приводит к завершению работы 1С.
Для этого и была создана глобальная команда. которая отрабатывает вызов подобных конструкторов. и ее необходимо запускать через глобальные команды.
8. coollerinc 188 24.02.22 17:29 Сейчас в теме
(7) Используйте

#Если ТолстыйКлиентУправляемоеПриложение Тогда
Новый СхемаКомпоновкиДанных

#КонецЕсли

Тогда у вас не будет ошибок
9. keyn5565` 18 24.02.22 17:30 Сейчас в теме
(8) если бы всё было так просто
это метод не помогает проверено самым первым
10. makfromkz 35 24.02.22 18:05 Сейчас в теме
У меня похожий вопрос,
Есть навигационная ссылка: e1cib/data/Документ.ПриходныйКассовыйОрдер?ref=a25400d8619e9aa211ec7e8ed8c8123a

Можно ли программно получить обычную ссылку на ПКО ?
11. keyn5565` 18 24.02.22 18:12 Сейчас в теме
(10) можно
UUID a25400d8619e9aa211ec7e8ed8c8123a
перевести в GUID
и получить по ссылку
12. keyn5565` 18 24.02.22 18:17 Сейчас в теме
(10)
a25400d8619e9aa211ec7e8ed8c8123a


Функция UUIDToGUID(UUID) Экспорт

    Возврат Прав(UUID, 8) + "-" + Сред(UUID, 21, 4) + "-" + Сред(UUID, 17, 4) + "-" + Лев(UUID, 4) + "-" + Сред(UUID, 5, 12);

КонецФункции

------

UUID = "a25400d8619e9aa211ec7e8ed8c8123a"; 
ГУИД = Новый УникальныйИдентификатор(UUIDToGUID(UUID))
Ссылка = Документ.ПриходныйКассовыйОрдер.ПолучитьСсылку(ГУИД )
Показать
13. makfromkz 35 24.02.22 18:21 Сейчас в теме
14. makfromkz 35 24.02.22 18:47 Сейчас в теме
(12) Чуток в отладчике поправил до рабочего состояния


&НаКлиенте
Процедура ПолучитьНавигацСсылку(Команда)
	ТекСтр = Элементы.Список.ТекущиеДанные;
	Адрес1 = ПолучитьНавигационнуюСсылку(ТекСтр.Ссылка);
	Сообщить( Адрес1);
	Сообщить( UUIDTo(Адрес1));	
КонецПроцедуры

&НаСервере
Функция UUIDTo(UUID1) Экспорт
	GUID = Прав(Прав(UUID1,32), 8) + "-" + Сред(Прав(UUID1,32), 21, 4) + "-" + Сред(Прав(UUID1,32), 17, 4) + "-" + Лев(Прав(UUID1,32), 4) + "-" + Сред(Прав(UUID1,32), 5, 12);
	ГУИД = Новый УникальныйИдентификатор(GUID);
	ссПКО_2 = Документы.ПриходныйКассовыйОрдер.ПолучитьСсылку(ГУИД );
	Возврат ссПКО_2;
КонецФункции
Показать
15. makfromkz 35 24.02.22 18:48 Сейчас в теме
16. makfromkz 35 24.02.22 19:05 Сейчас в теме
(7) Мне кажется если есть обработка КонсольКомпоновкиДанных на УФах, то в ней кроется решение вашей проблемы. Но моих компетенций не хватает для решения.
17. keyn5565` 18 24.02.22 19:20 Сейчас в теме
(16) Сделал 2 кнопки. Одна выполняет глобальную команду. Другая для тонкого клиента. Обозвал одинаково. Выполняю установку видимости в зависимости от типа клиента. Пока оставлю это решение
20. DELOVOYDOM 18.12.23 01:32 Сейчас в теме
Какой ужас, люди никто не смог просто вызвать обработчик общей команды. Остановись земля я сойду. Есть еще решения? может через JSON?)))
21. SlavaKron 18.12.23 11:35 Сейчас в теме
(20) Ок, как вызвать обработчик общей команды?
22. DELOVOYDOM 18.12.23 11:48 Сейчас в теме
(21) ну во первых обсуждение толстого клиента в 2023 году вызывает много вопросов. Никакого толстого клиента быть не должно в современном коде и мало того он менее функционален чем работа с тонким и веб.
Во вторых все решается через вызов сервера. Выше Вам написал человек в недоумении от Вашей постановки задачи. Люди просто не хотят отвечать на ерунду
23. SlavaKron 18.12.23 12:07 Сейчас в теме
(22) Вы о чем вообще? Ответьте на прямой вопрос.
25. DELOVOYDOM 18.12.23 12:41 Сейчас в теме
(23) я ответил ниже. Вас путает понятие "команда" в мире 1с. Дело в том что команда в понимании 1с это команда от пользователя платформе, а не команда код. Это прежде всего графический элемент интерфейса. Согласен что не очень удачно. Поэтому вы пытаетесь программно нажать кнопку, что делать конечно не нужно. Вам нужно описать код, который хотите использовать как команду в понимании программиста, в общем модуле. А про команды 1с просто примите данность, это модуль кгопки)
24. DELOVOYDOM 18.12.23 12:28 Сейчас в теме
(23) Вам ответили, создайте общий модуль, далее процедуру или функцию с параметрами и перенесите туда тело команды, которая вызывается вашей кнопкой. И вызывайте вашу команду откуда угодно. Вообще само тело общей команды принято описывать в общих модулях, а в общих командах просто элемент интерфейса для форм не более того. Посмотрите как делают в БСП. Берите практики оттуда. Если нарушать парадигму платформы то и возникают такие вопросы, которых быть не должно.
26. DELOVOYDOM 18.12.23 14:54 Сейчас в теме
(21) Ладно я Вам отвечу, но лучше было бы для Вас же, если прошли этот путь сами.
Создаете ДВА общих модуля ( в одном работать у вас ничего не будет)
1. Один общий модуль ставите галки Сервер, Вызов Сервера. В этом модуле размещаете серверные процедуры функции с пометкой "экспорт"
2. Второй общий модуль ставите галки "Клиент" (остальные снимайте), Глобальный галку поставьте если команду (точнее функционал команды) часто будете дергать отовсюду
3. Вашу команду общую убираете оттуда все, кроме вызова общего модуля клиента (где галка клиент и обработка начинается на клиенте)

ИТОГ - у вас остается в общей команде только одна строка вызова общей процедуры. Таким образом настоящая общая команда, доступная для программного запуска, у вас в общем модуле. А общая команда остается всего лишь для кнопки на форме. Вызывайте сколько хотите.

Не благодарите)
keyn5565`; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот