Использование дополнительных параметров в навигационной ссылке

25.07.24

Разработка - Механизмы платформы 1С

Когда в 8.3.19 релизе вендор анонсировал использование дополнительных параметров в навигационных ссылках, лично я радовался и представлял, что теперь-то из внешних систем можно будет переходить по ссылке и передавать в 1С-форму любые параметры, которые можно по своему вкусу обработать ПриСозданииНаСервере.

Формально так и есть, но, как говорится, есть один нюанс: такие параметры сначала надо сформировать и записать в той же 1С-базе, где будет открыта форма. Причем запись произойдет в момент интерактивного открытия пользователем окна с навигационными ссылками объекта. Либо в момент формирования ссылки методом ПолучитьНавигационнуюСсылку. И запись будет храниться вечно “в хранилище внешних данных навигационных ссылок”.

Т.е. открыть из внешней системы форму с произвольными параметрами в базе 1С можно, но это скорее про взаимоотношения двух людей, первый из которых ручками получил и отправил второму навигационную ссылку, а совсем не про программное формирование ссылки без участия 1С-базы, где должна открыться ссылка. Ну или надо городить какой-то COM/REST/HTTP сервис, который будет стучаться из внешней системы в  нашу базу, чтобы записать параметры в хранилище и вернуть пользователю ссылку, чтобы он ее мог открыть. Такая себе канитель...

Так что имеем вот такое хитрое решение от вендора! И вроде бы формально задача решена, но практическая польза от такого решения… где то рядом.

Понятно, я бы не стал писать статью ради критики. В итоге решение найдено, респект и уважуха вендору, как всегда оставил скрытые пути для манёвра! 

Но сначала опишу свою задачу, возможно, кого-то она наведет на свежую мысль. Задача упрощенно звучит так: есть две базы ERP и MDM, связанные между собой шиной данных, так что НСИ в них синохронизированы по GUID. Пользователи формируют заявки на изменение НСИ в MDM. Но им удобнее это делать сидя в ERP - заходя в список соответствующей НСИ и нажимая кнопку “Создать заявку на изменение”. В этот момент открывается окно MDM, где открывается форма новой заявки со ссылкой на изменяемую НСИ - и всё, очевидный профит! Понятно, что это костыльная замена полноценной безшовки, но в безшовку еще надо вложить тучу времени, чтобы она заработала как полноценный интерфейс, а тут быстро, модно, молодежно. (да я в курсе, что в 1С “MDM” есть расширение с безшовной интеграцией, и обязательно воспользуемся, как только её доведут до ума).
Собственно, решение крутится вокруг этого фрагмента из СП:


Вариант синтаксиса: Ссылка для команд
Синтаксис:
ПолучитьНавигационнуюСсылку(<Команда>, <Параметр>, <ПредставлениеНавигационнойСсылки>, <ВнешниеДанныеНавигационнойСсылки>)
Параметры:
<Команда> (обязательный)
Тип: ОбъектМетаданных: ОбщаяКоманда, ОбъектМетаданных: Команда. 
Содержит команду, для которой получается навигационная ссылка.
<Параметр> (необязательный)
Тип: Произвольный. 
Содержит значение параметра, который нужно передать команде.
<ПредставлениеНавигационнойСсылки> (необязательный)
Тип: Строка. 
<ВнешниеДанныеНавигационнойСсылки> (необязательный)
Тип: Структура. 

Давайте создадим общую команду с такими свойствами (см скриншот):

  • Группа: Панель навигации формы.Важное (тут подойдёт любая панель, имеющая отношение к форме)
  • Тип параметра команды: пусто (если ничего не указывать, то команда будет принимать параметр с любым типом ссылок, как раз то что нам нужно! При этом команда нигде не будет маячить в интерфейсе, иначе замучаетесь ее скрывать)
  • Режим использования параметра: Множественный (значить можно передавать в параметр массив ссылок, причем разных типов)

 

 

Теперь в этой базе попробуйте открыть навигационную ссылку такого типа:

e1c://server/srv01/MDM#e1cib/command/ОбщаяКоманда.ОткрытьЗаявкуПоНавигационнойСсылке?cmdprm=СправочникСсылка.нсиВидыЗаявок:93304ec188f4a2a44b1c9e2000539bd2,ПеречислениеСсылка.нсиВидыОперацийОбработкиДанных:af8e5a0def0bab9845eb3e1deba45be4,СправочникСсылка.нсиКонтрагенты:80eb005056b2b26011eb8889997c536d

Понятно, что имя сервера и базы, имена справочников/перечислений, ссылки, все это должно быть взято из вашего собственного примера.

