|
Запрос по остаткам. | ☑ | ||
---|---|---|---|---|
0
bahuus
21.12.14
✎
23:42
|
Добрый вечер!
Подскажите начинающему в каком направлении двигаться по такому вот вопросу. Требуется в таблицу значения вывести информацию остатки по складам, где в строках "номенклатура", а в колонках "склад". Склады указываются в списке значений. Как это сделать с помощью СКД знаю, а вот как запросом и встроенным языком в документе нет. Может кто подскажет и поможет? |
|||
1
vicof
21.12.14
✎
23:52
|
Пишешь запрос, как в СКД.
И обходишь результат запроса по грвппировкам. Если склад новый - добавляешь новую колонку, если номенклаутра новая - новую строку. Только зачем, если на СКД гораздо проще? |
|||
2
bahuus
21.12.14
✎
23:57
|
(1) Потом на основании этой таблицы формировать документ "Перемещение". Ситуация такая: есть документ "Заявка план меню" в ней две таблицы "блюдо" и "ингредиенты". По таблице "ингредиенты" формируем остатки по складам, выводим в таблицу значений и на основании её формируем перемещение на кухню, где есть остаток. Может я неправильно выбрал алгоритм подскажите...
|
|||
3
HEKPOH
22.12.14
✎
00:03
|
(2) ну так и выгрузи результат СКД в ТЗ
|
|||
4
bahuus
22.12.14
✎
00:57
|
(3) Выводит ошибку:
"Ошибка генерации макета по причине: Не поддерживается вывод таблиц, диаграмм и вложенных отчетов в универсальную коллекцию значений В СКД -> Настройки стоит "Таблица", а если просто детальные записи, то в ТЗ выводит просто как из запроса. Может я не то смотрю и делаю? |
|||
5
MSOliver
22.12.14
✎
02:53
|
(3) вроде не получится, сколько колонок склад будет?
|
|||
6
MSOliver
22.12.14
✎
02:54
|
(2) для данной задачи не нужно формировать ТЗ описанной в (0)
|
|||
7
bahuus
22.12.14
✎
06:05
|
(6) Там задача усовершенствуется:
Потом на основании этой таблицы формировать документ "Перемещение". Ситуация такая: есть документ "Заявка план меню" в ней две таблицы "блюдо" и "ингредиенты". По таблице "ингредиенты" формируем остатки по складам, выводим в таблицу значений и на основании её формируем перемещение на кухню, где есть остаток. Может я неправильно выбрал алгоритм подскажите... |
|||
8
Йохохо
22.12.14
✎
06:21
|
(7) тебе ее показывать надо? промежуточную ТЗ. И обрабатывать клик?
|
|||
9
bahuus
22.12.14
✎
06:55
|
(8) Да пользователь ее хочет видеть. Сделал её таким образом. Подскажите корректно ли решение:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ |ЗаявкаПланМеню.Номенклатура КАК Номенклатура, | Склады.Ссылка КАК Склад |ПОМЕСТИТЬ ВТ |ИЗ | Документ.ЗаявкаПланМеню.Ингридиенты КАК ЗаявкаПланМеню, | Справочник.Склады КАК Склады |ГДЕ | ЗаявкаПланМеню.Ссылка = &Ссылка | И Склады.Ссылка В(&Склады) | |СГРУППИРОВАТЬ ПО | ЗаявкаПланМеню.Номенклатура, | Склады.Ссылка | |ИНДЕКСИРОВАТЬ ПО | Номенклатура, | Склад |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ.Номенклатура КАК Номенклатура, | ВТ.Склад КАК Склад, | ЕСТЬNULL(СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток), 0) КАК КоличествоОстаток |ИЗ | ВТ КАК ВТ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки( | , | (Номенклатура, Склад) В | (ВЫБРАТЬ | ВТ.Номенклатура, | ВТ.Склад | ИЗ | ВТ КАК ВТ)) КАК ТоварыНаСкладахОстатки | ПО ВТ.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура | И ВТ.Склад = ТоварыНаСкладахОстатки.Склад | |СГРУППИРОВАТЬ ПО | ВТ.Склад, | ВТ.Номенклатура | |УПОРЯДОЧИТЬ ПО | Номенклатура, | Склад |ИТОГИ ПО | Склад"; Запрос.Параметры.Вставить("Склады", ОтборПоСкладам); Запрос.Параметры.Вставить("Ссылка", ВыбДокумент); Результат = Запрос.Выполнить(); ВыборкаСклад = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Склад"); ИндексКолонки = 1; Пока ВыборкаСклад.Следующий() Цикл ОписаниеКоличество = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(12, 3)); ТабличноеПоле.Колонки.Добавить( , ОписаниеКоличество, Строка(ВыборкаСклад.Склад.Наименование), ); ЭлементыФормы.ТабличноеПоле.СоздатьКолонки(); ВыборкаДетальныеЗаписи = ВыборкаСклад.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл НайденнаяСтрока = ТабличноеПоле.Найти(ВыборкаДетальныеЗаписи.Номенклатура, ); Если НайденнаяСтрока = Неопределено Тогда НоваяСтрока = ТабличноеПоле.Добавить(); НоваяСтрока.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура; НоваяСтрока[ИндексКолонки] = ВыборкаДетальныеЗаписи.КоличествоОстаток; Иначе НайденнаяСтрока[ИндексКолонки] = ВыборкаДетальныеЗаписи.КоличествоОстаток; КонецЕсли; КонецЦикла; ИндексКолонки = ИндексКолонки + 1; КонецЦикла; А потом уже делать перемещение... |
|||
10
MSOliver
22.12.14
✎
07:05
|
Левое соединение убери, а так если все работает то ничего не трогай...
|
|||
11
bahuus
22.12.14
✎
07:07
|
(10) Соединение полностью убрать?
|
|||
12
13_Mult
22.12.14
✎
07:08
|
(9) Жесть какая
|
|||
13
MSOliver
22.12.14
✎
07:08
|
(11) нет, только его левую часть :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |