| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > Проблемы с регламентными заданиями |
| Автор: AlexFIG 26.8.2009, 08:21 |
| Здравствуйте уважаемые коллеги! Существует проблема с регламентными заданиями. Организован обмен между БД. Если делаю обмен вручную все идет гладко: номер принятого = номеру загруженного, т.е. базы скинули сообщения на ftp и разобрали для загрузки нужные. Описание проблемы с регламентными заданиями: Настраиваю обмен при помощи регламентных заданий: 1. Регламентное задание "Выгрузка" (В определенное время например в 21.00) 2. Регл. задание "Загрузка" (23.30) (Разности во времени вполне хватает чтобы выгрузить файлы всем базам). Иногда проходит обмен хорошо. Номер отпр. = номеру принятого. А в большинстве случаев глюки. Например: Состояние1 БД : НО =1, НП = 1; После регламентного задания "Выгрузка" Состояние 2 БД: НО=25, НП =1; - Это что то я никак не могу понять. Настройки регламентого задания: Выполнять: c 1 января 2009 г. каждый день; с 23:00:00 каждые 86400 сек., повторять после завершения через 86400 сек. Я решил отследить выполнение данного регламентного задания "Выгрузка", выставил значения, сижу жду. Действия регл. задания: Стартовало по расписанию, выполнилось, опять стартовало. Что за бред. Ведь оно должно было выполниться один раз. Помогите уважаемые коллеги решить эту проблему. За советы и ответы премного благодарен. PS: В ручном режиме выгрузка/загрузка все Ок. |
| Автор: SaschaL 26.8.2009, 09:27 |
| Платформа какая 7.7 или 8? |
| Автор: AlexFIG 26.8.2009, 09:48 |
| Пардон. 1С:Предприятие 8.1 (8.1.14.72) |
| Автор: AkelaSQL 26.8.2009, 10:05 | ||
Откуда в 7.7 регламентные задания? Их там не существует в природе. |
| Автор: AlexFIG 26.8.2009, 14:17 |
| Чего то все молчат... |
| Автор: AlexFIG 27.8.2009, 08:47 |
| Комрады, что делать ??? Настройки разные перепробовал регламентных заданий. |
| Автор: Zero 27.8.2009, 18:57 |
1. Возьми/купи книгу М.Г. Радченко "1с:Предприятие 8.1. Практическое пособие разработчика". Там на простом примере показана реализация механизма регламентных заданий. Далее проработай его и сделай аналогично у себя. В начале на интервале неск. минут с выводом простых сообщений, а как получится, прикрутишь процедуры выгрузки/загрузки. 2. Если неполучится, можешь заменить на механизм с использованием процедуры "Обработка ожидания" 3. Ещё для большей надёжности добавь использование флагов, т.е. по умолчанию какойто признак будет иметь значение ноль, а после выгрузки/загрузки данных переходит в состояние один. |
| Автор: AlexFIG 28.8.2009, 08:03 |
| п.1 прошел уже давно. Конечно можно использовать флаги и обработка ожидания, но ведь предполагается что регл. задания и без них справяться. |
| Автор: Zero 28.8.2009, 19:48 |
ну теперь реализуй по аналогии |
| Автор: Itsys 28.8.2009, 20:42 |
| AlexFIG, Модуль задания и скрины настроек в студию.... Добавлено через 9 минут и 55 секунд Да, кстати, вариант работы клиент-сервер/файл-сервер? |
| Автор: AlexFIG 31.8.2009, 10:04 |
| Процедура регл. задания: Процедура ВыполнитьВыгрузку() Экспорт ВыборкаУзлов = ПланыОбмена.УдаленныеОфисы.Выбрать(); Пока ВыборкаУзлов.Следующий() Цикл Если ВыборкаУзлов.Ссылка <> ПланыОбмена.УдаленныеОфисы.ЭтотУзел() Тогда УзелОбъект = ВыборкаУзлов.ПолучитьОбъект(); УзелОбъект.ЗаписатьСообщениеСИзменениями(); КонецЕсли; КонецЦикла; КонецПроцедуры //Процедура выгрузки плана обмена Процедура ЗаписатьСообщениеСИзменениями() Экспорт Сообщить("-------- Выгрузка в узел " + Строка(ЭтотОбъект) + " ------------"); //Каталог = ПланыОбмена.УдаленныеОфисы.ЭтотУзел().ПапкаОбмена; // Формируем имя временного файла ИмяФайла = КаталогВременныхФайлов() + ?(Прав(КаталогВременныхФайлов(), 1) = "\", "", "\") + "Message" + СокрЛП(ПланыОбмена.УдаленныеОфисы.ЭтотУзел().Код) + "_" + СокрЛП(Ссылка.Код) + ".xml"; // Создаем объект записи XML ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл(ИмяФайла); ЗаписьXML.ЗаписатьОбъявлениеXML(); // Создаем новое сообщение ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения(); ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Ссылка); Сообщить(" Номер сообщения: " + ЗаписьСообщения.НомерСообщения); // Получаем выборку изменённых данных ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения); //Состояние("Выгрузка файла"); Пока ВыборкаИзменений.Следующий() Цикл // Записываем данные в сообщение ЗаписатьXML(ЗаписьXML, ВыборкаИзменений.Получить()); КонецЦикла; // Завершаем запись сообщения ЗаписьСообщения.ЗакончитьЗапись(); ЗаписьXML.Закрыть(); Сообщить("Формирование файла данных закончено", СтатусСообщения.Информация); //Заархивируем наш файл обмена Сообщить("Архивирование файла", СтатусСообщения.Информация); ПутьФайлаАрхива = КаталогВременныхФайлов() + "Message" + СокрЛП(ПланыОбмена.УдаленныеОфисы.ЭтотУзел().Код) + "_" + СокрЛП(Ссылка.Код) + ".zip"; Архив = Новый ЗаписьZipФайла(ПутьФайлаАрхива, , , МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Максимальный); Архив.Добавить(ИмяФайла); Архив.Записать(); //Переместим наш файл на фтп: СоединениеFTP = Новый FTPСоединение(FTP, , "obmen", "0bmennik", ,); СоединениеFTP.Записать(ПутьФайлаАрхива, "Message" + СокрЛП(ПланыОбмена.УдаленныеОфисы.ЭтотУзел().Код) + "_" + СокрЛП(Ссылка.Код) + ".zip"); //Подчищаем за собой xml и архив на дисках УдалитьФайлы(ИмяФайла); УдалитьФайлы(ПутьФайлаАрхива); Сообщить("-------- Конец выгрузки------------"); КонецПроцедуры // ЗаписатьСообщениеСИзменениями() |
| Автор: AlexFIG 31.8.2009, 10:40 | ||
Модули выложил, а смысл выкладывать скрины ? Пробовал по разному. |