Как убрать запрос в цикле #757606


#0 by pro3ri
Добрый день! Есть документ с табличной частью Товары, там несколько строчек номенклатуры с соответствующими складами. Нам необходимо выяснить достаточно ли товара до проведения документа. Эту задачу решает код: Но он не оптимален, как убрать запрос в цикле?
#1 by ДенисЧ
Надо себя как-то заставить...
#2 by piter3
в параметры передать список не подходит?склады в ТЧ?
#3 by Тактик
Сделать запрос к обоим таблицам сразу. С этим есть проблемы?
#4 by Metman
Соедини ТЗ по товарам с ТЗ по остаткам
#5 by Тактик
Задача с экзамена "1С:Специалист" по платформе... в упрощенном варианте.
#6 by Тактик
Ты хотя бы учебник Радченко почитай.
#7 by Metman
Посмотри как в типовой сделано
#8 by pro3ri
да, склад в ТЧ
#9 by Бубка Гоп
Молодец, хотя бы интуитивно понимает что это надо переписать. Некоторые годами не видят в таком коде ничего плохого. Варианта 2: 1) определяешь сразу список всех складов где надо проверить и передаешь их всех параметром (массивом). 2) соединяешь свою тч с таблицей остатков по складу и товару
#10 by gigi789
2 варианта 1) если проверяй после записи соответсвенно по ссылки береш тч 2) перез запись в зпрос кладеш таблицу значений
#12 by vde69
на самом деле задача не совсем простая, тут дело в том, что получить номер строки при двух строках с одинаковой номенклатурой в запросе не так легко.... я для себя так и не решил ее одним запросом, у меня все равно 2 запроса и потом цикл (уже без запроса)
#13 by piter3
для чего не расскажешь?
#14 by gigi789
а не просветите зачем номер строки??
#15 by Ненавижу 1С
сгруппировать одинаковую номенклатуру во временной таблице не вариант?
#16 by Ненавижу 1С
кстати, не решает, надо проверять количество, даже когда строка есть
#17 by vde69
номер строки нужен для вывода сообщения в какой именно строке табличной части не хватает товара. в принципе задача решаема, но на мой взгляд получается сильно сложнее чем с небольшим циклом
#18 by patria0muerte
#19 by gigi789
найти строки??
#20 by gigi789
"Нам необходимо выяснить достаточно ли товара до проведения документа."
#21 by vde69
главный  минус - нет номера строки для пользователя... представь документ на 800 строк.... это тебе нужно скопировать наименование номенклатуры, поиском его найти.... а если такой номенклатуры несколько строк, то вообще....
#22 by Ненавижу 1С
а в какой не хватает, в первой или во второй если их две? мы просто артикул выводим, вполне устраивает
#23 by Ненавижу 1С
вот примерно так, выводит строки с дефицитом:     РеализацияТоваровУслугТовары.Номенклатура,     Т.Склад,     Т КАК Т         ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(                 ,
#24 by Dotoshin
Это чем же вы торгуете, если в документе 800 строк?
#25 by gigi789
все норм судя по описанию все эти строки могут быть зяняты 1 ном позицией
#26 by Cyberhawk
"а если такой номенклатуры несколько строк, то вообще" // Я правильно понял, что если товара-таки не хватает, то считается, что его не хватает всегда у последней / последних строк?
#27 by Cyberhawk
(строк с таким товаром)
#28 by Гёдза
Оптовая торговля, например запчастями или таблетками, вполне может быть по столько строк
#29 by cw014
"Таблетки на Блюхера. Всегда хороший приход." (С) Масяня
#30 by Dotoshin
Вот эти ?
#31 by pro3ri
согласен, моя ошибка решил одним запросом с выводом номера строки, ВЫБРАТЬ     ТоварыНаСкладахОстатки.Номенклатура,     Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары         ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(                         Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары Всем спасибо за участие!
#32 by vde69
у тебя будет ошибка если в ТЧ две строки с одинаковой номенклатурой
#33 by vde69
а еще КоличествоОстаток будет задвоено если остатки по разным партиям лежат :)
#34 by Лефмихалыч
отличный вопрос для собеседования още-то -
#35 by pro3ri
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда                         Сообщить("Товара " + Выборка.Номенклатура + " со склада " + Выборка.Склад + " недостаточно в количестве " +(-Нехватка)); не ведется учет по партиям
#36 by KA-52
Проводите по новой методике: контроль остатков после формирования движений и откат, если есть отрицательные остатки. Тут и номер строки будет, и какава с чаем
#37 by Domovoi
а если начнет вестись? Обязательно за 5 мин перепишите все свои поделки?
#38 by Domovoi
Если Нехватка<0 Тогда" в запрос надо пихать, чтоб меньше перебирать строк.
#39 by Domovoi
+То что в может даже быстрее отработает чем . В покрасивше будет.
#40 by Domovoi
+ Условие надо накладывать при отборе обрабатываемого документа, а не после того как все выберите и склеите.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С