1С обращение к реквизиту справочника

Vzonder
04.10.2017 21:29
Прочитано: 1452

Предположим имеется КакойТоСправочник.

В нем реквизиты:

В документе имеется реквизит:

И соответственно – куда проще получить значение реквизита:

РеквизитПриемник = КакойТоСправочник .Реквизит1;

И так 99 раз, и тысяча условий…((((

Уважаемые знатоки, как назначить имя реквизиту переменно?

РеквизитПриемник = КакойТоСправочник .ПеременнаяРеквизита;

Пробовал через поиск:

Yandex
Возможно, вас также заинтересует
Vzonder
05.10.2017 01:13
Ответ № 1

Выполнить("РеквизитПриемник = СправочникСсылка." + ПеременнаяРеквизита);

На обычных формах (не управляемые) контекст основного реквизита (в данном случае СправочникОбъект.Номенклатура) дополняет контекст самой формы. Т.е. если в тексте модуля формы явно не определять переменные Артикул, НоменклатурнаяГруппа и т.д. , а сразу начать их читать или заполнять значениями – работа будет идти напрямую с одноименными реквизитами редактируемого объекта.

Поля ввода, так же как и прочие элементы на форме, входят в множество ЭлементыФормы. Т.е. у вас есть на форме элемент с именем Артикул, то с помощью пути ЭлементыФормы.Артикул можно получить доступ к свойствам вашего поля ввода и далее управлять видимостью, доступностью, подсказкой и прочими свойствами, которые доступны для изменения.

Если поле ввода находится в коллекции (к примеру, является колонкой в табличном поле, которое связано с табличной частью), то доступ немного усложняется и будет в духе: ЭлементыФормы.Товары.Колонки.Цена

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

На стороне клиента код вида

приведет к ошибке. Такие конструкции возможны только на сервере.

Предположим, что стоит задача при нажатии на кнопку отобразить ИНН контрагента, выбранного на форме. Для решения поставленной задачи необходимо обратиться на сервер для получения требуемой информации(ИНН). Программный код может иметь вид:

Читайте также:  Программа для принудительного охлаждения ноутбука

При нажатии на кнопку ПолучитьИНН вызывается серверная функция ПолучитьИНННаСервере () . В единственном параметре передается контрагент, выбранный интерактивно пользователем. Функция получает ИНН через точку и сразу же возвращает значение обратно на клиент. Результат работы серверной функции помещается в переменную ИННКонтрагента и выводится пользователю с помощью метода Сообщить () .

Серверная функция является внеконтекстной ( &НаСервереБезКонтекста ). Это значит, что данные, содержащиеся в форме, не будут отсылаться на сервер, что уменьшит объем передаваемых данных и скорость возврата результата функции.

Внимание!

При работе с конфигурациями, в которые встроена библиотека стандартных подсистем, вместо получения реквизита через точку рекомендуется использовать функцию ЗначениеРеквизитаОбъекта () из общего модуля ОбщегоНазначения . Таким образом, строку

можно заменить на:

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

Рассмотрим пример: на форме документа рядом с полем ввода контрагента должен выводиться его ИНН. Для этого перенесем реквизит ИНН на форму:

В пользовательском режиме при указании контрагента, его ИНН будет автоматически отображен на форме. Никакого программирования в этом случае не потребовалось.

Остались вопросы?
Спросите в комментариях к статье.

Оцените статью
ПК Знаток
Добавить комментарий

Adblock
detector