powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Консоль запросов - сложный запрос
13 сообщений из 13, страница 1 из 1
Консоль запросов - сложный запрос
    #38689669
Alexandr29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо выгрузить накладные из УТ 11.0 в самопиписную 7.7 через Конвертер
Далаю Запрос

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
ВЫБРАТЬ
	ПеремещениеТоваров.Номер,
	ПеремещениеТоваров.Дата,
	ПеремещениеТоваров.СкладПолучатель,
	ПеремещениеТоваров.Товары.(
		Номенклатура КАК Товар,
		Количество,
		Номенклатура.СтавкаНДС КАК НДС,
		Номенклатура.СтавкаНДС КАК НДСПост,
			) КАК ТабличнаяЧасть
ИЗ
	Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
ГДЕ
	ПеремещениеТоваров.СкладПолучатель.Код = &КодСклада
	И ПеремещениеТоваров.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания


Но встала проблема с ценой, я её могу получить Запросом:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
ВЫБРАТЬ
	ЦеныНоменклатуры.Номенклатура,
	ЦеныНоменклатуры.ВидЦены.Наименование,
	ЦеныНоменклатуры.ВидЦены.ВалютаЦены.Код
ИЗ
	РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
	ЦеныНоменклатуры.ВидЦены.Наименование = "Розничная цена" 



Но вот как эти запросы соединить в 1, я не могу сообразить?
...
Рейтинг: 0 / 0
Консоль запросов - сложный запрос
    #38690060
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это не есть "сложный запрос"...

покурить использование табличных частей в выборках (выбрать ... ИЗ
Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары) + левое соединение
...
Рейтинг: 0 / 0
Консоль запросов - сложный запрос
    #38690111
Alexandr29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний выдох ГПЖ,

Этой выборкой я получаю нужные данные в виде простой таблицы

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
ВЫБРАТЬ
	ЦеныНоменклатуры.Цена,
	ПеремещениеТоваровТовары.Номенклатура КАК Товар,
	ПеремещениеТоваровТовары.Характеристика,
	ПеремещениеТоваров.Номер КАК Номер,
             ПеремещениеТоваров.Дата,
	ПеремещениеТоваров.СкладПолучатель,

ИЗ
	Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
		ПО ПеремещениеТоваровТовары.Номенклатура = ЦеныНоменклатуры.Номенклатура
			И ПеремещениеТоваровТовары.Характеристика = ЦеныНоменклатуры.Характеристика
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
		ПО ПеремещениеТоваровТовары.Ссылка = ПеремещениеТоваров.Ссылка
ГДЕ
	ЦеныНоменклатуры.ВидЦены.Наименование = "Розничная цена УФПС"
	И ЦеныНоменклатуры.Валюта.Код = "643"
             И ПеремещениеТоваров.СкладПолучатель.Код = &КодСклада
	И ПеремещениеТоваров.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания



но мне на выходе нужна другая структура:
Шапка документа -> ТабличнаяЧасть

а вот как её получить не знаю
...
Рейтинг: 0 / 0
Консоль запросов - сложный запрос
    #38690117
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уберите это уг

ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
ПО ПеремещениеТоваровТовары.Ссылка = ПеремещениеТоваров.Ссылка


ПеремещениеТоваровТовары.Характеристика,
ПеремещениеТоваровТовары.Ссылка.Номер КАК Номер,
ПеремещениеТоваровТовары.Ссылка.Дата КАК Дата ,
ПеремещениеТоваровТовары.Ссылка.СкладПолучатель КАК СкладПолучатель,
...
Рейтинг: 0 / 0
Консоль запросов - сложный запрос
    #38690119
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но мне на выходе нужна другая структура:
Шапка документа -> ТабличнаяЧасть

чего надо то? "нарезать" по складам в отдельные документы?

для этого есть Итоги

ВНУТРЕННЕЕ СОЕДИНЕНИЕ - вы понимаете что делаете? если цены не будет (а такое вполне возможно) товар не попадет в запрос
...
Рейтинг: 0 / 0
Консоль запросов - сложный запрос
    #38690136
Alexandr29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний выдох ГПЖ,
По вопросу связи согласен, исправил.
А вот нарезать на документы пока не получется

п.с. Это мой первый запрос в 1с 8
...
Рейтинг: 0 / 0
Консоль запросов - сложный запрос
    #38690152
Alexandr29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
должна получиться таблица получаемая запросом

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
ВЫБРАТЬ
	ПеремещениеТоваров.Номер,
	ПеремещениеТоваров.Дата,
	ПеремещениеТоваров.СкладПолучатель,
	ПеремещениеТоваров.Товары.(
		Номенклатура КАК Товар,
		Количество,
		Номенклатура.СтавкаНДС КАК НДС,
		Номенклатура.СтавкаНДС КАК НДСПост,
		) КАК ТабличнаяЧасть
ИЗ
	Документ.ПеремещениеТоваров КАК ПеремещениеТоваров



+Цена в табличной части

если этого нельзя сделать Запросом, то тогда мне надо полсти в код, который я не знаю

Ворос: Можно ли это сделать Запросом?
...
Рейтинг: 0 / 0
Консоль запросов - сложный запрос
    #38690177
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>тогда мне надо полсти в код, который я не знаю

нет счастья в жизни
...
Рейтинг: 0 / 0
Консоль запросов - сложный запрос
    #38690975
Alexandr29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний выдох ГПЖ,
Решил я эту задачу, пусть каряво, но как умею

