Как проверить тип значения документа, справочника?
Во-первых, во встроенном языке 1С:Предприятия 8 для работы с одним прикладным объектом реализовано несколько типов. Например, задачи, которые в 1С:Предприятии 7.7 решал тип «Документ» решаются теперь несколькими типами. Они разделены по своему назначению. Тип «ДокументСсылка» используется для хранения ссылок на объект базы данных в реквизитах других объектов. Тип «ДокументОбъект» используется для записи и удаления отдельных документов. Тип «ДокументВыборка» используется для перебора документов, хранящихся в базе данных. Существуют и другие типы данных, предназначенные для работы с документом. При написании модулей используются те типы, которые необходимы для решения конкретных задач.
Во-вторых, в 1С:Предприятии 8 нет двух понятий — «Тип» и «Вид». Для каждого объекта метаданных имеется свой набор типов используемых во встроенном языке для работы с описываемым им прикладным объектом. То есть при использовании конфигурации не будет существовать такого типа как «ДокументСсылка», а будут существовать конкретные типы, например, «ДокументСсылка.Счет», «ДокументОбъект.Счет», «ДокументСсылка.Накладная», и т.д.
Кроме того, в 1С:Предприятии 8 для манипулирования типами используются не их строковые наименования, а специальный тип «Тип». Значение типа Тип может быть получено функцией Тип(), получающей в качестве параметра имя типа.
Чтобы проверить тип значения переменной нужно определить ее тип функцией ТипЗнч() и использовать функцию Тип() для получения типа по имени.
1с 8 запрос типзначения. Как в запросе получить Вид (тип) Документа? Функции представление и представлениессылки
1С позволяет значительно упростить ведение бухгалтерии или просто управление любой организацией, будь то маленький магазинчик или крупное предприятие. Программа представляет собой крупную систему по управлению базами данных . Чтобы не запутаться во всём этом, необходимо уметь выполнять различные простейшие действия и понимать суть. Далее вы поймёте, как в 1С проверить тип значения в запросе, а также какие они, вообще, бывают, а также как их различать.
Типы значений
1С: Предприятие включило в новые версии специальную функцию (платформа 8.2). С помощью неё можно к любым наименованиям, элементам системы данных добавлять какие-либо особые параметры. Сделано это для того, чтобы систему было легче редактировать и добавлять туда новые элементы. Функция эта как раз и называется «Тип значения».
На самом деле это одно из базовых понятий, которое содержит большинство языков программирования. При помощи его можно проводить классификацию различных данных. Например: даты, числа, строки, ссылки. Это лишь базовые классификации. Их может быть гораздо больше. Скажем, если вы заносите в вашу систему информацию о городах, можно использовать: материк, страна, район и т. п.
Проверка
Проверить то или иное поле можно при помощи языка запросов. А точнее его функции: ТИПЗНАЧЕНИЯ. То есть, если мы хотим узнать, информацию какого вида содержит интересующая ячейка, мы должны воспользоваться командой.
На примере выше мы определили, воспользовавшись командой, простейший вид. Другой пример проверки запроса:
Документы
Самих видов довольно много, пользователи могут обходиться как начальными, так и вводить свои, чтобы совершенствовать информационную базу. Вот некоторые из них.

