Ленивые запросы SQL (1С++) для 7.7 на русском
Разработка - Инструментарий разработчика
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Обработка сырая, буду благодарен за советы и обнаруженные баги фичи :)
пример запроса:
ВЫБРАТЬ РАЗЛИЧНЫЕ
!Журнал.(ДатаДок) ДатаДок,
Журнал.%НомерДок НомерДок,
Журнал.%ИДДок /Док Документ.РасходнаяНакладная/,
%РН.Контрагент /Контрагент Справочник.Контрагенты/
%%РН.ТипУчета ТипУчета,
Контрагенты.ТипЦен( %РН.Контрагент, !Журнал.(ДатаДок) )
ТипЦенКонтрагента,
Журнал.%Проведен Проведен
ИЗ
ДокументСтроки.РасходнаяНакладная сРН
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
%Журнал% Журнал ПО Журнал.%ИДДок = сРН.%ИДДок
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
Документ.РасходнаяНакладная РН ПО РН.%ИДДок = Журнал.%ИДДок
ГДЕ
Журнал.%ДатаДок между :НачДата AND :КонДата~
И %сРН.Товар = #Товары
И %%РН.Фирма <> ПустойИД
ИЛИ лТрим(рТрим(%%ДокРН.Основание)) подобно '%\[%\]%' экран '\'
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ ПЕРВЫЕ 100
!Журнал.(ДатаДок) ДатаДок,
Журнал.%НомерДок НомерДок,
Журнал.%ИДДок /Док Документ.ПриходнаяНакладная/,
%ПН.Контрагент /Контрагент Справочник.Контрагенты/
%%ПН.ТипУчета ТипУчета,
Контрагенты.ТипЦен( %ПН.Контрагент, !Журнал.(ДатаДок) )
ТипЦенКонтрагента,
Журнал.%Проведен Проведен
ИЗ
ДокументСтроки.ПриходнаяНакладная сПН
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
%Журнал% Журнал ПО Журнал.%ИДДок = сПН.%ИДДок
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
Документ.ПриходнаяНакладная ПН ПО ПН.%ИДДок = Журнал.%ИДДок
ГДЕ
Журнал.%ДатаДок между :НачДата AND :КонДата~
И %сПН.Товар = #Товары
И %%ПН.Фирма <> ПустойИД
************** Правила составления ленивого запроса ******************
Вместо $ можно ставить % перед псевдонимами таблиц и полей,
регистров, периодических реквизитов и спецконстант ПустойИД ил ПустойИД13:
%Справочник.Товары
вместо
$Справочник.Товары
%Товары.Цена
вместо
$Товары.Цена
%ДокПриходнаяНакладная.Контрагент
вместо
$ДокПриходнаяНакладная.Контрагент
Обращение к периодическому реквизиту:
%ПоследнееЗначение.Контрагент.Глубина(
или
ПоследнееЗначение.Контрагент.Глубина(
или просто
Контрагент.Глубина(
Вместо
$ПоследнееЗначение.Контрагент.Глубина( и так далее.
В типизации полей и в объявлении таблиц можно вовсе пропускать $ или %:
СпрТовар.ID as [Товар Справочник.Товары]
вместо
СпрТовар.ID as [Товар $Справочник.Товары]
FROM ДокПриходнаяНакладная.Контрагент
вместо
FROM $ДокПриходнаяНакладная.Контрагент
Типизация полей может быть заключена между символами
СпрТовар.ID as /Товар Справочник.Товары/
вместо
СпрТовар.ID as [Товар $Справочник.Товары]
Обращение к общим реквизитам через двойной %
пишем
%%Журнал.ТипУчета
вместо
Журнал.$ОбщийРеквизит.ТипУчета
Преобразование поля Date_Time_IDDoc в дату выглядит так:
!Журнал.(ДатаДок)
в запрос пойдет строка
CAST( Left(Журнал.Date_Time_IDDoc, 8) as DateTime )
Часто импользуемые поля, состоящие из латинских символов заменены на кириллические.
Все правила замен устанавливаются в функции запросПравилаЗаменыИменПолей()
Например, вместо
ДокРасходнаяНакладная.IDDoc
пишем
ДокРасходнаяНакладная.%ИДДок
вместо
СправочникКонтрагенты.isFolder
пишем
СправочникКонтрагенты.%ЭтоГруппа
вместо
ДокПриходнаяНакладная.Closed & 1
пишем
ДокПриходнаяНакладная.%Проведен
Вместо _1SJourn можно писать %Журнал%
Вместо and/or/not можно писать и/или/не
В условиях можно писать
Поле = #ВременнаяТаблица
вместо
Поле in ( select Val from #ВременнаяТаблица )
или
Поле <> #ВременнаяТаблица
вместо
Поле not in ( select Val from #ВременнаяТаблица )
Вступайте в нашу телеграмм-группу Инфостарт