Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 мая 2024, 07:02

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

Автор Ульви Мамедов, 22 фев 2019, 13:39

0 Пользователей и 1 гость просматривают эту тему.

Ульви Мамедов

Здравствуйте. Я плохо знаю русский. Извините за этого. Я еще новичок в 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ı = " + Остаток, СтатусСообщения.Информация);
        Иначе
        КонецЕсли;
КонецЦикла;

Ульви Мамедов

Сделал
надо было изменить место втМинимум и втОстаток

Теги:  

Похожие темы (5)

Рейтинг@Mail.ru

Поиск