|
Вопрос по Запросу? | ☑ | ||
---|---|---|---|---|
0
pro3ri
19.11.15
✎
13:30
|
Добрый день!
Есть запрос: ВЫБРАТЬ ЕСТЬNULL(ТоварыНаСкладеОстатки.КоличествоОстаток, 0) КАК КолОст, ЕСТЬNULL(ТоварыНаСкладеОстатки.СуммаОстаток, 0) КАК СумОст, ВложенныйЗапрос.НомерСтроки, ВложенныйЗапрос.Товар, ВложенныйЗапрос.Серия, ВложенныйЗапрос.Количество КАК КолДок ИЗ (ВЫБРАТЬ МИНИМУМ(ПродажаТоваровТовары.НомерСтроки) КАК НомерСтроки, ПродажаТоваровТовары.Товар КАК Товар, ПродажаТоваровТовары.Серия КАК Серия, СУММА(ПродажаТоваровТовары.Количество) КАК Количество ИЗ Документ.ПродажаТоваров.Товары КАК ПродажаТоваровТовары СГРУППИРОВАТЬ ПО ПродажаТоваровТовары.Товар, ПродажаТоваровТовары.Серия) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки( &МоментВремени, (Товар, Серия) В (ВЫБРАТЬ ПродажаТоваровТовары.Товар, ПродажаТоваровТовары.Серия ИЗ Документ.ПродажаТоваров.Товары КАК ПродажаТоваровТовары ГДЕ ПродажаТоваровТовары.Ссылка = &Ссылка)) КАК ТоварыНаСкладеОстатки ПО ВложенныйЗапрос.Товар = ТоварыНаСкладеОстатки.Товар И ВложенныйЗапрос.Серия = ТоварыНаСкладеОстатки.Серия Целесообразно ли в этом запросе использовать полное соединение, или без разницы? Запрос на проверку товара на складе. |
|||
1
VikingKosmo
19.11.15
✎
13:31
|
а если документ не проведен? Или, не дай Бог, на удаление помечен?!
|
|||
2
DexterMorgan
19.11.15
✎
13:31
|
Гыы, чтобы все остатки выгрести из регистра? =)
|
|||
8
Nuobu
19.11.15
✎
13:43
|
(0) Может, ты имеешь ввиду не полное, в внутреннее?
|
|||
9
pro3ri
19.11.15
✎
14:17
|
(8) внутреннее тут явно ничего хорошего не даст. Например товара нет на остатках, вообще ничего запрос не вернет
|
|||
10
Nuobu
19.11.15
✎
14:23
|
(9) А тебе нужны остатки, не подвязанные под документ "ПродажаТоваров"?
|
|||
11
pro3ri
19.11.15
✎
14:29
|
(10) нет
|
|||
12
Nuobu
19.11.15
✎
14:31
|
(11) Тогда тебе не нужно полное.
|
|||
13
ЧеловекДуши
19.11.15
✎
14:33
|
Чем отличается Внутренне от Полного? :)
|
|||
14
VikingKosmo
19.11.15
✎
14:35
|
(13) полное звучит как то обидно. Типа толстый клиент...
|
|||
15
aleks_default
19.11.15
✎
14:36
|
(0) А ты вкурсе что соединяешь табличные части ВСЕХ документов ПродажаТоваров с остатками только по ОДНОМУ документу?
|
|||
16
Песочник
19.11.15
✎
14:40
|
Терпеть не могу вложенные запросы, именно благодаря их читаемости =)
И еще терпеть не могу, читать данные из документов, когда есть регистры накоплений. |
|||
17
Nuobu
19.11.15
✎
14:44
|
(13) В смысле "чем"? Тем, что одно внутренне, а второе - полное.
Вот первая ссылка из гугла: http://helpme1c.ru/soedineniya-v-zaprosax-v-1s-8-v-primerax |
|||
18
Tetragrammathon
19.11.15
✎
14:45
|
(16) Я бы посмотрел, как ты читаешь запросы с овер 100500 временных таблиц и когда обращение в пакетном запросе в последнем запросе идет к какой-нибудь, скажем, третьей таблице, ага.
|
|||
19
pro3ri
19.11.15
✎
14:45
|
(13) полное - все записи из 2-х таблиц, внутреннее - Если есть пересечения таблиц (15) согласен, условие в табличной части лучше делать с условием по ссылке
|
|||
20
VikingKosmo
19.11.15
✎
14:51
|
(18) отлично читаются временные таблицы, даже когда их 100500, ага
|
|||
21
palpetrovich
19.11.15
✎
15:07
|
(19) задачу озвучь ...остатки в ТЧ документа видеть, что-ли?
|
|||
22
pro3ri
19.11.15
✎
15:12
|
(21) задача контроля остатков при расходе:
Движения.ТоварыНаСкладе.Записывать = Истина; //Движения.ТоварыНаСкладе.Записать(); Движения.ТоварыНаСкладе.Очистить(); Движения.ТоварыНаСкладе.Записать(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЕСТЬNULL(ТоварыНаСкладеОстатки.КоличествоОстаток, 0) КАК КолОст, | ЕСТЬNULL(ТоварыНаСкладеОстатки.СуммаОстаток, 0) КАК СумОст, | ВложенныйЗапрос.НомерСтроки, | ВложенныйЗапрос.Товар, | ВложенныйЗапрос.Серия, | ВложенныйЗапрос.Количество КАК КолДок |ИЗ | (ВЫБРАТЬ | МИНИМУМ(ПродажаТоваровТовары.НомерСтроки) КАК НомерСтроки, | ПродажаТоваровТовары.Товар КАК Товар, | ПродажаТоваровТовары.Серия КАК Серия, | СУММА(ПродажаТоваровТовары.Количество) КАК Количество | ИЗ | Документ.ПродажаТоваров.Товары КАК ПродажаТоваровТовары | ГДЕ | ПродажаТоваровТовары.Ссылка = &Ссылка | | СГРУППИРОВАТЬ ПО | ПродажаТоваровТовары.Товар, | ПродажаТоваровТовары.Серия) КАК ВложенныйЗапрос | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки( | &МоментВремени, | (Товар, Серия) В | (ВЫБРАТЬ | ПродажаТоваровТовары.Товар, | ПродажаТоваровТовары.Серия | ИЗ | Документ.ПродажаТоваров.Товары КАК ПродажаТоваровТовары | ГДЕ | ПродажаТоваровТовары.Ссылка = &Ссылка)) КАК ТоварыНаСкладеОстатки | ПО ВложенныйЗапрос.Товар = ТоварыНаСкладеОстатки.Товар | И ВложенныйЗапрос.Серия = ТоварыНаСкладеОстатки.Серия"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("МоментВремени", МоментВремени()); Результат = Запрос.Выполнить(); ВыборкаТовары = Результат.Выбрать(); Пока ВыборкаТовары.Следующий() Цикл Недостача = ВыборкаТовары.КолДок - ВыборкаТовары.КолОст; Если Недостача>0 Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Недостаточно товава "+ВыборкаТовары.Товар+" этой серии в количестве "+Недостача; Сообщение.Поле = "Товары["+(ВыборкаТовары.НомерСтроки-1)+"].Количество"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; КонецЕсли; //ОсталосьСписать = ВыборкаТовары.КолДок; // //ВыборкаСерии = ВыборкаТовары.Выбрать(); //Пока ВыборкаСерии.Следующий() Цикл Если Не Отказ Тогда Запись = Движения.ТоварыНаСкладе.ДобавитьРасход(); Запись.Период = Дата; Запись.Товар = ВыборкаТовары.Товар; Запись.Серия = ВыборкаТовары.Серия; Запись.Количество = ВыборкаТовары.КолДок; Запись.Сумма = ВыборкаТовары.СумОст/ВыборкаТовары.КолОст*Запись.Количество; КонецЕсли; //ОсталосьСписать = ОсталосьСписать-Запись.Количество; //КонецЦикла; КонецЦикла; |
|||
23
Nuobu
19.11.15
✎
15:14
|
"Недостаточно товава "
|
|||
24
palpetrovich
19.11.15
✎
15:17
|
(22) "задача контроля остатков при расходе" решена в куче типовых конфигураций, точно есть смысл изобретать велосипед?
|
|||
25
aleks_default
19.11.15
✎
15:18
|
(24) да, лучше запостить этот велосипед сюда на мисту
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |