Приветствую Вас ГостьПонедельник, 29.04.2024, 10:46

Каталог статей

В категории материалов: 10
Показано материалов: 1-10


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

Запросы | Просмотров: 33 | Добавил: leshic | Дата: 29.02.2024 | Комментарии (0)

Консоль запроса с редактированием данных

Запросы | Просмотров: 36 | Добавил: leshic | Дата: 20.02.2024 | Комментарии (0)

Начиная с платформы 8.3.22 в запросах можно использовать новые функции и операторы:

УНИКАЛЬНЫЙИДЕНТИФИКАТОР(Ссылка) - Возвращает значение типа УникальныйИдентификатор. Если NULL, то возвращает NULL
Строка(String) – преобразует значение в примитивного типа в строку с учетом национальных установок.
Тригонометрические функции Sin, Cos, Tan, ASin, ACos, ATan (все вычисления производятся в радианах)
Exp - вычисляет результат возведения основания натурального логарифма (числа e) в степень
Log - вычисляет натуральный логарифм числа.
Log10 - вычисляет десятичный логарифм числа.
Pow -  вычисляет возведение в степень.
Sqrt – вычисляет квадратный корень.
Окр(Round) - округляет исходное число до нужной разрядности
Цел(Int) - вычисляет целую часть переданного числа, полностью отсекая дробную часть.
ДлинаСтроки(StringLength) – вычисляет длину строки.
СокрЛ(TrimL) – отбрасывает незначащие пробелы слева.
СокрП(TrimR) – отбрасывает незначащие пробелы справа.
СокрЛП(TrimAll) – отбрасывает незначащие пробелы слева и справа.
Лев(Left) – получает первые слева символы строки.
Прав(Right) – получает первые справа символы строки.
СтрНайти(StrFind) – находит первую позицию подстроки в строке (без учета регистра).
ВРег(Upper) – преобразует все символы строки в верхний регистр.
НРег(Lower) – преобразует все символы строки в нижний регистр.
СтрЗаменить(StrReplace) – заменяет все вхождения подстроки на другую подстроку (без учета регистра).
РазмерХранимыхДанных(StoredDataSize) – возвращает размер данных в байтах, которые занимают данные параметра.
АВТОНОМЕРЗАПИСИ() - возвращает номер записи в запросе. Работает только в временных таблицах.

Запросы | Просмотров: 786 | Добавил: leshic | Дата: 19.01.2023

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

ВЫБРАТЬ
    568093.567 КАК число
ПОМЕСТИТЬ втЧисло
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    //исходное число
    втЧисло.число КАК число,
    
    //разбор по символам для наглядности
    ВЫРАЗИТЬ(втЧисло.число / 100000 - 0.5 КАК ЧИСЛО(10, 0)) КАК Поле1,
    (ВЫРАЗИТЬ(втЧисло.число / 10000 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 100000 - 0.5 КАК ЧИСЛО(10, 0))) * 10 КАК Поле2,
    (ВЫРАЗИТЬ(втЧисло.число / 1000 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 10000 - 0.5 КАК ЧИСЛО(10, 0))) * 10 КАК Поле3,
    (ВЫРАЗИТЬ(втЧисло.число / 100 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 1000 - 0.5 КАК ЧИСЛО(10, 0))) * 10 КАК Поле4,
    (ВЫРАЗИТЬ(втЧисло.число / 10 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 100 - 0.5 КАК ЧИСЛО(10, 0))) * 10 КАК Поле5,
    (ВЫРАЗИТЬ(втЧисло.число / 1 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 10 - 0.5 КАК ЧИСЛО(10, 0))) * 10 КАК Поле6,
    "." КАК Поле7,
    (ВЫРАЗИТЬ(втЧисло.число * 10 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число * 1 - 0.5 КАК ЧИСЛО(10, 0))) * 10 КАК Поле8,
    (ВЫРАЗИТЬ(втЧисло.число * 100 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число * 10 - 0.5 КАК ЧИСЛО(10, 0))) * 10 КАК Поле9,
    (ВЫРАЗИТЬ(втЧисло.число * 1000 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число * 100 - 0.5 КАК ЧИСЛО(10, 0))) * 10 КАК Поле10,
    
    //преобразование в строку
    ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число / 100000 - 0.5 КАК ЧИСЛО(10, 0))) + 1, 1) 
    + ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число / 10000 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 100000 - 0.5 КАК ЧИСЛО(10, 0))) * 10 + 1, 1) 
    + ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число / 1000 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 10000 - 0.5 КАК ЧИСЛО(10, 0))) * 10 + 1, 1) 
    + ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число / 100 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 1000 - 0.5 КАК ЧИСЛО(10, 0))) * 10 + 1, 1) 
    + ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число / 10 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 100 - 0.5 КАК ЧИСЛО(10, 0))) * 10 + 1, 1) 
    + ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число / 1 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 10 - 0.5 КАК ЧИСЛО(10, 0))) * 10 + 1, 1) 
    + "." 
    + ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число * 10 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число * 1 - 0.5 КАК ЧИСЛО(10, 0))) * 10 + 1, 1) 
    + ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число * 100 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число * 10 - 0.5 КАК ЧИСЛО(10, 0))) * 10 + 1, 1) 
    + ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число * 1000 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число * 100 - 0.5 КАК ЧИСЛО(10, 0))) * 10 + 1, 1) 
    + "" КАК ЧислоСтрокой
