Здравствуйте.
1С 8.3.14.2095 Альфа-Авто 4.1.23.01
Подскажите пожалуйста возможно-ли объединить 3 запроса в один?
Запрос №1 - Получаю все аналоги для текущего товара
"ВЫБРАТЬ
| ГруппыАналогов.Артикул КАК Артикул,
| ГруппыАналогов.Производитель КАК Производитель
|ИЗ
| РегистрСведений.ГруппыАналогов КАК ГруппыАналогов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыАналогов КАК ГруппыАналогов1
| ПО ГруппыАналогов.ИдентификаторГруппы = ГруппыАналогов1.ИдентификаторГруппы
|ГДЕ
| ГруппыАналогов1.Артикул = &Артикул
|";
"ВЫБРАТЬ
| ПрайсЛистыКонтрагентов.Ссылка КАК Ссылка
|ИЗ
| Справочник.ПрайсЛистыКонтрагентов КАК ПрайсЛистыКонтрагентов
|ГДЕ
| ПрайсЛистыКонтрагентов.флКонкурент = ИСТИНА";
ВЫБРАТЬ
| ПрайсЛистыКонтрагентов.ПрайсЛист КАК ПрайсЛист,
| ПрайсЛистыКонтрагентов.Артикул КАК Артикул,
| ПрайсЛистыКонтрагентов.Производитель КАК Производитель,
| ПрайсЛистыКонтрагентов.Цена КАК Цена,
| ПрайсЛистыКонтрагентов.Количество КАК Количество,
| ПрайсЛистыКонтрагентов.Контрагент КАК Контрагент,
| ПрайсЛистыКонтрагентов1.Валюта КАК Валюта
|ИЗ
| РегистрСведений.ПрайсЛистыКонтрагентов КАК ПрайсЛистыКонтрагентов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПрайсЛистыКонтрагентов КАК ПрайсЛистыКонтрагентов1
| ПО ПрайсЛистыКонтрагентов.ПрайсЛист = ПрайсЛистыКонтрагентов1.Ссылка
|ГДЕ
| ПрайсЛистыКонтрагентов.Артикул В(&Артикул)
| И ПрайсЛистыКонтрагентов1.Ссылка В(&СпЗнКонкурентныеПрайсы)
| И ПрайсЛистыКонтрагентов.Производитель = &Производитель
|
|УПОРЯДОЧИТЬ ПО
| Цена";
Временные таблицы.
ПрайсЛистыКонтрагентов.Артикул В(ВЫБРАТЬ Т.Артикул ИЗ ВТ КАК Т)
условие
ПрайсЛистыКонтрагентов1.Ссылка В(&СпЗнКонкурентныеПрайсы)
ПрайсЛистыКонтрагентов1.Ссылка.флКонкурент
Благодарю, LOGIST, MUT, за наколки, буду разбираться дальше.
Все получилось.
"ВЫБРАТЬ
| рсПрайсЛисты.ПрайсЛист КАК ПрайсЛист,
| рсПрайсЛисты.Артикул КАК Артикул,
| рсПрайсЛисты.Производитель КАК Производитель,
| рсПрайсЛисты.Цена КАК Цена,
| рсПрайсЛисты.Количество КАК Количество,
| рсПрайсЛисты.Контрагент КАК Контрагент
|ИЗ
| РегистрСведений.ПрайсЛистыКонтрагентов КАК рсПрайсЛисты
|ГДЕ
| рсПрайсЛисты.Артикул В
| (ВЫБРАТЬ
| Номенклатура.АртикулБезТире КАК АртикулБезТире
| ИЗ
| РегистрСведений.ГруппыАналогов КАК ГруппыАналогов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыАналогов КАК ГруппыАналогов1
| ПО
| ГруппыАналогов.ИдентификаторГруппы = ГруппыАналогов1.ИдентификаторГруппы
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
| ПО
| ГруппыАналогов.Артикул = Номенклатура.Артикул
| ГДЕ
| ГруппыАналогов1.Артикул = &Артикул
| И ГруппыАналогов.Производитель = &Производитель)
| И рсПрайсЛисты.ПрайсЛист.Ссылка В
| (ВЫБРАТЬ
| ПрайсЛистыКонтрагентов.Ссылка КАК Ссылка
| ИЗ
| Справочник.ПрайсЛистыКонтрагентов КАК ПрайсЛистыКонтрагентов
| ГДЕ
| ПрайсЛистыКонтрагентов.флКонкурент = ИСТИНА
| И ПрайсЛистыКонтрагентов.Валюта = &Валюта)
| И рсПрайсЛисты.Производитель = &Производитель
|
|УПОРЯДОЧИТЬ ПО
| Цена";
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.АртикулБезТире КАК АртикулБезТире
|ИЗ
| РегистрСведений.ГруппыАналогов КАК ГруппыАналогов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыАналогов КАК ГруппыАналогов1
| ПО ГруппыАналогов.ИдентификаторГруппы = ГруппыАналогов1.ИдентификаторГруппы
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
| ПО ГруппыАналогов.Артикул = Номенклатура.Артикул
|ГДЕ
| ГруппыАналогов1.Артикул = &Артикул
| И ГруппыАналогов.Производитель = &Производитель";
Запрос.УстановитьПараметр("Артикул", Товар.Артикул);
Запрос.УстановитьПараметр("Производитель", Товар.Производитель);
Результат = Запрос.Выполнить();
ТЗАналоги = Результат.Выгрузить();
спАналоги = Новый СписокЗначений;
спАналоги.Очистить();
Если ТЗАналоги.Количество() > 0 Тогда
//Сообщить("Выгружаем аналоги в СЗ");
спАналоги = ТЗАналоги.ВыгрузитьКолонку("АртикулБезТире");
Иначе
//Сообщить("текущий Артикул в СЗ");
спАналоги.Добавить(Товар.АртикулБезТире);
КонецЕсли;
ТЗ = Новый ТаблицаЗначений;
ТЗ.Очистить();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| рсПрайсЛисты.ПрайсЛист КАК ПрайсЛист,
| рсПрайсЛисты.Артикул КАК Артикул,
| рсПрайсЛисты.Производитель КАК Производитель,
| рсПрайсЛисты.Цена КАК Цена,
| рсПрайсЛисты.Количество КАК Количество,
| рсПрайсЛисты.Контрагент КАК Контрагент
|ИЗ
| РегистрСведений.ПрайсЛистыКонтрагентов КАК рсПрайсЛисты
|ГДЕ
| рсПрайсЛисты.Артикул В(&Аналоги)
| И рсПрайсЛисты.ПрайсЛист.Ссылка В
| (ВЫБРАТЬ
| ПрайсЛистыКонтрагентов.Ссылка КАК Ссылка
| ИЗ
| Справочник.ПрайсЛистыКонтрагентов КАК ПрайсЛистыКонтрагентов
| ГДЕ
| ПрайсЛистыКонтрагентов.флКонкурент = ИСТИНА
| И ПрайсЛистыКонтрагентов.Валюта = &Валюта)
| И рсПрайсЛисты.Производитель = &Производитель
|
|УПОРЯДОЧИТЬ ПО
| Цена";
logist @ Вчера, 21:47
,
Не получается, т.к. если у товара нет Аналогов, то соотвественно нет никакой записи в регистре сведений ГруппыАналогов, и поэтому ВременнаяТаблица вернет пустой ответ и итоговый результат будет пуст.
logist @ Вчера, 20:05
,
Не совсем понял, как это в запросе осуществить.
Попробовал так, но так не работает:
ВЫБРАТЬ
ВЫБОР
КОГДА
Номенклатура.АртикулБезТире ЕСТЬ NULL
ТОГДА &Артикул
ИНАЧЕ Номенклатура.АртикулБезТире
КОНЕЦ КАК ГруппыАналогов
ПОМЕСТИТЬ ВТ
ИЗ
РегистрСведений.ГруппыАналогов КАК ГруппыАналогов
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыАналогов КАК ГруппыАналогов1
ПО ГруппыАналогов.ИдентификаторГруппы = ГруппыАналогов1.ИдентификаторГруппы
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
ПО ГруппыАналогов.Артикул = Номенклатура.Артикул
ГДЕ
ГруппыАналогов1.Артикул = &Артикул
И ГруппыАналогов.Производитель = &Производитель
SELECT ISNULL(IR.VC, NS.Ref) AS VC
INTO TT
FROM InformationRegister.Register1 AS IR
FULL JOIN (SELECT C.Ref AS Ref FROM Catalog.Catalog1 AS C WHERE C.VC = &vc) AS NS
ON IR.VC = NS.Ref
WHERE IR.VC = &vc"
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua