Имя: Пароль:
1C
 
УТ 10.3 Вызов внешней обработки через команду интерфейса
0 saradip
 
25.12.25
14:26
Добрый день.
Есть ли способ добавить вызов элемента справочника "дополнительные внешние обработки", например с наименованием "Модуль ЭДО Диадок", в команду интерфейса на обычных формах?

Чтобы, при нажатии на команду, вызывался элемент справочника.
1 Волшебник
 
25.12.25
14:26
вызывайте процедуру, из которой вызывайте что угодно
2 saradip
 
26.12.25
08:35
(1) Для этого я должен добавить свою ЭКСПОРТНУЮ процедуру вызова в общий модуль конфигурации?
3 Волшебник
 
25.12.25
14:50
(2) Вы ничего никому не должны. Вы свободный человек свободной страны.
4 saradip
 
25.12.25
15:20
Ну в общем, добавил свою процедуру в общий модуль, и привязал к команде интерфейса ее вызов, все норм.
Спасибо, Волшебник

Процедура ДиадокЗапуститьВнешнююОбработку() Экспорт
    
    ОбработкаСсылка = Справочники.ВнешниеОбработки.НайтиПоКоду("Т00000003");    
    
    Если ОбработкаСсылка <> Неопределено Тогда
        
        ЭтоОбработка = ?(ОбработкаСсылка.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Обработка, Истина, Ложь);
        
        Если НЕ ЭтоОбработка Тогда
            Возврат;
        КонецЕсли;
        
        Попытка
            
            ИмяФайла = ПолучитьИмяВременногоФайла();
            ДвоичныеДанные = ОбработкаСсылка.ХранилищеВнешнейОбработки.Получить();
            ДвоичныеДанные.Записать(ИмяФайла);
            
            Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
            
            Если Не Форма = Неопределено Тогда    
                Форма.Открыть();    
            Иначе
                ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);    
            КонецЕсли;
            
            УдалитьФайлы(ИмяФайла);
            
        Исключение
            
            
                
                Предупреждение("Выбранный файл не является внешней обработкой.
                |Либо, данная обработка не предназначена для
                |запуска в этой конфигурации.");
            
            
        КонецПопытки;
        
    Иначе
        
        Сообщить("Элемент справочника дополнительных обработок по коду Т00000003 не найден!)", СтатусСообщения.ОченьВажное);
        
    КонецЕсли;
    
КонецПроцедуры
5 Волшебник
 
26.12.25
08:48
(4) Код обработки зашит дважды. Даже одного раза слишком много
6 saradip
 
29.12.25
09:12
(5) Я не хотел бы добавлять новый реквизит в справочник внешних обработок.
Решил добавить "код" в сообщение, чтобы проще было понять проблему, в случае ее обнаружения. Например, если через 10 лет кто-то удалит элемент.
Да согласен, можно случайным образом другому элементу присвоить данный код, тогда будет вызов непонятно чего, тут не поспоришь.
7 Волшебник
 
29.12.25
09:12
Если делается команда в интерфейсе, то обработка должна стать встроенной
8 maxab72
 
29.12.25
09:13
УТ 10.3 не поддерживается, поэтому нет смысла не включать подобные обработки в конфигурацию.
9 Волшебник
 
29.12.25
09:15
(8) не поддерживается Диадок и тут не важна версия
10 saradip
 
29.12.25
09:19
(7) До обновления обработки Диадок на последнюю версию, с поддержкой новых изменений, она и была встроенной.
Но, после ее обновления, при вызове из конфигурации возникает ошибка.
Техподдержка контур ошибку трактовала таким образом, что обработку нужно теперь запускать из справочника внешних обработок.
Лопатить их код можно конечно, но после этого ты теряешь их техподдержку.
Версия модуля 4_60_1
11 craxx
 
29.12.25
11:54
(10) Создаешь константу типа "СправочникСсылка.ВнешниеОбработки".
И создаешь команду, которая из этой константы достает обработку и ее запускает. Код сам напишешь, надеюсь.
Основная теорема систематики: Новые системы плодят новые проблемы.