|
Запрос на остатки | ☑ | ||
---|---|---|---|---|
0
antihacker
27.02.18
✎
15:53
|
Всем привет !
Запрос |
|||
1
DmitriyDI
27.02.18
✎
15:54
|
информативно)
|
|||
2
antihacker
27.02.18
✎
15:54
|
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстатки.Номенклатура.ЭтоГруппа КАК ЭтоГруппа, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток, | Цены.Цена КАК Цена | |ИЗ | | РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, | МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена | ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(,) КАК ЦеныНоменклатурыСрезПоследних | СГРУППИРОВАТЬ ПО | ЦеныНоменклатурыСрезПоследних.Номенклатура) КАК Цены | ПО ТоварыНаСкладахОстатки.Номенклатура = Цены.Номенклатура |ИТОГИ | СУММА(Остаток) |ПО | Номенклатура ИЕРАРХИЯ"; Почему элементы выходит по 2 раза |
|||
3
antihacker
27.02.18
✎
15:56
|
Вывожу вот так
Результат = Запрос.Выполнить(); ТабДок.НачатьАвтогруппировкуСтрок(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Группа.Параметры.Заполнить(ВыборкаДетальныеЗаписи); Если ВыборкаДетальныеЗаписи.ЭтоГруппа Тогда Группа.Область("R1C1:R1C18").ЦветФона =WebЦвета.СветлоКоричневый; Группа.Область("R1C1:R1C18").ЦветРамки =WebЦвета.Коричневый; Иначе Группа.Область("R1C1:R1C18").ЦветФона =WebЦвета.Белый; Группа.Область("R1C1:R1C18").ЦветРамки =WebЦвета.Коричневый; КонецЕсли; ТабДок.Вывести(Группа, ВыборкаДетальныеЗаписи.Уровень()); //Пока СписокСкладов.Следующий() Цикл // // //СтокаНоменклатура.Параметры.ОстатокПоТекСкладу = ОстатокНомНаСкладе(ВыборкаДетальныеЗаписи.Ссылка,СписокСкладов.Ссылка); // //ТабДок.Присоединить(СтокаНоменклатура); //КонецЦикла; КонецЦикла; Именно элмент по два раза. И еще в группированом виде. То елемент и этот же элемент в своей группе |
|||
4
DmitriyDI
27.02.18
✎
15:56
|
(2) ИТОГИ ПО
Ссылка ТОЛЬКО ИЕРАРХИЯ |
|||
5
Джинн
27.02.18
✎
15:57
|
Сколько типов цен?
|
|||
6
antihacker
27.02.18
✎
15:59
|
Пробовал указать тип цен явным образом. Не помогает
|
|||
7
Джинн
27.02.18
✎
16:01
|
Сколько складов?
|
|||
8
antihacker
27.02.18
✎
16:03
|
Далее с этой функцией пытаюсь получить остаток
Функция ОстатокНомНаСкладе(вхНоменклатура,вхСклад); //---Проверяем остаток--------------------------------- запрос=новый запрос; запрос.Текст="ВЫБРАТЬ | ТоварыНаСкладахОстатки.Склад КАК Склад, | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | &ДатаОст, | Склад = &выбСписСклады | И Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки"; запрос.УстановитьПараметр("ДатаОст",КонецДня(ЭтотОБъект.Дата)); запрос.УстановитьПараметр("выбСписСклады",вхСклад); запрос.УстановитьПараметр("Номенклатура",вхНоменклатура); КолОстаток=запрос.Выполнить().Выбрать(); Если КолОстаток.Количество()=0 Тогда Возврат 0; Иначе Пока КолОстаток.Следующий() Цикл Возврат КолОстаток.КоличествоОстаток; КонецЦикла; КонецЕсли; КонецФункции Ничегоне возвращает |
|||
9
DmitriyDI
27.02.18
✎
16:05
|
(8) Ужас, тебе надо делать обход результата запроса по группировкам, а не делать запрос в цикле
|
|||
10
antihacker
27.02.18
✎
16:10
|
То есть функция выдает остатки, но остаток группы не выдает
|
|||
11
DmitriyDI
27.02.18
✎
16:12
|
(10)
Номенклатура В ИЕРАРХИИ (&Номенклатура) напиши в запросе, который у тебя в цикле |
|||
12
DmitriyDI
27.02.18
✎
16:14
|
(10) а вообще ужасное исполнение, на твоем месте переписал бы нормально в первом запросе получай выборку и по складам и по товарам, затем обходи по группировкам в двух циклах.
|
|||
13
antihacker
27.02.18
✎
16:15
|
Это как ? Не умею. Слабак я
|
|||
14
antihacker
27.02.18
✎
16:15
|
Мозг протекает
|
|||
15
DmitriyDI
27.02.18
✎
16:19
|
(13) зачем тебе в первом запросе итоги? убери сделай группировку, во втором в цикле который сделай Номенклатура В ИЕРАРХИИ (&Номенклатура)
|
|||
16
xXeNoNx
27.02.18
✎
17:24
|
(2) А потому шта иерархия по номенклатуре!
|
|||
17
antihacker
27.02.18
✎
17:43
|
И так. Кто подскажет. Как мне исправить функцию, что бы она возвращала остатки и по группам тоже.
|
|||
18
hhhh
27.02.18
✎
17:48
|
(17) как-то так
ВыборкаДетальныеЗаписи = Результат.Выбрать(ОБбходРезультатаЗапроса.ПоГруппировкамСИерархией); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл |
|||
19
xXeNoNx
27.02.18
✎
18:00
|
(17) Остатки по группе "Продукты": Молоко - 1литр + Селедка - 1шт + Колбаса - 1палка - чему буде равно? Думаю что тут надо новую единицу измерения ввести - РЖ(расстройство желудка)
|
|||
20
xXeNoNx
27.02.18
✎
18:09
|
1. Получаем остатки товаров в разрезе склада
2. Получаем цены по уже выбранной номенклатуре (используя параметры вирт. таблицы) 3. Соединяя эксперементируй И не забываем: СОЕДИНЯТЬСЯ С ВИРТУАЛЬНОЙ ТАБЛИЦЕЙ - ЭТО ХРЕНОВО |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |