Объявление

Свернуть
Пока нет объявлений.

Howto: импорт по расписанию

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Howto: импорт по расписанию

    Задача
    Автоматический запуск задач импорта данных ОТ по расписанию без использования внешних программ-планировщиков.

    Решение
    Предположим, у нас есть в OT две папки, куда периодически должен производиться импорт из внешних систем:
    • Подрядчики;
    • Сотрудники.
    В системе есть поле типа Shedule (расписание). Добавив это поле в какой-либо объект мы можем настроить любое действие, которое будет выполняться в заданное время. Для решения нашей задачи нам понадобится действие Execute VBScript. Действие будет вызывать скрипт ScheduledImpord:
    Код:
    Dim objFolder, objImport
    Set objFolder = ActiveSession.RequestFolders(ActiveRequest.UserFields("Folder").Value)
    Set objImport = objFolder.MakeImport
    objImport.Run ActiveRequest.UserFields("ImportName").Value
    1. Создаём папку "Импорты по расписанию", содержащую следующие поля:
    • Название импорта (text);
    • Папка (text);
    • Расписание (shedule).


    2. Определяем форму для созданной папки:


    Поле "Импорт" не будет привязано в какому-либо полю объекта. Наполнять его содержимым будет сценарий, получающий список всех импортов, которые определены в системе для всех папок.

    На форме в разделе Declarations добавляем код:
    Код:
    'at
    'Получаем список всех папок в системе
    Dim folders()
    ReDim folders(ActiveSession.RequestFolders.Count)
    Dim i
    i = 0
    For Each fld In ActiveSession.RequestFolders
        folders(i) = fld.Name
        i = i + 1
    Next
    Добавляем обработчик события OnOpen формы:
    Код:
    'at
    'Наполняем список "Импорт" на форме
    Dim fldIndex
    fldIndex = 0
    For Each fld In ActiveSession.RequestFolders
        For Each import In fld.ImportDefinitions
            cbo_Imports.AddItem import.Name, fldIndex, -1
        Next
        fldIndex = fldIndex + 1
    Next
    'Если открыт уже сохранённый объект, устанавливаем значение поля Импорт на выбранный элемент
    If Not IsEmpty(ActiveRequest.UserFields("ImportName").Value) Then
        cbo_Imports.Value = ActiveRequest.UserFields("ImportName").Value
    End If
    Добавляем обработчик OnSave:
    Код:
    'at
    'Записываем наименование папки и импорта в соотв. поля
    ActiveRequest.UserFields("ImportName").Value = cbo_Imports.Value
    ActiveRequest.UserFields("Folder").Value = folders(cbo_Imports.ItemData(cbo_Imports.ListIndex))
    3. Создаём две записи импорта по расписанию (для сотрудников и подрядчиков):


    4. В назначенное время получаем результат. Пример:
    Последний раз редактировалось Sergey Osadchy; 24-12-2012, 00:06.
    С уважением,
    Цимбалистов Александр
    Команда российского форума OMNITRACKER
    http://www.omniway.ru/forum/

  • #2
    Re: HOWTO: Импорт по расписанию

    Добавлю, что действия, выполняемые по расписанию (поле Schedule) выполняются сервером приложений ОТ в контексте той учетной записи Windows, от имени которой работает сервер приложений ОТ. Соответственно, указанные в настройках импорта ODBC DSN, пути к файлам и т.п. должны быть доступны для этой учетной записи.
    С уважением, Сергей Осадчий

    Комментарий


    • #3
      Re: HOWTO: Импорт по расписанию

      Можно ли подобным образом реализовать экспорты по расписанию?
      С уважением, Морозов Руслан

      Комментарий


      • #4
        Re: HOWTO: Импорт по расписанию

        Сообщение от Ruslan O Morozov
        Можно ли подобным образом реализовать экспорты по расписанию?
        Экспорт в OT реализуется с помощью задач (tasks). С одной стороны, метод .ExecuteTask доступен только в клиентских скриптах. С другой стороны, для объекта типа OtTask существует метод .Execute. Однако:
        • в документации его настоятельно не рекомендуется применять в серверных скриптах;
        • ему нужно передавать как параметр объект OtRequests, а это значит, что и выбор объекта нужно делать в скрипте.
        В общем, сказать сложно, нужно пробовать.
        Последний раз редактировалось Sergey Osadchy; 24-12-2012, 00:05.
        С уважением,
        Цимбалистов Александр
        Команда российского форума OMNITRACKER
        http://www.omniway.ru/forum/

        Комментарий


        • #5
          Re: HOWTO: Импорт по расписанию

          Сообщение от Alexander Tsimbalistov
          В общем, сказать сложно, нужно пробовать.
          Смотри мою тему про отчеты, там все вопросы экспорта описаны.

          Комментарий


          • #6
            я правильно понимаю, что во втором пункте должна быть картинка формы?

            Комментарий


            • #7
              Сообщение от tianzi Посмотреть сообщение
              я правильно понимаю, что во втором пункте должна быть картинка формы?
              Да, но как мне кажется, она утеряна безвозвратно.
              С уважением, Сергей Осадчий

              Комментарий


              • #8
                обидно, в некоторых местах автор не стал описывать и как я понял для наглядности прикрепил скрины и теперь картина общая из повествования не складывается.
                У меня просто возник вопрос. У меня получилось создать и папку и сделать необходимы скрипты, но не ясно что делать с ScheduledImpord?

                Комментарий


                • #9
                  разобрался. Осталось понять где результат, точнее как понять что Импорт запустился в нужное время или для этого нужно будет каждый раз лезть в лог файл?

                  Комментарий


                  • #10
                    Сообщение от tianzi Посмотреть сообщение
                    разобрался. Осталось понять где результат, точнее как понять что Импорт запустился в нужное время или для этого нужно будет каждый раз лезть в лог файл?
                    нашел Вам подходящий скриншот ) вот так можно сделать -

                    Нажмите на изображение для увеличения. 

