Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Как правильно описать условия при работе с результатом запроса

Как правильно описать условия при работе с результатом запроса
Я
   Anna_77
 
25.12.17 - 15:56
Есть запрос на получение данных из регистра накопления, который показывает заполненность Ящиков - товарами. При добавлении нового товара в документ Приход, Необходимо указать следующее условие: если в результате запроса у нас уже есть ящики с таким назначением товара, тогда новый товар помещаем в этот ящик, если нет - тогда выбираем пустой.
Запрос.Текст = "Выбрать Назначение,Ящик,Вналичии из РегистраНакопления.ТоварыВЯщиках сгруппировать по ТоварыВЯщиках.НазначениеТовара,ТоварыВЯщиках.Ящик"
Получаю результат и пишу условие:
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
Если НовСтрока.НазначениеТовара = Результат.НазначениеТовара тогда 
НовСтрока.Ящик = Результат.Ящик а дальше затрудняюсь написать. Подскажите пожалуйста! как именно выразить что если в результате запроса нет ящиков с таким назначениемТовара, тогда товару присваивается любой пустой ящик.
 
 
   vde69
 
1 - 25.12.17 - 16:05
для начала исправь

Выбрать Назначение,Ящик,Максимум(Вналичии) из РегистраНакопления.ТоварыВЯщиках сгруппировать по ТоварыВЯщиках.НазначениеТовара,ТоварыВЯщиках.Ящик
   vde69
 
2 - 25.12.17 - 16:08
второе - у тебя запрос в цикле... это уже плохо, и если хочешь совета покажи больше кода...
   vde69
 
3 - 25.12.17 - 16:11
ну и в третьих - если твоя задача реальная (а не тест) то с такими вопросами - быть беде...

начни с описания русскими словами (в коментах) чего ты должна делать, а после между ними вставляй код, например

// выберу текущие ящики которые в которых уже есть товары

// буду искать мой товар
// если не найду - надо...
   D_E_S_131
 
4 - 25.12.17 - 16:17
Ну и структуру этого регистра не лишним будет написать.
   breezee
 
5 - 25.12.17 - 17:23
(0) >77
В 8 констурутор запроса завезли, удобнее в конструкторе делать
   Anna_77
 
6 - 25.12.17 - 22:10
Если что не так, извините, наверно все учились методом "проб и ошибок", поэтому не судите строго.

Попыталась описать более подробно:

// создаю новый документ РазмещениеТоваров на основании данных из документа ПрихОрдер:
РазмещениеТоваров = Документы.ОтборРазмещениеТоваров.СоздатьДокумент();
РазмещениеТоваров.Дата= ПрихОрдер.Дата;
//беру реквизиты из док. Прихордер


// далее запрос, который заполняет табличную часть, выбирает последнюю добавленную строку:


Запрос.Текст = "Выбрать Первые 1
| ПриходныйОрдерНаТоварыТовары.Назначение,
| ПриходныйОрдерНаТоварыТовары.Номенклатура,
| ПриходныйОрдерНаТоварыТовары.Количество,
| УпаковкиЕдиницыИзмерения.Наименование,
| СкладскиеЯчейки.Ссылка
| из Документ.ПриходныйОрдерНаТовары.Товары как  
| ПриходныйОрдерНаТовары
| левое соединение Справочник.УпаковкиЕдиницыИзмерения как 
| УпаковкиЕдиницыИзмерения
| Левое соединение Справочник.НаборыУпаковок как 
| НаборыУпаковок
| по УпаковкиЕдиницыИзмерения.Владелец = 
| НаборыУпаковок.Ссылка
| по ПриходныйОрдерНаТовары.Номенклатура.НаборУпаковок =   
| УпаковкиЕдиницыИзмерения.Владелец,
| Справочник.СкладскиеЯчейки как СкладскиеЯчейки
| где
| ПриходныйОрдерНаТоварыТовары.Ссылка = &Ссылка
| упорядочить по
| ПриходныйОрдерНаТоварыТовары.НомерСтроки УБЫВ"

//вывожу результат запроса:


Запрос.УстановитьПараметр("Ссылка", ПрихОрдер.Ссылка);
Результат = Запрос.Выполнить();
ВыбратьСтроки = Результат.Выбрать();

Пока ВыбратьСтроки.Следующий() Цикл
НовСтрока = РазмещениеТоваров.ТоварыРазмещение.Добавить();
НовСтрока.НОменклатура = ВыбратьСтроки.Номенклатура;
НовСтрока.Назначение = ВыбратьСтроки.Назначение;
НовСтрока.Количество = ВыбратьСтроки.Количество;
Новстрока.Ячейка = ВыбратьСтроки.Ссылка;

// в результате получается, что при добавлении новой строки  в документ - товару присваивается с начала всегда одна и та же ячейка. 

//трудность возникает далее:
// необходимо проверить есть ли в базе ячейка с таким назначением, если есть тогда наш товар помещаем в эту ячейку, если нет тогда в ближайшую пустую. Каким образом это 

дальше осуществить?
   Anna_77
 
7 - 25.12.17 - 22:18
//Я так понимаю, нужно запросом определить из //регистраНакопления ТоварыВЯчейках какие ячейки заполнены, //какое у них назначение и какие пустые. И далее пишем //условие: 

Если НовСтрока.Назначение = Результат.Назначение тогда
НовСтрока.Ячейка = Результат.Ячейка иначе// а дальше затрудняюсь написать.
   Злопчинский
 
8 - 25.12.17 - 22:27
(6) в ближайшую пустую - в ближайшую к чему?!
   Anna_77
 
9 - 25.12.17 - 22:31
просто: в пустую
нумерация ячеек: 1-1-1; 1-1-2; и т.д.
   Злопчинский
 
10 - 25.12.17 - 22:52
(9) а какое отношение нумерация ячеек имеет к её пустоте?
 
 Рекламное место пустует
   hhhh
 
11 - 26.12.17 - 00:20
(10) ну включай экстрасенсорику. Ближайший, наверно, к нулю. То есть 1-1-1 ближе чем 1-1-2.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует