Skip to content
лого - блог 1с программиста

Блог 1С программиста

Наработки, заметки и другая информация по 1С

  • Главная
  • Типовые конфигурации
    • ЗУП 3.1
      • Разработка
        • Обработки
        • Отчеты
        • Печатные формы
        • Расширения
      • Инструкции
      • Ответы техподдержки 1С
      • Общие вопросы
    • ДО 2.1
    • УХ 3.2
    • УПП 1.3
  • Интеграции и обмены
  • Шаблоны и заготовки
    • Типовые приемы
    • Отчеты
    • Обработки
    • Печатные формы
    • Расширения
  • Платформа 1С
  • Разработки
    • Контакты
  • Toggle search form

«Схема запросов» в примерах

Posted on 20 октября 23 г.19 августа 24 г. By Алексей 3 комментария к записи «Схема запросов» в примерах

Содержание:

  • Файлы материала
  • Описание
  • Выбор: Разрешенные, Различные, Первые
  • Добавление поля в запрос
  • Группировка по полю
  • Добавление условия
  • Добавление левого соединения
  • Добавление вложенного запроса
  • Помещение во временную таблицу
Файлы материала
Обработка «Примеры по работе со схемой запросов» (УФ)Скачать
Схема запросов 1С с примерами
Описание

При доработке конфигурации, периодически требуется изменить существующий «Запрос». Раньше такая задача решалась с помощью строковой функции по типу СтрЗаменить(«ТекстЗапроса», «Поле КАК Поле», «Поле КАК Поле, МоеПоле КАК МоеПоле»).

Такой подход не всегда удобен и может привести к ошибкам после изменения исходного запроса в обновлении.

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

Ниже приведены примеры по работе со схемой запроса:

Выбор: Разрешенные, Различные, Первые
Выбор: Разрешенные, Различные, Первые
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Инициализация схемы запроса
СхемаЗапроса = Новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(ТекстЗапросаДо);
 
ПоследнийЗапросПакета = СхемаЗапроса.ПакетЗапросов[СхемаЗапроса.ПакетЗапросов.Количество() - 1];
ОператорПоследнегоЗапроса = ПоследнийЗапросПакета.Операторы[0];
 
// Установка выбора: Разрешенные, Различные, Первые
ПоследнийЗапросПакета.ВыбиратьРазрешенные = Истина;
ОператорПоследнегоЗапроса.ВыбиратьРазличные = Истина;
ОператорПоследнегоЗапроса.КоличествоПолучаемыхЗаписей = 100;
 
// Получение результата
ТекстЗапросаПосле = СхемаЗапроса.ПолучитьТекстЗапроса();
Добавление поля в запрос
Добавление поля в запрос
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
// Инициализация схемы запроса
СхемаЗапроса = Новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(ТекстЗапросаДо);
ПоследнийЗапросПакета = СхемаЗапроса.ПакетЗапросов[СхемаЗапроса.ПакетЗапросов.Количество() - 1];
ОператорПоследнегоЗапроса = ПоследнийЗапросПакета.Операторы[0];
// Установка поля в схему запроса
ОператорПоследнегоЗапроса.ВыбираемыеПоля.Добавить("Сотрудники.ФизическоеЛицо");
ПоследнийЗапросПакета.Колонки[ПоследнийЗапросПакета.Колонки.Количество()-1].Псевдоним = "ФизическоеЛицо";
 
// Получение результата
ТекстЗапросаПосле = СхемаЗапроса.ПолучитьТекстЗапроса();
Группировка по полю
Сгруппировать по полю в схеме запросов
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Инициализация схемы запроса
СхемаЗапроса = Новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(ТекстЗапросаДо);
 
ПоследнийЗапросПакета = СхемаЗапроса.ПакетЗапросов[СхемаЗапроса.ПакетЗапросов.Количество() - 1];
ОператорПоследнегоЗапроса = ПоследнийЗапросПакета.Операторы[0];
 
// Установка поля с агрегатной функцией в схему запроса
// При появлении в полях выбора агрегатной функции, остальные поля автоматически попадают в раздел "СГРУППИРОВАТЬ ПО"
ОператорПоследнегоЗапроса.ВыбираемыеПоля.Добавить("КОЛИЧЕСТВО(Сотрудники.Код)");
ПоследнийЗапросПакета.Колонки[ПоследнийЗапросПакета.Колонки.Количество()-1].Псевдоним = "КоличествоКод";
 
// Получение результата
ТекстЗапросаПосле = СхемаЗапроса.ПолучитьТекстЗапроса();
Добавление условия
Добавление условия в запрос
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
// Инициализация схемы запроса
СхемаЗапроса = Новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(ТекстЗапросаДо);
ПоследнийЗапросПакета = СхемаЗапроса.ПакетЗапросов[СхемаЗапроса.ПакетЗапросов.Количество() - 1];
ОператорПоследнегоЗапроса = ПоследнийЗапросПакета.Операторы[0];
// Установка условия в схему запроса
ОператорПоследнегоЗапроса.Отбор.Добавить("Сотрудники.ПометкаУдаления = Ложь");
 
// Получение результата
ТекстЗапросаПосле = СхемаЗапроса.ПолучитьТекстЗапроса();
Добавление левого соединения
Добавление левого соединения в запрос
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Инициализация схемы запроса
СхемаЗапроса = Новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(ТекстЗапросаДо);
 
ПоследнийЗапросПакета = СхемаЗапроса.ПакетЗапросов[СхемаЗапроса.ПакетЗапросов.Количество() - 1];
ОператорПоследнегоЗапроса = ПоследнийЗапросПакета.Операторы[0];
 
// Установка левого соединения в схему запроса
ИсточникСотрудники = ОператорПоследнегоЗапроса.Источники[0];
ПсевдонимИсточникаСотрудники = ИсточникСотрудники.Источник.Псевдоним;
ИсточникКадроваяИстория = ОператорПоследнегоЗапроса.Источники.Добавить("РегистрСведений.КадроваяИсторияСотрудников", "КадроваяИсторияСотрудников");
ИсточникКадроваяИстория.Соединения.Очистить();
 
УсловиеСоединения = ПсевдонимИсточникаСотрудники + ".Ссылка = КадроваяИсторияСотрудников.Сотрудник";
ИсточникСотрудники.Соединения.Добавить(ИсточникКадроваяИстория.Источник.Псевдоним, УсловиеСоединения);
 
УсловиеСоединения = ПсевдонимИсточникаСотрудники + ".ФизическоеЛицо = КадроваяИсторияСотрудников.ФизическоеЛицо";
ИсточникСотрудники.Соединения.Добавить(ИсточникКадроваяИстория.Источник.Псевдоним, УсловиеСоединения);
 
// Получение результата
ТекстЗапросаПосле = СхемаЗапроса.ПолучитьТекстЗапроса();
Добавление вложенного запроса
Добавление вложенного запроса в схему запросов
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Инициализация схемы запроса
СхемаЗапроса = Новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(ТекстЗапросаДо);
 
ПоследнийЗапросПакета = СхемаЗапроса.ПакетЗапросов[СхемаЗапроса.ПакетЗапросов.Количество() - 1];
ОператорПоследнегоЗапроса = ПоследнийЗапросПакета.Операторы[0];
 
// Добавление вложенного запроса в источники
ВложенныйЗапрос = "ВЫБРАТЬ
                  | ГрафикРаботыСотрудников.Сотрудник КАК Сотрудник,
                  | ГрафикРаботыСотрудников.ГрафикРаботы КАК ГрафикРаботы
                  |ИЗ
                  | РегистрСведений.ГрафикРаботыСотрудников КАК ГрафикРаботыСотрудников";
ИсточникВложенныйЗапрос = ОператорПоследнегоЗапроса.Источники.Добавить(Тип("ВложенныйЗапросСхемыЗапроса"), "ВложенныйЗапросСГрафиками");
ИсточникВложенныйЗапрос.Источник.Запрос.УстановитьТекстЗапроса(ВложенныйЗапрос);
 
