Средства встроенного языка используемые для
создания универсальных алгоритмов
1С:Предприятие 7.7 позволяет разрабатывать
алгоритмы работающие независимо от конкретной конфигурации.
Например, эта возможность активно используется в дополнительных
отчетах и обработках, поставляемых в составе диска ИТС.
Для создания универсальных алгоритмов используются
в основном два средства:
1) Обращение к метаданным.
2) Обращение к атрибутам объектов встроенного языка
по их строковым идентификаторам.
Обращение к метаданным (через объект "Метаданные")
позволяет варьировать действия алгоритма в зависимости
от структуры метаданных текущей конфигурации. Однако
для обращения непосредственно к данным этого недостаточно.
Методы практически всех объектов встроенного языка 1С:Предприятия
не зависят от структуры метаданных, а атрибуты, наоборот
в большей степени определяются структурой метаданных.
При написании обычных алгоритмов (ориентированных на
конкретную конфигурацию) атрибуты объектов используются
в модуле непосредственно. При написании универсальных
алгоритмов для обращения к атрибутам следует использовать
функции "ПолучитьАтрибут" и "УстановитьАтрибут".
Эти функции включены в состав методов практически всех
объектов встроенного языка, состав атрибутов которых
определяется структурой метаданных.
Например, если нужно обратиться к реквизиту документа
по идентификатору реквизита, то нужно написать не "Документ.ПолучитьАтрибут(ИмяАтрибута)",
где "ИмяАтрибута" это имя переменной, в которой
в виде строки содержится идентификатор реквизита документа.
Методы "ПолучитьАтрибут" и "УстановитьАтрибут"
следует применять именно к тем объектам, у которых необходимо
получить значение атрибута. Например, если необходимо
написать универсальный алгоритм формирования движений
регистров в документе, то для доступа к регистру по
его идентификатору нужно написать "Регистр.ПолучитьАтрибут(ИмяРегистра).ДвижениеПриходВыполнить()"
(так как движения могут записываться только атрибутом
"Регистр" контекста модуля документа).
Для некоторых объектов метод "УстановитьАтрибут"
не поддерживается, так как атрибуты не могут использоваться
для присваивания значений. Для некоторых объектов метод
"ПолучитьАтрибут" не поддерживается, так как
они имеют другие методы для получения необходимого значения
по идентификатору. Например, у вида перечисления имеется
метод "ЗначениеПоИдентификатору". Однако,
для самого глобального атрибута "Перечисление"
поддерживается метод "ПолучитьАтрибут", что
позволяет перебрать значения перечислений всех видов.
Заметим, что не существует возможности обращаться к
значению реквизитов диалога формы по идентификатору,
так как реквизиты созданные в форме, не являются частью
структуры метаданных. Разумеется, в форме документа
существует возможность доступа по идентификатору к реквизитам
самого документа (независимо от того, включены они в
диалог или нет). Объект "Форма" также имеет
функции "ПолучитьАтрибут" и "УстановитьАтрибут".
Это позволят обращаться по идентификаторам к его атрибутам,
используемым для управления элементами диалога с точки
зрения их отображения в форме.
|