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

Остаток -> Резерв. Проверка остатков в регистре накоплений - 1С

Автор Funt432286, 01 дек 2017, 13:59

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

Funt432286

Доброго времени суток!
Есть форма документа и два поля ввода прикрепленных к реквизитам Бумага, МассаБлок и КолвоПечатныхЛистов, их поля заполняются данными из справочника. Допустим при нажатии кнопки система должна проверить количество товара (<Бумага> и <МассаБлокиз> - параметр Измерения) и (<КолвоПечатныхЛистов> - параметр Ресурсы) из регистра накопления БумагаЦифра.

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

////{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
//// Данный фрагмент построен конструктором.
//// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| БумагаЦифраОстатки.МатериалЦифра,
| БумагаЦифраОстатки.Масса,
| БумагаЦифраОстатки.ОстатокОстаток,
| БумагаЦифраОстатки.РезервОстаток,
| БумагаЦифраОстатки.ОстатокРезервОстаток
|ИЗ
| РегистрНакопления.БумагаЦифра.Остатки(
| ,
| Масса = &Масса
| И МатериалЦифра.Ссылка = &Бумага) КАК БумагаЦифраОстатки
|ГДЕ
| БумагаЦифраОстатки.ОстатокРезервОстаток <= 0";

Запрос.УстановитьПараметр("Бумага", Объект.Бумага);
Запрос.УстановитьПараметр("Масса", Объект.Масса);

РезультатЗапроса = Запрос.Выполнить();

Если НЕ РезультатЗапроса.Пустой() Тогда
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить("нет в наличии!");
КонецЦикла;
Иначе Сообщить("Все хорошо!");

//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
КонецЕсли;

Сообщить("Проверка остатков материала");

количество материала должно сравниваться не с 0, а с данными в поле Объект.КолвоПечатныхЛистов (тип данных Число) (Zapros.jpg)

Реквизит в документе есть, называется точно так же. Может проще вернуть количества материала в процедуру и там уже с ней манипулировать.
Если бумага в регистре есть, то запрос возвращает ее количество в процедуру, там я уже сравниваю и высчитываю. А если такой бумаги нет, то выдается сообщение "Данного материала на складе НЕТ! Оформить заказ на доставку? ДА / НЕТ"

Я думаю это проще будет, критерии запроса Бумага и Масса.

Добавлено через 10 часов 23 минуты
При любых раскладах, запрос возвращается пустой! Пишет, что все ОК!

Может дело в регистре накоплений, так он сейчас выглядит вот так: РН.jpg
Да, я понимаю что допустим выбранной бумаги там нет, но он же должен выдавать сообщение что ее нет. (PH.jpg)

Funt432286

Пожалуйста! Помогите, очень нужно и очень важно. Я из-за этого не могу дальше конфигурацию наполнять! Пожалуйста!

alex0402

Может это где то в другом месте? В Запросе я не вижу &КоличествоПечатныхЛистов, на скрине ошибка говорит о том, что в запросе есть, в коде не установлено:
Запрос.УстановитьПараметр("КоличествоПечатныхЛистов","11111")
Спасибо за Сказать спасибо

Funt432286

Подскажите пожалуйста!
Делаю запрос на остатки материала в регистре
Добавлено: 01 фев 2018, 18:28


Здравствуйте! Подскажите пожалуйста!

Делаю запрос на остатки материала в регистре отстатков

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

IL2016

Использую учебную платформу 1С:Предприятие 8.3

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск