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