Теперь поставим отладчик в модуле обработки команды и увидим, что в ПараметрКоманды передан массив из трех ссылок, которые перечислены после параметра “?cmdprm=”

 

 

При этом сама ссылка должна быть указана во внутреннем “перевернутом” формате GUIDа (в коде дана функция преобразования GUIDToUUID).

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

 

//Код на стороне вызывающей системы

&НаКлиенте
Процедура НажатиеКнопкиВоВнешнейСистеме(Ссылка, ПараметрыВыполнения) Экспорт
	
	НавигационнаяСсылка = "e1c://server/srv01/MDM#e1cib/command/ОбщаяКоманда.ОткрытьЗаявкуПоНавигационнойСсылке?cmdprm=";
	ВидЗаявки = "СправочникСсылка.нсиВидыЗаявок:93304ec188f4a2a44b1c9e2000539bd2";
	ВидОперацииИзменение = ",ПеречислениеСсылка.нсиВидыОперацийОбработкиДанных:af8e5a0def0bab9845eb3e1deba45be4";
	UUID = GUIDToUUID(Строка(Ссылка.УникальныйИдентификатор()));
	Контрагент = ",СправочникСсылка.нсиКонтрагенты:" + UUID;
	
	НавигационнаяСсылка = НавигационнаяСсылка + ВидЗаявки + ВидОперацииИзменение + Контрагент;
		
	ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(НавигационнаяСсылка);
		
КонецПроцедуры

&НаКлиенте
Функция GUIDToUUID(GUID) Экспорт

    Возврат Сред(GUID, 20, 4) + Прав(GUID, 12) + Сред(GUID, 15, 4) + Сред(GUID, 10, 4) + Лев(GUID, 8);

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

 

//код на стороне принимающей системы
//Модуль общей команды "ОткрытьЗаявкуПоНавигационнойСсылке"

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
	
	Если ПараметрКоманды.Количество() Тогда
		
		ВидЗаявки = ПараметрКоманды[0];
		ВидОперации = ПараметрКоманды[1];
		Контрагент = ПараметрКоманды[2];
		
		Параметры = Новый Структура;
		Параметры.Вставить("ВидЗаявки", ВидЗаявки);
		Параметры.Вставить("ВидОперации", ВидОперации);
		Параметры.Вставить("Контрагент", Контрагент);
			
		ОткрытьФорму("БизнесПроцесс.нсиЗаявкаНаИзменение.ФормаОбъекта", Параметры);
		
	КонецЕсли;

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

 

Навигационная ссылка дополнительные параметры

См. также

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    7412    bayselonarrend    20    

154

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    5938    dsdred    16    

80

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    17628    YA_418728146    26    

71

Перенос данных 1C Механизмы платформы 1С Системный администратор Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    11212    dsdred    44    

130

Механизмы платформы 1С Программист Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    23748    SeiOkami    48    

135

Механизмы платформы 1С Системный администратор Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    18815    human_new    27    

80

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    14723    YA_418728146    7    

166
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user612295_death4321 26.07.24 06:04 Сейчас в теме
Звучит захватывающе. Возможно в этой статье мне не хватило какого то 30 секундного видео или гифки, как это все выглядит с точки зрения пользователя.

Что происходит в момент ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(НавигационнаяСсылка); ?

Неужели внутри ERP без всяких доработок откроется форма MDM системы со всей логикой работы MDM ?
Или откроется отдельный процесс 1cv8 с базой MDM в отдельном окне вторым приложением 1С:Предприятии.

