Каталог решений - Получение стабильных ссылок на объекты ИБ (УФ, 8.3)

Получение стабильных ссылок на объекты ИБ (УФ, 8.3)

Получение стабильных ссылок на объекты ИБ (УФ, 8.3)

В наличии

В копилку инструментария разработчика — утилита генерации кода ссылок на объекты информационной базы.

Категория:

Описание

Думаю, что нередко у программистов возникает ситуация, когда какой-то программный код вдруг перестаёт работать, а после разбора программы выясняется, что кому-то из пользователей взбрело в голову переименовать группу (или элемент) справочника и т.п.

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

Однако и такой подход однажды подвёл меня — код в карточке был изменен после синхронизации с другой программой, и после этого другая синхронизация перестала работать. И я был вынужден снова подумать над своим поведением…

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

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

Обработка позволяет в пользовательском режиме выбрать необходимые ссылочные объекты и сформировать программный код, однозначно идентифицирующий именно эти объекты независимо от кода и/или наименования.

Обработка работает в любой конфигурации на управляемых формах, тестировалась в типовых и нетиповых конфигурациях на платформе 1С:Предприятие 8.3 (8.3.22.1704), но будет работать на всей линейке релизов платформы 1С:Предприятие 8.3

UPD: На основании комментариев привожу дополнение к описанию.
Предлагается использовать функцию платформы "XMLЗначение" как лаконичное и быстрое решение. Однако, я провел проверки и остался в своём решении.
Во-первых, предложенный мной подход подходит для авторефакторинга — при переименовании объекта в дереве конфигурации код будет модифицирован так, что он останется рабочим. Исключение составляет единственный случай — это формирование пустой ссылки на точку бизнесс-процесса. Пустое значение такого объекта можно сформировать только через конструктор.

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

//1:
Документы.Документ1.ПустаяСсылка()
//2:
Новый(Тип("ДокументСсылка.Документ1"))
//3:
XMLЗначение(Тип("ДокументСсылка.Документ1"), "00000000-0000-0000-0000-000000000000");

Во-вторых, при проверке текста кода конфигурации мой подход также выигрывает — если объект переименован в дереве конфигурации, а авторефакторинг по какой-то причине не произведен, проверка выявит ошибку, тогда как все методы с использованием имён типов не будут проверены на ошибки корректности имени типа. Здесь в исключение и попадает случай с пустой ссылкой на точку маршрута, но такое значение нужно настолько редко, что можно сказать, что оно вообще не нужно.

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

has been added to your cart:
Оформление заказа