- ДокументСсылка. Применяется для удобного хранения ссылок на различные объекты внутри других частей системы.
- ДокументОбъект — редактирование документов.
- ДокументВыборка — переборка объектов из базы данных.
Кроме того, есть специальные термины, характеризующие любые данные:
- форма;
- строка;
- булево;
- число;
- дата;
- массив;
- флажок;
- картинка.
Это лишь часть из них. Любой объект может являться только чем-то из этого списка. Булево — специальный параметр, который принимает два значения: правда или ложь. Также есть специальные теги, позволяющие корректировать запрос: когда, где, как, иначе и т. п. Они задают алгоритм поведения программы. 1С отличает то, что эти слова здесь, как и всё остальное, можно вписывать на русском языке.
Важно понимать, что все это будет восприниматься новичками и непрофессионалами как китайская грамота. Чтобы понимать, о чём идёт речь и эффективно использовать 1С, необходимо знать основы программирования. В целом, проверить тип в запросе в программе 1С будет достаточно легко, в сравнении с другими действиями.
Запрос . Текст = «ВЫБРАТЬ | усЕдиницыХранения.Ссылка |ИЗ | Справочник.усЕдиницыХранения КАК усЕдиницыХранения // Пример 1. сравнение с не заполненным булевым значением: |ГДЕ | усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны = Ложь // Пример 2. но если это булево определено, то лучше так: // условие на отрицательное булево: |ГДЕ | НЕ усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны // Пример 3. выборка по условию не заполненного поля, имеющего тип «справочник конкретного типа» |ГДЕ | усЕдиницыХранения.АктивнаяОбластьОтбора = ЗНАЧЕНИЕ(Справочник.усОбластиОтбора.ПустаяСсылка) // Пример 3а. выборка по условию не заполненного поля, имеющего тип «документ конкретного типа» |ГДЕ | НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент.ПустаяСсылка) // Пример 3б. выборка по условию не заполненного поля, имеющего тип «документы разных типов» (составное поле) |ГДЕ | (НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент1.ПустаяСсылка) | ИЛИ НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент2.ПустаяСсылка) | ИЛИ. (и т.д. — последовательно перечисляем условия для всех возможных типов этого составного поля)) // Пример 4. или наоборот, если нужно выбрать заполненное значение типа «строка», то поможет условие: |ГДЕ | усЕдиницыХранения.Наименование > «»»» // Пример 5. если нужно выбрать документы конкретного типа, при составном типе данных, например в регистре «ВыполняемыеЗадания» ресурс «Задание» имеет составной тип, среди значений которого возможен документ «Отбор» |ГДЕ | ВЫРАЗИТЬ(РегистрСведенийВыполняемыеЗадания.Задание КАК Документ.Отбор) ССЫЛКА Документ.Отбор // Пример 5а. Еще аналогичный пример, когда нужно выбрать документы конкретного типа | ВЫБОР | КОГДА ВЫРАЗИТЬ(агСоответствиеДокументов.ДокументБУ КАК Документ.ПоступлениеТоваровУслуг) ССЫЛКА Документ.ПоступлениеТоваровУслуг | ТОГДА «»ПоступлениеТоваровУслуг»» | КОГДА ВЫРАЗИТЬ(агСоответствиеДокументов.ДокументБУ КАК Документ.РеализацияТоваровУслуг) ССЫЛКА Документ.РеализацияТоваровУслуг | ТОГДА «»РеализацияТоваровУслуг»» | ИНАЧЕ «»»» | КОНЕЦ КАК ВидДокумента // Пример 6. выбор по условию не определенного значения: |ГДЕ | СохраненныеНастройки.Пользователь = НЕОПРЕДЕЛЕНО // Пример 7. выбор по виду движения «Приход» регистра накопления, «Расход» — аналогично): |ГДЕ | РегТоварыВРознице.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) // Пример 8. Как в запросе указать, что выполнять запрос не нужно (например, нужно программно в зависимости от какого-то условия вернуть пустой результат запроса — Запрос.Текст = СтрЗаменить(Запрос.Текст, «ГДЕ Док.Ссылка = &ДокументСсылка», «ГДЕ ЛОЖЬ»);). Для этого достаточно добавить условие «Где Ложь». Кстати, независимо от объема запрашиваемых в выборке данных, такой запрос будет выполнен мгновенно. |ГДЕ ЛОЖЬ // Пример 9. Проверка на то, что результат выполнения запроса содержит данные: Если НЕ Запрос . Выполнить (). Пустой () Тогда // Пример 10. выбор по условию не заполненной даты: |ГДЕ | тбСтроки.ДатаОтмены = ДАТАВРЕМЯ(1, 1, 1)
43
NULL – отсутствующие значения. Не путать с нулевым значением! NULL – это не число, не равно пробелу, пустой ссылке, Неопределено. NULL – типообразующее значение, т.е. есть тип NULL и единственное значение этого типа. NULL. 26
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос. Создается этот объект вызовом конструкции Новый Запрос. Запрос удобно. 18
В статье приведены полезные приемы при работе с запросами 1С v.8.2, а также сведения, которые не так хорошо известны о языке запросов. Я не стремлюсь дать полное описание языка запросов, а хочу остановиться лишь на. 13
ПОДОБНО — Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL. Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения.
Остальные рассмотрим сейчас.
Функции работы со строками в запросах 1С
Функций и операторов для работы со строковыми данными в запросах 1С немного.
Во-первых, строки в запросах можно складывать. Для этого используется оператор «+»:
Запрос. Текст= «ВЫБРАТЬ
» «Строка: » » + Источник.Наименование
;
Во-вторых, можно выделить часть строки. Для этого используется функция ПОДСТРОКА. Функция аналогична встроенного языка 1С. У нее три параметра:
- Строка-источник.
- Номер символа, с которого должна начинаться выделяемая строка.
- Количество символов.
Запрос. Текст= «ВЫБРАТЬ
ПОДСТРОКА(» «Строка: » «, 4, 3) КАК Результат» ; // Результат: ока
Функция ЕСТЬ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 можно использовать в условиях запроса, например в предложении ГДЕ.
Проверка типа значения во встроенном языке или в запросах
Функция ТипЗнч(<Значение>) по значению возвращает тип.
Функция Тип(<Строка>) по описанию возвращает тип.
В запросах
Для определения типа значения можно применить оператор ССЫЛКА или воспользоваться функциями языка заросов ТИПЗНАЧЕНИЯ() и ТИП().
В 1С:Предприятии все значения имеют определенный тип. Во встроенном языке есть специальные методы для приведения типа значения.
Комментарии (0)
Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться
ТИП, ТИПЗНАЧЕНИЯ и ССЫЛКА в запросах 1С 8 – примеры использования
В запросах довольно распространенная задача – определить, к какому типу относится то или иное значение. Например, нужно в запросе определить тип документа, и если это приходная накладная – взять сумму документа с плюсом, а если расходная – с минусом. В этой статье рассмотрены конструкции языка запросов, позволяющие решить данную задачу.
Содержание
Стоит начать с того, что три конструкции – ТИП, ТИПЗНАЧЕНИЯ и ССЫЛКА – относятся к разным частям языка запросов 1С.
- ТИП – это литерал, который позволяет получить в запросе значение нужного типа. В этом случае мы заранее знаем, какой тип хотим получить.
- ТИПЗНАЧЕНИЯ – это функция, которая принимает в качестве параметра значение, и возвращает тип этого значения. Используется для определения заранее неизвестного типа значения в запросе.
- ССЫЛКА – это логический оператор, такой же как “>”, “<“, и используется он при формировании условий.
Примеры использования
Основные способы применения конструкций ТИП и ТИПЗНАЧЕНИЯ в запросе – это сравнение типов в условиях, а также выбор типов в качестве полей в результате выполнения запроса. Оператор Ссылка используется в запросе для определения, является ли значение ссылкой на указанную таблицу, или нет. Например, является ли поле Покупатель ссылкой на справочник Контрагенты или на справочник ФизическиеЛица.
Рассмотрим несколько практических примеров.
Как в запросе проверить на соответствие нужному типу
Проверить, относится ли значение к нужному типу, можно двумя способами. Первый – самый универсальный, он подходит для любых значений – как для ссылочных типов, так и для примитивных. В запросе мы сравниваем результат функции ТИПЗНАЧЕНИЯ с нужным типом. Допустим, у нас есть регистр сведений с ресурсом составного типа “Значение”, куда загружаются данные из внешнего источника (например, файла). Значение может быть числом, строкой или датой.