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