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

Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Проверил у себя и собрал вот так
Вызывается процедура
как результат кнопка на форме справочника есть, при нажатии сообщение с " ИНН:" если реквизиты не заполнены.
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Справочник.Контрагент");
ПараметрыРегистрации.Вставить("Вид", "ЗаполнениеОбъекта");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "Проверить ИНН");
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("ВерсияБСП", "3.0.1.287");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вставить("Информация", "Дополнительная обработка проверки ИНН контрагента");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд,
"Проверить ИНН",
"Проверить ИНН",
"ЗаполнениеФормы",
Истина);
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
ПоказатьВызывается процедура
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения) Экспорт
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ПараметрыВыполнения.ЭтаФорма.Объект.Наименование + " ИНН: "+ ПараметрыВыполнения.ЭтаФорма.Объект.ИНН;
Сообщение.Сообщить();
КонецПроцедуры
как результат кнопка на форме справочника есть, при нажатии сообщение с " ИНН:" если реквизиты не заполнены.
(9)Использование - ЗаполнениеФормы вызывает серверный метод. А мне нужно открыть форму обработки. Так что не подходит. Если выбирать любое другое использование, просит сохранить справочник контрагента, перед открытием. Вот это и хотел узнать, возможно или нет открыть форму обработки, не сохраняя справочник.
(13) Как костыль - можно через расширение сделать
ПодключаемыеКомандыКлиент
ПодключаемыеКомандыКлиент
&Перед("ПродолжитьВыполнениеКоманды")
Процедура Расш1_ПродолжитьВыполнениеКоманды(Контекст)
Если Контекст.Свойство("ОписаниеКоманды") И Контекст.ОписаниеКоманды.Свойство("ДополнительныеПараметры")
И Контекст.ОписаниеКоманды.ДополнительныеПараметры.Свойство("Идентификатор")
И Контекст.ОписаниеКоманды.ДополнительныеПараметры.Идентификатор = "ВашИдентификаторКоманды" Тогда
Контекст.ТребуетсяЗапись = Ложь;
Контекст.ТребуетсяПроведение = Ложь;
КонецЕсли;
КонецПроцедуры
Показать
(2) Начинает ругаться - {ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(2456)}: Метод объекта не обнаружен (ВыполнитьКоманду)
ВнешнийОбъект.ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения);
Чего то ему не хватает, если выбирать СпособыВызоваДополнительныхОбработок "ЗаполнениеФормы"
ВнешнийОбъект.ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения);
Чего то ему не хватает, если выбирать СпособыВызоваДополнительныхОбработок "ЗаполнениеФормы"
(3) ну и пример установки скидки в товарах на форме
//параметр ОбъектыНазначения не передается
Для Каждого СтрТовары Из ПараметрыВыполнения.ЭтаФорма.Объект.Товары Цикл
СтрТовары.Цена = СтрТовары.Цена*0.9;
СтрТовары.Сумма = СтрТовары.Цена*СтрТовары.Количество;
КонецЦикла;
(5)Возможно вы про документ. В документе срабатывает все ок. А вот в справочнике просит изначально записать.
Хотя нет, вставил в документ та же лажа. Будем дальше копать нюансы. Раньше сталкивался только с печатными формами дополнительными и обработками из записанных документов/справочников.
Хотя нет, вставил в документ та же лажа. Будем дальше копать нюансы. Раньше сталкивался только с печатными формами дополнительными и обработками из записанных документов/справочников.
В качестве альтернативы можно программно внедрить свои элементы в форму объекта с помощью команды Заполнения формы и заполнить клиентские обработчики своих команд и событий.
Рабочий пример:
Рабочий пример:
Прикрепленные файлы:

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