Код: sql
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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
ВыборкаДанных=Новый ТаблицаЗначений;
ВыборкаДанных.Колонки.Добавить("Номер");
ВыборкаДанных.Колонки.Добавить("Дата");
ВыборкаДанных.Колонки.Добавить("ТабличнаяЧасть");

Запрос=Новый Запрос;
Запрос.УстановитьПараметр("ДатаНачала",ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания",ДатаОкончания);
Запрос.УстановитьПараметр("КодСклада","000000000158");

	Запрос.Текст=
	"ВЫБРАТЬ 
	|ПеремещениеТоваров.Номер,
	|ПеремещениеТоваров.Дата,
	|ПеремещениеТоваров.Ссылка
	|ИЗ
	|	Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
	|ГДЕ
	|	ПеремещениеТоваров.СкладПолучатель.Код =&КодСклада 
	|И ПеремещениеТоваров.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания";
ДЗ=Запрос.Выполнить().Выбрать();
Пока ДЗ.Следующий() Цикл
	Строка=ВыборкаДанных.Добавить();
	Строка.Номер=ДЗ.Номер;
	Строка.Дата=ДЗ.Дата;
Запрос1=Новый Запрос;
Запрос1.УстановитьПараметр("Документ",ДЗ.Ссылка);
Запрос1.УстановитьПараметр("ВидЦены","Розничная цена");
	
Запрос1.Текст=
	"ВЫБРАТЬ 
	|ЦеныНоменклатуры.Цена,
	|ПеремещениеТоваровТовары.Номенклатура КАК Товар,
	|ПеремещениеТоваровТовары.Количество,
	|ПеремещениеТоваровТовары.Номенклатура.СтавкаНДС как НДС,
    |ПеремещениеТоваровТовары.Номенклатура.СтавкаНДС как НДСПост,
	|ПеремещениеТоваровТовары.Ссылка
	|ИЗ
	|	Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
	|		{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
	|		ПО ПеремещениеТоваровТовары.Номенклатура = ЦеныНоменклатуры.Номенклатура
	|		И ПеремещениеТоваровТовары.Характеристика = ЦеныНоменклатуры.Характеристика}
	|ГДЕ
	|	ПеремещениеТоваровТовары.Ссылка=&Документ";
	
	Сообщить("Запрос1.Выполнить()");
	Таблица1= Запрос1.Выполнить();

	Строка.ТабличнаяЧасть=Новый ТаблицаЗначений;
    Строка.ТабличнаяЧасть= Таблица1;
КонецЦикла;



Но наверняка можно было решить и через запрос
...
Рейтинг: 0 / 0
Консоль запросов - сложный запрос
    #38691058
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Решил я эту задачу, пусть каряво, но как умею

лучше так чем никак... но вообще все плохо. от запроса в цикле до присвоения параметров
...
Рейтинг: 0 / 0
Консоль запросов - сложный запрос
    #38691880
Фотография Владимир Лазурко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexandr29Но наверняка можно было решить и через запросПримерно так:
Код: sql
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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
	Запрос = Новый Запрос;
	
	Запросы = "
	|ВЫБРАТЬ
	|	РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
	|	РеализацияТоваровУслугТовары.Ссылка.Номер,
	|	РеализацияТоваровУслугТовары.Ссылка.Дата,
	|	РеализацияТоваровУслугТовары.Ссылка.Организация,
	|	РеализацияТоваровУслугТовары.Ссылка.Склад,
	|	РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
	|	РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
	|	РеализацияТоваровУслугТовары.Количество КАК Количество,
	|	РеализацияТоваровУслугТовары.Сумма КАК Сумма,
	|	РеализацияТоваровУслугТовары.Цена КАК ЦенаДокумента,
	|	ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаРегистра,
	|	ВЫБОР
	|		КОГДА РеализацияТоваровУслугТовары.Цена = ЦеныНоменклатурыСрезПоследних.Цена
	|			ТОГДА "Ок!"
	|		ИНАЧЕ "вручную"
	|	КОНЕЦ КАК ПризнакРучнойЦены
	|ИЗ
	|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
	|		ПО РеализацияТоваровУслугТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
	|			И РеализацияТоваровУслугТовары.Ссылка.Дата = ЦеныНоменклатурыСрезПоследних.Период
	|
	|УПОРЯДОЧИТЬ ПО
	|	Ссылка,
	|	Контрагент,
	|	Номенклатура
	|//ИТОГИ
	|//	СУММА(Количество),
	|//	СУММА(Сумма)
	|//ПО
	|//	ОБЩИЕ,
	|//	Ссылка,
	|//	Контрагент,
	|//	Номенклатура
	|";
	
	Запрос.Текст = Запросы;
	РЗ = Запрос.Выполнить();

Хотя в документе ж есть и цена и сумма. В крайнем случае можно сумму разделить на количество и коэффициент и получить цену.

Вот шпаргалка про соединения таблиц:
...
Рейтинг: 0 / 0
Консоль запросов - сложный запрос
    #38692725
Alexandr29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир ЛазуркоХотя в документе ж есть и цена и сумма.

Там документ был - ПеремещениеТоваров, в нем таких реквизитов нет.

А так Спасибо
...
Рейтинг: 0 / 0
Консоль запросов - сложный запрос
    #38695835
Фотография Владимир Лазурко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexandr29Владимир ЛазуркоХотя в документе ж есть и цена и сумма.

Там документ был - ПеремещениеТоваров, в нем таких реквизитов нет.

А так СпасибоСпажалуйста.
Я привёл пример для наглядности и простоты из своих докментов. Что там в Вашей базе я не могу знать.
Применяйте мой пример к себе, должно получиться.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Консоль запросов - сложный запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]