Внимание! Перед вами ознакомительная версия урока, материалы которого могут быть неполными.

Войдите на сайт как ученик

Войдите как ученик, чтобы получить доступ к материалам школы

Язык запросов 1С 8.3 для начинающих программистов: функции и операторы для работы с типами (ТИПЗНАЧЕНИЯ, ТИП, ССЫЛКА, ЕСТЬNULL, ВЫРАЗИТЬ)

Давайте вспомним, что каждый реквизит (свойство, поле) справочника, документа или любого другого прикладного объекта имеет свой тип . И этот тип мы можем посмотреть в конфигураторе:

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

Функция ТИПЗНАЧЕНИЯ

Эта функция принимает один параметр (значение) и возвращает его тип. Для описанного на картинке (выше) реквизита Вкус справочника Еда вернётся следующее:

А теперь давайте рассмотрим реквизит ОтличительныйПризнак у справочника Города :

Вы видите, что этот реквизит может иметь один из нескольких типов: Строка , Справочник.Вкусы , Справочник.Цвета . Такой тип реквизитов называется СОСТАВНЫМ .

Если мы попытаемся заполнить значение такого реквизита в режиме 1С:Предприятие, то система спросит нас, какого типа будет вводимое значение:

И только после нашего выбора позволит ввести значение выбранного типа.

Таким образом, элементы справочника одного вида (Справочник.Города ) смогут хранить в одном и том же реквизите (ОтличительныйПризнак ) значения разных типов (Строка, Цвета или Вкусы).

Вы можете убедиться в этом сами пощёлкав по элементам справочника Города в режиме 1С:Предприятие. Вы читаете ознакомительную версию урока, полноценные уроки находятся .

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

Здесь строкой:

А здесь вообще элементом справочника Цвета :

Вот какие возможности открывает перед нами составной тип данных!

Интересно, как поведёт себя функция ТИПЗНАЧЕНИЯ на реквизите ОтличительныйЭлемент , имеющий составной тип данных:

Это уже очень интересно. Давайте разбираться с каждой строкой в отдельности.

Тип значения отличительного признака для элемента Россия равен NULL . Мы впервые сталкиваемся с этим типом. Значения данного типа используются исключительно для определения отсутствующего значения при работе с базой данных.

Так и есть, ведь элемент Россия является группой, а не обычным элементом справочника Города , поэтому у него отсутствует поле ОтличительныйПризнак . А тип у отсутствующего значения, как мы прочитали выше, всегда равен NULL .

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

Для Красноярска тип признака равен Цвета , потому что значение выбранное в базе является ссылкой на элемент справочника Цвета .

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

Индия снова группа, поэтому значение отсутствует. А тип у отсутствующего значения, как мы помним, равен NULL .

А дело вот в чём. Если вы зайдёте в элемент справочника Города с наименованием Сан-Паулу , то увидите, что поле ОтличительныйПризнак совершенно никак не заполнено. Оно пустое. А все незаполненные поля составного типа имеют специальное значение НЕОПРЕДЕЛЕНО .

С НЕОПРЕДЕЛЕНО мы также сталкиваемся впервые. Значение НЕОПРЕДЕЛЕНО применяется, когда необходимо использовать пустое значение, не принадлежащее ни к одному другому типу. Это как раз наша ситуация. А тип значения НЕОПРЕДЕЛЕНО , как вы уже наверное догадались равен NULL .

Функция ТИП

Она принимает всего один параметр - имя примитивного типа (СТРОКА , ЧИСЛО , ДАТА , БУЛЕВО ), либо имя таблицы, тип ссылки которой нужно получить.

Результатом данной конструкции будет значение типа Тип для указанного типа.

Звучит туманно, не правда ли?

Давайте рассмотрим применение данной конструкции и всё сразу станет на свои места.

Пусть нам требуется отобрать все записи справочника Города , у которых составной реквизит ОтличительныйПризнак имеет значение типа СТРОКА :

Теперь давайте отберём все записи, у которых значения реквизита ОтличительныйПризнак являются ссылками на элементы справочника Цвета (таблица Справочник.Цвета ):

Отступление

Как вы помните, некоторые элементы справочника Города не имеют реквизита ОтличительныйПризнак . Функция ТИПЗНАЧЕНИЯ для таких элементов выдаёт NULL .

Как можно сделать отбор таких элементов в запросе? Для этого предусмотрен специальный логический оператор ЕСТЬ NULL (не путать с функцией ЕСТЬNULL , которую мы рассмотрим ниже). Вы читаете ознакомительную версию урока, полноценные уроки находятся .

Вот пример его использования:

