|
Ткните мне -что не так в запросе? Мешает семерошное мышление. | ☑ | ||
---|---|---|---|---|
0
temsa
12.10.12
✎
13:56
|
Есть мелкая задача. Отобрать по некоторому складу документы за период и в ТЧ переиначить плановую стоимость взятую из РС.
Нписал запррос но умом понимаю что не так я сделал. Чтоб отобрать документы может нужен отдельный запрос??? Вот код: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.Номенклатура, | ЦеныНоменклатурыСрезПоследних.ТипЦен, | ЦеныНоменклатурыСрезПоследних.Цена, | ОтчетПроизводстваЗаСменуПродукция.Ссылка, | ОтчетПроизводстваЗаСменуПродукция.Номенклатура КАК Номенклатура1, | ОтчетПроизводстваЗаСменуПродукция.ПлановаяСтоимость |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСменуПродукция | ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ОтчетПроизводстваЗаСменуПродукция.Номенклатура |ГДЕ | ЦеныНоменклатурыСрезПоследних.ТипЦен = &ВыбТип | И ОтчетПроизводстваЗаСменуПродукция.Ссылка.Склад = &ВыбСклад | |СГРУППИРОВАТЬ ПО | ОтчетПроизводстваЗаСменуПродукция.Ссылка, | ОтчетПроизводстваЗаСменуПродукция.Номенклатура, | ЦеныНоменклатурыСрезПоследних.Номенклатура, | ЦеныНоменклатурыСрезПоследних.ТипЦен, | ЦеныНоменклатурыСрезПоследних.Цена, | ОтчетПроизводстваЗаСменуПродукция.ПлановаяСтоимость"; Запрос.УстановитьПараметр("ВыбСклад", ВыбСклад); Запрос.УстановитьПараметр("ВыбТип", ВыбТип); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл |
|||
1
Живой Ископаемый
12.10.12
✎
13:57
|
что сделать надо?
чтобы в результате появились документы? строй не к срезу последних, а к физической таблице |
|||
2
Starhan
12.10.12
✎
14:00
|
(1)строй не к срезу последних, а к физической таблице
не понятно (0) ЦеныНоменклатурыСрезПоследних.ТипЦен = &ВыбТип вот эту строку надо параметром в виртуальную таблицу срез последних и не хватает отбора по периоду у докуументов ) |
|||
3
temsa
12.10.12
✎
14:01
|
Мнебы вытащить из РС актуальные на дату цены по типу цен и их внести в документы ха период в ТЧ где цена не та.
|
|||
4
Starhan
12.10.12
✎
14:02
|
на дату каждого документа?
|
|||
5
temsa
12.10.12
✎
14:03
|
(2) Период по дку то вкручу нет проблема. А вот мне объязательно через ТЧ дока строить запрос и через ссылку выходить на само док. Или можно по докам делать запрос???
|
|||
6
temsa
12.10.12
✎
14:04
|
(4) нет не объязательно. по идее там цены меняли один раз в году в начале.
|
|||
7
temsa
12.10.12
✎
14:07
|
Мне бы выбрать доки за период. После того как выбрал доки протись по их табличной части и при этом заменить там плановую себестоимость и все.
|
|||
8
temsa
12.10.12
✎
14:19
|
ауууу
|
|||
9
vvp91
12.10.12
✎
14:19
|
Запрос.Текст = "
|ВЫБРАТЬ | Операция.Ссылка, | Строки.НомерСтроки, | Строки.Номенклатура, | Строки.ПлановаяСтоимость, | Цены.Цена |ИЗ | Документ.ОтчетПроизводстваЗаСмену КАК Операция | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.Продукция КАК Строки | ПО Строки.Ссылка = Операция.Ссылка | | ЛЕВОЕ СОЕДИНЕНИЕ ( | ВЫБРАТЬ | Цены.Период, | Цены.Номенклатура, | Цены.Цена | ИЗ РегистрСведений.ЦеныНоменклатуры КАК Цены | ВНУТРЕННЕЕ СОДИНЕНИЕ ( | ВЫБРАТЬ | МАКСИМУМ(Цены.Период) КАК Период, | Цены.Номенклатура | ИЗ | Документ.ОтчетПроизводстваЗаСмену КАК Операция | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.Продукция КАК Строки | ПО Строки.Ссылка = Операция.Ссылка | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Цены | ПО Цены.Номенклатура = Строки.Номенклатура | И Цены.Период <= Операция.Дата | ГДЕ | Операция.Склад = &ВыбСклад И Цены.ТипЦен = &ВыбТип | СГРУППИРОВАТЬ ПО | Цены.Номенклатура | ) КАК ПериодЦены | ПО ПериодЦены.Период = Цены.Период И ПериодЦены.Номенклатура = Цены.Номенклатура | ) КАК Цены | ПО Цены.Номенклатура = Операция.Номенклатура | И Цены.Период <= Операция.Дата |"; |
|||
10
hhhh
12.10.12
✎
14:21
|
(7) вот так можно
|ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ВыбТип) КАК |
|||
11
temsa
12.10.12
✎
14:24
|
(10) Понял учту.
(9) Спасибо попробую. Я уж думал сделать вложенные запросы. |
|||
12
temsa
12.10.12
✎
14:51
|
(9) Пишет {Форма.Форма.Форма(50)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить(); по причине: {(19, 24)}: Ожидается выражение "СОЕДИНЕНИЕ" ВНУТРЕННЕЕ <<?>>СОДИНЕНИЕ ( ((( |
|||
13
vvp91
12.10.12
✎
15:05
|
(12) ну так исправь грамматическую ошибку, напиши СОЕДИНЕНИЕ вместо СОДИНЕНИЕ.
|
|||
14
temsa
12.10.12
✎
15:07
|
(13) :))) Вот же облажался . Сенкс. Все пятница надо отдыхать.
|
|||
15
vvp91
12.10.12
✎
15:13
|
Уточненный запрос - поправлена грамматическая ошибка и, самое главное, во внутреннем запросе в группировку введена дата документа.
Запрос.Текст = " |ВЫБРАТЬ | Операция.Ссылка, | Строки.НомерСтроки, | Строки.Номенклатура, | Строки.ПлановаяСтоимость, | Цены.Цена |ИЗ | Документ.ОтчетПроизводстваЗаСмену КАК Операция | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.Продукция КАК Строки | ПО Строки.Ссылка = Операция.Ссылка | | ЛЕВОЕ СОЕДИНЕНИЕ ( | ВЫБРАТЬ | ПериодЦены.Дата, | Цены.Номенклатура, | Цены.Цена | ИЗ РегистрСведений.ЦеныНоменклатуры КАК Цены | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ( | ВЫБРАТЬ | МАКСИМУМ(Цены.Период) КАК Период, | Операция.Дата как Дата, | Цены.Номенклатура | ИЗ | Документ.ОтчетПроизводстваЗаСмену КАК Операция | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.Продукция КАК Строки | ПО Строки.Ссылка = Операция.Ссылка | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Цены | ПО Цены.Номенклатура = Строки.Номенклатура | И Цены.Период <= Операция.Дата | ГДЕ | Операция.Склад = &ВыбСклад И Цены.ТипЦен = &ВыбТип | СГРУППИРОВАТЬ ПО | Операция.Дата, Цены.Номенклатура | ) КАК ПериодЦены | ПО ПериодЦены.Период = Цены.Период И ПериодЦены.Номенклатура = Цены.Номенклатура | ) КАК Цены | ПО Цены.Номенклатура = Операция.Номенклатура | И Цены.Дата = Операция.Дата |"; |
|||
16
temsa
12.10.12
✎
15:26
|
(15) Все равно не то думаю.
А за чем мне выборке построчно выходит номенклатура??? Как же мне в таком цыкле записывать доки? Мне же нужно что в каждой выборке отдельная ссылка к документу. А уже по выбранному доку внутри я сделаю построчный обход сам не так ли? |
|||
17
Starhan
12.10.12
✎
15:29
|
Тебе надо выбрать документы
потом цикл по документам где уже запрашиваешь цены на номенклатуру в доке запросом и меняешь все в доке п.с. да простят меня за запрос в цикле |
|||
18
temsa
12.10.12
✎
15:31
|
(17) Не хочу я запрос в цикле. Ее можно приготовить заранее и просто потом с него брать.
|
|||
19
narayanan
12.10.12
✎
15:53
|
вопрос решился?
|
|||
20
temsa
12.10.12
✎
15:58
|
Нет еще не решил. Но вот думаю. Что просто возьму и сделаю отдельных два запроса. один по документу а другой по цене. Потом обход по докам и в нутри цикл по таб части и в нем поиск нужной цены тупо и надежно.
А туту хотел увидеть изящное решение от восмерошников видимо не до меня им. |
|||
21
AAlexandra
12.10.12
✎
16:12
|
(20) Вместо "сделаю отдельных два запроса. один по документу а другой по цене. Потом обход по докам и в нутри цикл по таб части и в нем поиск нужной цены"
получай все ОДНИМ запросом. Сделай "ИТОГИ ПО Ссылка", потом Выборку по группировкам: ВыборкаДокументы = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Ссылка"); Пока ВыборкаДокументы.Следующий() Цикл КонецЦикла; |
|||
22
AAlexandra
12.10.12
✎
16:16
|
точнее, как-то так:
Пока ВыборкаДокументы.Следующий() Цикл ДокОбъект = ВыборкаДокументы.Ссылка.ПолучитьОбъект(); Выборка = ВыборкаДокументы.Выбрать(); Пока Выборка.Следующий() Цикл //изменяем ТЧ КонецЦикла; // Если есть изменения ДокОбъект.Записать(..); КонецЦикла; |
|||
23
narayanan
12.10.12
✎
16:19
|
Запрос ведь в цикле,не?
|
|||
24
temsa
12.10.12
✎
16:21
|
(21) (22) Вот это уже мысль. Спасибо.
|
|||
25
temsa
15.10.12
✎
15:18
|
Сегодня попробовал. Не взлетело. ((((
Как быть? Туплю!.... |
|||
26
temsa
15.10.12
✎
15:21
|
Пробовал ВыборкаДокументы = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Ссылка");
Пишет нет такого измерения. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |