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

Проверка наличия товара

Автор Дмитрий1992, 08 июн 2018, 14:29

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

Дмитрий1992

Здравствуйте прошу помощи.
Есть регистр накопления "Товары"
документ РасходнаяНакладная делает движение в "Товары" "Приход"
документ ПриходнаяНакладная делает движение в "Товары" "Расход"
Нужно сделать проверку на то сколько не хватает товара если выберут сверх имеющегося количества и
проверить есть ли товар вообще.

С первой частью справился, но вот с проверкой на наличие нет.

   Запрос = Новый Запрос;
      Запрос.Текст =
      "ВЫБРАТЬ
      |   ТоварыОстатки.КолличествоОстаток КАК КолличествоОстаток,
      |   РасходнаяНакладнаяТовары.Колличество КАК Колличество,
      |   ТоварыОстатки.Товар КАК Товар
      |ИЗ
      |   РегистрНакопления.Товары.Остатки(
      |         ,
      |         Товар В
      |            (ВЫБРАТЬ
      |               РасходнаяНакладнаяТовары.Товар КАК Товар
      |            ИЗ
      |               Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
      |            ГДЕ
      |               РасходнаяНакладнаяТовары.Ссылка = &Ссылка)) КАК ТоварыОстатки
      |      ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
      |      ПО ТоварыОстатки.Товар = РасходнаяНакладнаяТовары.Товар
      |ГДЕ
      |   РасходнаяНакладнаяТовары.Ссылка = &Ссылка";
      
      Запрос.УстановитьПараметр("Ссылка", Ссылка);
      
      РезультатЗапроса = Запрос.Выполнить();
      
      ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
      
      Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
         
         Если ВыборкаДетальныеЗаписи.КолличествоОстаток < ВыборкаДетальныеЗаписи.Колличество Тогда
            Отказ = истина;
            Сообщить ("Товара " + ВыборкаДетальныеЗаписи.Товар + " не хватает в количестве " + (ВыборкаДетальныеЗаписи.Колличество - ВыборкаДетальныеЗаписи.КолличествоОстаток) );
         ИначеЕсли РезультатЗапроса.Пустой() Тогда
            Отказ = истина;
            Сообщить ("Товара " + ВыборкаДетальныеЗаписи.Товар + " нет в наличии"  );   
         Конецесли;      
      
      КонецЦикла;


Вышел из положения сделав второй запрос но.... правильно ли это?

Запрос = Новый Запрос;
      Запрос.Текст =
      "ВЫБРАТЬ
      |   ТоварыОстатки.КолличествоОстаток КАК КолличествоОстаток,
      |   РасходнаяНакладнаяТовары.Колличество КАК Колличество,
      |   ТоварыОстатки.Товар КАК Товар
      |ИЗ
      |   РегистрНакопления.Товары.Остатки(
      |         ,
      |         Товар В
      |            (ВЫБРАТЬ
      |               РасходнаяНакладнаяТовары.Товар КАК Товар
      |            ИЗ
      |               Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
      |            ГДЕ
      |               РасходнаяНакладнаяТовары.Ссылка = &Ссылка)) КАК ТоварыОстатки
      |      ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
      |      ПО ТоварыОстатки.Товар = РасходнаяНакладнаяТовары.Товар
      |ГДЕ
      |   РасходнаяНакладнаяТовары.Ссылка = &Ссылка";
      
      Запрос.УстановитьПараметр("Ссылка", Ссылка);
      
      РезультатЗапроса = Запрос.Выполнить();
      
      ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
      
      
      Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
         
         Если ВыборкаДетальныеЗаписи.КолличествоОстаток < ВыборкаДетальныеЗаписи.Колличество Тогда
            Отказ = истина;
            Сообщить ("Товара " + ВыборкаДетальныеЗаписи.Товар + " не хватает в количестве " + (ВыборкаДетальныеЗаписи.Колличество - ВыборкаДетальныеЗаписи.КолличествоОстаток) );
            //ИначеЕсли РезультатЗапроса.Пустой() Тогда
            //      //   Отказ = истина;
            //      //   Сообщить ("Товара " + ВыборкаДетальныеЗаписи.Товар + " нет в наличии");
            //      //Конецесли;
         КонецЕсли;   
      КонецЦикла;
      
      
      
      
      //Проверка наличия

      Для каждого Строки из товары цикл
         Запрос = Новый Запрос;
         Запрос.Текст =
         "ВЫБРАТЬ
         |   ТоварыОстатки.КолличествоОстаток КАК КолличествоОстаток
         |ИЗ
         |   РегистрНакопления.Товары.Остатки КАК ТоварыОстатки
         |ГДЕ
         |   ТоварыОстатки.Товар = &Товар";
         
         Запрос.УстановитьПараметр("Товар", Строки.Товар);
         
         
         РезультатЗапроса = Запрос.Выполнить();
         
         ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
         
         Если РезультатЗапроса.Пустой() Тогда
            Отказ = истина;
            Сообщить ("Товара " + Строки.Товар + " нет в наличии");
         Конецесли;
         
      КонецЦикла;
      



alexandr_ll

Нет такого реквизита "Колличество", есть "Количество"

Дмитрий1992

Цитата: alexandr_ll от 08 июн 2018, 14:34
Нет такого реквизита "Колличество", есть "Количество"

Ну у меня есть))
не прав торопился

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

Рейтинг@Mail.ru

Поиск