На чтение 3 мин. Просмотров 181 Опубликовано 15.12.2019
Допустим для документа Реализация товаров услуг нужно настроить представление в виде «Реализация т/у № 150 от 20.05.2016 (Контрагент: ООО Альфа)». Для этого в модуле менеджера объекта документа создаем обработчики событий получения представления и полей представления:
Процедура ОбработкаПолученияПредставления ( Данные , Представление , СтандартнаяОбработка )
Представление = «Реализация т/у № « + Данные . Номер + » от « + Формат ( Данные . Дата , «ДФ=dd.MM.yyyy» ) + » (Контрагент: « + Строка ( Данные . Контрагент )+ «)» ;
СтандартнаяОбработка =Ложь;
КонецПроцедуры
Процедура ОбработкаПолученияПолейПредставления ( Поля , СтандартнаяОбработка )
Поля . Добавить ( «Номер» );
Поля . Добавить ( «Дата» );
Поля . Добавить ( «Контрагент» );
СтандартнаяОбработка =Ложь;
КонецПроцедуры
Область применения: управляемое приложение, мобильное приложение.
1. С помощью данных обработчиков модуля менеджера объекта можно переопределить представление объекта информационной базы, которое выводится в полях форм и в списках.
Пример реализации:
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
Поля.Добавить(«Наименование»);
Поля.Добавить(«Дата»);
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
Наименование = ?(ПустаяСтрока(Данные.Наименование), НСтр(«ru = ‘Без описания’»), Данные.Наименование);
Дата = Формат(Данные.Дата, ?(ПолучитьФункциональнуюОпцию(«ИспользоватьДатуИВремяВСрокахЗадач»), «ДЛФ=DT», «ДЛФ=D»));
Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(«ru = ‘%1 от %2′»), Наименование, Дата);
СтандартнаяОбработка = Ложь;
КонецПроцедуры
2. Обработчики вызываются при любой необходимости получения представления какого-либо объекта информационной базы. Поэтому избыточные данные или неправильный выбор данных для формирования представления могут привести к существенному замедлению работы системы.
Также не следует выполнять в этих обработчиках запросы или получение объектов информационной базы (в том числе, запрещены обращения к реквизитам объектов ссылочных типов через точку, что приводит к чтению всего объекта целиком из базы данных). Также нежелательно использовать получение представления и реквизитов ссылок.
3. Обработчики могут быть также вызваны, в том числе, при записи и удалении объекта в режиме обмена данными. Представление объекта при этом запрашивается для формирования записи в журнал регистрации. Поэтому к ним предъявляются те же требования, что и к логике регистрации объектов — см. п. 1.2 Разработка планов обмена с отборами.
Эти требования также справедливы при разработке планов обмена для синхронизации с другими программами (не РИБ, по правилам конвертации) с помощью подсистемы «Обмен данными» Библиотеки стандартных подсистем.
Например, недопустимо обращаться к предопределенным элементам, которые еще могли быть не загружены в базу или, наоборот, уже удалены в ходе обмена данными:
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Данные.ВидОбразования = Справочники.ВидыОбразованияФизическихЛиц.ПослевузовскоеОбразование Тогда
Представление = НСтр(«ru = ‘Послевузовское образование’»);
Иначе
.
4. При реализации обработчиков следует также учитывать требования о поддержке толстого клиента, управляемое приложение, клиент-сервер.
Программирование системы 17.08.2016 09:34 5921
В свойствах справочников и документов можно задать свойство «Основное представление». Данное свойство доступно в режиме конфигуратора. Возможны два режима выбора варианта формирования представления: «В виде кода» или «В виде наименования».
Когда срабатывает представление ?
Представление формируется при выводе на экран ссылок (объектов) документов или справочников.
Программное изменение представления в «Управляемом приложении»
В управляемом приложении появилась возможность программно влиять на формирование представления справочника или документа. Для этого в модуле менеджера предназначены две специальные процедуры:
1) ОбработкаПолученияПолейПредставления( , ) Вызывается при получении состава полей, из кторых формируется представление объекта. Эта процедура вызывается один раз, при первом формировании представления. Результат обработки события кэшируется для сеанса.
2) ОбработкаПолученияПредставления( , , )Вызывается при получении представления. В параметре «Данные» содержатся значения полей объекта, которые были заданы в событии ОбработкаПолученияПолейПредставления().
Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться
Содержание:
1. Информация о поле Представление в 1С 8.3
2. Поле Представление в 1С 8.3
3. Функция Представление в 1С 8.3
4. Функция Представление ссылки
1. Информация о поле Представление в 1С 8.3
Само поле Представление в 1С 8.3 необходимо для того, чтобы выводить поля ссылок в самих отчётах, таким образом, для выполнения данной операции следует воспользоваться запросом с представлением данного поля ссылки.
Далее в статье речь пойдёт о поле Представление в 1С 8.3, а также об одноимённой функции, которая отвечает за представление или предоставление информации. И будут оговорены различия между двумя функциями: Представление в 1С 8.3 и представление ссылки.
2. Поле Представление в 1С 8.3
Все объектные таблицы в базе данных содержат виртуальные поля Представление в 1С 8.3, которое отвечает за объекты представления информации в виде текста.
Стоит отметить, что данное поле получают так же, как и любые иные поля в системе 1C:ERP, но действия с этим полем выполнить никакие не получится, так как поле является виртуальным и во время получения поля из информационной базы данных в 1С – запросом будет задействовано несколько полей, как только значение получено – оно образует строчный тип.
Так, можно подвести итог, что поле Представление в 1С 8.3 имеет единственную способность – получение из запроса.
3. Функция Представление в 1С 8.3
Данная функция, Представление в 1С 8.3, необходима для того, чтобы получать любое значение в виде текста, такое любое значение, которое можно получить при помощи запроса.
Данную функцию можно использовать и для типа данных ссылки, и для типов, которые являются примитивными. Для объектов с типом «ссылка» результирующая будет такая же, как и с получением поля Представление в 1С 8.3 с ссылкой, которая служит параметром. Результаты данной функции также не могут быть задействованы в различных выражениях.
У функции Представление в 1С 8.3 есть преимущество перед полем Преставление в 1С 8.3.
К примеру таких преимуществ, можно отнести то, что от поля Представление в 1С 8.3 можно иметь:
· ссылочные типы данных
· примитивные типы данных
Но если указывать получение такого поля через точку, то значения примитивные типы данных получены не будут. В случае же применения функции Представление в 1С 8.3 — получим значение по строке в любом случае, это не будет связано с типом.
Также использование функции Представление в 1С 8.3 более резонно с точки зрения вида представление в 1С 8.3 поля – «перечисление», при СОМ-соединении.
Далее представлен демонстрационный пример использования функции Представление в 1С 8.3
Функция Представление в 1С 8.3
4. Функция представление ссылки
Данная функция, аналогично функции Представление в 1С 8.3, необходима для перевода значения в строковой вид. Отличие лишь в том, что в функцию представление ссылки можно подставлять только типы данных ссылки, иные же значения она вернёт без преобразований.
Далее представлен демонстрационный пример использования функции представление ссылки
Функция представление ссылки
Специалист компании «Кодерлайн»
Айдар Фархутдинов
Оглавление:
- Основы работы.
- Параметры и операторы сравнения.
- Условия отбора.
- Группировки.
- Итоги.
- Вложенные запросы.
- Функции работы с датами.
- Прочие функции и операторы
В языке запросов 1С существует большое количество различных функций и операторов, облегчающих построение запроса. Часть из них мы рассмотрели в статьях Функции работы с датами, Группировки в запросах 1С, остальные рассмотрим сейчас.
Функции работы со строками в запросах 1С
Функций и операторов для работы со строковыми данными в запросах 1С немного.
Во-первых, строки в запросах можно складывать. Для этого используется оператор «+»:
Запрос.Текст=«ВЫБРАТЬ
««Строка: «» + Источник.Наименование
Из Справочник.Источник КАК Источник»;
Во-вторых, можно выделить часть строки. Для этого используется функция ПОДСТРОКА. Функция аналогична функции СРЕД () встроенного языка 1С. У нее три параметра:
- Строка-источник.
- Номер символа, с которого должна начинаться выделяемая строка.
- Количество символов.
Запрос.Текст=«ВЫБРАТЬ
ПОДСТРОКА(««Строка: ««, 4, 3) КАК Результат»; // Результат: ока
И, наконец, существует оператор, которые позволяет сравнить строку с неким шаблоном. Это оператор ПОДОБНО. О его использовании читайте в нашей статье о парамертах и операторах сравнения в запросах 1С.
Функция ЕСТЬNULL
NULL — особый тип данных на платформе 1С:Предприятие. Он же является единственным возможным значением этого типа. NULL может возникать в запросах в нескольких случаях: при соединениях источников запроса, если не было найдено соответствующего значения в одной из таблиц; при обращении к реквизитам несуществующего объекта; если NULL был указан в списке полей запроса (например при объединении результатов выборки из нескольких таблиц) и т.д.
Поскольку NULL не является ни нулем, ни пустой строкой, ни даже значением Неопределено, его часто бывает полезно заменять на какой-то более полезный тип данных. Для этого и предназначена функция ЕСТЬNULL.
Она имеет два параметра:
- Проверяемое значение.
- Значение, на которое нужно заменить первый параметр, если он оказался равен NULL.
Запрос.Текст=«ВЫБРАТЬ
ЕСТЬNULL(Источник.Остаток, 0) КАК Остаток»; // Если в результате запроса поле остаток=NULL,
// то оно заменится на 0, и с ним можно будет выполнять математические действия
Функции ПРЕДСТАВЛЕНИЕ и ПРЕДСТАВЛЕНИЕССЫЛКИ
Эти функции предназначены для получения строковых представлений различных значений. То есть, они преобразуют ссылки, числа, булево и т.д. в обычный текст. Разница между ними в том, что функция ПРЕДСТАВЛЕНИЕ преобразует в текст (строку) любые типы данных, а функция ПРЕДСТАВЛЕНИЕССЫЛКИ — только ссылки, а остальные значения возвращает как есть, не преобразованными.
Запрос.Текст=«ВЫБРАТЬ
ПРЕДСТАВЛЕНИЕ (ИСТИНА) КАК Булево,
ПРЕДСТАВЛЕНИЕ (4) КАК Число,
ПРЕДСТАВЛЕНИЕ (Источник.Ссылка) КАК Ссылка,
ПРЕДСТАВЛЕНИЕ(ДАТАВРЕМЯ(2016,10,07)) КАК Дата»;
// Булево = «Да», Число = «4», Ссылка = «Документ Расходный кассовый ордер №… от…»
// Дата=»07.10.2016 0:00:00″
Запрос.Текст=«ВЫБРАТЬ
ПРЕДСТАВЛЕНИЕССЫЛКИ (ИСТИНА) КАК Булево,
ПРЕДСТАВЛЕНИЕССЫЛКИ (4) КАК Число,
ПРЕДСТАВЛЕНИЕССЫЛКИ (Источник.Ссылка) КАК Ссылка,
ПРЕДСТАВЛЕНИЕССЫЛКИ (ДАТАВРЕМЯ(2016,10,07)) КАК Дата»;
// Булево = ИСТИНА, Число = 4, Ссылка = «Документ Расходный кассовый ордер №… от…»
// Дата=07.10.2016 0:00:00
Функции ТИП и ТИПЗНАЧЕНИЯ
Функция ТИП возвращает тип данных платформы 1С:Предприятие.
Запрос.Текст=«ВЫБРАТЬ
ТИП (Число) ,
ТИП (Строка),
ТИП (Документ.РасходныйКассовыйОрдер)»;
Функция ТИПЗНАЧЕНИЯ возвращает тип переданного в нее значения.
Запрос.Текст=«ВЫБРАТЬ
ТИПЗНАЧЕНИЯ (5) КАК Число,
ТИП (««Строчка»«) КАК Строка,
ТИП (Источник.Ссылка) КАК Справочник
Из Справочник.Источник КАК Источник»;
//Число=Число, Строка=Строка, Справочник = СправочникСсылка.Источник
Эти функции удобно применять, например, когда нужно выяснить является ли полученное в запросе поле значением какого-то типа. Например, получим контактную информацию контрагентов из регистра сведений КонтактнаяИнформация (там хранятся контакты не только контрагентов, но и организаций, физических лиц и т.д.):
Запрос.Текст=«ВЫБРАТЬ
КонтактнаяИнформация.Представление
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
ТИПЗНАЧЕНИЯ(КонтактнаяИнформация.Объект) = ТИП(Справочник.Контрагенты)»;
Функция ЗНАЧЕНИЕ
Функция Значение позволяет использовать в запросе объекты конфигурации 1С напрямую, без применения параметров запроса.
Дополним предыдущий пример еще одним условием. Необходимо получить только телефоны контрагентов.
Запрос.Текст=«ВЫБРАТЬ
КонтактнаяИнформация.Представление
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
ТИПЗНАЧЕНИЯ(КонтактнаяИнформация.Объект) = ТИП(Справочник.Контрагенты)
И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)»;
Следует отметить, что эту функцию можно использовать только с предопределенными значениями, т.е. со значениями, к которым можно обратиться напрямую из конфигуратора. То есть функция ЗНАЧЕНИЕ не можно использоваться с элементами справочников, созданными пользователями, но может работать с перечислениями, с предопределенными элементами справочников, со значениями ПустаяСсылка.
Оператор ССЫЛКА
Оператор ССЫЛКА предназначен для проверки значений, получаемых запросом, на принадлежность к определенному ссылочному типу. Эту же задачу можно выполнить с помощью функций ТИП и ТИПЗНАЧЕНИЯ (которые имеют более широкую область применения и были рассмотрены выше).
Например, задачу выбора контактной информации контрагентов можно было решить и так:
Запрос.Текст=«ВЫБРАТЬ
КонтактнаяИнформация.Представление
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
КонтактнаяИнформация.Объект ССЫЛКА Справочник.Контрагенты»;
Оператор ВЫРАЗИТЬ
Оператор ВЫРАЗИТЬ используется в запросах 1С в двух случаях:
- когда нужно изменить характеристики примитивного типа;
- когда нужно из поля с составным типом данных сделать поле с одиночным типом.
К примитивным типам данных относятся: число, строка, дата, булево. Некоторые из этих типов данных имеют дополнительные характеристики. Тип Число имеет длину и точность, тип Строка — длину или неограниченность.
Оператор ВЫРАЗИТЬ позволяет изменять не тип данных, а именно дополнительные характеристики. Например, он может из строки с неограниченной длиной сделать строку с длиной ограниченной. Это бывает полезно, если нужно сгруппировать результаты запроса по такому полю. Выполнять группировку по полям с неограниченной длиной нельзя, поэтому мы его преобразуем в строку с длиной 200 символов.
Запрос.Текст=«ВЫБРАТЬ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПоступлениеТоваровУслуг.Ссылка) КАК Ссылка
ИЗ
Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
СГРУППИРОВАТЬ ПО
ВЫРАЗИТЬ(ПоступлениеТоваровУслуг.Комментарий КАК СТРОКА(200))»;
В ряде случаев, запросы к полям с составным типом данных могут обрабатываться платформой 1С неоптимально. Это приводит к увеличению времени выполнения запросов, поэтому бывает полезно заранее преобразовать составной тип в одиночный.
Запрос.Текст=«ВЫБРАТЬ
ВЫРАЗИТЬ(ДвижениеТоваровОбороты.Распоряжение КАК Документ.ЗаказКлиента).Дата КАК ДатаЗаказа,
ДвижениеТоваровОбороты.Номенклатура
ИЗ
РегистрНакопления.ДвижениеТоваров.Обороты КАК ДвижениеТоваровОбороты
ГДЕ
ДвижениеТоваровОбороты.Распоряжение ССЫЛКА Документ.ЗаказКлиента»;
Операторы ВЫБОР и ЕСТЬ NULL
Оператор ВЫБОР аналогичен оператору ЕСЛИ во встроенном языке 1С, но имеет несколько урезанный функционал.
Допустим мы хотим получить контактные данные из регистра сведений КонтактнаяИнформация и при этом в отдельном поле запроса указать, принадлежат ли они контрагенту или физическому лицу.
Запрос.Текст=«ВЫБРАТЬ
КонтактнаяИнформация.Представление,
ВЫБОР
КОГДА ТИПЗНАЧЕНИЯ(КонтактнаяИнформация.Объект) = ТИП(Справочник.Контрагенты)
ТОГДА «Контрагент«
ИНАЧЕ ВЫБОР
КОГДА ТИПЗНАЧЕНИЯ(КонтактнаяИнформация.Объект) = ТИП(Справочник.ФизическиеЛица)
ТОГДА «ФизЛицо«
ИНАЧЕ «Кто—то другой«
КОНЕЦ
КОНЕЦ КАК Владелец
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация»;
Как видно из примера, в конструкции ВЫБОР всегда присутствует условие после слова КОГДА; значение, применяемое, если условие выполняется, после слова ТОГДА и значение, применяемое, если условие не выполняется, после слова ИНАЧЕ. Все три элемента конструкции ВЫБОР являются обязательными. Опустить элемент ИНАЧЕ, так же, как это делается при использовании оператора ЕСЛИ во встроенном языке 1С, нельзя. Также у оператора ВЫБОР отсутствует аналог конструкции ИНАЧЕЕСЛИ, зато можно вложить один ВЫБОР в другой, как и было сделано в нашем примере.
Оператор ЕСТЬ NULL используется в конструкции ВЫБОР для сравнения поля запроса с типом NULL.
Запрос.Текст=«ВЫБРАТЬ
ВЫБОР
КОГДА Значение ЕСТЬ NULL ТОГДА 0
ИНАЧЕ Значение
КОНЕЦ»;
Кроме того, оператор ЕСТЬ NULL можно использовать в условиях запроса, например в предложении ГДЕ.