РеализацияТоваровУслуг (РТУ)
Была поставлена задача в РТУ выводить сообщение если определенного товара нет в наличии.
Решил данную проблему следующим образом
взял фунцию с данного ресурса http://infostart.blog-buh.ru/public/362042/.
Открываем Конфигуратор - Документы -РеализацияТоваровУслуг. Открываем "Открыть модуль объекта" вставляем функцию
Функция ПоискОстатковПоСкладу(Номенклатура, ДатаДокумента, СкладДокумента)
ОстатокНаТекущийМомент = 0;
ПоискОстатков = Новый Запрос();
ПоискОстатков.Текст = "ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(
| &Дата,
| Номенклатура = &Номенклатура
| И Склад = &Склад) КАК ТоварыНаСкладахОстатки";
ПоискОстатков.УстановитьПараметр("Номенклатура", Номенклатура);
ПоискОстатков.УстановитьПараметр("Склад", СкладДокумента);
ПоискОстатков.УстановитьПараметр("Дата",Новый Граница(ДатаДокумента, ВидГраницы.Включая));
ОстаткиПоПозиции = ПоискОстатков.Выполнить().Выгрузить();
Если ОстаткиПоПозиции.Количество()>0 Тогда
ОстатокНаТекущийМомент = ОстаткиПоПозиции[0].Количество;
Иначе
ОстатокНаТекущийМомент = 0;
КонецЕсли;
Возврат ОстатокНаТекущийМомент;
КонецФункции
Далее ишем в процедуру "ПередЗаписью" и вставляем следующий текст.
// Доработка Артем 20170516
ДокРеал = Документы.РеализацияТоваровУслуг;
ТоварыДокумента = Товары;
Для Каждого Стр ИЗ ТоварыДокумента Цикл
КоличествоНоменлатурыНаСкладе = ПоискОстатковПоСкладу(Стр.Номенклатура, Дата, Склад);
СколькоНехватает = КоличествоНоменлатурыНаСкладе - Стр.Количество;
Если СколькоНехватает < 0 Тогда
//Отказ=Истина;
Сообщить(Строка(Стр.Номенклатура)+" не хватает "+Строка(СколькоНехватает*(-1)), СтатусСообщения.ОченьВажное);
КонецЕсли;
КонецЦикла;
//Доработка Артем 20170516Если расскоментировать "//Отказ=Истина;", то документ не сохранится пока не будет не отрицательного значения.
|