Конструктор запросов в управляемом приложении в «1С:Предприятие 8.3.5» (бесплатная статья по Программированию в 1С)

О чем эта статья

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

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

Применимость

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

Конструктор запросов в управляемом приложении в «1С:Предприятие 8.3.5»

В платформе 8.3.5.823 появилась давно ожидаемая разработчиками возможность – был реализован конструктор запроса, работающий в режиме управляемого приложения.

Теперь конструктор запроса доступен в тонком и толстом клиентах, а также в веб-клиенте.

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

Создадим внешнюю обработку, на форме разместим поле ввода для текста запроса и кнопку, открывающую конструктор:

Открытие конструктора в тонком клиенте

Для увеличения нажмите на изображение.

Напишем следующий обработчик нажатия на кнопку:

&НаКлиенте
Процедура Конструктор(Команда)
Конструктор = Новый КонструкторЗапроса;
Конструктор.Текст = ТекстЗапроса;
Оповещение = Новый ОписаниеОповещения(“ОткрытьКонструкторЗапросаЗавершение”,
ЭтотОбъект);
Конструктор.Показать(Оповещение);
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьКонструкторЗапросаЗавершение(Текст, ДополнительныеПараметры) Экспорт
Если НЕ Текст = Неопределено Тогда
ТекстЗапроса = Текст;
КонецЕсли;
КонецПроцедуры

Обратите внимание, что вместо метода ОткрытьМодально() использовался новый метод Показать(), который открывает конструктор запроса немодально.

При открытии обработки в тонком клиенте и нажатии на кнопку открывается форма конструктора запроса:

Форма конструктора запроса

Для увеличения нажмите на изображение.

По сравнению с классическим конструктором, к которому мы привыкли еще со времен 8.0, внешний вид нового претерпел несколько изменений.

Первое, что бросается в глаза – отсутствие привычных закладок, отображающих запросы пакета, имена временных таблиц и объединения запросов:

Новый конструктор 1С

Вместо этого теперь в нижней части окна расположены два выпадающих списка – “Редактируемый запрос” и “Редактируемый оператор”.

Выпадающие списки

Для увеличения нажмите на изображение.

Выпадающие списки

Для увеличения нажмите на изображение.

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

Во втором списке можно выбрать, который из объединяемых запросов редактируется в данный момент.

В классическом конструкторе запроса для создания запроса на уничтожение временной таблицы нужно было установить переключатель на закладке “Дополнительно” в соответствующую позицию:

Классический конструктор запроса

А при использовании управляемого конструктора запроса это действие выполняется на закладке “Пакет запросов” при выборе соответствующего пункта кнопки “Добавить”:

Управляемый конструктор запроса

Для увеличения нажмите на изображение.

Но все-таки самые большие отличия расположены на закладке “Связи”. Теперь чтобы связать две таблицы, необходимо мышкой перетащить одну таблицу поверх другой.

Таблицы после этого будут отображаться в виде дерева. Далее необходимо указать вид соединения в выпадающем списке (внутреннее, левое, правое, полное) и написать условие соединения.

Вид соединения таблиц в конструкторе

Для увеличения нажмите на изображение.

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

Схема запроса

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

Для этого зачастую применяется следующий подход: строка, содержащая текст запроса, собирается динамически, “по кусочкам”.

Для примера рассмотрим, как в типовой конфигурации “Управление торговлей, редакция 10.3” формируется текст запроса.

ТекстЗапроса =
|ВЫБРАТЬ // Запрос, контролирующий остатки на складах
| Док.Номенклатура.Представление КАК НоменклатураПредставление,

| %ПОЛЕ_Док_Серия% КАК СерияНоменклатуры,

| ЕСТЬNULL(МАКСИМУМ(Резервы.КоличествоОстаток), 0) КАК РезервыКоличество
|ИЗ
| “
+ ТекстЗапросаРеквизитыДокумента +
|
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(,Склад в (&СписокСкладов) И
| ДокументРезерва в (&СписокДокументовРезерва) И
| %ВыборкаПоНоменклатуре%) КАК Резервы
|ПО
| Док.Номенклатура = Резервы.Номенклатура
| И Док.Склад = Резервы.Склад
| И Док.ЗаказПокупателя = Резервы.ДокументРезерва
| //СОЕДИНЕНИЕ_Характеристика_Резервы
| //СОЕДИНЕНИЕ_Серия_Резервы

