// Вставить содержимое обработчика.
Док=ПолеВвода1.ПолучитьОбъект();
Для каждого ТекСтр из Док.Товары цикл
если Флажок1= Ложь тогда
ТекСтр.Количество=ТекСтр.Количество-ПолеВвода2
иначе
ТекСтр.Количество=ТекСтр.Количество-(ТекСтр.Количество*ПолеВвода2/100);
КонецЕсли;
ТекСтр.Количество=Макс(0,ТекСтр.Количество);
КонецЦикла;
Док.Записать();
ЭлементыФормы.ТабличноеПоле1.Значение=ПолеВвода1.Товары.Выгрузить();
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
КонецПроцедуры
Рисунок 3-Задание 3.3
4. Создать внешнюю обработку «Задание 3.4». Форма обработки представлена на рисунке. При нажатии кнопки «Выполнить» должна создаваться копия документа «Поступление товаров и услуг», выбранного пользователем, при этом в его табличную часть переносятся те строки, количество товара в которых больше указанного пользователем.
Процедура КнопкаВыполнитьНажатие(Кнопка)
// Вставить содержимое обработчика.
Док=документы.ПоступлениеТоваровИУслуг.СоздатьДокумент();
Док.Дата=ПолеВвода1.Дата;
Док.Контрагент=ПолеВвода1.Контрагент;
Док.Сумма=ПолеВвода1.Сумма;
для каждого Стр из ПолеВвода1.Товары цикл
если Стр.Количество>ПолеВвода2 тогда
НовСтрока=Док.Товары.Добавить();
НовСтрока.Товар=Стр.Товар;
НовСтрока.Количество=Стр.Количество;
НовСтрока.Цена=Стр.Цена;
НовСтрока.Сумма=Стр.Сумма;
конецесли;
Ф=Док.ПолучитьФорму();
Ф.Открыть();
конецЦикла;
КонецПроцедуры
Рисунок 4 – Задание 3.4
5. Изменить документ «Поступление товаров и услуг» таким образом, чтобы при наличии повторяющихся товаров в разных строках табличной части, документ не проводился, а пользователю выводилось соответствующее сообщение.
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
// Вставить содержимое обработчика.
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПоступлениеТоваровИУслугТовары.Товар,
| КОЛИЧЕСТВО(ПоступлениеТоваровИУслугТовары.Товар) КАК Товар1
| ИЗ
| Документ.ПоступлениеТоваровИУслуг.Товары КАК ПоступлениеТоваровИУслугТовары
| ГДЕ
| ПоступлениеТоваровИУслугТовары.Ссылка = &Ссылка
| СГРУППИРОВАТЬ ПО
| ПоступлениеТоваровИУслугТовары.Товар";
Запрос.УстановитьПараметр("Ссылка",Ссылка);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Товар1>1 тогда
Сообщить ("Товар "+Выборка.Товар+" Встречается больше одного раза");
Отказ=истина;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Рисунок 5- Задание 3.5