Доброго времени суток. Возник вопрос по дополнительным отчетам и обработкам. Ранее как то не сталкивался с таким.
Создаю внешнюю обработку с видом - заполнение объекта. Добавляю команду в справочник контрагенты.
Кнопка появляется, с этим все ок.
Теперь собственно вопрос - при создании нового элемента справочника, нужно проверить контрагента по УНП/ИНН.
Нажимаю эту кнопку и получаю засаду. Требует перед выполнением команды записать этот элемент.
Как сделать так, что бы не требовало записи элемента?
Вот собственно код:

```1c
    Функция СведенияОВнешнейОбработке() Экспорт
    //спр = Справочники

    МассивНазначений = Новый Массив;
    МассивНазначений.Добавить("Справочник.Контрагенты");

    ПарамРег = Новый Структура();
    ПарамРег.Вставить("Наименование", "Проверка по УНП");
    ПарамРег.Вставить("Назначение",МассивНазначений);
    ПарамРег.Вставить("БезопасныйРежим", Ложь);
    ПарамРег.Вставить("Версия ", "ver.: 1.0");
    ПарамРег.Вставить("Информация", "Проверка по УНП");
    ПарамРег.Вставить("Вид", "ЗаполнениеОбъекта");

    ТЗ_Команды = Новый ТаблицаЗначений;
    ТЗ_Команды.Колонки.Добавить("Идентификатор");
    ТЗ_Команды.Колонки.Добавить("Использование");
    ТЗ_Команды.Колонки.Добавить("Представление");

    НоваяСтрока = ТЗ_Команды.Добавить();
    НоваяСтрока.Идентификатор = "ОткрытьОбработку";
    НоваяСтрока.Использование = "ОткрытиеФормы";
    НоваяСтрока.Представление = "Проверка по УНП";
    ПарамРег.Вставить("Команды", ТЗ_Команды);

    Возврат ПарамРег;

    КонецФункции
```
---
В качестве альтернативы можно программно внедрить свои элементы в форму объекта с помощью команды Заполнения формы и заполнить клиентские обработчики своих команд и событий.
Рабочий пример:
---
возможно ли избавиться от требования записать объект, перед выполнением обработки, которая вызывает форму обработки Нельзя.

(15) конфигурация типо "под запретом"
Расширение не снимает конфигурацию поставщика с замка.
---
Проверил у себя и собрал вот так

```1c
    Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = Новый Структура;
    МассивНазначений = Новый Массив;
    МассивНазначений.Добавить("Справочник.Контрагент");

    ПараметрыРегистрации.Вставить("Вид", "ЗаполнениеОбъекта");
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование", "Проверить ИНН");
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("ВерсияБСП", "3.0.1.287");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
    ПараметрыРегистрации.Вставить("Информация", "Дополнительная обработка проверки ИНН контрагента");

    ТаблицаКоманд = ПолучитьТаблицуКоманд();

    ДобавитьКоманду(ТаблицаКоманд,
    "Проверить ИНН",
    "Проверить ИНН",
    "ЗаполнениеФормы",
    Истина);

    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

    Возврат ПараметрыРегистрации;
    КонецФункции
```

Вызывается процедура

```1c
    Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения) Экспорт
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = ПараметрыВыполнения.ЭтаФорма.Объект.Наименование + " ИНН: "+ ПараметрыВыполнения.ЭтаФорма.Объект.ИНН;
    Сообщение.Сообщить();
    КонецПроцедуры
```

как результат кнопка на форме справочника есть, при нажатии сообщение с " ИНН:" если реквизиты не заполнены.
---
ПолучитьТаблицуКоманд();
А подробнее можно по поводу где должна размещаться процедура ВыполнитьКоманду() и что содержит функция получитьТаблицуКоманд()
---
С выполнить команду разобрался. забыл &НаКлиенте. Сейчас попробуем
---
Использование - ЗаполнениеФормы вызывает серверный метод. А мне нужно открыть форму обработки. Так что не подходит. Если выбирать любое другое использование, просит сохранить справочник контрагента, перед открытием. Вот это и хотел узнать, возможно или нет открыть форму обработки, не сохраняя справочник.
---
Как костыль - можно через расширение сделать
ПодключаемыеКомандыКлиент

```1c
    &Перед("ПродолжитьВыполнениеКоманды")
    Процедура Расш1_ПродолжитьВыполнениеКоманды(Контекст)

    Если Контекст.Свойство("ОписаниеКоманды") И Контекст.ОписаниеКоманды.Свойство("ДополнительныеПараметры")
    И Контекст.ОписаниеКоманды.ДополнительныеПараметры.Свойство("Идентификатор")
    И Контекст.ОписаниеКоманды.ДополнительныеПараметры.Идентификатор = "ВашИдентификаторКоманды" Тогда
    Контекст.ТребуетсяЗапись = Ложь;
    Контекст.ТребуетсяПроведение = Ложь;
    КонецЕсли;

    КонецПроцедуры
```
---
Ну конфигурация типо "под запретом". Лазить нельзя. Хотелось бы найти самую подробную статью по доп обработкам. И возможно ли избавиться от требования записать объект, перед выполнением обработки, которая вызывает форму обработки.
---
возможно ли избавиться от требования записать объект, перед выполнением обработки, которая вызывает форму обработки Нельзя.

(15) конфигурация типо "под запретом"
Расширение не снимает конфигурацию поставщика с замка.
---
1 - Спасибо за ответ.
2 - Скажем так - "конфигуратор физически не доступен".
---
должно быть
```1c
    Команда.Использование = "ЗаполнениеФормы";
```

тогда не будет просить записать.
---
Начинает ругаться - {ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(2456)}: Метод объекта не обнаружен (ВыполнитьКоманду)
   ВнешнийОбъект.ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения);
Чего то ему не хватает, если выбирать СпособыВызоваДополнительныхОбработок "ЗаполнениеФормы"
---
Процедура тогда вот такая

```1c
    Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения) Экспорт
```
---
ну и пример установки скидки в товарах на форме

```1c
    //параметр ОбъектыНазначения не передается
    Для Каждого СтрТовары Из ПараметрыВыполнения.ЭтаФорма.Объект.Товары Цикл

    СтрТовары.Цена = СтрТовары.Цена*0.9;
    СтрТовары.Сумма = СтрТовары.Цена*СтрТовары.Количество;

    КонецЦикла;
```
---
Возможно вы про документ. В документе срабатывает все ок. А вот в справочнике просит изначально записать.
Хотя нет, вставил в документ та же лажа. Будем дальше копать нюансы. Раньше сталкивался только с печатными формами дополнительными и обработками из записанных документов/справочников.
---
(6) при
Команда.Использование = "ЗаполнениеФормы";
доступны только серверные методы. клиентские методы недоступны.
---
Я правильно понимаю, что на момент вызова вашей обработки элемент справочника еще не создан?
---
Да
---
В качестве альтернативы можно программно внедрить свои элементы в форму объекта с помощью команды Заполнения формы и заполнить клиентские обработчики своих команд и событий.
Рабочий пример:
---
Практически то, что нужно. И багаж новых знаний.