|”
;

ТекстЗапроса = СтрЗаменить(ТекстЗапроса,“%ВыборкаПоНоменклатуре%”,“Номенклатура В
(“
+ТекстЗапросаСписокНоменклатуры+“)”);

Если не УчитыватьСерии Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,“%ПОЛЕ_Док_Серия%”,“&ПустаяСерия”);
КонецЕсли;

Как видно, текст запроса собирается из частей при помощи конкатенации, в тексте запроса намеренно используются недопустимые символы (например, %).

Части текста запроса подменяются при помощи СтрЗаменить() на те или иные значения в зависимости от различных условий.

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

В платформе 8.3.5 появилась объектная модель схемы запроса. Теперь программно можно формировать текст запроса, пользуясь не конкатенацией отдельных строк, а оперируя объектами встроенного языка.

Для этого был реализован специальный объект СхемаЗапроса.

Для примера составим при помощи объектной модели на демо-конфигурации “Управляемое приложение” текст запроса, в котором к табличной части документа “Расход товара” при помощи левого соединения присоединяем срез последних регистра сведений “Цены товаров”.

Пояснения к разрабатываемому коду даны в комментариях.

СхемаЗапроса = Новый СхемаЗапроса;
//при создании схема содержит один пакет и один оператор в пакете.
Пакет = СхемаЗапроса.ПакетЗапросов[0];
Оператор = Пакет.Операторы[0];

//получаем таблицы для дальнейшего использования
ДоступнаяТаблицаРасходТовара = Пакет.ДоступныеТаблицы.Найти(“Документ.РасходТовара”);
ДоступнаяТаблицаРасходТовараТовары =
Пакет.ДоступныеТаблицы.Найти
(“Документ.РасходТовара.Товары”);

//добавляем источники
Источник = Оператор.Источники.Добавить(ДоступнаяТаблицаРасходТовараТовары);
Источник.Источник.Псевдоним = “РасходТовараТовары”;

Источник = Оператор.Источники.Добавить(Пакет.ДоступныеТаблицы.Найти
(
“РегистрСведений.ЦеныТоваров.СрезПоследних”));
Источник.Источник.Псевдоним = “ЦеныТоваровСрезПоследних”;

//задаем параметры виртуальной таблицы для среза последних регистра сведений
Источник.Источник.Параметры[0].Выражение = Новый ВыражениеСхемыЗапроса(“&Дата”);
Источник.Источник.Параметры[1].Выражение = Новый ВыражениеСхемыЗапроса(“ВидЦен =
&ВидЦен”
);

//устанавливаем условия левого соединения таблиц
Соединение = Оператор.Источники[0].Соединения.Добавить(“ЦеныТоваровСрезПоследних”,
“РасходТовараТовары.Товар = ЦеныТоваровСрезПоследних.Товар”
);
Оператор.Источники[0].Соединения[0].ТипСоединения =
ТипСоединенияСхемыЗапроса.ЛевоеВнешнее;

//перечисляем выходные поля
//для первых двух псевдоним будет сгенерирован автоматически
//а для третьего принудительно укажем псевдоним “Цена”
ВыбранноеПоле = Оператор.ВыбираемыеПоля.Добавить(“РасходТовараТовары.Товар”);
ВыбранноеПоле = Оператор.ВыбираемыеПоля.Добавить(“РасходТовараТовары.Количество”);
ВыбранноеПоле =
Оператор.ВыбираемыеПоля.Добавить(“ЕСТЬNULL(ЦеныТоваровСрезПоследних.Цена, 0)”);

Пакет.Колонки[2].Псевдоним = “Цена”;

//добавляем секцию ГДЕ в запрос
Оператор.Отбор.Добавить(“РасходТовараТовары.Ссылка = &Ссылка”);

Сообщить(СхемаЗапроса.ПолучитьТекстЗапроса());

При выполнении метода ПолучитьТекстЗапроса() объекта СхемаЗапроса мы получим следующий текст запроса:

