Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 мая 2024, 03:04

Вторник. Вопрос 5

Автор mixqn, 12 мар 2013, 00:51

0 Пользователей и 1 гость просматривают эту тему.

aprol

ВЫБРАТЬ
      ЛимитыКредиторскойЗадолженности.Организация КАК Организация,
      ЛимитыКредиторскойЗадолженности.Контрагент КАК Контрагент,
      ЛимитыКредиторскойЗадолженности.Договор КАК Договор,
      СУММА(ЛимитыКредиторскойЗадолженности.Сумма) КАК Сумма
Поместить ЛимитыКредиторскойЗадолженности
ИЗ
      РегистрСведений.ЛимитыКредиторскойЗадолженности КАК ЛимитыКредиторскойЗадолженности
ГДЕ
      ЛимитыКредиторскойЗадолженности.Организация = &Организация
      И (ЛимитыКредиторскойЗадолженности.Договор.ДоговорСПодрядчиком
             ИЛИ ЛимитыКредиторскойЗадолженности.Договор.ДоговорСПоставщиком)
СГРУППИРОВАТЬ ПО
      ЛимитыКредиторскойЗадолженности.Организация,
      ЛимитыКредиторскойЗадолженности.Контрагент,
      ЛимитыКредиторскойЗадолженности.Договор
;

ВЫБРАТЬ
    ПоступлениеТоваровИУслуг.Ссылка,
    ПоступлениеТоваровИУслуг.Номер,
    ПоступлениеТоваровИУслуг.Договор,
    ПоступлениеТоваровИУслуг.Контрагент,
    ПоступлениеТоваровИУслуг.Организация,
    ПоступлениеТоваровИУслуг.Сумма,
    ПоступлениеТоваровИУслуг.Дата
ИЗ
    Документ.ПоступлениеТоваровИУслуг КАК ПоступлениеТоваровИУслуг
        ЛЕВОЕ СОЕДИНЕНИЕ ЛимитыКредиторскойЗадолженности КАК ЛимитыКредиторскойЗадолженности
        ПО ПоступлениеТоваровИУслуг.Контрагент = ЛимитыКредиторскойЗадолженности.Контрагент
            И ПоступлениеТоваровИУслуг.Договор = ЛимитыКредиторскойЗадолженности.Договор
ГДЕ
    (ПоступлениеТоваровИУслуг.Сумма < &МинимальнаяСуммаЗадолженности
            ИЛИ ПоступлениеТоваровИУслуг.Сумма < ЛимитыКредиторскойЗадолженности.Сумма)
    И (ПоступлениеТоваровИУслуг.Договор.ДоговорСПодрядчиком
            ИЛИ ПоступлениеТоваровИУслуг.Договор.ДоговорСПоставщиком)


1. тк у регистра 4ре измерения то сгруппировать придется оставить(для исключения перемножения множеств при соединении)
2. тк сгруппировать оставили, то вынесем вложенный запрос в виртуальную таблицу и соединятся будем уже с ней.
3. что бы уменьшить количество записей в виртуальной таблице добавим условие
        И (ЛимитыКредиторскойЗадолженности.Договор.ДоговорСПодрядчиком
             ИЛИ ЛимитыКредиторскойЗадолженности.Договор.ДоговорСПоставщиком)
    тк оно используется в результирующей выборке
4. непонятным осталось почему во вложенном запросе установлен отбор ко конкретной организации, а в итоговом не. Так то надо было бы либо исключить усорвие из вложенного запроса лиибо включить в итоговую.

Evga

