Справочник как вывести значение

Вывод связанной информации по текущему объекту из списка

Часто возникает необходимость вывести связанную информацию для текущего объекта из списка, например, элемента справочника или документа. Это может быть остаток товара на складе, долг контрагента, автор документа, общая сумма и валюта документа и т.д. Рассмотрим, какие существуют способы решения этой задачи в 1С:Предприятии 8.1.

1-й способ. Колонка табличного поля в формы списка, связанная с реквизитом объекта или графой журнала документов. Хотя это простейший способ, но он не всегда применим, потому что связанная информация обычно берется из других объектов (таблиц).

2-й способ. Системная кнопка «Перейти» или подобные кнопки, разработанные программистом, вызывающие отчеты или другие окна со связанной информацией по текущему объекту. Неудобство данного способа заключается в том, что часто информация должна быть еще более доступна, т.е. прямо в этом же окне, без лишних щелчков мыши и других окон.

3-й способ. Обработчик события «ПриАктивизацииСтроки». Это самый желательный способ, потому что он не сильно нагружает систему дополнительной работой и вполне удовлетворительно справляется с задачей в большинстве случаев. Обычно внизу или вверху формы располагается надпись, в которую выводится дополнительная информация о текущем объекте.

Например, обработчик события ПриАктивизацииСтроки в форме списка справочника Номенклатура:

Читайте также:  1с запросы вывести итог

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

4-й способ. Обработчик события ПриВыводеСтроки.

Событие ПриВыводеСтроки вызывается всякий раз, когда система формирует строки табличного поля. Это происходит при открытии списка, его прокрутке (формируются новые строки), при выборе группы (родителя), при нажатии на кнопку «Обновить текущий список» и т.д. При простой перерисовке формы (например, одна форма была перекрыта другой), данное событие не возникает.

ВНИМАНИЕ. В версии 1С:Предприятия 8 в колонке табличного поля не может располагаться выражение на встроенном языке! Для решения подобных задач можно использовать событие ПриВыводеСтроки .

Следующий пример демонстрирует получение связанной информации по элементам справочника из периодического регистра сведений:

Копировать в буфер обмена

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

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

Кэширование данных средствами встроенного языка

В некоторых случаях для ускорения работы со списком можно организовать кэширование средствами встроенного языка, при котором уже выбранная из базы данных информация сохраняется в памяти (например, в объекте типа «Соответствие» или «ТаблицаЗначений»), а при последуещем формировании строки информация выбирается из импровизированного кэша, а не из базы данных.

Ниже приведен пример кэширования с использованием объекта «Соответствие»:

По мере работы со списком справочника (его прокрутке, при переходах по группам) в соответствие «Статусы» добавляются все новые и новые элементы. Но следует понимать, что информация в кэше может устареть, поэтому нужно иметь способ его периодически обновлять. Конечно, при закрытии окна переменная модуля формы «Статусы» будет уничтожена и кэш полностью очистится. Но более эргономичным решением будет специальная кнопка «Обновить полностью», доступная пользователю, или другой вариант — изменение алгоритма работы стандартной кнопки «Обновить текущий список» . Т.е. вид кнопки будет стандартный, но в алгоритме будет очищаться кэш и затем вызываться метод «Обновить()» текущей формы:

Источник

ЗНАЧЕНИЕ() в запросе

ЗНАЧЕНИЕ() в запросе

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

Как же работать с предопределенными значениями?

В коде модулей обращение к таким элементам производится через менеджер объекта, например:

Ссылка = ПланыСчетов . Хозрасчетный . Продукция ;

В языке запросов это производится аналогично, но с использованием функции запросов ЗНАЧЕНИЕ().
Функция значение предназначена для получения ссылки на предопределенные значения справочников, перечислений, планов видов характеристик, планов счетов, планов видов расчетов, точек маршрутов бизнес процессов, к системным перечислениям.

[qu_note note_color=»#fdc8b2″]При этом имя вида объекта указывается в запросе в единственном числе.[/qu_note]

Примеры использования ЗНАЧЕНИЕ():

Ссылка справочника:

Для проверки на пустое значение справочника:

Справочник.Контрагенты КАК Контрагенты

Для получения перечислений:

Ссылка.Владелец КАК Контрагент

Справочник.ДоговорыКонтрагентов КАК Договор

ИЛИ Договор.ВидДоговора = ЗНАЧЕНИЕ (Перечисление.ВидыДоговоровКонтрагентов.ПустаяСсылка)

План видов характеристик:

Счет в плане счетов:

ВЫБРАТЬ ЗНАЧЕНИЕ (ПланСчетов.Хозрасчетный.Товары) КАК СчетТоваров

Системные перечисления:

ВЫБРАТЬ
ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК Расход,
ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК Приход,
ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Дебет) КАК Дебет,
ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Кредит) КАК Кредит,
ЗНАЧЕНИЕ(ВидСчета.Активный) КАК Активный,
ЗНАЧЕНИЕ(ВидСчета.Пассивный) КАК Пассивный,
ЗНАЧЕНИЕ(ВидСчета.АктивноПассивный) КАК АктивноПассивный

Аналог функции ЗначениеЗаполнено() в запросе

  • В явном виде функции на заполнение нет, но возможна проверка на несовпадение, например:

ГДЕ НЕ ОсновнойДоговорКонтрагента = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагента.ПустаяСсылка)

  • проверка на невхождение в список:

ГДЕ НЕ ОсновнойДоговорКонтрагента В (ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагента.ПустаяСсылка), НЕОПРЕДЕЛЕНО, NULL,»»)

То есть, если значение не пустое или не входит в список пустых, его можно считать заполненным.

Ошибки при использовании ЗНАЧЕНИЕ()

При неверном синтаксисе параметра функции возникает ошибка «Неверные параметры».

  • указание во множественном числе (например «Справочники» вместо «Справочник»)
  • не верное имя предопределенного или его отсутствие

Недопустима передача в ЗНАЧЕНИЕ параметра вот так:

Выйдет ошибка «Ожидается параметр»:

Функция как раз предназначена для ухода от параметров для предопределенных в метаданных ссылках.

Не требуется указание параметра функции в кавычках: это вызовет ошибку «Ожидается имя»

Изобилие товаров устраняет дефицит, широкой рекламой устраняется психическая неустойчивость.

Источник

Программная работа со справочниками

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

Создание элемента справочника

Создание новых элементов и групп справочника производится с помощью программного объекта СправочникМенеджер. . Данный объект доступен только на сервере.
Создание нового элемента или группы справочника состоит из следующих этапов:

  1. Создание элемента или группы;
  2. Заполнение владельца (если справочник подчиненный);
  3. Заполнение родителя (если справочник иерархический);
  4. Заполнение наименования и реквизитов (если не задана автоматическая нумерация, то и кода);
  5. Заполнение табличных частей;
  6. Запись элемента.

Создание новой группы:

Создание нового элемента:

Поиск элементов справочника

Для поиска элементов справочников в языке программирования 1С предусмотрено несколько методов:

  • НайтиПоКоду ( Код >, ПоискПоПолномуКоду >, Родитель >, Владелец >)
  • НайтиПоНаименованию ( Наименование >, ТочноеСоответствие >, Родитель >, Владелец >)
  • НайтиПоРеквизиту ( ИмяРеквизита >, ЗначениеРеквизита >, Родитель >, Владелец >)

Во всех методах если поиск успешный, то будет возвращена ссылка на найденный элемент.

Изменение элементов справочника

Для изменения реквизитов справочника необходимо выполнить следующие действия:

  1. Получить объект элемента справочника (метод ПолучитьОбъект () , возвращает тип СправочникОбъект. );
  2. Присвоить новые значения реквизитам объекта;
  3. Записать объект элемента справочника.

Программное изменение справочника возможно только на стороне сервера.

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

Удаление элементов справочника

Элементы справочника могут быть помечены на удаление и удалены из базы непосредственно.

Непосредственное удаление – операция необратимая, в то время как пометку на удаление можно отменить. Пометка на удаление хранится в предопределенном реквизите ПометкаУдаления . В пользовательском режиме помеченные на удаление элементы и группы справочника помечаются красным крестиком.

Пометку на удаление можно установить/снять двумя разными способами:

Пример непосредственного удаления элемента справочника:

Обход элементов справочника

Для обхода элементов справочника в языке программирования 1С предусмотрено два метода:

  • Выбрать ( Родитель >, Владелец >, Отбор >, Порядок >)
  • ВыбратьИерархически ( Родитель >, Владелец >, Отбор >, Порядок >)

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

Рассмотрим примеры обхода элементов справочника:

Выбор элементов справочника запросом

Поиск данных в базе 1С предпочтительнее выполнять при помощи запросов. Запрос позволяет описать практически любые условия для отбора, в отличие от методов Выбрать () и ВыбратьИерархически () , на которые накладываются существенные ограничения. К тому же, в большинстве случаев работа с использованием запросов быстрее, чем работа с использованием программного кода.

Простой пример поиска и вывода товаров со стоимостью больше 1000:

Открытие форм справочника

Для открытия любых форм справочников рекомендуется использовать метод

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

Кроме методов ОткрытьФорму () и ПоказатьЗначение () есть и другие (ОткрытьФормуМодально, ОткрытьЗначение, ПолучитьФорму), но их использование не рекомендуется, т.к. часть этих методов использует режим модального открытия, часть противоречит свежим рекомендациям фирмы 1С.

Приведем примеры программного открытия форм справочника:

Внимание!

Следует понимать, что интерактивная работа (в том числе открытие форм) в 1С возможна только на стороне клиента. В то же время поиск и изменение данных возможны только на стороне сервера.

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

Источник

Как вывести значения свойства типа «справочник»?

У товара есть свойство спорт (тип справочник, множественное), как вывести выбранные значения (название, картинка)?

Нашел заметку — Как вывести свойства инфоблока по отдельности. , перебрал все более менее подходящие варианты, максимум что получилось, вывести название, картинку получить не удается.

Подскажите пожалуйста как это реализовать.

  • Вопрос задан более трёх лет назад
  • 5713 просмотров

Простой 1 комментарий

Если предположить, что Вы в инфоблоке добавили новое свойство и добавили ему тип Справочник, то думаю это для Вас)

Я создал тестовое свойство (TEST) — привязка к справочнику и у стандартного компонента news.detail захотел вывести картинку. Для того чтобы его получить я написал небольшой (неоптимальный) фрагмент кода в result_modifier.php.
В результате работы в свойства появляется ключ EXTRA_VALUE, в котором уже содержатся необходимые описания каждого элемента (в том числе и картинка), а его обрабатывать и выводить уже нужно в шаблоне (template.php) компонента

спасибо огромное за код, но я до конца не могу разобраться.
если распечатать в шаблоне $arHighloadProperty extra_value не вижу, ровно как и в $arResult[«DISPLAY_PROPERTIES»]. В настройках компонента выбрал свойство для загрузки свое. В вашем примере код свойства заменил на свой.

Не могли бы приложить и кусочек из шаблонной части?

Yastr, попробуйте
$arHighloadProperty[‘EXTRA_VALUE’][] = $arRecord;
заменить на

Источник

Оцените статью