Конструктор запроса аналог типового конструктора запроса в Кофигураторе предоставляет феноменальные средства для визуального пошагового формирования синтаксически правильного текста запроса.
Использование Менеджера временных таблиц
Механизм запросов, возникнув в 7 версии программы 1С, с выходом первых версий 8 платформы получил все более широкое распространение и постоянно растущую популярность. Появление управляемых форм и системы компоновки данных существенно увеличило область применения этого инструмента. Однако многим начинающим программистам достаточно сложно его освоить.
Использование объекта, который носит название «Менеджер временных таблиц» позволяет:
Как пользоваться конструктором запросов в 1С 8.3
Чтение таблиц менеджера
Следующий этап работы – чтение данных из существующих таблиц в другом запросе. Здесь существует одна проблема: новый создаваемый запрос не знает о существовании заполненной таблицы, поэтому в окне «База данных» консоли она не появится.
Для этого на закладке «Таблицы и поля» (Рис.4) необходимо выполнить некоторую последовательность действий:
- В меню окна «Таблицы» этой закладки необходимо нажать кнопку «Создать описание временной таблицы»;
- В открывшемся окне необходимо указать наименование поля и его описание (тип поля), как оно задано в существующей таблице;
- Необходимые поля или функции с ними нужно перенести в третье окно закладки.
Все время выполнения временные таблицы хранятся в оперативной памяти компьютера пользователя при файловом варианте работе или засоряют память сервера в клиент-серверном режиме до полного завершения работы функции или процедуры, вызвавшей менеджер. Большие объемы данных могут значительно снижать производительность даже не самого слабого железа.
Особенность при ЛЕВОМ СОЕДИНЕНИИ в том, что мы берём первую указанную таблицу полностью и привязываем по условию вторую таблицу.
Практическая часть урока №6
В данном разделе нам предстоит решить две задачи по пройденной теме.
Задача 1
Получить остатки номенклатуры на указанном складе на конец месяца.
Для простоты предположим, что весь учет товаров на складах идет по 41 счету бухгалтерского учета.
- Создадим новый запрос;
- Запустим конструктор запросов;
- В раздел Таблицы перетащим таблицу Хозрасчетный.Остатки из ветки РегистрыБухгалтерии;
- Выделим данную таблицу и нажмем кнопку Параметры виртуальной таблицы;
- В поле Период впишем параметр, в который будет передаваться дата на которую будут браться остатки. Так как мы используем таблицу Остатки, в параметр передадим не дату а границу, с видом Включая;
- В поле УсловиеСчета вручную или используя редактор произвольных выражений вписываем условие на счет, используя оператор В ИЕРАРХИИ, для того чтобы в запрос попали остатки по всем субсчетам счета 41;
- В поле Субконто зададим параметр, в который передадим массив субконто. В нашей задаче нам нужны только склады и номенклатура, первым элементом массива зададим вид субконто Склады, а вторым Номенклатура;
- В поле Условие вручную или используя редактор произвольных выражений наложим отбор на склад, который в нашем случае хранится в поле Субконто1.
- На этом заполнение параметров виртуальной таблицы завершено, нажимаем кнопку ОК;
- В раздел Поля перетащим Субконто1, Субконто2 и КоличествоОстаток;
- Перейдем на вкладку Объединения / Псевдонимы;
- Зададим псевдонимы для полей Субконто1 и Субконто2, назначим для них Склад и Номенклатура соответственно;
- Запрос готов, нажимаем кнопку «ОК» в нижней части окна конструктора.
В итоге у нас получится запрос со следующим текстом:
Промокоды на Займер на скидки
Задача 2
Получить актуальную цену на конец месяца по указанной номенклатуре и типу цен.
Конструктор запросов 1С — обучение на примерах — Страница 6 из 6.
- Упорядочивание. В данном параметре можно задать поля сортировки записей виртуальной таблицы. Упорядочивать записи можно только в том случае, если заполнен параметр Первые.
- Первые. В данном параметре указывается число первых записей, которые будут взяты из регистра в виртуальную таблицу. Данный параметр необходим для упорядочивания элементов виртуальной таблицы 1с.
Практическая часть урока №6
В данном разделе нам предстоит решить две задачи по пройденной теме.
Задача 1
Получить остатки номенклатуры на указанном складе на конец месяца.
Для простоты предположим, что весь учет товаров на складах идет по 41 счету бухгалтерского учета.
- Создадим новый запрос;
- Запустим конструктор запросов;
- В раздел Таблицы перетащим таблицу Хозрасчетный.Остатки из ветки РегистрыБухгалтерии;
- Выделим данную таблицу и нажмем кнопку Параметры виртуальной таблицы;
- В поле Период впишем параметр, в который будет передаваться дата на которую будут браться остатки. Так как мы используем таблицу Остатки, в параметр передадим не дату а границу, с видом Включая;
- В поле УсловиеСчета вручную или используя редактор произвольных выражений вписываем условие на счет, используя оператор В ИЕРАРХИИ, для того чтобы в запрос попали остатки по всем субсчетам счета 41;
- В поле Субконто зададим параметр, в который передадим массив субконто. В нашей задаче нам нужны только склады и номенклатура, первым элементом массива зададим вид субконто Склады, а вторым Номенклатура;
- В поле Условие вручную или используя редактор произвольных выражений наложим отбор на склад, который в нашем случае хранится в поле Субконто1.
- На этом заполнение параметров виртуальной таблицы завершено, нажимаем кнопку ОК;
- В раздел Поля перетащим Субконто1, Субконто2 и КоличествоОстаток;
- Перейдем на вкладку Объединения / Псевдонимы;
- Зададим псевдонимы для полей Субконто1 и Субконто2, назначим для них Склад и Номенклатура соответственно;
- Запрос готов, нажимаем кнопку «ОК» в нижней части окна конструктора.
В итоге у нас получится запрос со следующим текстом:
Задача 2
Получить актуальную цену на конец месяца по указанной номенклатуре и типу цен.
Если указано значение Движения , то будут получены периоды, в которых были движения обороты не равны нулю , если ДвиженияИГраницыПериода , то за периоды, по которым были движения, плюс начальный и конечный периоды, если на их начало был остаток.
Вложенные таблицы в языке запросов 1С.
В этой статье мы разберем такую тему, как вложенные таблицы в языке запросов 1С.
В полях выборки запроса можно использовать вложенную таблицу источника запроса. Например, у документа «Оказание услуг», есть табличная часть Услуги, так вот, эту табличную часть тоже можно вывести в поле выборки. Сейчас Вы увидите, как это можно реализовать.
В своей учебной базе я запущу консоль запросов, открою конструктор запросов и выберу таблицу «Оказание Услуг».
Как видите, вся табличная часть услуги полностью выбралась в поля.
Обращаю Ваше внимание, что табличная часть, по сути, идет как отдельное поле, которое называется «Услуги» и тип которого будет «РезультатЗапроса». Научимся использовать вложенную таблицу в запросе.
Оставим три поля вложенной таблицы и добавим некоторые поля из шапки документа.
Нажмем кнопку ОК в конструкторе, и посмотрим как будет выглядеть наш запрос.
Как видите, в запросе после поля «Услуги» идет точка, а за ней в скобках перечислены выбранные поля.
На рисунке мы видим, что все выбранные поля табличной части документа перечислена через запятую в поле «Услуги». Не во всех консолях запросов бывает такое отображение как на рисунке выше, иногда может просто идти надпись «ТаблицаЗначений«.
Ещё интересный момент, у вложенной таблицы можно вместо полей поставить звездочку, тогда выйдут все поля табличной части. Это нельзя сделать в конструкторе, только вручную в запросе. Запрос приобретет следующий вид:
Единственно, что эта звездочка у нас не сохранится, если открыть конструктор запроса.
Мы научились делать запрос с вложенной таблицей в консоле, теперь научимся использовать вложенную таблицу в выборке
В действительности не так сложно обратится при обработке запроса к вложенной таблице. Вы просто обращаетесь к выборке по названию вашей таблицы, и получаете переменную с типом «РезультатЗапроса». А потом обрабатываете ее как обычный результат запроса: хотите, получайте выборку, хотите, делайте выгрузку.
Ниже приведу небольшой пример кода, в котором осуществляется работа с вложенной таблицей:
Первым делом мы получили линейную выборку, и обходим эту выборку в цикле, в котором создаем верхнюю строку дерева значений (оно на форме), и в неё записываем ссылку на наш документ.
А дальше самое интересное, можете даже посмотреть это потом в отладчике самостоятельно, мы обращаемся к полю выборки Товары, и записываем для удобства это поле в отдельную переменную ТаблТовары. Данная переменная имеет тип «РезультатЗапроса». И можно спокойно получить выборку этого результата. Что мы и делаем. Осталось обойти эту выборку с помощью функции следующий и цикла пока.
А внутри этого цикла будем обращаться к полям выборки как к полям вложенной таблицы, и записывать их в дочерние строки дерева с формы.
Вы ответите на них сами, когда изучите мой курс «Запросы в 1С для начинающих». Где эти и многие другие вопросы рассматриваются более подробно. Вся информация дается в простой и доступной форме и понятна даже тем, кто особо не знаком с программированием в 1С.
_ДемоКонтрагенты.НаименованиеПолное
ИЗ
Справочник._ДемоКонтрагенты КАК _ДемоКонтрагенты
ГДЕ
_ДемоКонтрагенты.Ссылка = &Ссылка2
Построение запросов к базе на 1С Предприятие 8.3 — DisWEB
Микрофинансирование → Микрокредиты → Специальные предложения → Скачать файлы → Обзор Быстроденег → Предмет договора → Ответственность сторон → Отличные наличные→ Экспресс займы