1с что такое представление объекта
Пользовательские представления объектов
Область применения: управляемое приложение.
Если для объекта метаданных определены свойства пользовательского представления, они заполняются следующим образом.
1. Синоним объекта должен быть определен так, чтобы осмысленно, лаконично описывать объект. Заполняется обязательно.
Представление объекта заполняется в случае, если синоним не может быть использован, как название объекта в единственном числе.
4. Представление списка. Задается название объектов во множественном числе, например, «Валюты». Кроме этого, в некоторых случаях может указываться название списка, если оно является самостоятельным термином, например, «Классификатор единиц измерения». Название должно быть лаконичным и понятным. Например, вместо «Общероссийский классификатор основных фондов» нужно использовать «Классификатор ОКОФ».
Заполняется в случае, если синоним не может быть использован, как название списка объектов.
Если синоним объекта отражает некоторое действие, например, «Корректировка регистров», «Начисление зарплаты и взносов», то представление списка можно не указывать или назвать так «Документы корректировки регистров», «Документы начисления зарплаты и взносов».
5. Расширенное представление списка. Задается полное название списка объектов. Заполняется в случае, когда заданное в представлении списка (или, если не заполнено, то в синониме) название списка менее информативно, чем полное название списка.
Например, в расширенном представлении списка указано «Номенклатура (товары и услуги)», представление списка не заполнено, а в синониме указано «Номенклатура».
6. Расширенное представление. Задается полное название объекта метаданных. Заполняется в случае, когда заданное в синониме название объекта менее информативно, чем его полное название.
7. Пояснение. Задается пояснение по назначению данного объекта метаданных. Пояснение задается в виде законченных предложений. Заполняется для объектов метаданных, представление которых не достаточно точно передает их назначение.
Например, для справочника «Организации» пояснение может быть задано так: «Юридические лица и предприниматели нашей компании.».
8. Картинка. Задается для подсистем верхнего уровня с установленным флажком «Включать в командный интерфейс». Размер картинки: 32 на 32.
1С 8.x : Функция Представление(), Поле Представление
Функция Представление()
Функция представление предназначена для получения текстового представления любого значения, которое может быть получено при помощи языка запросов. Функция Представление() работает как для ссылочных, так и для примитивных типов. Для ссылочных типов результат функции полностью аналогичен получению поля «Представление» от ссылки, переданной в качестве параметра функции. Для примитивных типов, результатом работы функции является строка, в которую было преобразовано значение, переданное в качестве параметра. Особенностью данной функции является то, что ее результат не может быть использован в выражении. Такая особенность связана с тем фактом, что преобразование значений в строку осуществляется уже при получении данных из результата запроса, т.к. преобразование произвольного значения в строку при исполнении запроса на сервере, не осуществляется, в силу того, что при преобразовании значений в строку необходимо учитывать локальные настройки.
Использование функции Представление() имеет ряд преимуществ по сравнению с использованием поля «Представление». Например, в случае если поле, от которого получается представление, может содержать как ссылочные, так и примитивные типы, получение поля «Представление» через точку от такого поля приведет к тому, что представления для значений примитивного типа не будут получены. Если же, для такого поля применить функцию Представление(), то строковое представление будет получено вне зависимости от типа значения, содержащегося в поле. Кроме того, в случае если функция Представление() применяется к полю, которое является ссылкой более чем на три таблицы, язык запросов получает из базы данных только ссылочные значения, а значения представлений получает одним или несколькими дополнительными запросами. Такое поведение позволяет более эффективно получать представления для полей, которые ссылаются на большое количество таблиц (например, на любой справочник), за счет того, что в исполняемый запрос не будет помещаться большое количество соединений, которые необходимы для получения полей из которых состоит представление.
Переопределение представления ссылочного значения
Приветствую, коллеги! Хочу сразу оговориться данная статья не претендует на оригинальность и написана в первую очередь для новичков (либо кто подзабыл), в которой я хотел бы наиболее подробно описать все способы решения такой задачи, как переопределение представления ссылочного значения. Естественно речь идет об управляемых формах (не знаю насколько об этом уместно говорить в 2020), я такой статьи на ИС не нашел (может плохо искал) и решил восполнить данный пробел.
Итак, постараюсь разбить способы реализации в формате кейсов:
Кейс 1 «Переопределение представления в рамках всей БД»
Данный способ изменяет представление ссылки абсолютно везде, где отображается наша ссылка т.е. действует в рамках всей БД.
Представление объекта по умолчанию настраивается на вкладке «Данные», раздел «Основное представление».
По умолчанию как мы видим, мы можем выбрать только Код или Наименование.
Открываем МодульМенеджера и создаем в нем процедуры ОбработкаПолученияПредставления
Если открыть отладку то мы увидим примерно следующую картину:
Переменная Данные представляет собой структуру, в которой находится Ссылка на объект и Поле основного представления.
Все, что нам необходимо сделать, это отключить стандартную обработку и сформировать необходимое представление. У нас уже есть значение реквизита Наименование, а Код мы можем вытянуть по ссылке, но подождите, так лучше не делать т.к. обращение к реквизиту через точку негативно сказывается на производительности, поэтому предварительно нам необходимо включить Код в поля представления. Для этого создаем процедуру ОбработкаПолученияПолейПредставления и добавляем необходимые поля.
В итоге весь модуль будет выглядеть примерно так:
И еще раз повторюсь, теперь ссылка на валюту будет отображаться так везде, и в списках, и в формах, и даже в запросе, при условии, что мы выбираем именно Представление:
Кстати для тех, кто дорабатывает типовые логичнее создать отдельную подписку на событие, где в качестве источника указать менеджер объекта и прописать соответствующие процедуры.
Кейс 2 «Переопределение представления в отчетах на СКД»
В случае СКД разработчику предоставляются огромные возможности по оформлению полей и в данном случае все решается буквально одной настройкой. В схеме для необходимого поля используем настройку «Выражение представления»:
Указываем выражение: «Накладная » + Регистратор.Номер + » от » + Формат(Регистратор.Дата, «ДФ=dd.MM.yyyy»)
Кейс 3 «Переопределение представления в динамическом списке»
Установим произвольный запрос динамического списка и дополним полем «Регион»:
Всем известно, что 1С оптимизирует получение данных и исключает из запроса поля по отсутствующим колонкам, поэтому у поле Регион установим флаг «Использовать всегда»:
Создадим процедуру СписокПриПолученииДанныхНаСервере
Из справки: Обработчик события вызывается на сервере после получения данных динамическим списком, доступен, начиная с версии 8.3.10.
И пропишем туда примерное такой код:
Кейс 4 «Переопределение представления в таблице с источником данных табличная часть, таблица значений, дерево значений»
Нам требуется сохранить всю функциональность (выбор, очистка и т.д.), поэтому добавим дополнительную колонку, назовем ее СчетПредставление с типом Строка:
Напишем код, который будет заполнять данную колонку, нужным нам представлением, необходимо отработать открытие существующего документа, а также событие изменения ссылки, в итоге имеем примерно следующий код:
Наконец, настраиваем УсловноеОформление формы, примерно так:
Надеюсь, что статья окажется хоть кому-нибудь полезной, всем спасибо за внимание!
1С 8.3 : Функция Представление(), Поле Представление
Функция Представление()
Функция представление предназначена для получения текстового представления любого значения, которое может быть получено при помощи языка запросов. Функция Представление() работает как для ссылочных, так и для примитивных типов. Для ссылочных типов результат функции полностью аналогичен получению поля «Представление» от ссылки, переданной в качестве параметра функции. Для примитивных типов, результатом работы функции является строка, в которую было преобразовано значение, переданное в качестве параметра. Особенностью данной функции является то, что ее результат не может быть использован в выражении. Такая особенность связана с тем фактом, что преобразование значений в строку осуществляется уже при получении данных из результата запроса, т.к. преобразование произвольного значения в строку при исполнении запроса на сервере, не осуществляется, в силу того, что при преобразовании значений в строку необходимо учитывать локальные настройки.
Использование функции Представление() имеет ряд преимуществ по сравнению с использованием поля «Представление». Например, в случае если поле, от которого получается представление, может содержать как ссылочные, так и примитивные типы, получение поля «Представление» через точку от такого поля приведет к тому, что представления для значений примитивного типа не будут получены. Если же, для такого поля применить функцию Представление(), то строковое представление будет получено вне зависимости от типа значения, содержащегося в поле. Кроме того, в случае если функция Представление() применяется к полю, которое является ссылкой более чем на три таблицы, язык запросов получает из базы данных только ссылочные значения, а значения представлений получает одним или несколькими дополнительными запросами. Такое поведение позволяет более эффективно получать представления для полей, которые ссылаются на большое количество таблиц (например, на любой справочник), за счет того, что в исполняемый запрос не будет помещаться большое количество соединений, которые необходимы для получения полей из которых состоит представление.
Лекция: Справочники
Объект конфигурации Справочник предназначен для работы со списками данных. Как правило, в работе любой фирмы используются списки сотрудников, списки товаров, списки клиентов, поставщиков и т.д. Свойства и структура этих списков описываются в объектах конфигурации Справочник, на основе которых платформа создает в базе данных таблицы для хранения информации из этих справочников. Справочник состоит из элементов. Например, для справочника сотрудников элементом является сотрудник, для справочника товаров – товар и т.д. Пользователь в процессе работы может самостоятельно добавлять новые элементы в справочник: например, добавить новых сотрудников, создать новый товар или внести нового клиента.
В базе данных каждый элемент справочника представляет собой отдельную запись в основной таблице, хранящей информацию из этого справочника.
Каждый элемент справочника, как правило, содержит некоторую дополнительную информацию, которая подробнее описывает этот элемент. Например, все элементы справочника Товары могут содержать дополнительную информацию о производителе, сроке годности и др. Набор такой информации является одинаковым для всех элементов справочника, и для описания такого набора используются реквизиты объекта конфигурации Справочник, которые также, в свою очередь, являются объектами конфигурации.
Для описания подобной информации могут быть использованы табличные части объекта конфигурации Справочник, являющиеся подчиненными ему объектами конфигурации. В этом случае в базе данных будут созданы дополнительные таблицы для хранения табличных частей, подчиненных конкретному элементу справочника
Причем система скрывает от разработчика всю «техническую» часть, связанную с хранением данных: в базе данных для справочника создаются несколько таблиц, эти таблицы связываются по уникальному полю (Ссылка), поля таблиц имеют определенные типы и т.д. Все это система делает сама. Нам лишь нужно добавить в объект конфигурации Справочник подчиненный ему объект ТабличнаяЧасть.
Простой справочник
Теперь, когда мы немного познакомились с возможностями объекта конфигурации Справочник, создадим несколько таких объектов, чтобы описать справочники, которые будут использоваться в нашей базе данных.
Для начала нам понадобится список сотрудников предприятия, которые будут оказывать услуги. Затем нам будет нужен список клиентов, с которыми работает наше предприятие.
После этого нам понадобится перечень услуг, которые может оказывать наше предприятие, и список материалов, которые могут быть израсходованы. Кроме этого, нам потребуется список складов, на которых могут находиться материалы компании.
Начнем с простых вещей – списка сотрудников и списка клиентов. Сначала создадим справочник, в котором будут храниться наименования наших клиентов.
Откроем в конфигураторе нашу учебную конфигурацию, выделим в дереве объектов конфигурации ветвь Справочники и нажмем кнопку «Добавить» в командной панели окна конфигурации.
В открывшемся окне редактирования объекта конфигурации зададим имя справочника – Клиенты. На основании имени платформа автоматически создаст синоним – Клиенты. Напомним, что свойство Синоним служит для представления объекта в интерфейсе нашей программы.
Представления объекта конфигурации
Представление объекта определяет название объекта в единственном числе и используется в названии стандартной команды, например, команды создания объекта – Клиент: создать. Представление объекта нужно задавать тогда, когда синоним объекта конфигурации задан во множественном числе или когда он описывает множество объектов, потому что в интерфейсе автоматически формируются команды открытия списка справочника и команды создания нового элемента справочника.
Если синоним задан во множественном числе, то для команды открытия списка это вполне подходит – Клиенты, то есть посмотреть всех клиентов. Но для команды создания элемента справочника – одного клиента – это неудачный вариант. Для этой команды нужно задать представление в единственном числе – Клиент. Представление объекта как раз и используется для того, чтобы описать, как будет выглядеть в интерфейсе команда добавления нового клиента. Также оно будет использовано в заголовке формы клиента (если не указано расширенное представление объекта) и в представлении ссылки на клиента.
Расширенное представление объекта определяет заголовок формы объекта, например формы для создания нового элемента справочника. Если это свойство не задано, то вместо него используется свойство Представление объекта. Представление списка определяет название списка объектов и используется в названии стандартной команды, например, команды открытия списка объектов – Клиенты. Представление списка нужно задавать тогда, когда синоним задан в единственном числе.
Например, это часто бывает у документов (Приходная накладная). Тогда в представлении списка нужно указывать название объекта конфигурации во множественном числе (Приходные накладные). Расширенное представление списка определяет заголовок формы списка, например формы списка справочника. Если это свойство не задано, то вместо него используется свойство Представление списка. Зададим два свойства Представление объекта – Клиент и Представление списка – Клиенты. Последнее можно было и не задавать, так как синоним справочника совпадает со свойством Представление списка.
Принадлежность объекта к подсистемам
Нажмем кнопку Далее и перейдем на закладку Подсистемы окна редактирования объекта конфигурации Справочник. На этой закладке определяется, в каких подсистемах будет отображаться данный справочник.
В списке подсистем мы видим подсистемы, созданные нами ранее при определении структуры приложения. Логично предположить, что список клиентов должен быть доступен в разделе Оказание услуг, так как оказываемые услуги относятся к определенному клиенту. Бухгалтерская отчетность, формируемая в разделе Бухгалтерия, также может быть представлена в разрезе клиентов. Поэтому отметим в списке подсистемы Бухгалтерия и ОказаниеУслуг.
Теперь откроем окно редактирования одной из отмеченных подсистем, например Бухгалтерия, и перейдем на закладку Состав. Мы видим, что в составе объектов этой подсистемы появился новый объект конфигурации Справочник Клиенты.
Обратите внимание, что на закладке Состав также можно изменять список объектов, входящих в подсистему.
Код и наименование справочника
Теперь вернемся к окну редактирования объекта конфигурации Справочник и нажмем на закладку Данные.
Здесь для нас представляют интерес длина кода и длина наименования. Длина кода – важное свойство справочника. Как правило, код справочника используется для идентификации элементов справочника и содержит уникальные для каждого элемента справочника значения. Платформа может сама контролировать уникальность кодов и поддерживать автоматическую нумерацию элементов справочника. Поэтому от длины кода будет зависеть количество элементов, содержащихся в справочнике.
Длина кода – 9 символов. В результате мы сможем использовать коды от 1 до 999999999 – этого вполне достаточно для нашего примера.
Перейдем к длине наименования. 25 символов для нас явно мало, увеличим длину наименования до 50.
Кроме того, хотелось бы чтобы вместо обозначения стандартного реквизита справочника Наименование в интерфейсе приложения выводилось бы более соответствующее обозначение для клиентов. Так как Наименование более подходит для неодушевленных предметов, а тут мы имеем дело с людьми. Поскольку в интерфейсе приложения отображаются синонимы объектов, то изменим свойство Синоним стандартного реквизита Наименование нашего справочника.
Для этого нажмем внизу окна кнопку Стандартные реквизиты. Выделим в списке реквизит Наименование, вызовем его контекстное меню и выберем пункт Свойства.
В палитре свойств стандартного реквизита Наименование установим свойство Синоним как Ф. И. О.
Обратите внимание, что мы изменили синоним реквизита объекта конфигурации, а не реквизита формы. В данном случае форма элемента справочника Клиенты вообще сгенерирована системой автоматически.
Теперь во всех видах форм данный реквизит будет иметь установленный синоним, если, конечно, разработчик не захочет его изменить при создании своей собственной формы.
Заодно обратите внимание, что свойство Проверка заполнения по умолчанию установлено в значение Выдавать ошибку. Это означает, что если реквизит Наименование не заполнен, то будет выведено сообщение об ошибке.
Команда добавления нового элемента
Прежде чем запускать «1С:Предприятие», настроим интерфейс приложения, чтобы нам было удобнее вводить новые элементы справочника. Дело в том, что для размещения стандартных команд открытия списков и создания новых объектов конфигурации в интерфейсе «1С:Предприятия» существует общий стандартный алгоритм, который мы сейчас объясним на примере справочников. Но это справедливо и для документов, планов счетов и т.п.
Команда для открытия списка справочника, как и команда для создания его новых элементов, автоматически добавляется в интерфейс тех разделов (подсистем), в которых будет отображаться справочник. Но команда создания новых элементов по умолчанию невидима в интерфейсе приложения. Это объясняется тем, что возможность просматривать списки справочника нужна, как правило, всегда. А возможность создания новых элементов справочника используется не так часто. Поэтому соответствующую команду следует включать только для тех справочников (объектов конфигурации), создание новых элементов которых является основной деятельностью для пользователей в данном разделе прикладного решения.
Сделаем доступной в панели команд раздела ОказаниеУслуг стандартную команду для создания новых клиентов. Для этого откроем окно редактирования объекта конфигурации Подсистема ОказаниеУслуг и нажмем кнопку Командный интерфейс.
В открывшемся окне Командный интерфейс отразятся все команды этой подсистемы.
При создании справочника в группу Панель навигации.Обычное добавилась команда Клиенты для открытия этого списка. Она включена по умолчанию. В группу Панель действий.Создать добавилась команда Клиент: создать для создания нового элемента справочника, но она невидима по умолчанию. Включим видимость у этой команды.
Для подсистемы Бухгалтерия команд для создания новых элементов справочника добавлять не будем, так как это определяется прикладной логикой работы.
В данном случае мы предполагаем, что основную ежедневную работу с клиентами ведет менеджер, занимающийся оказанием услуг. В том числе он создает в базе новых клиентов, если они появляются. А бухгалтерия просто обрабатывает имеющиеся в базе данные для получения регламентированной отчетности.
Именно поэтому команду создания нового клиента мы отражаем в разделе Оказание услуг, где работает менеджер, а для бухгалтерии она невидима, так как не предполагается, что бухгалтеры будут вводить новых клиентов.
Однако это не лишает бухгалтера такой возможности – он может создать нового клиента, используя список клиентов (открыть список клиентов и добавить нового клиента). Наличие команды создания нового элемента без использования списка элементов – это вопрос удобства работы, а не ограничения прав пользователя, и мы предоставляем эту удобную возможность менеджеру, а не бухгалтеру.
Закроем окно редактирования справочника Клиенты и запустим «1С:Предприятие» в режиме отладки. Ответим утвердительно на запрос конфигуратора об обновлении конфигурации и увидим окно, содержащее список изменений в структуре конфигурации, автоматически сгенерированный платформой. В данном случае мы добавили справочник Клиенты.