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