Я бы сделал так:
ВЫБРАТЬ
ПоступлениеТоваровИУслуг.Ссылка,
ПоступлениеТоваровИУслуг.Номер,
ПоступлениеТоваровИУслуг.Договор,
ПоступлениеТоваровИУслуг.Контрагент,
ПоступлениеТоваровИУслуг.Организация,
ПоступлениеТоваровИУслуг.Сумма,
ПоступлениеТоваровИУслуг.Дата
ИЗ
Документ.ПоступлениеТоваровИУслуг КАК ПоступлениеТоваровИУслуг
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ЛимитыКредиторскойЗадолженности.Контрагент КАК Контрагент,
ЛимитыКредиторскойЗадолженности.Договор КАК Договор,
СУММА(ЛимитыКредиторскойЗадолженности.Сумма) КАК Сумма
ИЗ
РегистрСведений.ЛимитыКредиторскойЗадолженности КАК ЛимитыКредиторскойЗадолженности
ГДЕ
ЛимитыКредиторскойЗадолженности.Организация = &Организация
И (ЛимитыКредиторскойЗадолженности.Договор.ДоговорСПодрядчиком = ИСТИНА
ИЛИ ЛимитыКредиторскойЗадолженности.Договор.ДоговорСПоставщиком = ИСТИНА)

СГРУППИРОВАТЬ ПО
ЛимитыКредиторскойЗадолженности.Контрагент,
ЛимитыКредиторскойЗадолженности.Договор) КАК ЛимитыКредиторскойЗадолженности
ПО ПоступлениеТоваровИУслуг.Контрагент = ЛимитыКредиторскойЗадолженности.Контрагент
И ПоступлениеТоваровИУслуг.Договор = ЛимитыКредиторскойЗадолженности.Договор
ГДЕ
(ПоступлениеТоваровИУслуг.Сумма < &МинимальнаяСуммаЗадолженности
ИЛИ ПоступлениеТоваровИУслуг.Сумма < ЛимитыКредиторскойЗадолженности.Сумма)


1)Сделал бы внутреннее соединение, а не левое. Так как нам нужны только те документы, в которых сумма документа меньше суммы лимита. Если сумма лимита не будет установлена, то в запросе будет null. А при внутреннем соединении такого не будет и документы с контрагентами, у которых лимит не установлен - не попадут в выборку.
2)Условие на (Договор.ДоговорСПодрядчиком = ИСТИНА ИЛИ Договор.ДоговорСПоставщиком = ИСТИНА) перенес бы внутрь вложенного запроса, чтобы при условие на эти договора наложилось раньше. В предыдущем варианте условие накладывалось позже и сначала получится бОльшая таблица, а потом будет отсечение. В моем варианте будет при соединении получено таблица меньше.
3)Ну и выбирать организацию во вложенном запросе не вижу смысла, так как там идет жесткое условие на нее.

Spider244

ВЫБРАТЬ
ЛимитыКредиторскойЗадолженности.Организация КАК Организация,
ЛимитыКредиторскойЗадолженности.Контрагент КАК Контрагент,
ЛимитыКредиторскойЗадолженности.Договор КАК Договор,
СУММА(ЛимитыКредиторскойЗадолженности.Сумма) КАК Сумма
ПОМЕСТИТЬ ЛимитыКредиторскойЗадолженности
ИЗ
РегистрСведений.ЛимитыКредиторскойЗадолженности КАК ЛимитыКредиторскойЗадолженности
ГДЕ
ЛимитыКредиторскойЗадолженности.Организация = &Организация

