|
1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
AnisaL 23.09.20 - 10:39 | Добрый день! Есть запрос к справочнику номенклатура, который считает какое количество на складе товара в 3-х регионах и плюс с ценой по региону, и он выдает по 15 строк одной и той же номенклатуры, вместо одной строки со всеми количествами и ценами. Как быть?
ВЫБРАТЬ СпрНоменклатура.Ссылка КАК Ссылка, ВЫБОР КОГДА ТоварыНаСкладах.Склад В (&Магнитогорск) ТОГДА СУММА(ЕСТЬNULL(ТоварыНаСкладах.ВНаличииОстаток, 0)) ИНАЧЕ 0 КОНЕЦ КАК КолвоМагнитогорск, ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦенМагнитогорск ТОГДА МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) Конец КАК ЦенаМагнитогорск, ВЫБОР КОГДА ТоварыНаСкладах.Склад В (&Челябинск) ТОГДА СУММА(ЕСТЬNULL(ТоварыНаСкладах.ВНаличииОстаток, 0)) ИНАЧЕ 0 КОНЕЦ КАК КолвоЧелябинск, ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦенЧелябинск ТОГДА МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) Конец КАК ЦенаЧелябинск, ВЫБОР КОГДА ТоварыНаСкладах.Склад В (&Оренбург) ТОГДА СУММА(ЕСТЬNULL(ТоварыНаСкладах.ВНаличииОстаток, 0)) ИНАЧЕ 0 КОНЕЦ КАК КолвоОренбург, ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦенОренбург ТОГДА МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) Конец КАК ЦенаОренбург ИЗ Справочник.Номенклатура КАК СпрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладах ПО (ТоварыНаСкладах.Номенклатура = СпрНоменклатура.Ссылка) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ) КАК ЦеныНоменклатурыСрезПоследних ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = СпрНоменклатура.Ссылка) ГДЕ НЕ СпрНоменклатура.ЭтоГруппа и СпрНоменклатура.Ссылка В (&Номенклатура) СГРУППИРОВАТЬ ПО СпрНоменклатура.Ссылка, ТоварыНаСкладах.Склад, ЦеныНоменклатурыСрезПоследних.ВидЦены | ||
dka80 1 - 23.09.20 - 10:41 | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Выполни этот запрос отдельно и ты увидишь почему. Срез последних регистра сведений дает по всем Измерениям. У тебя, видимо, характеристики есть | ||
ДенисЧ 2 - 23.09.20 - 10:41 | Как выбираешь, так и выдаёт... Не надо считать 1с умней себя... | ||
AnisaL 3 - 23.09.20 - 10:42 | |||
AnisaL 4 - 23.09.20 - 10:45 | (1) Нет, характеристик нету | ||
ДенисЧ 5 - 23.09.20 - 10:45 | А если СГРУППИРОВАТЬ ПО СпрНоменклатура.Ссылка, // ТоварыНаСкладах.Склад, ЦеныНоменклатурыСрезПоследних.ВидЦены | ||
AnisaL 6 - 23.09.20 - 11:02 | (5) {(4, 9)}: Поле не входит в группу "ТоварыНаСкладах.Склад" КОГДА <<?>>ТоварыНаСкладах.Склад В (&Магнитогорск) {ВнешняяОбработка.ИнструментыРазработчикаКонсольЗапросов.МодульОбъекта(555)}: ПарЗап = Запрос.НайтиПараметры(); {ВнешняяОбработка.ИнструментыРазработчикаКонсольЗапросов.Форма.Форма.Форма(1439)}: РезультатСтруктура = ОбъектОбработки().СчитатьПараметрыЗапроса(ТекстЗапроса, ИдентификаторТекущегоЗапроса); {ВнешняяОбработка.ИнструментыРазработчикаКонсольЗапросов.Форма.Форма.Форма(1038)}: ЗаполнитьПараметрыПриВыполненииЗапроса(Текст); {ВнешняяОбработка.ИнструментыРазработчикаКонсольЗапросов.Форма.Форма.Форма(1010)}: ВыполнитьЗапросСервер(ИндексТекущегоЗапроса, РезультатЗапроса, ВыводитьВременныеТаблицы, ВыводитьИдентификатор, Текст, ТекстСообщения); {ВнешняяОбработка.ИнструментыРазработчикаКонсольЗапросов.Форма.Форма.Форма(518)}: ЗапуститьВыполнениеЗапроса(Ложь); по причине: {(4, 9)}: Поле не входит в группу "ТоварыНаСкладах.Склад" КОГДА <<?>>ТоварыНаСкладах.Склад В (&Магнитогорск) | ||
eTmy 7 - 23.09.20 - 11:10 | Представление null сделайте правильно и все сгруппируется | ||
AnisaL 8 - 23.09.20 - 11:11 | (7) Подскажите как это сделать? Я что-то не соображу | ||
AnisaL 9 - 23.09.20 - 11:22 | (7) (1) Удалила из запроса левое соединение с регистром сведений цены срез последних, оставило только количество, и теперь стало выдаваться 5 строк: https://a.radikal.ru/a29/2009/38/9002dfdde43d.jpg | ||
AnisaL 10 - 23.09.20 - 11:23 | (9) То есть количество не правильно формируется | ||
AnisaL 11 - 23.09.20 - 11:34 | Что-то ничего у меня не получается (. Может вообще как-то по другому надо запрос написать? | ||
AnisaL 12 - 23.09.20 - 11:50 | Вот убрала цены, вот что получилось : https://b.radikal.ru/b34/2009/28/e1a6a802d41e.jpg | ||
dka80 13 - 23.09.20 - 11:55 | (12) запрос покажи | ||
AnisaL 14 - 23.09.20 - 12:02 | (13)
ВЫБРАТЬ СпрНоменклатура.Наименование КАК Наименование, СпрНоменклатура.Артикул КАК Артикул, ВЫБОР КОГДА ТоварыНаСкладах.Склад.Родитель = &Магнитогорск ТОГДА СУММА(ЕСТЬNULL(ТоварыНаСкладах.ВНаличииОстаток, 0)) ИНАЧЕ 0 КОНЕЦ КАК КолвоМагнитогорск, ВЫБОР КОГДА ТоварыНаСкладах.Склад.Родитель = &Челябинск ТОГДА СУММА(ЕСТЬNULL(ТоварыНаСкладах.ВНаличииОстаток, 0)) ИНАЧЕ 0 КОНЕЦ КАК КолвоЧелябинск, ВЫБОР КОГДА ТоварыНаСкладах.Склад.Родитель = &Оренбург ТОГДА СУММА(ЕСТЬNULL(ТоварыНаСкладах.ВНаличииОстаток, 0)) ИНАЧЕ 0 КОНЕЦ КАК КолвоОренбург ИЗ Справочник.Номенклатура КАК СпрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладах ПО (ТоварыНаСкладах.Номенклатура = СпрНоменклатура.Ссылка) ГДЕ НЕ СпрНоменклатура.ЭтоГруппа СГРУППИРОВАТЬ ПО СпрНоменклатура.Наименование, СпрНоменклатура.Артикул, ТоварыНаСкладах.Склад.Родитель | ||
eTmy 15 - 23.09.20 - 12:04 | (12) В пустых колонках какой тип данных? Null? | ||
Andreyyy 16 - 23.09.20 - 12:04 | (14) Попробуйте сначала во временную таблицу, а оттуда выборку и сгруппировать.
Что-то было подобное, не нашел другого решения. | ||
eTmy 17 - 23.09.20 - 12:10 | ВЫБРАТЬ СпрНоменклатура.Наименование КАК Наименование, СпрНоменклатура.Артикул КАК Артикул, МАКСИМУМ(ВЫБОР КОГДА ТоварыНаСкладах.Склад.Родитель = &Магнитогорск ТОГДА СУММА(ЕСТЬNULL(ТоварыНаСкладах.ВНаличииОстаток, 0)) ИНАЧЕ 0 КОНЕЦ) КАК КолвоМагнитогорск, МАКСИМУМ(ВЫБОР КОГДА ТоварыНаСкладах.Склад.Родитель = &Челябинск ТОГДА СУММА(ЕСТЬNULL(ТоварыНаСкладах.ВНаличииОстаток, 0)) ИНАЧЕ 0 КОНЕЦ) КАК КолвоЧелябинск, МАКСИМУМ(ВЫБОР КОГДА ТоварыНаСкладах.Склад.Родитель = &Оренбург ТОГДА СУММА(ЕСТЬNULL(ТоварыНаСкладах.ВНаличииОстаток, 0)) ИНАЧЕ 0 КОНЕЦ КАК КолвоОренбург ИЗ Справочник.Номенклатура КАК СпрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладах ПО (ТоварыНаСкладах.Номенклатура = СпрНоменклатура.Ссылка) ГДЕ НЕ СпрНоменклатура.ЭтоГруппа СГРУППИРОВАТЬ ПО СпрНоменклатура.Наименование, СпрНоменклатура.Артикул, ТоварыНаСкладах.Склад.Родитель Если там не null, то вот так должно схлопнуться (агрегатную функцию нужную сами выберите) | ||
AnisaL 18 - 23.09.20 - 12:12 | (15) А как узнать? В конфигураторе эти столбцы с типом "число" | ||
eTmy 19 - 23.09.20 - 12:14 | (18) В консоли запроса, в результате запроса просто 2 раза тыкнуть, откроется значение) | ||
AnisaL 20 - 23.09.20 - 12:17 | (19) я тыкаю 2 раза, и ничего не открывается | ||
AnisaL 21 - 23.09.20 - 12:17 | (17) Ошибка получения информации набора данных
по причине: Ошибка в запросе набора данных по причине: {(4, 14)}: Недопустимо использование вложенных агрегирующих функций МАКСИМУМ(<<?>>ВЫБОР Вот какая ошибка выходит | ||
dka80 22 - 23.09.20 - 12:23 | ИНАЧЕ Сумма(0) | ||
dka80 23 - 23.09.20 - 12:23 | Или сначала во временную таблицу без агрегирующих функций, а затем выборка из временной таблицы с агрегирующими функциями | ||
dka80 24 - 23.09.20 - 12:27 | (21)
сумма(ВЫБОР КОГДА ТоварыНаСкладах.Склад В (&Оренбург) ТОГДА (ЕСТЬNULL(ТоварыНаСкладах.ВНаличииОстаток, 0)) ИНАЧЕ 0 КОНЕЦ) | ||
eTmy 25 - 23.09.20 - 12:29 | (24) +, тс просто неправильно пыталась сгруппировать | ||
Rovan 26 - 23.09.20 - 12:38 | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладах - там несколько складов ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ) КАК ЦеныНоменклатурыСрезПоследних - там несколкко видов цен ! | ||
AnisaL 27 - 23.09.20 - 12:53 | (24) Теперь 3 строки выдает с одной номенклатурой: https://d.radikal.ru/d16/2009/58/2f2f0f66a7f8.jpg | ||
AnisaL 28 - 23.09.20 - 13:27 | (23) Сделала как вы сказали, сначала во временную таблицу, потом выборку с агрегатными функциями. Получилось в одну строку вывести, спасибо! Но почему-то по Оренбургу остаток не выводит, в чем может быть дело? https://b.radikal.ru/b12/2009/0a/6b947a9789a9.jpg | ||
dka80 29 - 23.09.20 - 13:28 | СГРУППИРОВАТЬ ПО СпрНоменклатура.Ссылка | ||
AnisaL 30 - 23.09.20 - 13:42 | (29) у меня есть эта группировка Рекламное место пустует | ||
dka80 31 - 23.09.20 - 13:44 | (30) только эта группировка должна быть
Неправильно: СГРУППИРОВАТЬ ПО СпрНоменклатура.Ссылка, ТоварыНаСкладах.Склад, ЦеныНоменклатурыСрезПоследних.ВидЦены Правильно: СГРУППИРОВАТЬ ПО СпрНоменклатура.Ссылка | ||
AnisaL 32 - 23.09.20 - 13:52 | (31) ВЫБРАТЬ СпрНоменклатура.Ссылка КАК Ссылка, ВЫБОР КОГДА ТоварыНаСкладах.Склад.Родитель = &Магнитогорск ТОГДА ЕСТЬNULL(ТоварыНаСкладах.ВНаличииОстаток, 0) ИНАЧЕ 0 КОНЕЦ КАК КолвоМагнитогорск, ВЫБОР КОГДА ТоварыНаСкладах.Склад.Родитель = &Челябинск ТОГДА ЕСТЬNULL(ТоварыНаСкладах.ВНаличииОстаток, 0) ИНАЧЕ 0 КОНЕЦ КАК КолвоЧелябинск, ВЫБОР КОГДА ТоварыНаСкладах.Склад.Родитель = &Оренбург ТОГДА ЕСТЬNULL(ТоварыНаСкладах.ВНаличииОстаток, 0) ИНАЧЕ 0 КОНЕЦ КАК КолвоОренбург ПОМЕСТИТЬ ВТ ИЗ Справочник.Номенклатура КАК СпрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладах ПО (ТоварыНаСкладах.Номенклатура = СпрНоменклатура.Ссылка) ГДЕ НЕ СпрНоменклатура.ЭтоГруппа ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.Ссылка КАК Ссылка, СУММА(ВТ.КолвоМагнитогорск) КАК КолвоМагнитогорск, СУММА(ВТ.КолвоЧелябинск) КАК КолвоЧелябинск, СУММА(ВТ.КолвоОренбург) КАК КолвоОренбург ИЗ ВТ КАК ВТ СГРУППИРОВАТЬ ПО ВТ.Ссылка | ||
AnisaL 33 - 23.09.20 - 13:53 | (31) по Магнитогорску и Челябинску все работает, правильно считает остаток, а вот по Оренбургу 0. Не пойму в чем дело? | ||
dka80 34 - 23.09.20 - 13:54 | (33) запрос давай. Может по оренбургу просто нет остатков? | ||
AnisaL 35 - 23.09.20 - 13:57 | (34)
ВЫБРАТЬ СпрНоменклатура.Ссылка КАК Ссылка, ВЫБОР КОГДА ТоварыНаСкладах.Склад.Родитель = &Магнитогорск ТОГДА ЕСТЬNULL(ТоварыНаСкладах.ВНаличииОстаток, 0) ИНАЧЕ 0 КОНЕЦ КАК КолвоМагнитогорск, ВЫБОР КОГДА ТоварыНаСкладах.Склад.Родитель = &Челябинск ТОГДА ЕСТЬNULL(ТоварыНаСкладах.ВНаличииОстаток, 0) ИНАЧЕ 0 КОНЕЦ КАК КолвоЧелябинск, ВЫБОР КОГДА ТоварыНаСкладах.Склад.Родитель = &Оренбург ТОГДА ЕСТЬNULL(ТоварыНаСкладах.ВНаличииОстаток, 0) ИНАЧЕ 0 КОНЕЦ КАК КолвоОренбург ПОМЕСТИТЬ ВТ ИЗ Справочник.Номенклатура КАК СпрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладах ПО (ТоварыНаСкладах.Номенклатура = СпрНоменклатура.Ссылка) ГДЕ НЕ СпрНоменклатура.ЭтоГруппа ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.Ссылка КАК Ссылка, СУММА(ВТ.КолвоМагнитогорск) КАК КолвоМагнитогорск, СУММА(ВТ.КолвоЧелябинск) КАК КолвоЧелябинск, СУММА(ВТ.КолвоОренбург) КАК КолвоОренбург ИЗ ВТ КАК ВТ СГРУППИРОВАТЬ ПО ВТ.Ссылка Остаток есть, в том то и дело | ||
AnisaL 36 - 23.09.20 - 13:57 | (34) Остаток точно есть | ||
dka80 37 - 23.09.20 - 14:01 | КОГДА ТоварыНаСкладах.Склад.Родитель = &ОренбургВот это условие не выполняется. Может параметр неверный, может родитель у склада оренбурга другой | ||
AnisaL 38 - 23.09.20 - 14:20 | (37) Да, действительно, параметр неверный. Просто всего 2 склада с именем Оренбург, и один из них группа, и он находил не группу. Спасибо! А теперь, подскажите, как мне к этим остаткам цены прикрутить? | ||
ColonelAp4u 39 - 23.09.20 - 14:26 | (38) Посмотри как я сделал твой запрос.
ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Номенклатура, СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК Остаток1Склад, СУММА(0) КАК Остаток2Склад, СУММА(0) КАК Остаток3Склад, СУММА(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки( &Период, Склад = &Склад И Номенклатура В (&СписокНоменклатуры)) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ТипЦен = &ТипЦен1) КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура СГРУППИРОВАТЬ ПО ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Номенклатура ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Номенклатура, СУММА(0), СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток), СУММА(0), СУММА(ЦеныНоменклатурыСрезПоследних.Цена) ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки( &Период, Склад = &Склад2 И Номенклатура В (&СписокНоменклатуры)) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ТипЦен = &ТипЦен2) КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура СГРУППИРОВАТЬ ПО ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Номенклатура ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Номенклатура, СУММА(0), СУММА(0), СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток), СУММА(ЦеныНоменклатурыСрезПоследних.Цена) ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки( &Период, Склад = &Склад3 И Номенклатура В (&СписокНоменклатуры)) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ТипЦен = &ТипЦен3) КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура СГРУППИРОВАТЬ ПО ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Номенклатура | ||
ColonelAp4u 40 - 23.09.20 - 14:27 | тебе нужно поменять в параметрах временных таблиц Склад = &Склад на склад.Родитель = &Магнитогорск или что то там. | ||
dka80 41 - 23.09.20 - 14:31 | (38) выбери цены во временную таблицу, сгруппировав максимум(цена) по номенклатуре.
далее левым соединением к запросу с остатками (что ты во временную таблицу поместила) | ||
ColonelAp4u 42 - 23.09.20 - 14:38 | (41) быстрее запрос отработает через объединение чем через выбор когда, + выбор из справочника с левым соединением по остаткам, зачем? А потом еще этот результат еще одним левым с максимум цена? Почему максимум цена, почему не срез последних по типу цен, который выдаст 1 строчку по 1 номенклатуре. | ||
dka80 43 - 23.09.20 - 14:41 | Потому что у нее несколько типов цен и срез последних выдает несколько строк | ||
ColonelAp4u 44 - 23.09.20 - 14:42 | |||
ColonelAp4u 45 - 23.09.20 - 14:46 | |||
ColonelAp4u 46 - 23.09.20 - 14:47 | запроса*. | ||
AnisaL 47 - 23.09.20 - 15:27 | (46) Сейчас смена закончилась, завтра попробую | ||
AnisaL 48 - 24.09.20 - 11:01 | (41) Запрос написала как вы сказали, все получилось, спасибо большое. Могу текст запроса сюда кинуть. Теперь все красиво! Только одна проблемка, из-за того что запрос сильно изменился, пропал заголовок формы списка номенклатуры. Как его добавить? https://c.radikal.ru/c39/2009/08/2cd5f50206a2.jpg |
|
Список тем форума |