Платформа 1С имеет две конструкции, которые позволяют при запросах работать с типами данных. Значение ТИП в системе, как правило, используется для сравнений, наложений различных условий, в группировках, упорядочивании и т.п. Для работы с типами и необходимы функции, которые имеют названия ТИПЗНАЧЕНИЯ и ТИП.
ТИПЗНАЧЕНИЯ (или Выражение). Имеет параметр куда может передаваться то значение, для которого необходимо определить тип. Данная функция может вернуть тип переданного в нее значения.
ТИП. Функция, позволяющая установить условие на тип.
Приведем пример на документе «ПродажаТоваров», согласно которому, покупки могут совершать как сторонние покупатели, так и сотрудники. Нам необходимо получить тип поля в результате запроса. Для этого, нужно осуществить запрос документу «ПродажаТоваров» и выбрать все документы, связанные с продажей. В них будет обозначено наименование покупателя, а применив функцию ТИПЗНАЧЕНИЯ, можно определить тип покупателя (контрагенты, сотрудники).
Что такое бизнес-процесс в 1С: предприятие 8?
Также можно произвести необходимый отбор с помощью функции ТИП, причем ее достаточно удобно применять с предыдущей функцией (ТИПЗНАЧЕНИЯ). Используя соответствующий запрос, можно вывести только те данные, где в поле «ТипПокупателя» будут лишь, например, «Сотрудники» или «Контрагенты». Также, для того, чтобы связать ТИПЗНАЧЕНИЯ и ТИП (ТИПЗНАЧЕНИЯ + ТИП) может помочь функция ССЫЛКА.
Хотите получать подобные статьи по четвергам?
Быть в курсе изменений в законодательстве?
Подпишитесь на рассылку
Нажатием кнопки я принимаю условия Оферты по использованию сайта и согласен с Политикой конфиденциальности
Источник: www.1cbit.ru
Тип бизнес процесса 1с в запросе
В предыдущей статье типы и значения 1С — мы начали обсуждать что такое типы значений 1С и преобразование типов 1С.
Сегодня мы поговорим подробнее про типы объектов конфигурации 1С (тип документа 1С, тип справочника 1С и др.)
Так как в программном коде мы работаем со значениями, то периодически требуется знать их тип. Тип 1С всегда указывается в метаданных у реквизитов — в справочниках, документах.
Работа с типами 1С часто используется:
- Условия в программе
Разные действия в зависимости от типа значения 1С в конструкции «Если … Тогда …» - Ограничения при работе в интерфейсе
Запрет или разрешение пользователю вводить в поле на форме значения определенных типов 1С. - Определение фактического параметра функции/процедуры
Если параметр функции/процедуры может быть любого типа 1С, то нужно его определить, чтобы правильно получить значение.
Тип 1С можно получить:
- Определить тип фактического значения 1С
- Значения-объекты имеют свойства, в которых указан разрешенный тип 1С (например типы 1С разрешенные в колонке таблицы, в поле на форме, в метаданных) или методы, которые возвращают эти типы 1С
- Из метаданных – можно получить тип 1С так, как он указан в метаданных в конфигураторе.
Типы 1С можно разделить на три вида:
- Базовые типы 1С
- Типы 1С базы данных (ссылочные, объекты)
- Типы 1С.
Определение типа 1С и сравнение типов 1С
Узнать тип значения 1С можно с помощью функции ТипЗнч(Переменная)
Чтобы понять какой тип 1С эта функция вернула – нужно указать нужный нам Тип(«ИмяТипа»)
Например, определение (сравнение) типа 1С переменной:
Если ТипЗнч(Переменная) = Тип(«ИмяТипа») Тогда
Какие типы писать в качестве ИмяТипа?
Базовые типы 1С — число, строка, дата, булево.
Например:
Знч = 12;
Если ТипЗнч(Знч) = Тип(«Число») Тогда
ИначеЕсли Знч = Тип(«Строка») Тогда
ИначеЕсли Знч = Тип(«Дата») Тогда
ИначеЕсли Знч = Тип(«Булево») Тогда
КонецЕсли;
Типы базы данных
1С хранит данные в базе данных, но не в виде отдельных записей, а в виде объектов.
Большинство сохраняемых объектов (в том числе: справочники, документы, перечисления, бизнес-процессы, задачи) доступны в виде Объекта (для изменения и записи) и в виде Ссылки (для чтения). Подробнее см. «Ссылки и объекты».
Например:
Знч = Справочники.Организации.ПустаяСсылка();
Если ТипЗнч(Знч) = Тип(«СправочникСсылка.Организации») Тогда
ИначеЕсли Знч = Тип(«СправочникОбъект.Организации») Тогда
ИначеЕсли ТипЗнч(Знч) = Тип(«ДокументСсылка.ПоступлениеТоваров») Тогда
ИначеЕсли Знч = Тип(«ДокументОбъект.ПоступлениеТоваров») Тогда
КонецЕсли;
Регистры могут быть представлены различными типами. Имя типа регистра составное:
РегистрТипрегистраТипдоступа.ИмяРегистра
Типы 1С регистров:
- Сведений
- Накопления
- Бухгалтерии
- Расчета.
Типов доступов к регистру несколько. Чаще всего используются:
- НаборЗаписей
- Список
- Выборка
- Запись
- КлючЗаписи.
Итого, пример:
Если ТипЗнч(Знч) = Тип(«РегистрСведенийСписок.ИмяРегистра») Тогда
ИначеЕсли Знч = Тип(«РегистрНакопленияНаборЗаписей.ИмяРегистра») Тогда
КонецЕсли;
Язык 1С позволяет работать со множеством объектов, создаваемых динамически в программе, например – массив, список значений, таблица значений, структура…
Такие типы 1С указываются по их названию (одним словом, без пробелов). Например:
Если ТипЗнч(Знч) = Тип(«Массив») Тогда
ИначеЕсли Знч = Тип(«СписокЗначений») Тогда
КонецЕсли;
Определение значения ссылочного типа 1С
Работа со всеми объектами базы данных (справочники, документы…) ведется через ссылки. Например, если мы хотим в документе сделать реквизит – справочник, то его тип 1С будет «СправочникСсылка.ИмяСправочника».
Мы можем определить является ли ссылка справочником или документом с помощью метода ТипВсеСсылки()
Например:
Значение = Справочники.Организации.ПустаяСсылка();
Если Справочники.ТипВсеСсылки().Содержит( ТипЗнч(Значение) ) Тогда
//это справочник
ИначеЕсли Документы.ТипВсеСсылки().Содержит( ТипЗнч(Значение)) Тогда
//это документ
КонецЕсли;
Работа с типами 1С в запросе
В запросе тип 1С можно проверить двумя способами.
Первый – аналогично описанному, но в имени типа 1С не указывается «Ссылка» или «Объект», то есть вместо «СправочникСсылка.Организации» пишем «Справочник.Организации»
Только зарегистрированные пользователи VIP группы могут видеть этот контент.
Получение доступных типов 1С
У множества объектов есть свойство .ТипЗначения, которое содержит список типов 1С:
- Поле на форме толстого клиента
ЭлементыФормы.ИмяПоля.ТипЗначения - Поле на форме тонкого клиента (исключение: называется ДоступныеТипы)
Элементы.ИмяПоля.ДоступныеТипы - Колонка таблицы значений, дерева значений
- Реквизит формы
- Элемент отбора
- …
Как работать с этим списком типов 1С в поле .ТипЗначения – см. «ОписаниеТипов» в разделе «Язык 1С».
Работа с типами 1С реквизитов в метаданных конфигурации
При добавлении и редактировании реквизитов в конфигураторе программист указывает тип(ы) 1С реквизита. В программном коде на языке 1С можно получить (узнать) тип(ы) 1С реквизита.
Подробнее про работу с метаданными см. далее «Работа с метаданными».
- У объекта 1С вызвать метод Метаданные(), который возвращает метаданные конкретного объекта и далее работать со списком реквизитов (и реквизитов табличной части)
Документы.ПоступлениеТоваров.ПустаяСсылка().Метаданные().Реквизиты - Использовать глобальную переменную «Метаданные», которая возвращает все метаданные конфигурации, и далее выйти на реквизиты конкретного объекта
Метаданные.Документы.ПоступлениеТоваров.Реквизиты
У реквизита есть свойство .Тип, которое содержит список типов 1С, установленный в конфигураторе у этого реквизита.
Как работать с этим списком типов 1С – см. «ОписаниеТипов» в разделе «Язык 1С».
Указать фильтр типов 1С
У многих объектов возможно указать фильтр типов значений 1С, возможных к использованию, например:
- Список значений (.ДоступныеЗначения)
- Поле формы управляемого клиента (.ДоступныеТипы)
Там, где фильтра не доступен к изменению, доступно указать фильтр в методе объекта. Например у колонки таблицы (дерева) значений есть .ТипЗначения и мы не можем его изменять, но при добавлении колонки с помощью метода .Добавить() вторым параметром можно указать список доступных типов 1С.
Чтобы указать список типов 1С для фильтра – используется список типов 1С, как с ним работать – см. «Описание типов» в разделе «Язык 1С».
Проголосовать за этот пост:
Источник: howknow1c.ru