[РЕШЕНО] Регламентное задание каждую секунду

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Dem0lisher, 25 янв 2016.

  1. TopicStarter Overlay
    Dem0lisher
    Online

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.027
    Симпатии:
    51
    Баллы:
    54
    Добрый день!
    В базе есть регламентные задания (не предопределенные, по одному на каждый элемент справочника)
    Они создаются программно на основании предопределенного. Но расписание для каждого задается свое.
    Рег. задание должно выполняться 1 раз в день, но консоль показывает, что оно выполняется и завершается (без ошибок) каждую секунду.
    http://joxi.ru/ZrJYPxwf1bxgaA?d=1
    Пробовали вертеть это расписание по разному с детальным расписанием и без него, с повтором и без повтора.
    Интервал повтора в случае ошибки - 0. Задание выполняется без ошибок.
    Есть у кого-нибудь соображения?
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.576
    Симпатии:
    717
    Баллы:
    204
    При записи программно сформированного рег. задания оно будет выполнено независимо от расписания. Следующее выполнение будет по расписанию, либо при перезапуске 1С сервиса.
    Dem0lisher нравится это.
  3. TopicStarter Overlay
    Dem0lisher
    Online

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.027
    Симпатии:
    51
    Баллы:
    54
    И все бы хорошо, но оно же выполнено 60 раз за минуту =)
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.576
    Симпатии:
    717
    Баллы:
    204
    Тогда объясните, что значит "В базе есть регламентные задания (не предопределенные, по одному на каждый элемент справочника)"?
    Dem0lisher нравится это.
  5. TopicStarter Overlay
    Dem0lisher
    Online

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.027
    Симпатии:
    51
    Баллы:
    54
    Ну и кстати расписание соблюдается в части интервала, т.е. "Время начала" и "Время окончания".
  6. TopicStarter Overlay
    Dem0lisher
    Online

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.027
    Симпатии:
    51
    Баллы:
    54
    Да все правильно вы поняли.
    Есть предопределенное задание в конфигураторе. В нем прописан обработчик.
    Есть справочник, в нем на каждый элемент, если стоит галка "По расписанию" создается рег.задание. с индивидуальным расписанием.
  7. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.576
    Симпатии:
    717
    Баллы:
    204
    в какой момент создаются сами регл. задания для каждого элемента?
    Dem0lisher нравится это.
  8. TopicStarter Overlay
    Dem0lisher
    Online

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.027
    Симпатии:
    51
    Баллы:
    54
    Ставится галочка "По расписанию", затем выполняется код:
    Код:
    Процедура РедактированиеРасписанияРегламентногоЗадания(ОбъектЗадания, РеквизитЗадания)
       
        ОбъектЗадания = НайтиРегламентноеЗаданиеПоНастройке();       
               
        Если ОбъектЗадания = Неопределено Тогда
           
            ОбъектЗадания = РегламентныеЗадания.СоздатьРегламентноеЗадание("ОбработкаСправочников");
           
            Ключ = Код;
            ОбъектЗадания.Наименование = Ключ;
            ОбъектЗадания.Ключ  =Ключ;
            //ОбъектЗадания.Использование = Истина;
                       
        КонецЕсли;
       
        // редактирование самого расписания непосредственно
        Диалог = Новый ДиалогРасписанияРегламентногоЗадания(ОбъектЗадания.Расписание);
           
        Если Диалог.ОткрытьМодально() Тогда
           
            ОбъектЗадания.Расписание = Диалог.Расписание;
            Попытка
                Параметры = Новый Массив();
                Параметры.Добавить(Ключ);
                ОбъектЗадания.Параметры = Параметры;
                ОбъектЗадания.Записать();
                РеквизитЗадания = Строка(ОбъектЗадания.УникальныйИдентификатор);
            Исключение
                ВызватьИсключение "Произошла ошибка при сохранении расписания обработки. Возможно данные расписания были изменены. Закройте форму настройки и повторите попытку изменения расписания еще раз.
                |Подробное описание ошибки: " + ОписаниеОшибки();
            КонецПопытки;
           
        Иначе
           
            ОбъектЗадания = НайтиРегламентноеЗаданиеПоНастройке();
           
        КонецЕсли;
       
        УстановитьТекстНадписиРегламентнойНастройки();   
       
    КонецПроцедуры
    --- Объединение сообщений, 25 янв 2016 ---
    Код:
    Функция НайтиРеглЗаданиеПоПараметру(УникальныйНомерЗадания)
       
        Попытка
           
            Если НЕ ПустаяСтрока(УникальныйНомерЗадания) Тогда
               
                УникальныйИдентификаторЗадания = Новый УникальныйИдентификатор(УникальныйНомерЗадания);
                ТекущееРегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(УникальныйИдентификаторЗадания);
               
            Иначе
               
                ТекущееРегламентноеЗадание = Неопределено;
               
            КонецЕсли;
           
        Исключение
           
            ТекущееРегламентноеЗадание = Неопределено;
           
        КонецПопытки;
       
        Возврат ТекущееРегламентноеЗадание;
       
    КонецФункции
    
    Функция НайтиРегламентноеЗаданиеПоНастройке() Экспорт
       
        ТекущееРегламентноеЗадание = НайтиРеглЗаданиеПоПараметру(РегламентноеЗадание);
       
        Возврат ТекущееРегламентноеЗадание;
       
    КонецФункции
    Последнее редактирование: 25 янв 2016
  9. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.576
    Симпатии:
    717
    Баллы:
    204
    А у созданных регламентных заданий расписание верное стоит?
    Dem0lisher нравится это.
  10. TopicStarter Overlay
    Dem0lisher
    Online

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.027
    Симпатии:
    51
    Баллы:
    54
    Ну да. Оно в момент создания заполняется расписанием из диалогового окна редактирования расписания.
    И в консоли заданий потом стоит именно то расписание, что надо.
  11. TopicStarter Overlay
    Dem0lisher
    Online

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.027
    Симпатии:
    51
    Баллы:
    54
    Блин, похоже все было именно так.
    Когда рег.задание отрабатывало оно записывало свои настройки (перечень объектов по которым надо пробежаться и расписание). Точно не скажу как и когда оно менялось - в отладке не увидел этого, но после того, как закомментировал запись настроек проблема исчезла.

Поделиться этой страницей