Название:	59624b080c098fd0f91e2b4298287124.png 
Просмотров:	1 
Размер:	49.2 Кб 
ID:	111
                    С уважением, Сергей Осадчий

                    Комментарий


                    • #11
                      Сергей спасибо, вы картинкой ответили на мой вопрос. Получается надо самому дописывать механизм, который бы логировал работу пакетника. У Вас более интересное решение.

                      Комментарий


                      • #12
                        В версии 10.1.0 добавлен новый функционал - запуск по расписанию импортов, задач (tasks) и переиндексации Full-Text Search Index:
                        Нажмите на изображение для увеличения. 

Название:	96e3d353a05ffc69d1685cd96cba4499.png 
Просмотров:	1 
Размер:	40.0 Кб 
ID:	114
                        С уважением, Сергей Осадчий

                        Комментарий


                        • #13
                          Спустя годы вновь понадобилось что-то дописать в ОТ. И как на зло это расписания. По сути формочку и папку сделать легко. Я правильно понимаю, что необходимо у поля с типом schedule прописать какой-то скрипт, который бы брал название импорта и выполнял его?
                          Подскажите в каком направлении искать в мануалах информацию, спасибо.

                          Комментарий


                          • #14
                            Теперь не обязательно поле schedule делать. Можно запустить импорт из оснастки Файл-Администрирование-задачи по расписанию
                            С уважением, Олег Шиловский.

                            Комментарий


                            • #15
                              Сообщение от Oleg Shilovskiy Посмотреть сообщение
                              Теперь не обязательно поле schedule делать. Можно запустить импорт из оснастки Файл-Администрирование-задачи по расписанию
                              приходится работать с версией 8.5.3 на работе и обходится функциональностью этой версии. Проблема ещё в том, что обучение мною было пройдено давно и с тех пор практики особо не было, а сейчас стоит задача написать импорт, а некоторые вещи не сходятся.
                              Я на сколько помню, schedule должен запустить какое-то действие и это должен быть скрипт, который у текущей записи берёт название папки, и запускает выполнение задания.
                              Если не сложно, можно пример такого скрипта? Заранее благодарю.

                              Комментарий

                              Обработка...
                              X