Skip to content

Добавление команд заполнения

Общий модуль ЗаполнениеОбъектовПереопределяемый

Процедура ПриОпределенииОбъектовСКомандамиЗаполнения(Объекты) Экспорт
Объекты.Добавить(Метаданные.Документы.ЗаказПоставщику);
КонецПроцедуры

Модуль менеджера объекта

Процедура ДобавитьКомандыЗаполнения(КомандыЗаполнения, Параметры) Экспорт
Если ПравоДоступа("Редактирование", Метаданные.Документы.ЗаказПоставщику) Тогда
// Обработчик в модуле менеджера (текущем модуле)
Команда = КомандыЗаполнения.Добавить();
Команда.Идентификатор = "ЗаполнитьПоВыбранномуЗаказу";
Команда.МножественныйВыбор = Ложь;
Команда.ВидимостьВФормах = "ФормаДокумента"; // Имена форм через запятую
Команда.Представление = "По предыщущему заказу";
Команда.РежимЗаписи = "НеЗаписывать";
Команда.Обработчик = "Подключаемый_ЗаполнитьПоПредущемуЗаказу";
Команда.Порядок = 1;
// Обработчик в общем модуле
Команда = КомандыЗаполнения.Добавить();
Команда.Идентификатор = "ЗаполнитьПоВыбранномуЗаказу";
Команда.МножественныйВыбор = Ложь;
Команда.ВидимостьВФормах = "ФормаДокумента";
Команда.Представление = "По выбранному заказу";
Команда.РежимЗаписи = "НеЗаписывать";
Команда.Обработчик = "ЗакупкиКлиент.ЗаполнитьЗаказПоставщикуПоВыбранномуЗаказу";
Команда.Порядок = 2;
// Обработчик в модуле формы
Команда = КомандыЗаполнения.Добавить();
Команда.Идентификатор = "ЗаполнитьПоНесколькимЗаказам";
Команда.МножественныйВыбор = Ложь;
Команда.ВидимостьВФормах = "ФормаДокумента";
Команда.Представление = "По нескольким заказам";
Команда.РежимЗаписи = "НеЗаписывать";
Команда.ИмяФормы = "ФормаОбъекта";
Команда.Обработчик = "Подключаемый_ЗаполнитьПоНесколькимЗаказам";
Команда.Порядок = 3;
КонецЕсли;
КонецПроцедуры

Пример обработчика в модуле формы

Его также можно разместить и в модуле менеджера, и в общем модуле

&НаСервере
Процедура Подключаемый_ЗаполнитьПоПредущемуЗаказу(ПараметрКоманды, ПараметрыВыполнения) Экспорт
Источник = ПараметрыВыполнения.Источник; // Тут Источник - основной реквизит формы. "Объект"
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ЗаказПоставщику.Ссылка КАК Ссылка
|ПОМЕСТИТЬ втПредыдущийЗаказ
|ИЗ
| Документ.ЗаказПоставщику КАК ЗаказПоставщику
|ГДЕ
| ЗаказПоставщику.Контрагент = &Контрагент
| И ЗаказПоставщику.Проведен
| И &УсловиеПоСсылке
|
|УПОРЯДОЧИТЬ ПО
| ЗаказПоставщику.Дата УБЫВ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЗаказПоставщикуТовары.Номенклатура КАК Номенклатура,
| ЗаказПоставщикуТовары.Количество КАК Количество,
| ЗаказПоставщикуТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ЗаказПоставщикуТовары.Цена КАК Цена,
| ЗаказПоставщикуТовары.Сумма КАК Сумма,
| ЗаказПоставщикуТовары.СтавкаНДС КАК СтавкаНДС,
| ЗаказПоставщикуТовары.СуммаНДС КАК СуммаНДС,
| ЗаказПоставщикуТовары.СуммаВсего КАК СуммаВсего
|ИЗ
| Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втПредыдущийЗаказ КАК втПредыдущийЗаказ
| ПО ЗаказПоставщикуТовары.Ссылка = втПредыдущийЗаказ.Ссылка";
Запрос.УстановитьПараметр("Контрагент", Источник.Контрагент);
Если ЗначениеЗаполнено(ПараметрКоманды) Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеПоСсылке", "ЗаказПоставщику.Ссылка <> &Ссылка");
Запрос.УстановитьПараметр("Ссылка", ПараметрКоманды);
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеПоСсылке", "ИСТИНА");
КонецЕсли;
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Источник.Товары.Очистить();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Источник.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
КонецЦикла;
КонецПроцедуры