|
Как правильно описать условия при работе с результатом запроса | ☑ | ||
---|---|---|---|---|
0
Anna_77
25.12.17
✎
15:56
|
Есть запрос на получение данных из регистра накопления, который показывает заполненность Ящиков - товарами. При добавлении нового товара в документ Приход, Необходимо указать следующее условие: если в результате запроса у нас уже есть ящики с таким назначением товара, тогда новый товар помещаем в этот ящик, если нет - тогда выбираем пустой.
Запрос.Текст = "Выбрать Назначение,Ящик,Вналичии из РегистраНакопления.ТоварыВЯщиках сгруппировать по ТоварыВЯщиках.НазначениеТовара,ТоварыВЯщиках.Ящик" Получаю результат и пишу условие: Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Если НовСтрока.НазначениеТовара = Результат.НазначениеТовара тогда НовСтрока.Ящик = Результат.Ящик а дальше затрудняюсь написать. Подскажите пожалуйста! как именно выразить что если в результате запроса нет ящиков с таким назначениемТовара, тогда товару присваивается любой пустой ящик. |
|||
1
vde69
25.12.17
✎
16:05
|
для начала исправь
Выбрать Назначение,Ящик,Максимум(Вналичии) из РегистраНакопления.ТоварыВЯщиках сгруппировать по ТоварыВЯщиках.НазначениеТовара,ТоварыВЯщиках.Ящик |
|||
2
vde69
25.12.17
✎
16:08
|
второе - у тебя запрос в цикле... это уже плохо, и если хочешь совета покажи больше кода...
|
|||
3
vde69
25.12.17
✎
16:11
|
ну и в третьих - если твоя задача реальная (а не тест) то с такими вопросами - быть беде...
начни с описания русскими словами (в коментах) чего ты должна делать, а после между ними вставляй код, например // выберу текущие ящики которые в которых уже есть товары // буду искать мой товар // если не найду - надо... |
|||
4
D_E_S_131
25.12.17
✎
16:17
|
Ну и структуру этого регистра не лишним будет написать.
|
|||
5
breezee
25.12.17
✎
17:23
|
(0) >77
В 8 констурутор запроса завезли, удобнее в конструкторе делать |
|||
6
Anna_77
25.12.17
✎
22:10
|
Если что не так, извините, наверно все учились методом "проб и ошибок", поэтому не судите строго.
Попыталась описать более подробно: // создаю новый документ РазмещениеТоваров на основании данных из документа ПрихОрдер: РазмещениеТоваров = Документы.ОтборРазмещениеТоваров.СоздатьДокумент(); РазмещениеТоваров.Дата= ПрихОрдер.Дата; //беру реквизиты из док. Прихордер // далее запрос, который заполняет табличную часть, выбирает последнюю добавленную строку: Запрос.Текст = "Выбрать Первые 1 | ПриходныйОрдерНаТоварыТовары.Назначение, | ПриходныйОрдерНаТоварыТовары.Номенклатура, | ПриходныйОрдерНаТоварыТовары.Количество, | УпаковкиЕдиницыИзмерения.Наименование, | СкладскиеЯчейки.Ссылка | из Документ.ПриходныйОрдерНаТовары.Товары как | ПриходныйОрдерНаТовары | левое соединение Справочник.УпаковкиЕдиницыИзмерения как | УпаковкиЕдиницыИзмерения | Левое соединение Справочник.НаборыУпаковок как | НаборыУпаковок | по УпаковкиЕдиницыИзмерения.Владелец = | НаборыУпаковок.Ссылка | по ПриходныйОрдерНаТовары.Номенклатура.НаборУпаковок = | УпаковкиЕдиницыИзмерения.Владелец, | Справочник.СкладскиеЯчейки как СкладскиеЯчейки | где | ПриходныйОрдерНаТоварыТовары.Ссылка = &Ссылка | упорядочить по | ПриходныйОрдерНаТоварыТовары.НомерСтроки УБЫВ" //вывожу результат запроса: Запрос.УстановитьПараметр("Ссылка", ПрихОрдер.Ссылка); Результат = Запрос.Выполнить(); ВыбратьСтроки = Результат.Выбрать(); Пока ВыбратьСтроки.Следующий() Цикл НовСтрока = РазмещениеТоваров.ТоварыРазмещение.Добавить(); НовСтрока.НОменклатура = ВыбратьСтроки.Номенклатура; НовСтрока.Назначение = ВыбратьСтроки.Назначение; НовСтрока.Количество = ВыбратьСтроки.Количество; Новстрока.Ячейка = ВыбратьСтроки.Ссылка; // в результате получается, что при добавлении новой строки в документ - товару присваивается с начала всегда одна и та же ячейка. //трудность возникает далее: // необходимо проверить есть ли в базе ячейка с таким назначением, если есть тогда наш товар помещаем в эту ячейку, если нет тогда в ближайшую пустую. Каким образом это дальше осуществить? |
|||
7
Anna_77
25.12.17
✎
22:18
|
//Я так понимаю, нужно запросом определить из //регистраНакопления ТоварыВЯчейках какие ячейки заполнены, //какое у них назначение и какие пустые. И далее пишем //условие:
Если НовСтрока.Назначение = Результат.Назначение тогда НовСтрока.Ячейка = Результат.Ячейка иначе // а дальше затрудняюсь написать. |
|||
8
Злопчинский
25.12.17
✎
22:27
|
(6) в ближайшую пустую - в ближайшую к чему?!
|
|||
9
Anna_77
25.12.17
✎
22:31
|
просто: в пустую
нумерация ячеек: 1-1-1; 1-1-2; и т.д. |
|||
10
Злопчинский
25.12.17
✎
22:52
|
(9) а какое отношение нумерация ячеек имеет к её пустоте?
|
|||
11
hhhh
26.12.17
✎
00:20
|
(10) ну включай экстрасенсорику. Ближайший, наверно, к нулю. То есть 1-1-1 ближе чем 1-1-2.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |