Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Остаток при оконч. редактир.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
bereznoy
Документ заказ покупателя, юзер выбирает товар которого на остатке 5 едениц, ставит размещение склад, и проводит заказ с количеством 6 едениц текущей позиции, в итоге в свободном остатке -1, все вроде как надо, но вот захотелось юзеру при такой ситуации что б если остаток меньше чем в заказе, ему какое нить сообщение-предупреждение уведомляло об этом, я решил в процедуру
ТоварыПриОкончанииРедактирования
добавить запрос остатка товара и если остаток товара - кол-во в заказе < 0, тогда выдавать сообщение
Вся проблема в том что надо сформировать запрос по остаткам номенклатуры именно текущей строки

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

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



p.s. и событие наверное лучше вызывать при "ПриИзменении" Количества, Номенкатуры
bereznoy
Сделал при изменении номенклатуры, в отладчике СкладГруппа видно что правильно видит,но ошибку выдает на параметр Склад
Процедура ТоварыНоменклатураПриИзменении(Элемент)

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


КонецПроцедуры // ТоварыНоменклатураПриИзменении()
Vofka
Разуваем глаза: Скалад
bereznoy
Цитата(Vofka @ 07.02.12, 11:25) необходимо зарегистрироваться для просмотра ссылки
Разуваем глаза: Скалад

19000000.gif Жесть, рассмеялся аж! Спасибо
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.