СГРУППИРОВАТЬ ПО
ЛимитыКредиторскойЗадолженности.Организация,
ЛимитыКредиторскойЗадолженности.Контрагент,
ЛимитыКредиторскойЗадолженности.Договор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПоступлениеТоваровИУслуг.Ссылка,
ПоступлениеТоваровИУслуг.Номер,
ПоступлениеТоваровИУслуг.Договор,
ПоступлениеТоваровИУслуг.Контрагент,
ПоступлениеТоваровИУслуг.Организация,
ПоступлениеТоваровИУслуг.Сумма,
ПоступлениеТоваровИУслуг.Дата,
ЛимитыКредиторскойЗадолженности.Сумма КАК ЛимитыСумма
ПОМЕСТИТЬ ПоступлениеТоваровИУслуг
ИЗ
Документ.ПоступлениеТоваровИУслуг КАК ПоступлениеТоваровИУслуг
ЛЕВОЕ СОЕДИНЕНИЕ ЛимитыКредиторскойЗадолженности КАК ЛимитыКредиторскойЗадолженности
ПО ПоступлениеТоваровИУслуг.Контрагент = ЛимитыКредиторскойЗадолженности.Контрагент
И ПоступлениеТоваровИУслуг.Договор = ЛимитыКредиторскойЗадолженности.Договор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПоступлениеТоваровИУслуг.Ссылка,
ПоступлениеТоваровИУслуг.Номер,
ПоступлениеТоваровИУслуг.Договор,
ПоступлениеТоваровИУслуг.Контрагент,
ПоступлениеТоваровИУслуг.Организация,
ПоступлениеТоваровИУслуг.Сумма,
ПоступлениеТоваровИУслуг.Дата
ИЗ
ПоступлениеТоваровИУслуг КАК ПоступлениеТоваровИУслуг
ГДЕ
ПоступлениеТоваровИУслуг.Сумма < &МинимальнаяСуммаЗадолженности
И ПоступлениеТоваровИУслуг.Договор.ДоговорСПодрядчиком = ИСТИНА

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ПоступлениеТоваровИУслуг.Ссылка,
ПоступлениеТоваровИУслуг.Номер,
ПоступлениеТоваровИУслуг.Договор,
ПоступлениеТоваровИУслуг.Контрагент,
ПоступлениеТоваровИУслуг.Организация,
ПоступлениеТоваровИУслуг.Сумма,
ПоступлениеТоваровИУслуг.Дата
ИЗ
ПоступлениеТоваровИУслуг КАК ПоступлениеТоваровИУслуг
ГДЕ
ПоступлениеТоваровИУслуг.Сумма < &МинимальнаяСуммаЗадолженности
И ПоступлениеТоваровИУслуг.Договор.ДоговорСПоставщиком = ИСТИНА

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ПоступлениеТоваровИУслуг.Ссылка,
ПоступлениеТоваровИУслуг.Номер,
ПоступлениеТоваровИУслуг.Договор,
ПоступлениеТоваровИУслуг.Контрагент,
ПоступлениеТоваровИУслуг.Организация,
ПоступлениеТоваровИУслуг.Сумма,
ПоступлениеТоваровИУслуг.Дата
ИЗ
ПоступлениеТоваровИУслуг КАК ПоступлениеТоваровИУслуг
ГДЕ
ПоступлениеТоваровИУслуг.Сумма < ПоступлениеТоваровИУслуг.ЛимитыСумма
И ПоступлениеТоваровИУслуг.Договор.ДоговорСПодрядчиком = ИСТИНА

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ПоступлениеТоваровИУслуг.Ссылка,
ПоступлениеТоваровИУслуг.Номер,
ПоступлениеТоваровИУслуг.Договор,
ПоступлениеТоваровИУслуг.Контрагент,
ПоступлениеТоваровИУслуг.Организация,
ПоступлениеТоваровИУслуг.Сумма,
ПоступлениеТоваровИУслуг.Дата
ИЗ
ПоступлениеТоваровИУслуг КАК ПоступлениеТоваровИУслуг
ГДЕ
ПоступлениеТоваровИУслуг.Сумма < ПоступлениеТоваровИУслуг.ЛимитыСумма
И ПоступлениеТоваровИУслуг.Договор.ДоговорСПоставщиком = ИСТИНА


1. Вместо вложенного запроса используем временную таблицу, так как использование вложенных запросов может привести к значительному замедлению всего запроса.
2. Избавляемся от ИЛИ в секции ГДЕ (это может привести к тому, что СУБД не сможет использовать индексы таблиц и будет выполнять сканирование, что увеличит время работы запроса и вероятность возникновения блокировок). Для этого разбиваем весь запрос на несколько запросов и объединяем результаты.

evgeny.s

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

kereo

Для построения более оптимального плана запросов я создам две временные таблицы. При создании таблицы ВТ_Лимиты использую в отборе таблицу ВТ_Поступления для уменьшения количества строк в ВТ_Лимиты. В обеих таблицах создам индексы для более быстрого отбора и соединения между таблицами. Для исключения появления ошибки при выполнении запроса в условии после левого соединения использую функцию ЕстьNull().

ВЫБРАТЬ
    ПоступлениеТоваровИУслуг.Ссылка,
    ПоступлениеТоваровИУслуг.Номер,
    ПоступлениеТоваровИУслуг.Договор,
    ПоступлениеТоваровИУслуг.Контрагент,
    ПоступлениеТоваровИУслуг.Организация,
    ПоступлениеТоваровИУслуг.Сумма,
    ПоступлениеТоваровИУслуг.Дата
ПОМЕСТИТЬ ВТ_Поступления
ИЗ
    Документ.ПоступлениеТоваровИУслуг КАК ПоступлениеТоваровИУслуг
ГДЕ
    (ПоступлениеТоваровИУслуг.Организация = &Организация)
    И (ПоступлениеТоваровИУслуг.Договор.ДоговорСПодрядчиком = ИСТИНА
        ИЛИ ПоступлениеТоваровИУслуг.Договор.ДоговорСПоставщиком = ИСТИНА)

ИНДЕКСИРОВАТЬ ПО
    ПоступлениеТоваровИУслуг.Контрагент,
    ПоступлениеТоваровИУслуг.Договор,
    ПоступлениеТоваровИУслуг.Организация

;

ВЫБРАТЬ
    ЛимитыКредиторскойЗадолженности.Организация КАК Организация,
    ЛимитыКредиторскойЗадолженности.Контрагент КАК Контрагент,
    ЛимитыКредиторскойЗадолженности.Договор КАК Договор,
    СУММА(ЛимитыКредиторскойЗадолженности.Сумма) КАК Сумма
ПОМЕСТИТЬ ВТ_Лимиты
ИЗ
    РегистрСведений.ЛимитыКредиторскойЗадолженности КАК ЛимитыКредиторскойЗадолженности
ГДЕ
    (ЛимитыКредиторскойЗадолженности.Контрагент, ЛимитыКредиторскойЗадолженности.Договор, ЛимитыКредиторскойЗадолженности.Организация) В
    (ВЫБРАТЬ
            ПоступлениеТоваровИУслуг.Контрагент,
    ПоступлениеТоваровИУслуг.Договор,
    ПоступлениеТоваровИУслуг.Организация
ИЗ ВТ_Поступления КАК ПоступлениеТоваровИУслуг)
    СГРУППИРОВАТЬ ПО
ЛимитыКредиторскойЗадолженности.Организация,
        ЛимитыКредиторскойЗадолженности.Контрагент,
        ЛимитыКредиторскойЗадолженности.Договор

ИНДЕКСИРОВАТЬ ПО
    ЛимитыКредиторскойЗадолженности.Контрагент,
    ЛимитыКредиторскойЗадолженности.Договор,
    ЛимитыКредиторскойЗадолженности.Организация
;

ВЫБРАТЬ
    ПоступлениеТоваровИУслуг.Ссылка,
    ПоступлениеТоваровИУслуг.Номер,
    ПоступлениеТоваровИУслуг.Договор,
    ПоступлениеТоваровИУслуг.Контрагент,
    ПоступлениеТоваровИУслуг.Организация,
    ПоступлениеТоваровИУслуг.Сумма,
    ПоступлениеТоваровИУслуг.Дата
ИЗ
    ВТ_Поступления КАК ПоступлениеТоваровИУслуг
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЛимитыКредиторскойЗадолженности.Организация КАК Организация,
            ЛимитыКредиторскойЗадолженности.Контрагент КАК Контрагент,
            ЛимитыКредиторскойЗадолженности.Договор КАК Договор,
            ЛимитыКредиторскойЗадолженности.Сумма КАК Сумма
        ИЗ
            ВТ_Лимиты КАК ЛимитыКредиторскойЗадолженности) КАК ЛимитыКредиторскойЗадолженности
        ПО ПоступлениеТоваровИУслуг.Контрагент = ЛимитыКредиторскойЗадолженности.Контрагент
            И ПоступлениеТоваровИУслуг.Договор = ЛимитыКредиторскойЗадолженности.Договор
ГДЕ
    (ПоступлениеТоваровИУслуг.Сумма < &МинимальнаяСуммаЗадолженности
            ИЛИ ПоступлениеТоваровИУслуг.Сумма < ЕстьNull(ЛимитыКредиторскойЗадолженности.Сумма, 0))

DarKySiK

