|
Пустая группировка | ☑ | ||
---|---|---|---|---|
0
Retributor
11.04.12
✎
12:04
|
1С 8.2
Цель: Адекватный обход группировок. Суть: Есть запрос. В запрос передается таблица с колонками "Номенклатура, Характеристика, Спецификация, Количество", к ней левым соединением присобачивается регистр сведений (виртуальная таблица с остатками). Все по правилам, разумеется, из таблицы-параметра выборка во временную, потом ко временной присоединяется регистр. Все бы замечательно, если бы не эта спецификация. Она почти никак не относится к номенклатуре (то есть, в таблице может быть N одинаковых номенклатурных позиций с разными спецификациями). Выход прост. Делаем списание по типу партий, точнее, по спецификациям. То есть, в запросе берем итоги количества (сумма) и остатка (максимум) по номенклатуре и характеристике. А дальше просто обходим по группировкам. Проблема: Не работает. Характеристика почти постоянно пустая, но может попасться и не пустая. В связи с чем итоги получать только по номенклатуре будет неверно. А обход группировки по пустой характеристике выдает ошибку чтения значения. Есть ли выход из ситуации? |
|||
1
Jstunner
11.04.12
✎
12:06
|
дальше "регистра сведений с остатками" не читал..
|
|||
2
hhhh
11.04.12
✎
12:09
|
(0) выкинуть этот запрос и написать нормальный, без закидонов.
|
|||
3
Retributor
11.04.12
✎
12:15
|
Запрос иначе не сделать. Таблица, к которой мне нужно получить остатки, никуда не пишется и передать эти данные в запрос нет иного способа, кроме как через параметр в качестве источника данных. При работе необходимо контролировать остатки (которые получаются по номенклатуре и характеристике), потому их приходится распределять таким вот макаром по трем полям (Номенклатура, Характеристика, Спецификация). Обычный механизм партионного списания.
Проблема с группировкой по характеристике. |
|||
4
Retributor
11.04.12
✎
12:19
|
Да, пардон, регистр накопления, а не регистр сведений. Оговорился. Прошу прощения.
|
|||
5
hhhh
11.04.12
✎
12:19
|
(3) ну выкиньте поле Спецификация из запроса. Вы же не додумались еще партии по спецификациям вести?
|
|||
6
Retributor
11.04.12
✎
12:24
|
Выкинуть поле Спецификация нельзя.
Суть обработки в заполнении материалов по продукции с контролем остатков. И есть требование таскать спецификацию за собой. |
|||
7
hhhh
11.04.12
✎
12:27
|
(6) ну код покажите. Всегда всё работает с пустыми полями. ПРограмме вообще-то всё равно, пустое там поле или непустое.
|
|||
8
Retributor
11.04.12
✎
12:31
|
//хвост текста запроса
"|ИТОГИ | СУММА(Количество), | МАКСИМУМ(КоличествоОстаток) |ПО | Номенклатура, | ХарактеристикаНоменклатуры"; Запрос.УстановитьПараметр("Период", ОбъектОбработки.МоментВремени()); Запрос.УстановитьПараметр("ПредварительнаяТаблица", ТаблицаМатериалов); ВыборкаГрупНом = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаГрупНом.Следующий() Цикл ВыборкаГруп = ВыборкаГрупНом.Выбрать(); Пока ВыборкаГруп.Следующий() Цикл КолОст = ВыборкаГруп.КоличествоОстаток; Выборка = ВыборкаГруп.Выбрать(); Пока Выборка.Следующий() Цикл //тут идет обработка, но сюда даже не заходит КонецЦикла; КонецЦикла; КонецЦикла; |
|||
9
hhhh
11.04.12
✎
12:33
|
ну так может?
ВыборкаГруп = ВыборкаГрупНом.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); |
|||
10
Retributor
11.04.12
✎
12:36
|
Смех и грех. Да, спасибо. Сам себе мозги вскипятил глупым промахом.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |