Вызов команды внешней обработки

1. user645801_yyyuuu123q 21.06.22 12:40 Сейчас в теме
Ребята всем привет. Не совсем знаком с УФ. Только осваиваюсь.
Есть задача регламетно вызывать Команду обработки. Чтобы не человек жал загрузить а программа сама в назначенное время

//&НаКлиенте
//Процедура Команда1(Команда)
//	АдресФайла = "C:\Program Files (x86)\Выгрузка.11..epf";	
//	
//	АдресХранилища = "";
//	ПоместитьФайл(АдресХранилища, АдресФайла,,Ложь);
//	ИмяОбработки = ПодключитьВнешнююОбработку(АдресХранилища);
//	Форма = ПолучитьФорму("ВнешняяОбработка." + ИмяОбработки + ".Форма");
//	Форма.ЗагрузитьЗаявки(Неопределено);
//КонецПроцедуры


//Процедура ВызватьКоманду() 
//	ИмяНужнойКоманды = "ИмяКомандыФормы"; // Тут просто имя команды как в конфигураторе. 
//	НужнаяКоманда = ЭтаФорма.Команды.Найти(ИмяНужнойКоманды); // Находим команду на форме 
//	//КакаяТоКоманда(НужнаяКоманда); // Вызываем нужную команду, подставив ее в параметры
//КонецПроцедуры

//&НаСервере
//Функция ПодключитьВнешнююОбработку(АдресХранилища)
//	Возврат ВнешниеОбработки.Подключить(АдресХранилища);	
//КонецФункции               

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

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры


Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
  // Реализация логики команды
  Если ИдентификаторКоманды = "ЗагрузитьЗаявки" Тогда
	  
	   //Запуск();
	  
  КонецЕсли;
  
КонецПроцедуры    

&НаКлиенте
Процедура Запуск()
	АдресФайла = "C:\Program Files (x86)\Выгрузка.11.epf";	
	
	АдресХранилища = "";
	ПоместитьФайл(АдресХранилища, АдресФайла,,Ложь);
	ИмяОбработки = ПодключитьВнешнююОбработку(АдресХранилища);
	Форма = ПолучитьФорму("ВнешняяОбработка." + ИмяОбработки + ".Форма");
	Форма.ЗагрузитьЗаявки(Неопределено);
КонецПроцедуры

&НаСервере
Функция ПодключитьВнешнююОбработку(АдресХранилища)
	Возврат ВнешниеОбработки.Подключить(АдресХранилища);	
КонецФункции 
Показать


Я уже что только не попробовал.
Мою обработку прикрепил картинкой. Хочу вызвать &НаКлиенте
Процедура ЗагрузитьЗаявки(Команда)

// Форма = ПолучитьФорму("ВнешняяОбработка." + ИмяОбработки + ".Форма");
// Форма.ЗагрузитьЗаявки(Неопределено);

Не работает, говорит метод не найден
Прикрепленные файлы:
+
По теме из базы знаний
Найденные решения
22. FatPanzer 21.06.22 14:39 Сейчас в теме
(21) Тебе уже сколько раз сказали убрать из модуля объекта директивы &НаКлиенте? Читаешь хоть что тебе пишут?
user645801_yyyuuu123q; +1
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Zevzm 21.06.22 12:47 Сейчас в теме
Добрый день. Не читали вот эту тему: https://infostart.ru/1c/articles/1274660/ ?
+
4. user645801_yyyuuu123q 21.06.22 12:49 Сейчас в теме
(2)Читал, по ней и делал. Только там вызов встроенной обработки. Я даже через расширение добавил обработку но ноль на массу
+
3. winapi 60 21.06.22 12:48 Сейчас в теме
в 4 параметре "ДобавитьКоманду" - Использование. Нужно указывать "ВызовСерверногоМетода".
Если вы в модуле обработки, то директивы - &НаСервере и &НаКлиенте не нужно указывать.
+
5. user645801_yyyuuu123q 21.06.22 12:57 Сейчас в теме
(3)
Не удалось выполнить команду по причине:
Метод объекта не обнаружен (ЗагрузитьЗаявки).
{Справочник.ДополнительныеОтчетыИОбработки.Форма.ФормаЭлемента.Форма(1002)}:ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
{ОбщийМодуль.ДлительныеОперацииКлиент.Модуль(63)}:ВыполнитьОбработкуОповещения(ОповещениеОЗавершении, Результат);
{Справочник.ДополнительныеОтчетыИОбработки.Форма.ФормаЭлемента.Форма(988)}:ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
{Справочник.ДополнительныеОтчетыИОбработки.Форма.ФормаЭлемента.Форма(474)}:ВыполнитьОбработкуОповещения(Обработчик, "ПродолжитьБезЗаписи");
+
6. user823999 21 21.06.22 13:01 Сейчас в теме
(5) у вас в процедуру "ДобавитьКоманду" передается 4 параметром "Использование" - "ЗагрузитьЗаявки". А должно быть, как правильно написали уже - "ВызовСерверногоМетода".
+
7. user645801_yyyuuu123q 21.06.22 13:03 Сейчас в теме
(6) Да, поменял но не работает все ровно
+
8. user823999 21 21.06.22 13:04 Сейчас в теме
(7) Отладчиком попробуйте посмотреть, какую команду вы добавили и где именно ошибка.
+
9. Zevzm 21.06.22 13:24 Сейчас в теме
Отладчиком не совсем просто попасть во внешнюю обработку.
Посмотрите это видео "Отладка внешней обработки https://www.youtube.com/watch?v=0eIy4j_CG5I " и проверьте попадаете ли Вы в это место:
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
// Реализация логики команды
Если ИдентификаторКоманды = "ЗагрузитьЗаявки" Тогда

//Запуск();

КонецЕсли;

КонецПроцедуры
+
10. user645801_yyyuuu123q 21.06.22 13:31 Сейчас в теме
(8) Прозвучит странно но не могу попасть в отладку уже и -debug поставил и галочки поставил, и точку останова не попадаю. Вроде все ок было раньше, а теперь не заходит
+
11. user645801_yyyuuu123q 21.06.22 13:56 Сейчас в теме
ПОставил выполнение по расписанию, выполняет ошибок нет. Пишет задание выполненно но и результата тоже нет. Загрузка не проходит
+
12. user823999 21 21.06.22 14:01 Сейчас в теме
(11) Попробуйте убрать директивы "&НаСервере" и "&НаКлиенте" из модуля обработки. И я бы для проверки создала форму обработки, куда поместила вызов команды.
+
13. user645801_yyyuuu123q 21.06.22 14:10 Сейчас в теме
(12)Вообще сейчас все убрал и сделал как по учебнику. Пишет задание выполненно, ошибок нет, но и документов нет которые должны были бы загрузиться

Функция СведенияОВнешнейОбработке() Экспорт
  ПараметрыРегистрации = Новый Структура;
  ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
  ПараметрыРегистрации.Вставить("Наименование", "Загрузка"); //Наименование обработки, которым будет заполнено наименование элемента справочника
  ПараметрыРегистрации.Вставить("Версия", "1.0");
  ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
  ПараметрыРегистрации.Вставить("Информация", "Загрузка 1"); //Краткая информация по обработке, описание обработки
  ПараметрыРегистрации.Вставить("ВерсияБСП", "1.2.1.4");
  ТаблицаКоманд = ПолучитьТаблицуКоманд();
  ДобавитьКоманду(ТаблицаКоманд,
          "Загрузка 123", //представление команды в пользовательском интерфейсе
          "ЗагрузитьЗаявки", //идентификатор команды; любая строка, уникальная в пределах данной обработки
          "ВызовСерверногоМетода");
  ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
  Возврат ПараметрыРегистрации;
