kb-personal/src/content/docs/knowledge-base/Общие/Подключаемые команды/Добавление команд заполнения.md
wakadakawaka 1cdfa246b3 new
2025-08-24 21:37:33 +05:00

117 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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