Отлично. Но вы заметили, что здесь нет элемента Сан-Паулу, тип значения реквизита ОтличительныйПризнак которого также выдавал NULL . Почему так произошло?

А всё дело в том, что ситуация для групп (Россия, Индия, Бразилия), для которых заполнение реквизита ОтличительныйПризнак невозможно в принципе, так как его у них нет вовсе, отличается от ситуации для элемента Сан-Паулу, для которого заполнение реквизита возможно, но оно просто не заполнено и равно, как мы помним, специальному значению НЕОПРЕДЕЛЕНО .

Чтобы отобрать все записи, у которых реквизит ОтличительныйПризнак присутствует, но не заполнен следует использовать другую конструкцию:

Но сравнение с НЕОПРЕДЕЛЕНО для определения пустых (не заполненных) реквизитов будет работать только для составных типов.

Кстати, у логического оператора ЕСТЬ NULL форма отрицания выглядит следующим образом:

Логический оператор ССЫЛКА

К примеру, давайте выберем из справочника Города только те записи, у которых значение составного реквизита ОтличительныйПризнак являются ссылкой на элемент справочника Вкусы :

Как вы помните, эту же задачу мы могли бы решить используя ТИПЗНАЧЕНИЯ и ТИП :

Функция ЕСТЬNULL

Функция предназначена для замены значения NULL на другое значение.

Мы помним, что значение NULL возвращается в том случае, если запрашиваемый реквизит (поле, свойство) не существует.

Как например, реквизит ОтличительныйПризнак для групп справочника Города :

Функция ЕСТЬNULL поможет нам вывести другое значение в том случае, если это значение равно NULL . Вы читаете ознакомительную версию урока, полноценные уроки находятся . Пусть в данном случае это будет строка "Такого реквизита нет!":

Получается, что если первый параметр функции ЕСТЬNULL не равен NULL , то возвращается он. Если же он равен NULL, то возвращается второй параметр.

Функция ВЫРАЗИТЬ

Эта функция предназначена только для полей , имеющих составной тип . Отличным примером такого поля является свойство ОтличительныйПризнак у элементов справочника Города .

Как мы помним, составные поля могут быть одного из нескольких типов, указанных в конфигураторе.

Для поля ОтличительныйПризнак такими допустимыми типами являются СТРОКА , Справочник.Цвета и Справочник.Вкусы .

Иногда возникает необходимость привести значения составного поля к какому-либо определенному типу.

Давайте приведём все значения поля ОтличительныйПризнак к типу Справочник.Цвета:

В результате, все значения элементов, которые имели тип Справочник.Цвета, остались заполненными и оказались приведенными к указанному типу. Все значения других типов (СТРОКА , Справочник.Вкусы ) теперь стали равны NULL . В этом состоит особенность приведения типа при помощи функции ВЫРАЗИТЬ .

Приводить тип можно или к примитивному типу (БУЛЕВО , ЧИСЛО , СТРОКА , ДАТА ) или к ссылочному типу. Вы читаете ознакомительную версию урока, полноценные уроки находятся . Но тип, к которому делается приведение, обязательно должен входить в список типов для данного составного поля, иначе система выдаст ошибку.

Пройдите тест

Начать тест

1. Выберите наиболее верное утверждение

2. Реквизиты, способные принимать значения одного из нескольких типов называются

3. Для определения типа значения реквизита подойдёт функция

4. Незаполненные реквизиты составного типа имеют значение

Клюев В.В.

http://prof1c.kklab.ru

Создание и работа с запросами. Простейшие операции для начинающих (Обычное приложение)

Добрый день!

Сегодня хочу вам рассказать о том, как начать работать с запросами и научиться (конечно постепенно) - работе с запросами в 1С. Тем, кто знаком с запросами MS
SQL будет конечно намного проще.

Итак, давайте откроем конфигуратор и создадим новую внешнюю обработку.

После чего мы получим окошко с нашей обработкой. Давайте приступим непосредственно к экспериментам по запросам, для этого создадим в нашей обработке - новую форму - а для этого в списке (белое поле) выберите Формы - и нажмите (+) Добавить, соглашайтесь со всеми предложенными параметрами формы по умолчанию, и нажимайте готово.

Итак мы создали с вами пустую форму, с кнопками и. В окне с форме выбираем вкладкуи переходим непосредственно к написанию кода, который будет выполнятся при нажатии кнопки выполнить. Для этого находим процедуру КнопкаВыполнитьНажатие(Кнопка)

и пишем следующий код:

Процедура КнопкаВыполнитьНажатие(Кнопка) Запрос = Новый Запрос() ; Запрос. Текст = " ВЫБРАТЬ | * | ИЗ | Документ. СчетНаОплатуПокупателю " ; Результат = Запрос. Выполнить () . Выгрузить() ; КонецПроцедуры

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

Ключевым словом «Выбрать» мы приказываем нашему запросу выбрать все поля(*) (реквизиты документа) из документа «СчетНаОплатуПокупателю».

Важно:
Хочу заметить также, что при написании языка запроса - обращаться к объектам конфигурации следует в единственном, а не во множественном числе. В данном
случае объект Документы в конфигурации (ветка Документы) - в запросе написан Документ. Также к составу документов - мы добираемся через точку(.) - и название документа.

Результат запроса мы получаем в виде таблицы значений, о чем свидетельствует примененный нами метод(параметр) - Выгрузить, то есть сначала мы выполнили
запрос (Выполнить), а уже затем выгрузили результат выполнения запроса в таблицу значений и таблица значений находится в переменной Результат.

Далее сохраняем нашу обработку в файл, для этого нажимаем Файл->Сохранить как и пишем имя файла, для своей обработки я задал имя «ВнешняяОбработка1Демо», чтобы долго не искать обработку можете сохранить ее на рабочий стол, дальше нам придется ее открывать)).

Теперь давайте изучим немного основы отладки. Для этого сейчас на поле рядом с текстом Результат = … дважды щелкните левой клавишей мыши, чтобы появилась красный кружок, у вас должно получиться нечто следующее:

Итак, мы сейчас с вами установили точку останова на строке с результатом, теперь давайте запустим конфигурацию на отладку, нажав клавишу (F 5) либо кнопку
на панели инструментов:

Теперь в запущенном нами режиме 1С:Предприятия откроем нашу сохраненную обработку Файл->Открыть и найдите то место, куда вы сохраняли файл обработки, выберите его и нажмите открыть. Жмем в нашей обработки кнопку «Выполнить». Если вы все сделали правильно - вы автоматически перейдете в режим конфигуратора и в месте установки нашей точки останова увидите следующее:

На нашем кружке появилась стрелочка - мы перешли в пошаговое выполнение нашего кода, и далее мы увидим самое интересное. Если вы все правильно сделали - сейчас вы сможете получить результат выполнения запроса.

Для наглядного представления запроса сделаем следующее: В верхнем меню конфигуратора находим меню Отладка и выбираем команду Табло.

Внизу окна конфигуратора откроется пустое окошечко ->Табло. В этом окне есть строки, пустые. Дважды щелкните на пустую подсвеченную строку и напишите слово Результат. У вас должно получиться следующее:

Итак, в указанном нами окне мы должны получить результат выполнения нашего кода, а именно сейчас - переменной «Результат», так как мы сейчас еще не выполнили данную строку кода - мы имеем пустое значение и тип данных переменной - «Неопределено».

Давайте сделаем шаг - для выполнения указанной строки кода. Для этого нажмите клавишу, либо в меню Отладка->Шагнуть через…(F 10).

И что же мы видим в нашем Табло:

Мы видим с вами - значение переменной и тип переменной. Теперь также мы можем просмотреть содержание нашей таблицы значений, для этого подведите курсор мыши к полю результат, нажмите правую клавишу мыши и выберите пункт «Показать значение в отдельном окне»

Получаем окно с выбранными нами документами, которые находятся в переменной Результат

Резюмирую:

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

Язык запросов является одним из основополагающих механизмов 1С 8.3 для разработчиков. При помощи запросов можно быстро получить любые данные, хранящиеся в базе. Его синтаксис очень похож на SQL, но есть и отличия.

Основные достоинства языка запросов 1С 8.3 (8.2) перед SQL:

  • разыменование ссылочных полей (обращение черед одну или несколько точек к реквизитам объектов);
  • работа с итогами очень удобная;
  • возможность создавать виртуальные таблицы;
  • запрос можно писать как на английском, так и на русском языках;
  • возможность блокировать данные для исключения взаимных блокировок.

Недостатки языка запросов в 1С:

  • в отличие от SQL, в 1С запросы не позволяют изменять данные;
  • отсутствие хранимых процедур;
  • невозможность преобразования строки в число.

Рассмотрим наш мини учебник по основным конструкциям языка запросов 1С.

В связи с тем, что запросы в 1С позволяют лишь получать данные, любой запрос должен начинаться со слова «ВЫБРАТЬ». После этой команды указываются поля, данные из которых нужно получить. Если указать «*», то будут выбраны все доступные поля. Место, откуда будут выбираться данные (документы, регистры, справочники и прочее) указывается после слова «ИЗ».

В рассмотренном ниже примере выбираются наименования всей номенклатуры из справочника «Номенклатура». После слова «КАК» указываются псевдонимы (имена) для таблиц и полей.

ВЫБРАТЬ
Номенклатура.Наименование КАК НаименованиеНоменклатуры
ИЗ
Справочник.Номенклатура КАК Номенклатура

Рядом с командой «ВЫБРАТЬ» можно указать ключевые слова:

  • РАЗЛИЧНЫЕ . Запрос будет отбирать только отличающиеся хотя бы по одному полю строки (без дублей).
  • ПЕРВЫЕ n , где n – количество строк с начала результата, которые необходимо отобрать. Чаще всего такая конструкция используется совместно с сортировкой (УПОРЯДОЧИТЬ ПО). Например, когда нужно отобрать определенное количество последних по дате документов.
  • РАЗРЕШЕННЫЕ . Данная конструкция позволяет выбирать из базы только те записи, которые доступны текущему пользователю. Баз использования этого ключевого слова пользователю будет выведено сообщение об ошибке при попытке обращения запроса к тем записям, доступа к которым у него нет.

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

ДЛЯ ИЗМЕНЕНИЯ

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

Чаще всего предложение «ДЛЯ ИЗМЕНЕНИЯ» используется при получении остатков. Ведь при одновременной работе нескольких пользователей в программе, пока один получает остатки, другой может их изменить. В таком случае полученный остаток будет уже не верен. Если же заблокировать данные этим предложением, то пока первый сотрудник не получит корректный остаток и не совершит с ним все необходимые манипуляции, второй сотрудник будет вынужден ждать.

ВЫБРАТЬ
Взаиморасчеты.Сотрудник,
Взаиморасчеты.СуммаВзаиморасчетовОстаток
ИЗ
РегистрНакопления.ВзаиморасчетыССотрудниками.Остатки КАК Взаиморасчеты
ДЛЯ ИЗМЕНЕНИЯ

ГДЕ (WHERE)

Конструкция необходима для наложения какого-либо отбора на выгружаемые данные. В некоторых случая получения данных из регистров разумнее прописывать условия отборов в параметрах виртуальных таблиц. При использовании «ГДЕ», сначала получаются все записи, и только потом применяется отбор, что значительно замедляет выполнение запроса.

Ниже приведен пример запроса получения контактных лиц с определенной должностью. Параметр отбора имеет формат: &ИмяПараметра (имя параметра произвольное).

ВЫБОР (CASE)

Конструкция позволяет указывать условия непосредственно в теле запроса.

В приведенном ниже примере «ДополнительноеПоле» будет содержать текст в зависимости от того проведен документ или нет:

ВЫБРАТЬ
ПоступлениеТиУ.Ссылка,
ВЫБОР
КОГДА ПоступлениеТиУ.Проведен
ТОГДА «Документ проведен!»
ИНАЧЕ «Документ не проведен…»
КОНЕЦ КАК ДополнительноеПоле
ИЗ
Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТиУ

СОЕДИНЕНИЕ (JOIN)

Соединения связывают две таблицы по определенному условию связи.

ЛЕВОЕ/ПРАВОЕ СОЕДИНЕНИЕ

Суть ЛЕВОГО соединения заключается в том, что полностью берется первая указанная таблица и к ней по условию связи привязывается вторая. Если записей, соответствующих первой таблице во второй не нашлось, то в качестве их значений подставляется NULL. Проще говоря, главной является первая указанная таблица и к её данным уже подставляются данные второй таблицы (если они есть).

Например, необходимо получить номенклатурные позиции из документов «Поступление товаров и услуг» и цены из регистра сведений «Цены номенклатуры». В данном случае, если цена у какой-либо позиции не найдена, вместо нее подставиться NULL. Из документа все позиции будут выбраны вне зависимости от того, есть ли на них цена или нет.

ВЫБРАТЬ
ПоступлениеТиУ.Номенклатура,
Цены.Цена
ИЗ
Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТиУ
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК Цены
ПО ПоступлениеТиУ.Номенклатура = Цены.Номенклатура

В ПРАВОМ все в точности да наоборот.

ПОЛНОЕ СОЕДИНЕНИЕ

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

При использовании в предыдущем примере полного соединения будут выбраны все позиции номенклатуры из документа «Поступление товаров и услуг» и все последние цены из регистра «Цены номенклатуры». Значения не найденных записей, как в первой, так и во второй таблице будут равняться NULL.

ВНУТРЕННЕЕ СОЕДИНЕНИЕ

Отличием ВНУТРЕННЕГО соединения от ПОЛНОГО является то, что если хотя бы в одной из таблиц не найдена запись, то запрос не выведет ее вообще. В результате будут выбраны только те номенклатурные позиции из документа «Поступление товаров и услуг», для которых в регистре сведений «Цены номенклатуры» есть записи, если в предыдущем примере заменить «ПОЛНОЕ» на «ВНУТРЕННЕЕ».

СГРУППИРОВАТЬ ПО (GROUP BY)

Группировка в запросах 1С позволяет сворачивать строки таблицы (группировочные поля) по определенному общему признаку (группируемым полям). Группировочные поля могут выводиться только с применением агрегатных функций.

Результатом следующего запроса будет список видов номенклатуры с максимальными ценами по ним.

ВЫБРАТЬ
,
МАКСИМУМ(Цены.Цена) КАК Цена
ИЗ

СГРУППИРОВАТЬ ПО
Цены.Номенклатура.ВидНоменклатуры

ИТОГИ

В отличие от группировки при использовании итогов выводятся все записи и уже к ним добавляются итоговые строки. Группировка выводит лишь обобщенные записи.

Итоги можно подводить по всей таблице целиком (с использованием ключевого слова «ОБЩИЕ»), по нескольким полям, по полям с иерархической структурой (ключевые слова «ИЕРАРХИЯ», «ТОЛЬКО ИЕРАРХИЯ»). При подведении итогов не обязательно использовать агрегатные функции.

Рассмотрим пример, аналогичный примеру выше с использованием группировки. В данном случае результат запроса вернет не только сгруппированные поля, но и детальные записи.

ВЫБРАТЬ
Цены.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
Цены.Цена КАК Цена
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК Цены
ИТОГИ
МАКСИМУМ(Цена)
ПО
ВидНоменклатуры

ИМЕЮЩИЕ (HAVING)

Данный оператор схож с оператором «ГДЕ», но используется только для агрегатных функций. Остальные поля, кроме используемых этим оператором, должны быть сгруппированы. Оператор «ГДЕ» не применим для агрегатных функций.

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

ВЫБРАТЬ

МАКСИМУМ(Цены.Цена) КАК Цена
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК Цены
СГРУППИРОВАТЬ ПО
Цены.Номенклатура.ВидНоменклатуры
ИМЕЮЩИЕ
МАКСИМУМ(Цены.Цена) > 1000

УПОРЯДОЧИТЬ ПО

Оператор «УПОРЯДОЧИТЬ ПО» сортирует результат запроса. Для того, чтобы гарантированно выводить записи в постоянном порядке, используется АВТОУПОРЯДОЧИВАНИЕ. Примитивные типы сортируются по обычным правилам. Ссылочные типы сортируются по GUID.

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

ВЫБРАТЬ
Сотрудники.Наименование КАК Наименование
ИЗ
Справочник.Сотрудники КАК Сотрудники
УПОРЯДОЧИТЬ ПО
Наименование
АВТОУПОРЯДОЧИВАНИЕ

Прочие конструкции языка запросов 1С

  • ОБЪЕДИНИТЬ – результаты двух запросов в один.
  • ОБЪЕДИНИТЬ ВСЕ – аналог ОБЪЕДИНИТЬ, но без группировки одинаковых строк.
  • ПУСТАЯ ТАБЛИЦА – иногда используется при объединении запросов для указания пустой вложенной таблицы.
  • ПОМЕСТИТЬ – создает временную таблицу для оптимизации сложных запросов 1С. Такие запросы называются пакетными.

Функции языка запросов

  • ПОДСТРОКА обрезает строку с определенной позиции на указанное количество символов.
  • ГОД…СЕКУНДА позволяют получить выбранное значение числового типа. Входным параметром является дата.
  • НАЧАЛОПЕРИОДА и КОНЕЦПЕРИОДА используются при работе с датами. В качестве дополнительного параметра указывается тип периода (ДЕНЬ, МЕСЯЦ, ГОД и т. п.).
  • ДОБАВИТЬКДАТЕ позволяет прибавить или отнять от даты указанное время определенного типа (СЕКУНДА, МИНУТА, ДЕНЬ и т. п.).
  • РАЗНОСТЬДАТ определяет разницу между двумя датами с указанием типа выходного значения (ДЕНЬ, ГОД, МЕСЯЦ и т. п.).
  • ЕСТЬNULL заменяет отсутствующее значение на указанное выражение.
  • ПРЕДСТАВЛЕНИЕ и ПРЕДСТАВЛЕНИЕССЫЛКИ получают строковое представление указанного поля. Применяются для любых значений и только ссылочных соответственно.
  • ТИП, ТИПЗНАЧЕНИЯ используются для определения типа входного параметра.
  • ССЫЛКА является логическим оператором сравнения для типа значения реквизита.
  • ВЫРАЗИТЬ используется для преобразования значения к нужному типу.
  • ДАТАВРЕМЯ получает значение типа «Дата» из числовых значений (Год, Месяц, День, Час, Минута, Секунда).
  • ЗНАЧЕНИЕ в запросе 1С используется для указания предопределенных значений — справочников, перечислений, планов видов характеристик. Пример использования: «Где ЮрФизЛицо = Значение(Перечисление.ЮрФизЛица.ФизЛицо) «.

Конструктор запросов

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

  • «Таблицы и поля» — содержит поля, которые необходимо выбрать и их источники.
  • «Связи» — описывает условий для конструкции СОЕДИНЕНИЕ.
  • «Группировка» — содержит описание конструкций группировок и суммируемых полей по ним.
  • «Условия» — отвечает за отборы данных в запросе.
  • «Дополнительно» — дополнительные параметры запроса, такие как ключевые слова команды «ВЫБРАТЬ» и пр.
  • «Объединения/Псевдонимы» — указываются возможности объединения таблиц и задаются псевдонимы (конструкция «КАК»).
  • «Порядок» — отвечает за сортировку результата запросов.
  • «Итоги» — аналогична вкладке «Группировка», но применяется для конструкции «ИТОГИ».

Текст самого запроса можно просмотреть, нажав в левом нижнем углу на кнопку «Запрос». В данной форме его можно откорректировать вручную или скопировать.


Консоль запросов

Для быстрого просмотра результата запроса в режиме «Предприятие», либо отладки сложных запросов используется . В ней пишется текст запроса, устанавливаются параметры, и показывается его результат.

Скачать консоль запросов можно на диске ИТС, либо по .

Цель курса: дать слушателям целостное представление о языке запросов платформы «1С:Предприятие 8» - одного из наиболее важных механизмов встроенного языка системы. В курсе рассматриваются языковые конструкции: предназначение каждой конструкции и ее синтаксис. Каждая конструкция используется в учебно-практической задаче. Это, в свою очередь, в дальнейшем при практической работе позволит разработчику обоснованно выбирать те или иные конструкции языка запросов, тем самым повышая эффективность программного кода.

Таким образом, данный курс предназначен для разработчиков, желающих освоить язык запросов платформы 1С:Предприятие 8.

Уверенное знание языка запросов требуется разработчику 1С фактически при решении всех задач, встречающихся в его практике: программирование проведения документов самых различных классов, связанное с этим решение бухгалтерских и расчетных задач и т.д., а также совершенно необходимо при разработке отчетов с использованием Системы Компоновки Данных (СКД).

Курс рассчитан на слушателей, знакомых с основами встроенного языка платформы «1С:Предприятие 8», программными объектами и с объектами метаданных.

В стоимость очного дневного курса включено:

  • 3 дня с 10:00 до 17:00
  • методические материалы
  • обеды, кофе-брейки

В стоимость очного вечернего курса включено:

  • 6 вечеров с 18:40 до 21:40
  • методические материалы
  • кофе-брейки
  • свидетельство 1С-Учебного центра №3

В стоимость WEB-курса включено:

  • 6 недель курса, 5 вебинаров с преподавателем
  • свидетельство 1С-Учебного центра №3 (при условии выполнения практики)

В стоимость очного курса-погружения включено:

  • 5 дней с 10:00 до 17:00 или 9 вечеров с 18:30 по 21:30
  • конспект, наушники
  • обеды, кофе-брейки
  • доступ на 2 года к обновляемым видеоматериалам после окончания курса
  • свидетельство 1С-Учебного центра №3

В стоимость он-лайн трансляции включено:

  • он-лайн трансляция очного курса в режиме вебинара, 3 дня с 10:00 до 17:00 по мск времени
  • методическое пособие в печатном виде (заранее отправляется почтой России)
  • свидетельство 1С-Учебного центра №3

Форматы обучения

Очное дневное

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

Продолжительность: 24 академических часа

WEB-обучение

Что это за формат: Предлагаемый формат сочетает многие преимущества дистанционного обучения с очной составляющей, представленной видеоматериалами и онлайн-консультациями.
WEB-курс состоит из видеороликов, практических задач и вебинаров с преподавателям. Ко всем материалам курса предоставляется круглосуточный доступ через Интернет – можно заниматься в удобное время. Курс разделен на занятия. В течение занятия изучаются материалы по текущей теме, выполняются практикумы, задаются вопросы преподавателю. В конце каждого занятия проводится вебинар, на котором преподаватель разбирает все поступившие вопросы, типовые ошибки, объясняет правильное решение. Запись вебинаров доступна в портале. Таким образом проходят несколько занятий одно за другим. В конце проводится итоговая самостоятельная работа и итоговый вебинар.

Продолжительность: 6 недель

Что это за формат:


Продолжительность: 40 академических часов

Онлайн-трансляция

Что это за формат: Онлайн-трансляция – это обучение в форме он-лайн вебинара, которые стремительно набирают популярность в нашей стране. Вместо специальных видеопособий, вы получаете «живую» лекцию, транслируемую через Интернет. Тем самым достигается максимальная естественность подачи материала, аналогичная обычному очному обучению – но исчезает проблема необходимости личного присутствия в учебном центре. Отличие от очного обучения состоит только в отсутствии прямого взаимодействия с аудиторией и преподавателем.

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

Продолжительность: 24 академических часа

Что это за формат: Очный курс-погружение - формат, сочетающий в себе все плюсы очного обучения, дистанционных технологий и индивидуального обучения. Занятия проходят в оборудованном учебном классе, Вы самостоятельно изучаете материалы курса (пошаговые видеоролики) и выполняете практикумы. При этом в аудитории находится преподаватель, который готов в любой момент ответить на вопрос и помочь с решением практических задач, а также проверить правильность их выполнения.
Преимущества – индивидуальные консультации преподавателя по Вашим вопросам, подходящий лично для Вас темп прохождения материала.
Все это дает более глубокую проработку материала курса.
Этот курс возможно пройти со своего рабочего места с полным эффектом присутствия преподавателя там, где ученик! Если эта возможность Вас заинтересовала – позвоните нам!

Продолжительность: 40 академических часов

Программа курса

  1. Основные конструкции языка запросов платформы "1С:Предприятие 8"
    • Зачем нужен язык запросов?
    • Представление совокупностей объектов информационной базы в виде двумерных таблиц
    • Типы данных полей таблиц языка запросов
    • Учебная информационная база
    • Обработка "Консоль запросов"
    • Создание файла хранения списка запросов
    • Общие характеристики языка запросов Платформы
    • Первый запрос, самый простой
    • Какие прикладные объекты представляются таблицами языка запросов
    • Явное задание списка полей выборки
    • Комментарии в языке запросов
    • Псевдонимы полей и таблиц
    • Выражения в языке запросов
      • Выражения в списке полей выборки
      • Условные выражения в языке запросов. Оператор ВЫБОР
      • Фильтрация результатов запроса. Операция ГДЕ
      • Логические выражения в языке запросов
      • Параметры в языке запросов
      • Встроенные функции в выражениях языка запросов
      • Задание в запросе значений предопределенных данных конфигурации. Функция ЗНАЧЕНИЕ()
    • Групповые операции в языке запросов
      • Группировка по значению поля и агрегатные функции
      • Отбор по значению результата агрегатной функции: операция ИМЕЮЩИЕ
    • Упорядочивание записей результата запроса
    • Автоупорядочивание результата запроса
    • Получение первых N записей результата запроса. Операция ПЕРВЫЕ
    • Получение неповторяющихся комбинаций значений полей результата запроса. Операция РАЗЛИЧНЫЕ
  2. Выборка из нескольких источников данных
    • Простая задача: извлечение данных, хранящихся в таблицах разных объектов конфигурации
    • Декартово произведение (или "картезиан") множеств записей таблиц - источников данных
    • Решение поставленной задачи наложением условия на картезиан
    • Операция ВНУТРЕННЕЕ СОЕДИНЕНИЕ таблиц - источников данных
      • Операция ВНУТРЕННЕЕ СОЕДИНЕНИЕ как современная форма записи условия формирования отношения
      • Коммутативность операции ВНУТРЕННЕЕ СОЕДИНЕНИЕ
      • Соединения в запросе многих таблиц
    • Операция ЛЕВОЕ СОЕДИНЕНИЕ языка запросов
      • Задача: нахождение документов прихода, по которым нет оплат
      • Отличие операции ЛЕВОЕ СОЕДИНЕНИЕ от операции ВНУТРЕННЕЕ СОЕДИНЕНИЕ
      • Тип данных языка запросов NULL - отсутствие в поле результата запроса какого- либо значения
      • Оператор ЕСТЬ NULL и функция ЕСТЬNULL()
    • Операция ПРАВОЕ СОДИНЕНИЕ языка запросов
    • Операция ПОЛНОЕ СОЕДИНЕНИЕ языка запросов
    • Операция разыменования поля ссылочного типа
    • Обращение к табличной части объекта как к таблице - источнику данных. Поле Ссылка таблицы, представляющей табличную часть
    • Обращение к табличной части объекта в списке полей выборки
    • Вложенные запросы
    • Объединение результатов нескольких запросов
      • Запрос-объединение. Операция ОБЪЕДИНИТЬ
      • Заглушка ПУСТАЯТАБЛИЦА
    • Некоторые дополнительные операторы языка запросов
      • Оператор ВЫРАЗИТЬ
      • Логический оператор ССЫЛКА
      • Логический оператор В() с подзапросом в качестве параметра
  3. Расчет итогов в запросе
    • Получение итоговых записей в результате запроса - операция ИТОГИ
    • Итоги по нескольким измерениям
    • Представление результата запроса с итогами в виде многоуровневой (древовидной) структуры
    • Общие итоги
    • Итоги по иерархии
  4. Практическая работа с языком запросов
    • Виртуальные таблицы регистров
      • Таблицы языка запросов для регистров - физическая таблица и виртуальные таблицы
      • Синтаксис обращения к виртуальным таблицам. Параметры виртуальных таблиц
      • Виртуальные таблицы регистра накопления
      • Виртуальные таблицы регистра бухгалтерии
      • Некоторые распространенные ошибки обращения к виртуальным таблицам
      • Виртуальные таблицы периодического регистра сведений - СрезПервых и СрезПоследних
      • Особенности задания условий на значения полей для виртуальной таблицы регистра сведений
    • Работа с запросами на встроенном языке Платформы 8
      • Предварительный обзор объектной модели разработки и выполнения запросов во встроенном языке
      • Внешняя обработка РазработкаЗапросов.epf
      • Объект Запрос
      • Объект РезультатЗапроса
      • Объект ВыборкаИзРезультатаЗапроса
      • Второй параметр метода Выбрать()
      • Третий параметр метода Выбрать()
      • Временные таблицы и пакетные запросы
  5. Внешние источники (внешние базы) данных
    • Характеристика работы с внешними источниками данных
    • Подготовительная работа
    • Инфология dBase-базы данных "Поставки детских игрушек"
    • Создание описания источника данных ODBC в операционной системе Windows
    • Создание и настройка объекта Внешний источник данных
    • Установление соединения и просмотр таблиц внешнего источника данных в режиме 1С:Предприятие
    • Интерактивная установка соединения
    • Программная установка соединения
    • Установление информационно-логической связи (отношений) на таблицах внешнего источника данных. Превращение внешнего источника во внешнюю базу данных
    • Задание отношений на таблицах делает источник данных базой данных
    • Настройка объектных таблиц - объявление таблиц внешнего источника данных типообразующими (ссылочными)
    • Выборка данных из внешней базы запросом
    • Внешние базы данных на основе книг MS Excel
  6. Некоторые практические приемы построения запросов
    • Логический вентиль. Возможность отключения проверки условия в запросе при пустом значении параметра
    • Коррелированный запрос. Задача получения N последних курсов валют
    • Тэта-соединение. Задача получения курса валюты на множество разных дат
    • Получение иерархических результатов по таблицам неиерархических объектов. Задача построения полного дерева зависимости видов расчета
    • Выборка данных из объекта типа...Список по установленным отборам при помощи объекта ПостроительЗапроса
  7. Краткая справка по работе с Конструктором запроса
Читать всю программу

Наполнение курса

Всего ресурсов (Web-страниц и страниц с видео)

Видео материалы (всего минут)

Практикумы для самостоятельного выполнения

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

8 (средней сложности)

Занятие 2. Выборка из нескольких источников данных

6 (средней сложности)

Занятие 3. Расчет итогов в запросе, виртуальные таблицы регистров

3 (средней сложности)

Занятие 4. Работа с запросами на встроенном языке, внешние источники (внешние базы) данных

4 (средней сложности)

Занятие 5. Некоторые практические приемы построения запросов

2 (сложных)

Технические требования:
- доступ в Интернет
(проверить свой канал связи Вы сможете подключившись к ),
- наличие платформы 1С:Предприятие 8.2 для отработки практических заданий курса.
Достаточно «1С:Предприятие 8.2» Версия для обучения программированию.

Using data query language in 1C:Enterprise 8

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

Курс является «продолжением» базового курса «Основные объекты». В процессе обучения Вы ознакомитесь с особенностями языка запросов системы, использования самого объекта «Запрос», порядком работы с результатом запроса, выборкой из результата запроса и т.п. Вы приобретете практические навыки по написанию запросов как «вручную», так и с использованием конструктора запросов.

Для практического освоения прикладных решений рекомендуем программный продукт «1С:Предприятие 8. Комплект для специалиста по разработке и внедрению» (конфигурации + литература), особенно в случаях выполнения специалистами работы на дому. Продукт может приобретаться лично специалистом или организацией, в которой он работает. Комплект предназначен для специалистов IT-служб предприятий, оплативших обучение в Учебном центре «Специалист». Продукт регистрируется на специалиста.