ИЗ
    втЧисло КАК втЧисло

Запросы | Просмотров: 360 | Добавил: leshic | Дата: 06.12.2022 | Комментарии (0)

Источник: https://infostart.ru/1c/articles/980323/

Предложенная автором форма запроса по его словам сокращает время выполнения запроса на 25 процентов

Запросы | Просмотров: 245 | Добавил: leshic | Дата: 29.11.2022 | Комментарии (0)

Нашел запрос, который сначала мне показался странным, но потом, при внимательном рассмотрении, вполне рабочим:

      ВЫБРАТЬ
          Сотрудники.ФизическоеЛицо КАК ФизЛицо
      ИЗ
          РегистрСведений.Сотрудники КАК Сотрудники
      СГРУППИРОВАТЬ ПО
          Сотрудники.ФизическоеЛицо
      ИМЕЮЩИЕ
          КОЛИЧЕСТВО(Сотрудники.ФизическоеЛицо) > 1

ФизическоеЛицо - это измерение регистра сведений Сотрудники. Получается группируем по измерению и тут же отбираем записи, количество которых больше 1.

Запрос перестает казаться странным, если "КОЛИЧЕСТВО(Сотрудники.ФизическоеЛицо)" перенести в блок "Выбрать":

      ВЫБРАТЬ
          Сотрудники.ФизическоеЛицо КАК ФизЛицо,
          КОЛИЧЕСТВО(Сотрудники.ФизическоеЛицо) КАК КоличествоФЛ
      ИЗ
          РегистрСведений.Сотрудники КАК Сотрудники
      СГРУППИРОВАТЬ ПО
          Сотрудники.ФизическоеЛицо
      ИМЕЮЩИЕ
          КОЛИЧЕСТВО(Сотрудники.ФизическоеЛицо) > 1

 

Запросы | Просмотров: 312 | Добавил: leshic | Дата: 30.05.2022 | Комментарии (0)

Если в конфигурации используется БСП, то при отладке нужно вычислять функцию "ОбщегоНазначения.ЗапросВСтрокуXML(Запрос)". Скопировать полученный тест XML и вставить его в консоли запросов (Все действия / Заполнить из XML)

Запросы | Просмотров: 325 | Добавил: leshic | Дата: 26.05.2021 | Комментарии (0)

За основу взята статья https://its.1c.ru/db/v8std#content:657:hdoc

Описываются правила построения и оптимизация запросов

 

Запросы | Просмотров: 398 | Добавил: leshic | Дата: 16.12.2019 | Комментарии (0)

Можно обратиться к таблице по имени и выполнить ПолучитьДанные. В результате вернется тип "Результат запроса". 

тзТаблицаРабот     = пТаблицаРаботИсточник.Таблицы["ТаблицаРабот"].ПолучитьДанные().Выгрузить();

здесь пТаблицаРаботИсточник - это МенеджерВременныхТаблиц

Запросы | Просмотров: 380 | Добавил: leshic | Дата: 22.04.2019 | Комментарии (0)

1. Получаем временные таблицы запроса

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

 

2. Получаем временную таблицу для отладки. Затем мы обращаемся к нужной нам для отладки временной таблице, добавляя Получить(<Индекс таблицы>)

3. Получаем непосредственно данные

Использование метода ПолучитьДанные() позволяет получить коллекцию РезультатЗапроса непосредственно для выбранной временной таблицы.
Далее, применяя метод Выгрузить() — получаем таблицу значений, содержащую непосредственно отлаживаемые данные.
В случае отладки непосредственно таблицы с индексом 0 (как известно, индексы и нумерация в 1С начинается с нуля) получение данных выполняется с помощью вычисления следующей строки:
Запрос.МенеджерВременныхТаблиц.Таблицы.Получить(0).ПолучитьДанные().Выгрузить()

Запросы | Просмотров: 409 | Добавил: leshic | Дата: 22.04.2019 | Комментарии (0)


Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [40]
Администрирование [34]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [28]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0