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

Помогите составить запрос по договорам с доп.реквизитом

Автор Alex Varavva, 19 июл 2018, 17:21

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

Alex Varavva

Здравствуйте!

Прошу помощи с составлением запроса в конфигурации БП 3.0 (1с 8.3)

В Договорах введен доп.реквизит "Выгружать документы по договору" тип значения Булево

Необходимо найти все договоры у которых наименование содержит определенную строку и при этом доп.реквизит "Выгружать документы по договору" = ЛОЖЬ

В SQL как-то так

select * from contracts a
left join extra_fields_values b on b.contact_id=a.id
left join extra_fields c on c.id=b.field_id and c.field_name="Выгружать документы по договору"
where a.contract_name="Договор поставки" and b.value="ЛОЖЬ"

LexaK

в принципе в 1С тоже самое, те-же левые соединения

только учтите отсутствие доп. реквизит  "Выгружать документы по договору" надо расчитывать как = Ложь
в условии запроса используйте такую конструкцию, пример
...
и ЕстьNull(Рег.ДопЗначение, Ложь) = Ложь
если помогло нажмите: Спасибо!

Alex Varavva

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

работает. выдает реквизит

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

работает - выдает договоры с нужным наименованием

ВЫБРАТЬ
ДоговорыКонтрагентов.Наименование,
ДоговорыКонтрагентов.Владелец.Наименование
ИЗ
Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов

ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
ПО ДоговорыКонтрагентов.ДополнительныеРеквизиты.Ссылка = ДополнительныеРеквизитыИСведения.Ссылка И
   ДополнительныеРеквизитыИСведения.Наименование = "Выгружать документы по договору"

ГДЕ
ДоговорыКонтрагентов.Наименование ПОДОБНО "%Лицензионный%"

Не работает. Выдает ошибку
Запрос невозможно исполнить
В условиях соединения запроса не допускается обращение к табличным частям. (4)

ДмитрийФ

Пример, как выбрать там где реквизит ИСТИНА, если ЛОЖЬ как-то не соображу сразу
ВЫБРАТЬ
ДополнительныеРеквизитыИСведения.Ссылка КАК Свойство
ПОМЕСТИТЬ ВТ_Свойство
ИЗ
ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
ГДЕ
ДополнительныеРеквизитыИСведения.Наименование = "Выгружать документы по договору"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка.Наименование КАК Наименование,
ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка.Владелец.Наименование КАК ВладелецНаименование
ИЗ
Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК ДоговорыКонтрагентовДополнительныеРеквизиты
ГДЕ
ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство В
(ВЫБРАТЬ
ВТ_Свойство.Свойство КАК Свойство
ИЗ
ВТ_Свойство КАК ВТ_Свойство)
И ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка.Наименование ПОДОБНО "%Лицензионный%"

alex0402

Цитата: Alex Varavva от 20 июл 2018, 08:57ВЫБРАТЬ
    ДоговорыКонтрагентов.Наименование,
    ДоговорыКонтрагентов.Владелец.Наименование
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов

ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
    ПО ДоговорыКонтрагентов.ДополнительныеРеквизиты.Ссылка = ДополнительныеРеквизитыИСведения.Ссылка И
       ДополнительныеРеквизитыИСведения.Наименование = "Выгружать документы по договору"
               
ГДЕ
    ДоговорыКонтрагентов.Наименование ПОДОБНО "%Лицензионный%"

можно так:

ВЫБРАТЬ
    ДоговорыКонтрагентов.Ссылка.Наименование,
    ДоговорыКонтрагентов.Ссылка.Владелец.Наименование
ИЗ
    Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК ДоговорыКонтрагентов

ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
    ПО ДоговорыКонтрагентов.Ссылка = ДополнительныеРеквизитыИСведения.Ссылка И
       ДополнительныеРеквизитыИСведения.Наименование = "Выгружать документы по договору"
Спасибо за Сказать спасибо

LexaK

вы же пишите что хорошо разбираетесь в СКЛ запросах, в вашем первом примере 2 левых джоита,
вам написали что тоже самое (примерно) и в запросе 1С надо написать.

в последнем выложенном вами запросе вообще нет ни одного левого соединения! что вы вообще с таким подходом хотите найти/решить?
Добавлено: 20 июл 2018, 11:19


попробуйте такой вариант запроса

ВЫБРАТЬ
    Спр.Ссылка,
    Спр.Владелец
ИЗ
Справочник.ДоговорыКонтрагентов Спр

левое соединение
    Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты Доп
   
левое соединение
    ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения Рег
по Доп.Свойство = Рег.Ссылка
и Рег.Наименование подобно "Выгружать документы по договору"

по Спр.Ссылка = Доп.Ссылка
и Рег.Ссылка есть Не Null

ГДЕ
    Спр.Наименование ПОДОБНО "%Лицензионный%"
и ЕстьNull(Доп.Значение, Ложь) = Ложь
если помогло нажмите: Спасибо!

Alex Varavva

Спасибо, все получилось

Когда не знаешь что джойнить, то и запросы не получаются.

Цитата: LexaK от 20 июл 2018, 10:48
вы же пишите что хорошо разбираетесь в СКЛ запросах, в вашем первом примере 2 левых джоита,
вам написали что тоже самое (примерно) и в запросе 1С надо написать.

в последнем выложенном вами запросе вообще нет ни одного левого соединения! что вы вообще с таким подходом хотите найти/решить?
Добавлено: 20 июл 2018, 11:19


попробуйте такой вариант запроса

ВЫБРАТЬ
    Спр.Ссылка,
    Спр.Владелец
ИЗ
Справочник.ДоговорыКонтрагентов Спр

левое соединение
    Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты Доп
   
левое соединение
    ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения Рег
по Доп.Свойство = Рег.Ссылка
и Рег.Наименование подобно "Выгружать документы по договору"

по Спр.Ссылка = Доп.Ссылка
и Рег.Ссылка есть Не Null

ГДЕ
    Спр.Наименование ПОДОБНО "%Лицензионный%"
и ЕстьNull(Доп.Значение, Ложь) = Ложь

Цитата: LexaK от 20 июл 2018, 10:48
вы же пишите что хорошо разбираетесь в СКЛ запросах, в вашем первом примере 2 левых джоита,
вам написали что тоже самое (примерно) и в запросе 1С надо написать.

в последнем выложенном вами запросе вообще нет ни одного левого соединения! что вы вообще с таким подходом хотите найти/решить?
Добавлено: 20 июл 2018, 11:19


попробуйте такой вариант запроса

ВЫБРАТЬ
    Спр.Ссылка,
    Спр.Владелец
ИЗ
Справочник.ДоговорыКонтрагентов Спр

левое соединение
    Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты Доп
   
левое соединение
    ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения Рег
по Доп.Свойство = Рег.Ссылка
и Рег.Наименование подобно "Выгружать документы по договору"

по Спр.Ссылка = Доп.Ссылка
и Рег.Ссылка есть Не Null

ГДЕ
    Спр.Наименование ПОДОБНО "%Лицензионный%"
и ЕстьNull(Доп.Значение, Ложь) = Ложь


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск