Дополнительные отчеты и обработки требует запись перед выполнением

1. LackyZZ 17.07.20 11:59 Сейчас в теме
Доброго времени суток. Возник вопрос по дополнительным отчетам и обработкам. Ранее как то не сталкивался с таким.
Создаю внешнюю обработку с видом - заполнение объекта. Добавляю команду в справочник контрагенты.
Кнопка появляется, с этим все ок.
Теперь собственно вопрос - при создании нового элемента справочника, нужно проверить контрагента по УНП/ИНН.
Нажимаю эту кнопку и получаю засаду. Требует перед выполнением команды записать этот элемент.
Как сделать так, что бы не требовало записи элемента?
Вот собственно код:
Функция СведенияОВнешнейОбработке() Экспорт
	//спр = Справочники
	
	МассивНазначений = Новый Массив;
	МассивНазначений.Добавить("Справочник.Контрагенты");
	
	ПарамРег = Новый Структура();
	ПарамРег.Вставить("Наименование", "Проверка по УНП");
	ПарамРег.Вставить("Назначение",МассивНазначений);
	ПарамРег.Вставить("БезопасныйРежим", Ложь);
	ПарамРег.Вставить("Версия ", "ver.: 1.0");
	ПарамРег.Вставить("Информация", "Проверка по УНП");
	ПарамРег.Вставить("Вид", "ЗаполнениеОбъекта");
	
	ТЗ_Команды = Новый ТаблицаЗначений;
	ТЗ_Команды.Колонки.Добавить("Идентификатор");
	ТЗ_Команды.Колонки.Добавить("Использование");
	ТЗ_Команды.Колонки.Добавить("Представление");
	
	НоваяСтрока = ТЗ_Команды.Добавить();
	НоваяСтрока.Идентификатор = "ОткрытьОбработку";
	НоваяСтрока.Использование = "ОткрытиеФормы";
	НоваяСтрока.Представление = "Проверка по УНП";
	ПарамРег.Вставить("Команды", ТЗ_Команды);
	
	Возврат ПарамРег;
	
КонецФункции
Показать
По теме из базы знаний
Найденные решения
16. SlavaKron 21.07.20 13:42 Сейчас в теме
(15)
возможно ли избавиться от требования записать объект, перед выполнением обработки, которая вызывает форму обработки
Нельзя.

(15)
конфигурация типо "под запретом"

Расширение не снимает конфигурацию поставщика с замка.
18. SlavaKron 21.07.20 21:50 Сейчас в теме
В качестве альтернативы можно программно внедрить свои элементы в форму объекта с помощью команды Заполнения формы и заполнить клиентские обработчики своих команд и событий.
Рабочий пример:
Прикрепленные файлы:
ВнедрениеВФорму.epf
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
9. platon_ 10 17.07.20 16:58 Сейчас в теме
(1) Проверил у себя и собрал вот так
Функция СведенияОВнешнейОбработке() Экспорт

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

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

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

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

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

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


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


как результат кнопка на форме справочника есть, при нажатии сообщение с " ИНН:" если реквизиты не заполнены.
10. LackyZZ 17.07.20 20:00 Сейчас в теме
(9)
ПолучитьТаблицуКоманд();

А подробнее можно по поводу где должна размещаться процедура ВыполнитьКоманду() и что содержит функция получитьТаблицуКоманд()
12. LackyZZ 17.07.20 20:27 Сейчас в теме
(9)С выполнить команду разобрался. забыл &НаКлиенте. Сейчас попробуем
13. LackyZZ 21.07.20 01:48 Сейчас в теме
(9)Использование - ЗаполнениеФормы вызывает серверный метод. А мне нужно открыть форму обработки. Так что не подходит. Если выбирать любое другое использование, просит сохранить справочник контрагента, перед открытием. Вот это и хотел узнать, возможно или нет открыть форму обработки, не сохраняя справочник.
14. EVKash 14 21.07.20 08:30 Сейчас в теме
(13) Как костыль - можно через расширение сделать
ПодключаемыеКомандыКлиент
&Перед("ПродолжитьВыполнениеКоманды")
Процедура Расш1_ПродолжитьВыполнениеКоманды(Контекст)
	
	Если Контекст.Свойство("ОписаниеКоманды") И Контекст.ОписаниеКоманды.Свойство("ДополнительныеПараметры")
			И Контекст.ОписаниеКоманды.ДополнительныеПараметры.Свойство("Идентификатор")
			И Контекст.ОписаниеКоманды.ДополнительныеПараметры.Идентификатор = "ВашИдентификаторКоманды" Тогда
		Контекст.ТребуетсяЗапись = Ложь;
		Контекст.ТребуетсяПроведение = Ложь;
	КонецЕсли; 
	
КонецПроцедуры
Показать
15. LackyZZ 21.07.20 11:01 Сейчас в теме
(14)Ну конфигурация типо "под запретом". Лазить нельзя. Хотелось бы найти самую подробную статью по доп обработкам. И возможно ли избавиться от требования записать объект, перед выполнением обработки, которая вызывает форму обработки.
16. SlavaKron 21.07.20 13:42 Сейчас в теме
(15)
возможно ли избавиться от требования записать объект, перед выполнением обработки, которая вызывает форму обработки
Нельзя.

(15)
конфигурация типо "под запретом"

Расширение не снимает конфигурацию поставщика с замка.
17. LackyZZ 21.07.20 18:05 Сейчас в теме
(16)
1 - Спасибо за ответ.
2 - Скажем так - "конфигуратор физически не доступен".
2. platon_ 10 17.07.20 12:31 Сейчас в теме
должно быть
Команда.Использование = "ЗаполнениеФормы";


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

//параметр ОбъектыНазначения не передается
        Для Каждого СтрТовары Из ПараметрыВыполнения.ЭтаФорма.Объект.Товары Цикл
            
            СтрТовары.Цена = СтрТовары.Цена*0.9;
            СтрТовары.Сумма = СтрТовары.Цена*СтрТовары.Количество;
            
        КонецЦикла;
6. LackyZZ 17.07.20 15:47 Сейчас в теме
(5)Возможно вы про документ. В документе срабатывает все ок. А вот в справочнике просит изначально записать.
Хотя нет, вставил в документ та же лажа. Будем дальше копать нюансы. Раньше сталкивался только с печатными формами дополнительными и обработками из записанных документов/справочников.
8. EVKash 14 17.07.20 16:47 Сейчас в теме
(2) (6) при
Команда.Использование = "ЗаполнениеФормы";
доступны только серверные методы. клиентские методы недоступны.
7. Nadushka74 5 17.07.20 16:47 Сейчас в теме
Я правильно понимаю, что на момент вызова вашей обработки элемент справочника еще не создан?
11. LackyZZ 17.07.20 20:00 Сейчас в теме
18. SlavaKron 21.07.20 21:50 Сейчас в теме
В качестве альтернативы можно программно внедрить свои элементы в форму объекта с помощью команды Заполнения формы и заполнить клиентские обработчики своих команд и событий.
Рабочий пример:
Прикрепленные файлы:
ВнедрениеВФорму.epf
19. LackyZZ 22.07.20 00:51 Сейчас в теме
(18)Практически то, что нужно. И багаж новых знаний.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот