В конфигурации есть документ "Выбытие оборудования", который при проведении проверяет движения оборудования, хранящегося на складе (документ "Приходная накладная") и движения оборудования, введенного со склада в эксплуатацию (документ "Ввод в эксплуатацию"). При проверке определяется, вышел ли срок эксплуатации оборудования с момента его ввода в эксплуатацию. Если срок
эксплуатации истек или истек срок годности, то оборудование должно быть списано. Кроме того, этот же документ должен списывать еще не введенное в эксплуатацию оборудование , но срок годности, которого уже истек.
Как реализовать следующий дополнительный функционал?
В форме документа должна быть кнопка "Заполнить", после нажатия на которую табличная часть формы должна заполняться. Движение расхода происходит только после проведения документа, так что пользователь может самостоятельно удалить строку из табличной части документа, благодаря чему данное оборудование, с истекшим сроком годности/эксплуатации не будет списано.
На данный момент обработка проведения реализована данным образом:
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОборудованиеНаХранении.Записывать = Истина;
Движения.ОборудованиеВЭксплуатации.Записывать = Истина;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОборудованиеНаХраненииОстатки.Оборудование,
| ОборудованиеНаХраненииОстатки.СрокГодности,
| ОборудованиеНаХраненииОстатки.КоличествоОстаток,
| ОборудованиеНаХраненииОстатки.СуммаОстаток
|ИЗ
| РегистрНакопления.ОборудованиеНаХранении.Остатки(&Период, СрокГодности < &Период) КАК ОборудованиеНаХраненииОстатки
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ОборудованиеВЭксплуатацииОстатки.Оборудование,
| ОборудованиеВЭксплуатацииОстатки.СрокГодности,
| ОборудованиеВЭксплуатацииОстатки.СрокЭксплуатации,
| ОборудованиеВЭксплуатацииОстатки.КоличествоОстаток,
| ОборудованиеВЭксплуатацииОстатки.СуммаОстаток
|ИЗ
| РегистрНакопления.ОборудованиеВЭксплуатации.Остатки(
| &Период,
| СрокГодности < &Период
| ИЛИ СрокЭксплуатации < &Период) КАК ОборудованиеВЭксплуатацииОстатки";
Запрос.УстановитьПараметр("Период", Дата);
ВыборкаМассив = Запрос.ВыполнитьПакет();
Выборка = ВыборкаМассив[0].Выбрать();
Пока Выборка.Следующий() Цикл
Движение = Движения.ОборудованиеНаХранении.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Оборудование = Выборка.Оборудование;
Движение.СрокГодности = Выборка.СрокГодности;
Движение.Количество = Выборка.КоличествоОстаток;
Движение.Сумма = Выборка.СуммаОстаток;
КонецЦикла;
Выборка = ВыборкаМассив[1].Выбрать();
Пока Выборка.Следующий() Цикл
Движение = Движения.ОборудованиеВЭксплуатации.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Оборудование = Выборка.Оборудование;
Движение.СрокГодности = Выборка.СрокГодности;
Движение.СрокЭксплуатации = Выборка.СрокЭксплуатации;
Движение.Количество = Выборка.КоличествоОстаток;
Движение.Сумма = Выборка.СуммаОстаток;
КонецЦикла;
КонецПроцедуры
Показать