Нужно создать регламентное задание, которые будет выгружать файлы по расписанию.
Выгрузка на яндекс-диск работает только на Клиенте (тот код, который ниже).
Поэтому рег.задание тоже должно выполняться на клиенте по расписанию, без участия человека.
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
Если ИдентификаторКоманды = "ВыгрузкаФайлов" Тогда
///подключаем ЯД
Попытка
WshShell = Новый COMОбъект("WScript.Shell");WshShell.Run("D:\TT\YandexDisk.bat", 2 , 1);
Исключение
Сообщить(ОписаниеОшибки() );
КонецПопытки;
ТекстС = Новый ТекстовыйДокумент ;
ИмяФайлаС = "H:\Старт_Тест" + Строка(ТекущаяДата()) + ".txt";
ТекстС.ДобавитьСтроку("Старт тест: " + ТекущаяДата() );
ТекстС.Записать(ИмяФайлаС, КодировкаТекста.UTF8);
//Отключаем ЯД
Попытка
WshShell = Новый COMОбъект("WScript.Shell");WshShell.Run("D:\TT\delYandexDisk.bat", 2 , 1);
Исключение
Сообщить(ОписаниеОшибки() );
КонецПопытки;
КонецЕсли;
КонецПроцедуры
Показать
Не удается настроить расписание запуска.
При настройке внешней обработки, где настраивается расписание, там надпись:
Неприменимо для команд с вариантом запуска Вызов клиентского метода
Файлы для выгрузки формируются на сервере.
Может у меня рег. задание неправильно настроено?
Можно ли выполнять код на Клиенте в рег.задании по расписанию?
(1) на сервере выгружать в определенную папку. Эту папке расшарить.
На киенте при необходимости копировать/перемещать файлы в яндекс-диск папку. Простой батник.
(4)
Мне нужен робот.
Делать задачи в операционной системе, чтобы запускать батник? (не нравится такое решение)
Хотелось бы решить средствами 1С эту задачу.
(5) тут варианты: нельзя или не нравится. Выбирайте.
Можно сервис сделать, как файлы (а лучше по выставлению флага) появятся в нужной папке, тогда запускать копирование/перемещение.
(8) в обработке сможете посмотреть пример, как реализовывать код для регламентного задания.
Еще раз повторю регламентное задание выполняет код только на сервере. Пора это уже понять и не привязываться к &НаКлиенте!
(11)
У меня есть пример, робот выполняет работу на сервере (рег.задание по расписанию).
https://infostart.ru/public/875699/ Но как мне это может помочь?
Расскажите пожалуйста, как бы вы делали эту задачу?
Чтобы выгружались и загружались файлы между базами через яндекс-диск, по расписанию.
Желательно всё сделать средствами 1С.
Из того, что есть - пользователь должен руками нажимать кнопку (внешняя обработка), чтобы запустился процесс
выгрузки файлов из 1с и копирования на яндекс-диск.
Хочется всё на робота повесить.
(25)
Скачал вашу обработку.
Получается, вы предлагаете пользователю нажимать кнопку.
Автоматом сделать так, чтобы выгружались данные из 1с в файлы и загружались невозможно?
(используя яндекс-диск т.к. связи между базами 1с совсем нет)
(1) Тут два нормальных варианта может быть
1) Переделать на работу через сервер.
2) Написать скрипт (подключение к базе и запуск процедура, которая работает на клиенте), который будет запускаться по расписанию (настроить расписание в операционке) .
Все остальное костыли, хотя и второй вариант костыльный, но не будет нагружать сервер.
Ну, регламентные задания выполняются на сервере, с сервера до клиента достучаться нельзя.
Почему нельзя выгружать на яндекс-диск с сервера? Для этого не нужно никаких батников, это прекрасно делается командой КопироватьФайл.
(16)
У меня сетевой диск яндекса подключается только &НаКлиенте
Поэтому и вопрос, как сделать робота ?
(если рег.задание нельзя запустить по расписанию, чтобы выполнился клиентский код)
Как автоматизировать процесс выгрузки и загрузки? (нужно без участия человека)
Если рег.здания выполняются только на сервере.
(17) если только средствами 1С и на клиенте, тогда:
На клиенте подключить обработчик ожидания, который будет запускать фоновое задание и передавать туда адрес во временном хранилище. По выполнению фонового хранилища загружать во временное хранилище двоичные данные файла. На клиенте получать и сохранять.
(10) Просто на клиенте, чтобы работало "по расписанию" нужно запускать на клиентской машине 1с с включенной обработкой ожидания, которая проверяет текущее время на совпадение с временем расписания и что-то делает, если оно совпадает. Других вариантов организовать что-либо на клиенте по расписанию нет. Или пытать админа, чтобы открыл доступ к ЯД на сервере или продолжать делать руками.
Если админ параноик, что в общем то не является минусом, то пусть развернет отдельную виртуалку c минимальным набором прав, из которой будет выход только на яндекс и одну папку в сети.
Реализация на обработчиках ожидания - очень плохо для производительности (между сеансами единственный (ну есть еще сервер взаимодействия и костыли типо отметок на шаре) способ передать информацию - обратится на сервер), и такими микрозапросами можно очень здорово словить проблем.
Я видел базу в которой 90% нагрузки по результатам ТЖ был код обращения к серверу из обработчиков ожидания, 99,9 из которых холостые.
Естественно пользователи очень страдали.
30.
user596430_gleb21
304.02.19 14:35 Сейчас в теме
Повесить обработчик ожидания на открытие какой нибудь формы на начальной странице.
Интервал установить расчетный ( например разница между временем запуска обработки и временем при открытии )
Выполнять однократно.
Можно сделать в расширении.
(31) Автор же написал:
При настройке внешней обработки, где настраивается расписание, там надпись: "Неприменимо для команд с вариантом запуска Вызов клиентского метода"
(36)
Всё там же, в модуле объекта (внешней обработки). Я проверял всё работает. Хотя для меня было открытием, что в модуле внешней обработки можно указать директиву "&НаКлиенте".
Что я проверил: сделал для функции "СведенияОВнешнейОбработке" директиву "&НаКлиенте", указал использование "ВызовКлиентскогоМетода" расписание, подключил к базе, в доп. обработки и "вуаля" расписание доступно. А вот как оно будет работать и как оно сможет вызывать клиентскую функцию (к какому клиенту привязываться), я честно говоря не представляю.
(37) Даже если оно доступно в расписании, это ничего не даст. Регламентные задания запускаются на сервере. На сервере, Карл.
С чего вы решили, что ваша обработка вообще запускается и клиенсткий метод выполняется по этому расписанию?
(37) Я не поленился, откопал БСП версии 2.2 и проверил. Не сработало.
Хотя для меня было открытием, что в модуле внешней обработки можно указать директиву "&НаКлиенте".
Нет никакой загадки, если Вы запускаете 1С в толстом клиенте. В противном случае компилятор не выругается, но и функция при регистрации обработки найдена не будет.
"вуаля" расписание доступно
Нет, расписание доступным не стало. На какой конфигурации Вы тестировали? Какая у нее версия стандартной библиотеки?
А вот как оно будет работать и как оно сможет вызывать клиентскую функцию (к какому клиенту привязываться), я честно говоря не представляю.
Это ключевой момент. Извините за резкость, но зачем же Вы спешите советовать, если даже не представляете, как оно будет работать?
Да. Что-то я погорячился (лопухнулся).
Делал всё на УТ11+CRM (от рарус).
Сейчас ещё раз всё детально проверил и что выяснил:
1.Дало мне сделать для клиентского вызова, потому что я уже подключенную обработку, через обновить делал. По этому и расписание доступно оставалось, думаю баг какой-то. Что самое плохое в этом баге, что при обновлении не ругается и дает настроить расписание, но если принудительно запустить команду, выскакивает ошибка что функция "СведенияОВнешнейОбработке" не обнаружена
2.Если удалить и заново подключить, то расписание не доступно.
3.Действительно не ругается из-за того, что толстый клиент запускаю. Все из-за консоли СКД, не дает она в наборы данных заходить в тонком клиенте, вот я и добавил кнопку запуска толстого клиента и уже привык в нем запускать.