upd.
В целом провел эксперимент самостоятельно открывается полностью отдельное приложение (2-ое окно 1С предприятие с базой MDM) в котором открывается форма с нужным элементом. Очень интересно теперь как это все отработает через RemAPP.
barelpro; +1 Ответить
2. RustIG 1747 26.07.24 08:56 Сейчас в теме
(0) Добрый день!
Форма заявки из второй базы Мдм открывается только на просмотр? или можно полноценно использовать функционал второй конфигурации Мдм: проводить, открывать поля на форме - лазить по базе через поля на формах?
Как решены вопросы с правами и ограничениями прав на открываемые объекты?
3. barelpro 1430 26.07.24 10:31 Сейчас в теме
(2) При вызове ОткрытьНавигационнуюСсылку открывается второе окно 1С-базы за пределами текущего окна 1С, как если бы этот же пользователь открыл его обычным путем. И уже внутри этого второго окна открывается окно формы, разумеется с учетом прав пользователя, под которым произошла авторизация второй 1С-базы. Это делается быстро, если авторизация пользователя настроена через AD, иначе придется авторизоваться.
Если второе окно 1С-базы уже открыто - то форма откроется внутри него, но перефокуссировка окна не произойдет, а просто замигает ярлык на панели открытых окон.
Как-то так это выглядит.
4. RustIG 1747 26.07.24 12:10 Сейчас в теме
(3) спасибо за разъяснение и за то, что потратили время на это! я думаю, что это бомба в хорошем смысле слова!
barelpro; +1 Ответить
5. roman72 390 26.07.24 12:20 Сейчас в теме
Какие проблемы у бесшовки MDM мешали вам её применять уже сейчас?
6. barelpro 1430 26.07.24 13:12 Сейчас в теме
(5) ну навскидку - форма заявки не отрабатывает "Настройки отображения формы", "Условное поведение формы", не показывает контактные данные. Если задачу отправили на уточнение - автор не может уже ничего сделать.
7. RustIG 1747 26.07.24 14:24 Сейчас в теме
(5) бесшовка - что за технология используется?
8. roman72 390 26.07.24 17:21 Сейчас в теме
10. RustIG 1747 26.07.24 18:17 Сейчас в теме
(8) Спасибо за ссылку, потратил время конечно, чтобы понять, что это старое забытое по новому упакованное....

Бесшовная интеграция - это когда используется технология "1С Automation Server" или/и обмен через файл через каталог, http- и web- запросы ... вот так вот просто можно упаковать ответ

я к чему? - к тому что все эти отдельные технологии можно самим запрограммировать в своей функциональности , если что-то из коробки не работает в бесшовной Шине МДМ....
13. roman72 390 27.07.24 01:27 Сейчас в теме
(10) Как бы технология правильного применения шины предполагает бесшовность.
А тут получается шина есть, а бесшовки нет.
Толи не знают как это сделать, толи на их "шине" такое невозможно.
16. RustIG 1747 27.07.24 22:34 Сейчас в теме
(13) эта самая Шина - это "пшик". Просто красивое слово... Я уже написал выше, это старое забытое упакованное в новое слово....

Шина это набор технологий для ограниченного круга обьектов. Как любой механизм требует обновлений и поддержки.

Да и в целом, непонятно откуда родилось такое название механизма?

Есть безбуиажная инвентаризация в противовес бумажной, есть бесконтактная инвеньаризация на рфид в противовес контактной

А что противопоставляет бесшовная технология?
17. barelpro 1430 28.07.24 12:40 Сейчас в теме
(16) Можно вклинюсь с вопросом в ваш диалог? Объясните, как связаны понятия Шина и Бесшовная ингтеграция?
Шина - это про гарантированную доставку сообщений и про запись на стороне получателя. Бесшовка - в основном про чтение внешних данных и близкое к оригиналу воспроизведение диалоговых интерфейсов внешних систем в одном окне, причем в режиме реального времени, т.е. очень очень быстро. Строятся эти два механизма как правило на разных технологиях.
18. RustIG 1747 28.07.24 14:23 Сейчас в теме
(17) да, хорошо, я всего лишь хотел сказать, что шина это программа , бесшовка это тоже программа. Как любая программа, и шина и бесшовка -несовершенны. И постоянно требуют обновлений, поддержки, адаптаций. Из коробки работает не все. Поэтому некоторые 1сники не используют шину при ее наличии. Мне хватило двух абзацев из этой ветки, чтобы понять это.
19. barelpro 1430 28.07.24 14:29 Сейчас в теме
(18) ага, ну мой вопрос к Roman72 по поводу фразы:
Как бы технология правильного применения шины предполагает бесшовность.
А тут получается шина есть, а бесшовки нет.
Толи не знают как это сделать, толи на их "шине" такое невозможно.
21. roman72 390 28.07.24 20:12 Сейчас в теме
(19) У шины и бесшовки - общая связь по цели их работы - доставке порции данных из одной конфы в другую.
Обычно шина ограничивается доставкой.
А бесшовка 1С решает ещё и задачу предъявления пользователю данных одной конфы в вызывающей конфе через интерфейс подобный интерфейсу вызываемой конфы.
У 1С бесшовка строится вокруг Документооборота к стандартным конфигурациям, т.е. является достаточно специфичным решением.
Но и такая бесшовка и шина требуют наличия какого-то стандарта организации данных и/или их конвертации.
Если шина передает в конфигурацию данные по стандарту, то может передавать и интерфейс.
Т.е. шина может работать как бесшовка, но куда более универсально, особенно, если есть потребность в связи с базами не1С или базами не поддерживающими бесшовку 1С или в двусторонней направленности.
23. roman72 390 30.07.24 10:05 Сейчас в теме
(16) У 1С MDM, шина и бесшовка - это разные продукты.
И да, для того, чтобы шина стала бесшовной - нужно покодить, в частности, сделать универсальный просмотр переданных объектов через стандартизированные и унифицированные формы.
В отличие от бесшовки ДО-"другие конфгурации", нет необходимости тащить в вызвавшую конфу точно такую же форму как в вызываемой конфигурации.
В вызвашей конфигурации, на самом деле, достаточно показать образ вызванного объекта, а не его полнофункциональную форму - поэтому универсальная форма сойдёт.
Я работал не с 1С-шиной, а с Датареоном, поэтому в большей степени мой опыт основан на Датареоне.
Как по мне, Датареон более потенциален при работе с зоопарком не1С ПО наряду с ПО.
Шина от 1С больше всё же заточена на внутрисемейное общение среди ПО 1С.
25. RustIG 1747 31.07.24 10:02 Сейчас в теме
26. RustIG 1747 01.08.24 18:36 Сейчас в теме
24. RustIG 1747 31.07.24 10:01 Сейчас в теме
(16)
что противопоставляет бесшовная технология


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

бесшовное литье - это когда вместо видимого сварочного шва...

скажем так, если так рассуждать, то название "бесшовной" интеграции выглядит логично и уместно...
9. starik-2005 3087 26.07.24 18:15 Сейчас в теме
Тема прикольная. Работает только при режиме совместимости 8.3.19+. Позволяет открывать отчет с настройками, например. Ну и вообще кучу всего. Но у нас совместимость 8.3.12 в продукте, поэтому пролетаем (((
11. RustIG 1747 26.07.24 18:18 Сейчас в теме
(9) почему нельзя поднять совместимость? хотя бы до 8.3.16? почему на такой старой совместимости до сих пор?
14. starik-2005 3087 27.07.24 12:04 Сейчас в теме
(11) очень много легаси, при том система критически важна бизнесу. Очень много регресса придется делать, а тестеров не сильно много.
15. RustIG 1747 27.07.24 22:25 Сейчас в теме
Я извиняюсь за дотошность, а можете пример привести , что именно придется изменить? На что прям не хватает спецов?
Ценю ваше время, поэтому спрашиваю с осторожностью.
20. starik-2005 3087 28.07.24 19:38 Сейчас в теме
(15)
спрашиваю
Если бы можно было вот так легко привести все примеры того, что может сломаться при изменении режима совместимости, то никто бы не парился и не сидел бы на старых режимах. У нас есть несколько внешних компонент в системе, в том числе те, которые идут с ИР, который у нас еще под обычными формами в режиме отображения обычных форм в толстом клиенте работает. Они могут повести себя странно, проверять это вот прям на проде как-то не сильно желанием горим. Система активно развивается с 10-го года, а может и раньше что-то было. Натянуто много модулей из старых версий документооборота, они там оперируют условным оформлением и прочими интерфейсными элементами. Много интеграций. Одним словом - большая система. И вот в этой большой системе есть окно для обновлений раз в неделю. Если инкремент имел баги, то обновляемся вне рабочего времени расширениями.
И да, планируем повышать версию, но пока много текущих задач, которые тоже кто-то должен делать, а программистов 1С ограниченное количество в природе. В последнее время разговоры пошли про полную удаленку из любой точки мира, где есть интернет (ну или старлинк) для разрабов.
VyacheslavShilov; RustIG; +2 Ответить
27. Slava_prog 12.08.24 18:20 Сейчас в теме
(20)
Я повышал режим совместимости довольно старой альфа-авто (5.1) с Версия 8.3.6 до "не использовать" (работает на 8.3.19)
Основная часть глюков вылезла сразу в конфигураторе (картинки и прочее).
Часть изменений была в коде (смотрел по документации список изменений и менял через поиск)
На сколько помню запросы не менял.
Функциональных глюков (чтобы что-то перестало работать) ни одного не было.
Я долго откладывал за эту работу, но все оказалось не так сложно как я ожидал.
12. barelpro 1430 27.07.24 00:16 Сейчас в теме
(11) полагаю это вопрос охвата аудитории, у ИС Тулкит совместимость 8.3.10, у ИР Tormozit вообще 8.3.9, кто меньше?
22. Tavalik 3409 29.07.24 05:26 Сейчас в теме
Спасибо. Интересное решение. Возьму на вооружение, может пригодится где.
Оставьте свое сообщение