КонецФункции

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
  // Реализация логики команды
  //Адрес = "C:\Users\Tech_srv\Desktop\вввввввв.epf";
  //обр = ВнешниеОбработки.Создать(Адрес,БезопасныйРежим());
  //обр.ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды);
  //Возврат;
  //                     123
  Если ИдентификаторКоманды = "ЗагрузитьЗаявки" Тогда
		ПараметрыВыполненияКоманды.ЗагрузитьЗаявки(Неопределено);		  
  КонецЕсли;
  
КонецПроцедуры
Показать
+
14. FatPanzer 21.06.22 14:14 Сейчас в теме
(13)
Если ИдентификаторКоманды = "ЗагрузитьЗаявки" Тогда
    ПараметрыВыполненияКоманды.ЗагрузитьЗаявки(Неопределено);          
КонецЕсли;

Это че за хрень?
+
20. SlavaKron 21.06.22 14:31 Сейчас в теме
(13)
сделал как по учебнику

К проблеме отношения не имеет, но в вашем случае достаточно такого кода для функции СведенияОВнешнейОбработке:
Функция СведенияОВнешнейОбработке() Экспорт
	
	ВерсияБСП = СтандартныеПодсистемыСервер.ВерсияБиблиотеки();
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(ВерсияБСП);
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
	ПараметрыРегистрации.Версия = Формат(ТекущаяДата(), "ДФ=гггг.ММ.дд");
	ПараметрыРегистрации.БезопасныйРежим = Ложь;
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = Метаданные().Синоним;
	НоваяКоманда.Идентификатор = Метаданные().Имя;
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	
	Возврат ПараметрыРегистрации
	
КонецФункции
Показать
+
15. user823999 21 21.06.22 14:16 Сейчас в теме
А это что?
  
Если ИдентификаторКоманды = "ЗагрузитьЗаявки" Тогда
        ПараметрыВыполненияКоманды.ЗагрузитьЗаявки(Неопределено);          
  КонецЕсли;
  

У вас здесь должен быть вызов экспортной процедуры, где происходит загрузка заявок.
То есть:
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
Если ИдентификаторКоманды = "ЗагрузитьЗаявки" Тогда
        ЗагрузитьЗаявки();          
 КонецЕсли;

КонецПроцедуры

Процедура ЗагрузитьЗаявки() Экспорт

//тут код по загрузке 

КонецПроцедуры
Показать
+
16. FatPanzer 21.06.22 14:24 Сейчас в теме
(15)
У вас здесь должен быть вызов экспортной процедуры,
Почему сразу экспортной?
user645801_yyyuuu123q; +1
17. user823999 21 21.06.22 14:26 Сейчас в теме
Чтобы вызывать из формы обработки, для отладки и проверки, это удобно.
user645801_yyyuuu123q; +1
19. FatPanzer 21.06.22 14:29 Сейчас в теме
(17) То есть не "должна", а это просто вам "так удобнее". ОК.
user645801_yyyuuu123q; +1
18. user645801_yyyuuu123q 21.06.22 14:29 Сейчас в теме
(15) А из внешней обработки нельзя этот код вызвать?
+
21. user645801_yyyuuu123q 21.06.22 14:37 Сейчас в теме
Так спасибо за подсказки, Я перенес но есть новая ошибка
Прикрепленные файлы:
+
22. FatPanzer 21.06.22 14:39 Сейчас в теме
(21) Тебе уже сколько раз сказали убрать из модуля объекта директивы &НаКлиенте? Читаешь хоть что тебе пишут?
user645801_yyyuuu123q; +1
23. user645801_yyyuuu123q 21.06.22 15:07 Сейчас в теме
(22) Спасибо. Да читаю, просто с обработкой сидел не понять сколько уже голова не соображает. Спасибо что помог увидеть это.
Всем спасибо ребята. Все получилось, да Я не совсем правильно делал.
Спасибо кто откликнулся. Спасибо мужики
+
Внимание! Тема сдана в архив

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