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

1. 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 16 21.06.22 14:39 Сейчас в теме
(21) Тебе уже сколько раз сказали убрать из модуля объекта директивы &НаКлиенте? Читаешь хоть что тебе пишут?
user645801_yyyuuu123q; +1 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. user712436 21.06.22 12:47 Сейчас в теме
4. user645801_yyyuuu123q 21.06.22 12:49 Сейчас в теме
(2)Читал, по ней и делал. Только там вызов встроенной обработки. Я даже через расширение добавил обработку но ноль на массу
3. winapi 39 21.06.22 12:48 Сейчас в теме
в 4 параметре "ДобавитьКоманду" - Использование. Нужно указывать "ВызовСерверногоМетода".
Если вы в модуле обработки, то директивы - &НаСервере и &НаКлиенте не нужно указывать.
5. user645801_yyyuuu123q 21.06.22 12:57 Сейчас в теме
(3)
Не удалось выполнить команду по причине:
Метод объекта не обнаружен (ЗагрузитьЗаявки).
{Справочник.ДополнительныеОтчетыИОбработки.Форма.ФормаЭлемента.Форма(1002)}:ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
{ОбщийМодуль.ДлительныеОперацииКлиент.Модуль(63)}:ВыполнитьОбработкуОповещения(ОповещениеОЗавершении, Результат);
{Справочник.ДополнительныеОтчетыИОбработки.Форма.ФормаЭлемента.Форма(988)}:ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
{Справочник.ДополнительныеОтчетыИОбработки.Форма.ФормаЭлемента.Форма(474)}:ВыполнитьОбработкуОповещения(Обработчик, "ПродолжитьБезЗаписи");
6. user823999 16 21.06.22 13:01 Сейчас в теме
(5) у вас в процедуру "ДобавитьКоманду" передается 4 параметром "Использование" - "ЗагрузитьЗаявки". А должно быть, как правильно написали уже - "ВызовСерверногоМетода".
7. user645801_yyyuuu123q 21.06.22 13:03 Сейчас в теме
(6) Да, поменял но не работает все ровно
8. user823999 16 21.06.22 13:04 Сейчас в теме
(7) Отладчиком попробуйте посмотреть, какую команду вы добавили и где именно ошибка.
9. user712436 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 16 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 16 21.06.22 14:14 Сейчас в теме
(13)
Если ИдентификаторКоманды = "ЗагрузитьЗаявки" Тогда
    ПараметрыВыполненияКоманды.ЗагрузитьЗаявки(Неопределено);          
КонецЕсли;

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

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

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

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

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

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

КонецПроцедуры
Показать
16. FatPanzer 16 21.06.22 14:24 Сейчас в теме
(15)
У вас здесь должен быть вызов экспортной процедуры,
Почему сразу экспортной?
user645801_yyyuuu123q; +1 Ответить
17. user823999 16 21.06.22 14:26 Сейчас в теме
Чтобы вызывать из формы обработки, для отладки и проверки, это удобно.
user645801_yyyuuu123q; +1 Ответить
19. FatPanzer 16 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 16 21.06.22 14:39 Сейчас в теме
(21) Тебе уже сколько раз сказали убрать из модуля объекта директивы &НаКлиенте? Читаешь хоть что тебе пишут?
user645801_yyyuuu123q; +1 Ответить
23. user645801_yyyuuu123q 21.06.22 15:07 Сейчас в теме
(22) Спасибо. Да читаю, просто с обработкой сидел не понять сколько уже голова не соображает. Спасибо что помог увидеть это.
Всем спасибо ребята. Все получилось, да Я не совсем правильно делал.
Спасибо кто откликнулся. Спасибо мужики
Оставьте свое сообщение
Вакансии
Консультант-аналитик 1С
Москва
зарплата от 120 000 руб. до 190 000 руб.
Полный день

Ведущий аналитик-разработчик 1С
Москва
зарплата от 230 000 руб. до 270 000 руб.
Полный день

1С:Эксперт по производительности
Москва
зарплата от 400 000 руб. до 950 000 руб.
Полный день

Ведущий аналитик 1С (ERP, ЗУП)
Краснодар
зарплата от 150 000 руб.
Полный день

Разработчик 1С
Тверь
зарплата от 150 000 руб. до 250 000 руб.
Полный день