// Установка левого соединения с вложенным запросом
ИсточникСотрудники = ОператорПоследнегоЗапроса.Источники[0];
ИсточникВложенныйЗапрос.Соединения.Очистить();
 
УсловиеСоединения = ИсточникСотрудники.Источник.Псевдоним + ".Ссылка = " + ИсточникВложенныйЗапрос.Источник.Псевдоним + ".Сотрудник";
ИсточникСотрудники.Соединения.Добавить(ИсточникВложенныйЗапрос.Источник.Псевдоним, УсловиеСоединения);
 
// Получение результата
ТекстЗапросаПосле = СхемаЗапроса.ПолучитьТекстЗапроса();
Помещение во временную таблицу
Помещение во временную таблицу в запрос
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
// Инициализация схемы запроса
СхемаЗапроса = Новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(ТекстЗапросаДо);
 
ПоследнийЗапросПакета = СхемаЗапроса.ПакетЗапросов[СхемаЗапроса.ПакетЗапросов.Количество() - 1];
 
// Установка временной таблицы
ПоследнийЗапросПакета.ТаблицаДляПомещения = "ВТСотрудники";
 
// Получение результата
ТекстЗапросаПосле = СхемаЗапроса.ПолучитьТекстЗапроса();

Далеко не полный перечень возможностей «Схемы запросов». Со временем будет дополняться. Так же в начале описания доступна обработка для скачивания.

Рекомендации

  • Обработка "Выплата сотруднику через банк" ЗУП 3.1
  • Обработка по поиску некорректных адресов сотрудников
  • Изменение текста XML в "Хранилище Значений"
ЗУП 3.1, Обработки, Типовые приемы, Шаблоны и заготовки Tags:схема запросов

Навигация по записям

Previous Post: Шаблон сохранения настроек для внешней обработки
Next Post: Изменение текста XML в «Хранилище Значений»

Комментарии (3) on “«Схема запросов» в примерах”

  1. Сергей:
    2 апреля 24 г. в 14:52

    Спасибо! Очень хорошо и понятно расписано

    Ответить
  2. Владимир:
    11 ноября 24 г. в 00:47

    Спасибо, полезный материал!

    Ответить
  3. Станислав:
    13 января 26 г. в 10:44

    Спасибо! Очень полезный материал.

    Ответить

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

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

ДзенTelegram

Разработки

  • Печатная форма "Расходный кассовый ордер" для ЗУП 3.1 Печатная форма "Расходный кассовый ордер" ЗУП 3.1 650,00 ₽
  • Отчет "План-факт отпусков сотрудников в виде диаграммы Ганта Отчет "План-факт по отпускам сотрудников" ЗУП 3.1 650,00 ₽
  • Приказ об отмене трудового договора (рис 1) Печатная форма "Отмена приема на работу" ЗУП 3.1 650,00 ₽
  • Обработка “Выплата сотруднику через банк” ЗУП 3.1 Обработка “Выплата сотруднику через банк” ЗУП 3.1 0,00 ₽
  • Тестирование API Яндекс GPT Обработка "Работа с API YandexGPT" 650,00 ₽

MDM web-сервис XML БСП ЕФС-1 ИИ КД 2.0 НДФЛ СЗВ-СТАЖ СЗВ-ТД СКД СТД-Р СФР СЭДО ФСС ФСС НС больничные листы взносы вычеты длительная операция запрос интерфейс кадровая история кадровые данные кадровые переводы легкий труд мастер-данных обмен данными общий модуль отбор отпуска печать без проверки печать с диалогом пользователи представление прием на работу резервы отпусков сверхурочные синхронизация ЗУП и БП средний заработок табель таблица периодов табличный документ фотография штатное расписание

Яндекс.Метрика

© 2022-2026 myblog-1c.ru

Пользовательское соглашение

Контакты