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

Контроль отрицательных остатков, дополнительные сообщения

Автор Хильда, 21 мар 2017, 19:55

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

Хильда

День добрый, коллеги!
Задача стандартная, заказчик капризный и с 1Ской 8.3. с нуля, а у меня знаний пока маловато...:dfbsdfbsdf:

Задача: При проведении документа "Расход" необходимо контролировать наличие остатков товара на складе (из несколько, рассматриваем склад из документа). Если количества для списания не хватает, не проводим документ. Пользователю выдается сообщение, какого товара не хватает, сколько не хватает. Это стандартно, это я написала:

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

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

Но заказчик желает также получать сообщение, какой фактический остаток этого товара на этом складе. Я себе сломала голову, пытаясь придумать вменяемый алгоритм:( Но, кроме дополнительного запроса, ничего не придумала:(
Хелп! Пожалуйста...

alex0402

Цитата: Хильда от 21 мар 2017, 19:55|   ОстаткиТоваровОстатки.КоличествоОстаток
1) Нужно заменить на isnull(ОстаткиТоваровОстатки.КоличествоОстаток,0)
2) что бы ничего не переписывать и не делать второй запрос можно просто прибавить количество в документе к отрицательному остатку в запросе и показать пользователю.
Спасибо за Сказать спасибо

Хильда

Цитата: alex0402 от 22 мар 2017, 08:33прибавить количество в документе к отрицательному остатку в запросе

Пытаюсь докопаться в документе до количества (имея Наименование) с помощью метода НайтиСтроки. Ошибка на ошибке :( Перерыла весь инет (скоро Гугл забанит), ничего не могу понять :dfbsdfbsdf: Полдня уже грохнула на это.
Помогите, пожалуйста!

alex0402

Цитата: Хильда от 22 мар 2017, 14:31Пытаюсь докопаться в документе до количества (имея Наименование) с

кусок кода в студию.
Спасибо за Сказать спасибо

Хильда

Цитата: alex0402 от 22 мар 2017, 14:46кусок кода в студию

Пока Выборка.Следующий() Цикл
      Сообщение = Новый СообщениеПользователю();
      Сообщение.Текст = "Не хватает " + Строка(-Выборка.КоличествоОстаток) +
      " единиц товара """ + Выборка.Номенклатура + """";
       
      Сообщение.Сообщить();
      
      ИмяНедостающегоТовара = Выборка.Номенклатура.Наименование;            
            
      НужнаяСтрока = ЭтотОбъект.Товары.НайтиСтроки(ИмяНедостающегоТовара);

      
      Отказ = Истина;
      
   КонецЦикла;

Это последняя проба.
P.S. Не кидайтесь тапками, я и так уже рыдаю

alex0402

Цитата: Хильда от 22 мар 2017, 15:36ЭтотОбъект.Товары.НайтиСтроки(ИмяНедостающегоТовара);

НайтиСтроки - параметр Структура, а не строка. Ключ - Имя реквизита ТЧ, значение - Номенклатура (Ссылка а не наименование).


ЭтотОбъект.Товары.НайтиСтроки(Новый Структура("Номенклатура",Выборка.Номенклатура))
Спасибо за Сказать спасибо

Хильда


Теги:

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

Рейтинг@Mail.ru

Поиск