1. Подзапросы вынести во временные таблицы с индексацией полей соединения. Организация соединения, описанная в примере может привести к замедлению выполнения запроса.
2. Соединение сделать так же по организации, так как организация входит в основной индекс регистра. Это может ускорить время выполнения запроса.

Санчес

Вынести вложенный запрос во временную таблицу

techh

Не оптимально использовать вложенные запросы, т.к. системе сложно рассчитать количество записей в его результате, и, скорее всего, будет выбран неправильный план выполнения запроса. Вместо вложенных запросов лучше использовать временные таблицы.
 
Думаю, целесообразнее сначала выбрать ПоступленияТоваровИУслуг, в которых указан договор с подрядчиком или поставщиком, т.к., возможно, таких документов всего несколько штук, а при левом соединении (как в исходном запросе) будут сначала выбраны ВСЕ ПоступленияТоваровИУслуг, и только потом отброшены лишние.
 
Левое соединение заменил внутренним, и условие по сумме добавил в условие соединения, чтобы опять же СРАЗУ отбрасывались ненужные записи (уже на этапе соединения), а не после.

   
ВЫБРАТЬ
ЛимитыКредиторскойЗадолженности.Организация КАК Организация,
ЛимитыКредиторскойЗадолженности.Контрагент КАК Контрагент,
ЛимитыКредиторскойЗадолженности.Договор КАК Договор,
СУММА(ЛимитыКредиторскойЗадолженности.Сумма) КАК Сумма
ПОМЕСТИТЬ ЛимитыКредиторскойЗадолженности
ИЗ
РегистрСведений.ЛимитыКредиторскойЗадолженности КАК ЛимитыКредиторскойЗадолженности
ГДЕ
ЛимитыКредиторскойЗадолженности.Организация = &Организация

СГРУППИРОВАТЬ ПО
ЛимитыКредиторскойЗадолженности.Организация,
ЛимитыКредиторскойЗадолженности.Контрагент,
ЛимитыКредиторскойЗадолженности.Договор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПоступлениеТоваровИУслуг.Ссылка,
ПоступлениеТоваровИУслуг.Номер,
ПоступлениеТоваровИУслуг.Договор,
ПоступлениеТоваровИУслуг.Контрагент,
ПоступлениеТоваровИУслуг.Организация,
ПоступлениеТоваровИУслуг.Сумма,
ПоступлениеТоваровИУслуг.Дата
ПОМЕСТИТЬ ПоступлениеТоваровИУслуг
ИЗ
Документ.ПоступлениеТоваровИУслуг КАК ПоступлениеТоваровИУслуг
ГДЕ
(ПоступлениеТоваровИУслуг.Договор.ДоговорСПодрядчиком
ИЛИ ПоступлениеТоваровИУслуг.Договор.ДоговорСПоставщиком)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПоступлениеТоваровИУслуг.Ссылка,
ПоступлениеТоваровИУслуг.Номер,
ПоступлениеТоваровИУслуг.Договор,
ПоступлениеТоваровИУслуг.Контрагент,
ПоступлениеТоваровИУслуг.Организация,
ПоступлениеТоваровИУслуг.Сумма,
ПоступлениеТоваровИУслуг.Дата
ИЗ
ПоступлениеТоваровИУслуг КАК ПоступлениеТоваровИУслуг
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЛимитыКредиторскойЗадолженности КАК ЛимитыКредиторскойЗадолженности
ПО ПоступлениеТоваровИУслуг.Контрагент = ЛимитыКредиторскойЗадолженности.Контрагент
И ПоступлениеТоваровИУслуг.Договор = ЛимитыКредиторскойЗадолженности.Договор
И (ПоступлениеТоваровИУслуг.Сумма < &МинимальнаяСуммаЗадолженности
ИЛИ ПоступлениеТоваровИУслуг.Сумма < ЛимитыКредиторскойЗадолженности.Сумма)



ket_kat

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

