Язык Запросов

1. _7445_ 22.02.19 13:50 Сейчас в теме
Здравствуйте. Я плохо знаю русский. Извините за этого. Я еще новичок в 1С программирование. В УТ 10.3. Написал запрос с пакетам. Все работает. Сам код показывает сообщению пользователя когда остаток на складах меньше количество минимум. Это работает но есть токая проблема что если в документе есть 2 или более товары тогда код выбирает только первый из них. И не проверяет остальные товары. С отладкчиком смотрел но ошибку не нашло. Можете дать подсказку что где может быть проблем?
Спасибо всем за ранее. Документ - Реализация Товаров Услуг - Модуль Объекта - Процедура Обработка Проведения.
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Номенклатура.Ссылка,
                   |    Номенклатура.Мин КАК Минимум
                   |ПОМЕСТИТЬ втМинимум
                   |ИЗ
                   |    Справочник.Номенклатура КАК Номенклатура
                   |ГДЕ
                   |    Номенклатура.Ссылка.ЭтоГруппа = ЛОЖЬ
                   |    И Номенклатура.Ссылка В(&Номенклатура)
                   |;
                   |
                   |////////////////////////////////////////////////////////////­////////////////////
                   |ВЫБРАТЬ
                   |    ТоварыНаСкладахОстатки.Номенклатура,
                   |    ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток
                   |ПОМЕСТИТЬ втОстаток
                   |ИЗ
                   |    РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура В(&Номенклатура)) КАК ТоварыНаСкладахОстатки
                   |;
                   |
                   |////////////////////////////////////////////////////////////­////////////////////
                   |ВЫБРАТЬ
                   |    втОстаток.Номенклатура,
                   |    ЕСТЬNULL(втМинимум.Минимум, 0) КАК Минимум,
                   |    ЕСТЬNULL(ВЫРАЗИТЬ(втОстаток.КоличествоОстаток КАК ЧИСЛО(15, 2)), 0) КАК Остаток
                   |ИЗ
                   |    втОстаток КАК втОстаток
                   |        ЛЕВОЕ СОЕДИНЕНИЕ втМинимум КАК втМинимум
                   |        ПО втОстаток.Номенклатура = втМинимум.Ссылка";
    
    тзТовары = Товары.Выгрузить();
    тзТовары.Свернуть("Номенклатура");
    СписокНоменклатуры = тзТовары.ВыгрузитьКолонку("Номенклатура");
    Запрос.УстановитьПараметр("Номенклатура", СписокНоменклатуры);                
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Стр = Товары.Найти(Выборка.Номенклатура, "Номенклатура").Количество;
        Остаток = Выборка.Остаток - Стр.Количество;
            Если Остаток < Выборка.Минимум Тогда
            Сообщить("Siz " + Выборка.Номенклатура + " - məhsulu üzrə daxil eilmiş minimum miqdarı keçdiniz. Minimum miqdar = " 
            + Выборка.Минимум + " Anbar üzrə məhsulun qalıq sayı = " + Остаток, СтатусСообщения.Информация);
        Иначе
        КонецЕсли;
    КонецЦикла;
Показать
По теме из базы знаний
Найденные решения
2. andron77777 22.02.19 13:59 Сейчас в теме
В последнем пакете надо к ВТМинимум цеплять левым соединением ВТОстаток (у вас сейчас наоборот), т.к. товар в ТЧ может присутствовать, а остатка по нему нет.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. andron77777 22.02.19 13:59 Сейчас в теме
В последнем пакете надо к ВТМинимум цеплять левым соединением ВТОстаток (у вас сейчас наоборот), т.к. товар в ТЧ может присутствовать, а остатка по нему нет.
3. _7445_ 22.02.19 14:03 Сейчас в теме
(2)
Большое вам спасибо.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот