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

Сравнение количества материала

Автор Vogde, 02 июл 2013, 07:23

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

Vogde

Всем хорошего дня! В очередной раз я прошу вашей помощи. Суть вопроса такова: В документе Оказание Услуги при заполнении поля Количество необходимо создать программно сравнение количества материала на складе и введенного количества.

Я создал в общем модуле функцию по выборке остатков материала из регистра накопления, (хотел из отчета " Материал" но что не получилось). Вот она:

Функция КоличествоМатериала(АктуальнаяДата,ЭлементНоменклатуры)Экспорт
Отбор = Новый Структура("Номенклатура",ЭлементНоменклатуры);
ЗначениеРесурсов = РегистрыНакопления.ОстаткиМатериалов.Остатки(АктуальнаяДата,Отбор);
Возврат ЗначениеРесурсов.Количество;
КонецФункции

И в модуле формы обработку выбора:

Процедура ПереченьНоменклатурыКоличествоОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Если ВыбранноеЗначение > РаботаСОтчетами.КоличествоМатериала(Объект.Дата) Тогда
Предупреждение("На складе не хватает материала");
Возврат;
КонецЕсли;
КонецПроцедуры

Но нужных мне результатов не достиг. Подскажите где ошибки? И правильный ли алгоритм действий?

Soulidium

При вызове передаётся 1 параметр, передай элемент номенклатуры.

Vogde

Подскажите как это правильно сделать. Еще не совсем понимаю как строится код

Gunner

Процедура ПереченьНоменклатурыКоличествоОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    Если ВыбранноеЗначение > РаботаСОтчетами.КоличествоМатериала(Объект.Дата, ЭлементыФормы.ТабЧасть.ТекущиеДанные.Номенклатура) Тогда
        Предупреждение("На складе не хватает материала");
        Возврат;
    КонецЕсли;
КонецПроцедуры


На вашем месте я бы выбрал количество из регистра накопления запросом, а не использовал объектную модель

Soulidium

Цитата: Vogde от 02 июл 2013, 07:23

Функция КоличествоМатериала(АктуальнаяДата,ЭлементНоменклатуры)Экспорт
Отбор = Новый Структура("Номенклатура",ЭлементНоменклатуры);
ЗначениеРесурсов = РегистрыНакопления.ОстаткиМатериалов.Остатки(АктуальнаяДата,Отбор);
Возврат ЗначениеРесурсов.Количество;
КонецФункции


Процедура ПереченьНоменклатурыКоличествоОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
        //Вот здесь при вызове функции вы передаёте только дату, передайте ЭлементНоменклатуры который вы добавляете в отбор в функцию выше
Если ВыбранноеЗначение > РаботаСОтчетами.КоличествоМатериала(Объект.Дата)  Тогда
Предупреждение("На складе не хватает материала");
Возврат;
КонецЕсли;
КонецПроцедуры


Vogde

Всем большое спасибо за советы и помощь

Теги:

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

Рейтинг@Mail.ru

Поиск