СГРУППИРОВАТЬ ПО
   ПоступлениеТоваровИУслуг.Ссылка,
   ПоступлениеТоваровИУслуг.Номер,
   ПоступлениеТоваровИУслуг.ДоговорКонтрагента,
   ПоступлениеТоваровИУслуг.Контрагент,
   ПоступлениеТоваровИУслуг.Организация,
   ПоступлениеТоваровИУслуг.Дата
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЛимитыКредиторскойЗадолженности.Организация,
   ЛимитыКредиторскойЗадолженности.Контрагент,
   ЛимитыКредиторскойЗадолженности.Договор,
   СУММА(ЛимитыКредиторскойЗадолженности.Сумма) КАК СуммаЛимита
ПОМЕСТИТЬ Лимиты
ИЗ
   РегистрСведений.ЛимитыКредиторскойЗадолженности КАК ЛимитыКредиторскойЗадолженности

СГРУППИРОВАТЬ ПО
   ЛимитыКредиторскойЗадолженности.Организация,
   ЛимитыКредиторскойЗадолженности.Контрагент,
   ЛимитыКредиторскойЗадолженности.Договор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Поступления.Ссылка,
   Поступления.Номер,
   Поступления.ДоговорКонтрагента,
   Поступления.Контрагент,
   Поступления.Организация,
   СУММА(Поступления.СуммаДокумента) КАК СуммаДокумента,
   СУММА(Лимиты.СуммаЛимита) КАК СуммаЛимита
ПОМЕСТИТЬ Итоговый
ИЗ
   Поступления КАК Поступления
      ЛЕВОЕ СОЕДИНЕНИЕ Лимиты КАК Лимиты
      ПО Поступления.Контрагент = Лимиты.Контрагент
         И Поступления.ДоговорКонтрагента = Лимиты.Договор

СГРУППИРОВАТЬ ПО
   Поступления.Ссылка,
   Поступления.Номер,
   Поступления.ДоговорКонтрагента,
   Поступления.Контрагент,
   Поступления.Организация
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Итоговый.Ссылка,
   Итоговый.Номер,
   Итоговый.ДоговорКонтрагента,
   Итоговый.Контрагент,
   Итоговый.Организация,
   Итоговый.СуммаДокумента
ИЗ
   Итоговый КАК Итоговый
ГДЕ
   (Итоговый.СуммаДокумента < &МинимальнаяСуммаЗадолженности
         ИЛИ Итоговый.СуммаДокумента < Итоговый.СуммаЛимита)


Пояснения:
Не следует делать соединения с подзапросами
Следует соединять между собой или объекты метаданных или временные таблицы
Так будет увеличено быстродействие и стабильность работы  запроса.

IrinaO

Избавляемся от вложенного запросы с помощью временной таблицы, в которую сразу отбираем данные только по нужным договорам

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

СГРУППИРОВАТЬ ПО
   ЛимитыКредиторскойЗадолженности.Контрагент,
   ЛимитыКредиторскойЗадолженности.Договор,
   ЛимитыКредиторскойЗадолженности.Организация

ИНДЕКСИРОВАТЬ ПО
   Контрагент,
   Договор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПоступлениеТоваровИУслуг.Ссылка,
   ПоступлениеТоваровИУслуг.Номер,
   ПоступлениеТоваровИУслуг.Договор,
   ПоступлениеТоваровИУслуг.Контрагент,
   ПоступлениеТоваровИУслуг.Организация,
   ПоступлениеТоваровИУслуг.Сумма,
   ПоступлениеТоваровИУслуг.Дата
ИЗ
   Документ.ПоступлениеТоваровИУслуг КАК ПоступлениеТоваровИУслуг
      ЛЕВОЕ СОЕДИНЕНИЕ Лимиты КАК Лимиты
      ПО ПоступлениеТоваровИУслуг.Контрагент = Лимиты.Контрагент
         И ПоступлениеТоваровИУслуг.Договор = Лимиты.Договор
ГДЕ
   (ПоступлениеТоваровИУслуг.Договор.ДоговорСПодрядчиком = ИСТИНА
         ИЛИ ПоступлениеТоваровИУслуг.Договор.ДоговорСПоставщиком = ИСТИНА)
   И (ПоступлениеТоваровИУслуг.Сумма < &МинимальнаяСуммаЗадолженности
         ИЛИ ПоступлениеТоваровИУслуг.Сумма < Лимиты.Сумма)

Теги:
Рейтинг@Mail.ru

Поиск