ВЫБРАТЬ
РасходТовараТовары.Товар,
РасходТовараТовары.Количество,
ЕСТЬNULL(ЦеныТоваровСрезПоследних.Цена, 0) КАК Цена
ИЗ
Документ.РасходТовара.Товары КАК РасходТовараТовары
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныТоваров.СрезПоследних(&Дата, ВидЦен
= &ВидЦен) КАК ЦеныТоваровСрезПоследних
ПО (РасходТовараТовары.Товар = ЦеныТоваровСрезПоследних.Товар)
ГДЕ
РасходТовараТовары.Ссылка = &Ссылка

Если же необходимо готовый текст запроса трансформировать в объект СхемаЗапроса, то следует воспользоваться методом УстановитьТекстЗапроса():

Текст = “ВЫБРАТЬ
| РасходТовараТовары.Товар,
| РасходТовараТовары.Количество,
| ЕСТЬNULL(ЦеныТоваровСрезПоследних.Цена, 0) КАК Цена
|ИЗ
| Документ.РасходТовара.Товары КАК РасходТовараТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныТоваров.СрезПоследних(&Дата,
ВидЦен = &ВидЦен) КАК ЦеныТоваровСрезПоследних
| ПО РасходТовараТовары.Товар = ЦеныТоваровСрезПоследних.Товар
|ГДЕ
| РасходТовараТовары.Ссылка = &Ссылка”
;

СхемаЗапроса = Новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(Текст);

После этого объект СхемаЗапроса будет содержать структуру запроса в виде набора свойств.

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

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

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

В дополнение к статье Вы можете скачать Консоль запросов для платформы 8.3.5. Автор приложения – BigB.

PDF-версия статьи для участников группы ВКонтакте

Мы ведем группу ВКонтакте – http://vk.com/kursypo1c.

Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.

Статья по программированию - в PDF-формате

Статья в PDF-формате

Вы можете скачать эту статью в формате PDF по следующей ссылке: Курсы-по-1С.рф – Конструктор запросов в управляемом приложении в 1СПредприятие 8.3.5.pdf

Если Вы уже участник группы – нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.

42 комментариев для “Конструктор запросов в управляемом приложении в «1С:Предприятие 8.3.5» (бесплатная статья по Программированию в 1С)

  1. Владимир Насыров сказал:

    Добрый день! Подскажите пожалуйста.
    Пытаюсь модифицировать типовой запрос из УТ11 при помощи схемы запроса. Вот кусок запроса:
    ИЗ
    Документ.ПоступлениеТоваровУслуг.Серии КАК ТаблицаСерии
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ТаблицаТовары
    ПО ТаблицаСерии.Ссылка = ТаблицаТовары.Ссылка
    И ТаблицаСерии.Номенклатура = ТаблицаТовары.Номенклатура
    И ТаблицаСерии.Характеристика = ТаблицаТовары.Характеристика
    И ТаблицаСерии.Склад = ТаблицаТовары.Склад
    //+ Добавлено
    И ТаблицаСерии.Помещение = ТаблицаТовары.Помещение
    //- Добавлено Источник: ©Курсы-по-1С.рф
    И ТаблицаСерии.Назначение = ТаблицаТовары.Назначение
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК Поступление
    ПО Поступление.Ссылка = ТаблицаСерии.Ссылка

    Комментариями выделена добавленная связь между таблицами.
    В таком виде все прекрасно – запрос открывается в конструкторе запросов. Затем я удаляю добавленную связь из текста запроса и пытаюсь добавить ее программно:

    СхемаЗапроса = Новый СхемаЗапроса;
    СхемаЗапроса.УстановитьТекстЗапроса(ТекстЗапроса);
    ЗапросВыбора = СхемаЗапроса.ПакетЗапросов[0];
    ОператорВыбрать = ЗапросВыбора.Операторы[1];
    ОператорВыбрать.Источники[1].Соединения.Добавить(“ТаблицаСерии”, “ТаблицаТовары.Помещение = ТаблицаСерии.Помещение”);

    На последней строке получаю сообщение об ошибке:
    Ошибка при вызове метода контекста (Добавить)
    ОператорВыбрать.Источники[1].Соединения.Добавить(“ТаблицаСерии”, “ТаблицаТовары.Помещение = ТаблицаСерии.Помещение”);
    по причине:
    Противоречивая связь “#1”

    Что я не так делаю?

    • Василий Ханевич сказал:

      Добрый день!
      Откорректируйте строку программного кода, т.е. замените имя таблицы, с которой выполняется связь:

      ОператорВыбрать.Источники[0].Соединения.Добавить("ТаблицаТовары", "ТаблицаТовары.Помещение = ТаблицаСерии.Помещение");

      Либо можно использовать обратный подход – откорректировать сам текст запроса, получить для него схему, а потом посмотреть, из каких объектов она состоит. Так будет понятнее, куда именно следует добавлять соединение.

      • Владимир Насыров сказал:

        Добрый день!
        Такой вариант я тоже пробовал. Та же самая ошибка.
        И обратный подход пробовал. Использовал для этого использовал обработку с инфостарта: http://infostart.ru/public/305809/
        Скормил ей мой запрос с добавленными полями и связями.
        Там все видно, все понятно. Но в решении проблемы это не помогло.
        Помогло лишь скажем так “извращение” – модификация имеющегося соединения с условием “ТаблицаСерии.Склад = ТаблицаТовары.Склад”.

        ОператорВыбрать.Источники[0].Соединения[3].Условие = Новый ВыражениеСхемыЗапроса(“”+ОператорВыбрать.Источники[0].Соединения[3].Условие + ” И ТаблицаСерии.Помещение = ТаблицаТовары.Помещение”);

        В результате в выходном запросе имеем условие соединения:
        И (ТаблицаСерии.Склад = ТаблицаТовары.Склад
        И ТаблицаСерии.Помещение = ТаблицаТовары.Помещение)

        Жаль что не получилось добиться нужного результата стандартными действиями. Видимо разработчики 1С чего-то не доработали.

        • Василий Ханевич сказал:

          Добрый день!
          Проблема в том, что указать вид соединения при добавлении мы не можем. Если открыть исходный тест запроса в конструкторе, попытаться добавить левое соединение таблиц ТаблицаСерии и ТаблицаТовары, то мы получим такую же ошибку с противоречивой связью. Так что приходится прибегать к подобным обходам.

  2. Владимир сказал:

    СхемаЗапроса – очень полезна, но она “привязана” к конфигурации.Невозможно разобрать текст из другой конф

    • Василий Ханевич сказал:

      Да, можно разобрать только текст запроса из этой конфигурации. В противном случае возникают ошибки несоответствия типов. Хотя здесь, в принципе, как и с конструктором запроса – тоже работаем со структурой текущей конфигурации.

  3. Сауле сказал:

    А как в новой консоли запросов связать три таблички?
    Например мне нужны две связи:
    Номенклатура=СтоимостьОстатки
    Номенклатура=КоличествоОстатки
    Делает только одну правильно. Вторую либо кидает внутрь как подчиненную, либо просто сама по себе висит.

    • Василий Ханевич сказал:

      Добрый день!
      Написал простой запрос, где соединяются три таблицы:

      ВЫБРАТЬ
          Номенклатура.Ссылка КАК Ссылка
      ПОМЕСТИТЬ ВТ_Номенклатура
      ИЗ
          Справочник.Номенклатура КАК Номенклатура
      ГДЕ
          Номенклатура.Ссылка В ИЕРАРХИИ (&Ссылка)
      ;

      ////////////////////////////////////////////////////////////////////////////////
      ВЫБРАТЬ
          РеализацияТоваровТовары.Номенклатура КАК Номенклатура,
          РеализацияТоваровТовары.Количество КАК Количество
      ПОМЕСТИТЬ ВТ_Количество
      ИЗ
          Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары
      ;

      ////////////////////////////////////////////////////////////////////////////////
      ВЫБРАТЬ
          РеализацияТоваровТовары.Номенклатура КАК Номенклатура,
          РеализацияТоваровТовары.Сумма КАК Сумма
      ПОМЕСТИТЬ ВТ_Сумма
      ИЗ
          Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары
      ;

      ////////////////////////////////////////////////////////////////////////////////
      ВЫБРАТЬ
          ВТ_Номенклатура.Ссылка КАК Ссылка,
          ВТ_Количество.Количество КАК Количество,
          ВТ_Сумма.Сумма КАК Сумма
      ИЗ
          ВТ_Номенклатура КАК ВТ_Номенклатура
              ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Количество КАК ВТ_Количество
              ПО (ВТ_Номенклатура.Ссылка = ВТ_Количество.Номенклатура)
              ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Сумма КАК ВТ_Сумма
              ПО (ВТ_Номенклатура.Ссылка = ВТ_Сумма.Номенклатура)

      При помощи нового конструктора получилось сделать такой запрос. На закладке Связи перетаскивал значки таблиц ВТ_Сумма и ВТ_Количество последовательно поверх ВТ_Номенклатура. Выглядит это вот так:

  4. Baloo сказал:

    При использовании метода “Показать()” вместо “ОткрытьМодально()” в параметр “Текст” процедуры “ОткрытьКонструкторЗапросаЗавершение” всегда передается текст запроса, даже в случае нажатия “Отмены”.
    Платформа 8.3.5.1098.

    • Василий Ханевич сказал:

      Добрый день!
      Проверял на платформе 8.3.5.1460. Работает корректно и в толстом, и тонком клиенте. Если конструктор закрыли по кнопке OK, то передается текст запроса, в противном случае – Неопределено.

      • Baloo сказал:

        Возможно в более новых версиях платформы и работает, но именно на 8.3.5.1098 работает так, как описал.

        • Василий Ханевич сказал:

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

  5. Евгений сказал:

    Есть особенность: почему-то не получается определить таблицу
    ДоступнаяТаблицаРасходТовараТовары = Пакет.ДоступныеТаблицы.Найти(“Документ.РасходТовара.Товары”);

    без предварительного определения таблицы

    ДоступнаяТаблицаРасходТовара = Пакет.ДоступныеТаблицы.Найти(“Документ.РасходТовара”);

    Потратил немало времени в недоумении, пока не скопипастил код из примера. Может кому-нибудь информация окажется полезной.

  6. Dimasmos сказал:

    Консоль запросов в тонком клиенте сырая. При попытке настроить связи для запроса выдает ошибки. Хотя такой же запрос в толстом клиенте отрабатывает нормально.
    Будем ждать пока 1С исправят косяки в новых версиях платформы.

    • hanv сказал:

      Да, есть такая проблема, будем ждать:)
      Кроме этой ошибки также в версии 8.3.5.993 (для тестирования) исправлена ошибка 10139831
      “Конструктор запроса для тонкого клиента не позволяет вводить имя временной таблицы, начинающееся со знака &.”

      А также ошибка 30004621 исправлена в версии 8.3.5.823 (для тестирования)
      “При передаче в конструктор объекта КонструкторЗапроса текста запроса, в котором используется неопределенная временная таблица, диагностируется ошибка
      Неверные параметры”.

      • Dimasmos сказал:

        Василий, у вас в коде небольшая описка. Написано:

        Оповещение = Новый ОписаниеОповещения(“ОткрытьКонструкторЗапросаЗавершение”,
        ЭтотОбъект);

        А рабочий вариант:

        Оповещение = Новый ОписаниеОповещения(“ОткрытьКонструкторЗапросаЗавершение”,
        ЭтаФорма);

        • hanv сказал:

          Для управляемой формы, команды командного интерфейса и общего модуля реализовано свойство ЭтотОбъект. Данное свойство не поддерживается в режиме совместимости с версией 8.3.2. Свойство ЭтаФорма объекта УправляемаяФорма удалено и поддерживается для совместимости.
          УправляемаяФорма.ЭтотОбъект содержит данную форму. Может быть использовано в модуле формы для получения данной формы и передачи ее в качестве параметра в другие формы, глобальные процедуры и функции и т.д.

  7. Александр сказал:

    Спасибо интересно! Я правильно понимаю что это развитие в том числе идет к тому чтобы использовать запросы на мобильной платформе работая через СхемаЗапроса ?

    • hanv сказал:

      На текущий момент объект СхемаЗапроса доступен на сервере, под толстым клиентом и во внешнем соединении. А вот в мобильной платформе реализована возможность работы с произвольными запросами, в том числе и в динамических списках. Так что не исключено, что и СхемаЗапроса появится. Но пока достоверной информации о таких планах не располагаем.

  8. qwed сказал:

    Добрый день. Вот здесь http://v8.1c.ru/o7/201401query/index.htm говориться :”Вы можете создать пустую схему запроса конструктором и загрузить в неё имеющийся текст запроса”. Что за конструктор, как его запустить и как им пользоваться, можете объяснить?

    • hanv сказал:

      Добрый день. Имеется в виду конструктор объекта во встроенном языке при помощи ключевого слова Новый:

      СхемаЗапроса = Новый СхемаЗапроса;

      А для загрузки имеющегося текста запроса выполнить:

      СхемаЗапроса.УстановитьТекстЗапроса(...);
  9. Александр сказал:

    По СхемеЗапроса сомневаюсь, что получилось упрощение. Громоздкости похоже будет раза в полтора больше + трудность восприятия. Даже на приведенном примере типовой пример из УТ смотрится понятнее, чем схему разбирать. Насчет внешних улучшений конструктора у меня тоже сомнения – что это будет удобнее, чем было раньше.

  10. Roza Aleksey сказал:

    Так они просто создали новый класс КонструкторЗапроса!? Хм, что то это у меня возникают смутные сомнения о полезности. Да еще какой то класс СхемаЗапроса появился. Что то все больше усложнений появляется в 8.3.

    • hanv сказал:

      Класс КонструкторЗапроса был доступен и раньше, но только под толстым клиентом.

  11. Михаил сказал:

    Очередной мыльный пузырь от 1с! Когда же наконец пудет реализована многоядерность? Базы, даже для самый небольших фирм, уже давно перевалили за 1ГБ. Даже такие операции как глобальный поиск проходят в одном потоке! Позорники!

  12. Евгений сказал:

    Улучшения наглядности не увидел. Пока вижу один способ применения нового механизма – создание обычного запроса для одного из случаев его применения. Потом преобразование в схему и модификация в зависимости от входящих параметров.

  13. Escander сказал:

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

    • hanv сказал:

      Например, консоль запросов, которая будет открываться в тонком клиенте и веб-клиенте. А до этого необходимо было открывать только под толстым клиентом.
      А если вы про схему запроса, то тут идея в том, чтобы системнее и нагляднее редактировать текст существующего запроса при помощи свойств объекта СхемаЗапроса. При этом не надо будет “разрывать” текст запроса на набор отдельных строчек, запрос по-прежнему можно будет открыть в конструкторе.
      Ждем, как это будет выглядеть на практике в сложных запросах типовых конфигураций:)

  14. Игорь сказал:

    Спасибо!
    Ну наконец-то
    Очень полезная информация
    Сплошные хорошие новости в статьях

    • Евгений Гилев (Мастер-тренер) сказал:

      Если ссылка дана с целью отдать обработку во внешний мир – готовы опубликовать ее прямо в статье, с указание авторства.

      Если с целью заработать несколько стартмани, ссылка будет удалена.

        • Ольга Трикоз сказал:

          Добрый день! Спасибо, ссылку на обработку вынесли в статью.

          • BigB сказал:

            Ольга, пожалуйста уберите из шапки мою фамилию, имя и город. Не светите меня. Оставьте просто ник: BigB

        • Аноним сказал:

          В консоли ошибка – выдает ошибку при обращении через точку к табличной части.
          Например: ВЫБРАТЬ ПЕРВЫЕ 1
          ПеремещениеТоваров.Ссылка КАК Ссылка,
          ПеремещениеТоваров.Товары.(
          Ссылка КАК Ссылка,
          НомерСтроки КАК НомерСтроки,
          ….

          • Василий Ханевич сказал:

            Добрый день!
            На демоконфигурации Управляемое приложение ошибка не воспроизвелась. Составил при помощи консоли такой запрос:

            ВЫБРАТЬ ПЕРВЫЕ 1
                ПриходТовара.Ссылка КАК Ссылка,
                ПриходТовара.Товары.(
                    Ссылка КАК Ссылка,
                    НомерСтроки КАК НомерСтроки,
                    Товар КАК Товар,
                    Цена КАК Цена,
                    Количество КАК Количество,
                    Сумма КАК Сумма
                )
            ИЗ
                Документ.ПриходТовара КАК ПриходТовара

            Этот запрос получилось составить при помощи конструктора запроса, а также наоборот – открыть в конструкторе ранее написанный запрос.
            Какая ошибка у вас появляется?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Мы используем файлы cookies, чтобы сделать сайт удобнее.
Продолжая просмотр сайта, Вы соглашаетесь с их использованием.
Подробнее