Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/65: Рейтинг темы: голосов - 65, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 13
1
1C 8.x

Не запускаются регламентные задачи (Файловый вариант)

10.02.2016, 13:22. Показов 12369. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста... Есть самописная база на (1С 8.3 (8.3.6.2299), УФ, Файловая)
Я создал регламентное задание которое должно каждое утро запускать процедуру проверки давности изменения документа и если он менялся 30,60,90 дней назад отправлять сообщение по эл.почте.

Так вот проблема в том что регламентное задание отрабатывает только один раз после его создания,
и если изменить время то больше запускается. Одинаково не работает и в файловом и в клиент-серверном варианте (в скуле Блокировку регламентных заданий отключил)
В журнале регистрации пишет что фоновое задание начало и завершение((

Галочки предопределенное и использование стоят, интервал задан правильно.
Так как регламентное задание одно ключ не ставил.
Создан отдельный пользователь с обработкой ожидания.
Код работает если запускать его с кнопки.

Подскажите в чем может быть дело?
Миниатюры
Не запускаются регламентные задачи (Файловый вариант)   Не запускаются регламентные задачи (Файловый вариант)   Не запускаются регламентные задачи (Файловый вариант)  

Не запускаются регламентные задачи (Файловый вариант)  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.02.2016, 13:22
Ответы с готовыми решениями:

Файловый вариант и Управляемые блокировки
Здравствуйте. В случае файлового варианта всегда ведь блокируется таблица (Регистр) целиком. Если...

V8: Файловый и клиент-серверный вариант ЗУП 8.2
Добрый день! Подскажите, может кто сталивался. Проблема в следующем: стояла ЗУП (платформа 8.2) в...

Вариант задачи о рюкзаке
В классической задаче о 0-1 рюкзаке нужно максимизировать стоимость входящих в рюкзак предметов,...

Есть ли вариант решения задачи кроме перебора?
Здравствуйте! Ломаю голову над, возможно лёгкой, задачей. Я боюсь, что её можно решить лишь тупым...

16
Злой самаритянин
182 / 182 / 94
Регистрация: 24.04.2014
Сообщений: 686
10.02.2016, 17:31 2
wardamask, а у тебя там код исполняемый не на клиенте случайно? Попробуй через Попытка - Исключение писать ОписаниеОшибки() в текстовый файл.
0
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,669
Записей в блоге: 1
11.02.2016, 00:35 3
Цитата Сообщение от SHIFT_969 Посмотреть сообщение
Попробуй через Попытка - Исключение писать ОписаниеОшибки() в текстовый файл.
wardamask, Лучше так:
1C
1
2
3
4
5
Попытка 
   //Тут твой код
Исключение 
   ВызватьИсключение ОписаниеОшибки(); 
КонецПопытки;
и можно не писать в текстовый файл.
Цитата Сообщение от wardamask Посмотреть сообщение
В журнале регистрации пишет что фоновое задание начало и завершение((
У тебя скорее всего ошибка в коде...

Добавлено через 3 минуты
Цитата Сообщение от wardamask Посмотреть сообщение
Создан отдельный пользователь с обработкой ожидания.
Этого делать не обязательно для платформы версии выше 8.3.3.ххх

http://v8.1c.ru/o7/201305fi/index.htm

Добавлено через 52 секунды
wardamask, пости сюда сам код метода регл. задания
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 13
11.02.2016, 10:08  [ТС] 4
// общий модуль задания
// В свойствах модуля установил галочки: Сервер и вызов сервера

1C
1
2
3
Процедура Ежедневно() Экспорт
    ОтборДокументовДляУведомления();
КонецПроцедуры
// Общий модуль МодульУведомлений
// В свойствах модуля установил галочки: Глобальный, Клиент (Управляемое Приложение), Сервер и вызов сервера

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
&НаСервере
Процедура ОтборДокументовДляУведомления() Экспорт    
      
        //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   РегИзмИспЛистовСрезПоследних.Период,
        |   РегИзмИспЛистовСрезПоследних.ИсполнительныйЛист,
        |   РегИзмИспЛистовСрезПоследних.ДатаПолученияВЮУ,
        |   РегИзмИспЛистовСрезПоследних.Контрагент,
        |   РегИзмИспЛистовСрезПоследних.Взыскатель,
        |   РегИзмИспЛистовСрезПоследних.Куратор,
        |   РегИзмИспЛистовСрезПоследних.Статус
        |ИЗ
        |   РегистрСведений.РегИзмИспЛистов.СрезПоследних КАК РегИзмИспЛистовСрезПоследних";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
    Период = ВыборкаДетальныеЗаписи.Период;
     ИспЛист = ВыборкаДетальныеЗаписи.ИсполнительныйЛист;
     ДатаПВЮУ = ВыборкаДетальныеЗаписи.ДатаПолученияВЮУ;
     Контрагент = ВыборкаДетальныеЗаписи.Контрагент;
     Взыскатель = ВыборкаДетальныеЗаписи.Взыскатель;
     Куратор = ВыборкаДетальныеЗаписи.Куратор;
     Статус = ВыборкаДетальныеЗаписи.Статус;
     
    Если 
        ДеньГода(ТекущаяДата()) = ДеньГода(Период + 2529000)   Тогда
        
        //Сообщить("Дата последнего изменения: "+ Период +" Номер исполнительного листа: "+ ИспЛист + " Дата получения в ЮУ " + ДатаПВЮУ 
        //+ " Контрагент " + Контрагент + " Взыскатель " + Взыскатель + " Куратор " + Куратор + " Статус " + Статус );
        
        Напоминание = "30 дней";
        
        УстановитьСоединениеСПочтой(Период, ИспЛист, ДатаПВЮУ, Контрагент, Взыскатель,  Куратор, Статус, Напоминание);
        
    КонецЕсли;
        
    Если 
        ДеньГода(ТекущаяДата()) = ДеньГода(Период + 5184000)   Тогда
        
        //Сообщить("Дата последнего изменения: "+ Период +" Номер исполнительного листа: "+ ИспЛист + " Дата получения в ЮУ " + ДатаПВЮУ 
        //+ " Контрагент " + Контрагент + " Взыскатель " + Взыскатель + " Куратор " + Куратор + " Статус " + Статус );
        
        Напоминание = "60 дней";
        
        УстановитьСоединениеСПочтой(Период, ИспЛист, ДатаПВЮУ, Контрагент, Взыскатель,  Куратор, Статус, Напоминание);
        
    КонецЕсли;
        
    Если 
         ДеньГода(ТекущаяДата()) = ДеньГода(Период + 7776000)  Тогда
        
        //Сообщить("Дата последнего изменения: "+ Период +" Номер исполнительного листа: "+ ИспЛист + " Дата получения в ЮУ " + ДатаПВЮУ 
        //+ " Контрагент " + Контрагент + " Взыскатель " + Взыскатель + " Куратор " + Куратор + " Статус " + Статус );
        
        Напоминание = "90 дней";
        
        УстановитьСоединениеСПочтой(Период, ИспЛист, ДатаПВЮУ, Контрагент, Взыскатель,  Куратор, Статус, Напоминание);
        
    КонецЕсли;
    КонецЦикла;
КонецПроцедуры
// общий модуль уведомлений
// В свойствах модуля установил галочки: Глобальный, Клиент (Управляемое Приложение), Сервер и вызов

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Процедура УстановитьСоединениеСПочтой(Период, ИспЛист, ДатаПВЮУ, Контрагент, Взыскатель,  Куратор, Статус, Напоминание)  Экспорт  
        
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.yandex.ru";
Профиль.ПортSMTP = 465;
Профиль.Пароль = "*******";
Профиль.ПарольSMTP = "********";
Профиль.Пользователь = "******@yandex.ru";
Профиль.ПользовательSMTP = "******@yandex.ru";
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
Профиль.ВремяОжидания = 50;
Профиль.ИспользоватьSSLSMTP = Истина;
 
 ТекСообщение = Новый ИнтернетПочтовоеСообщение;
        ТекСообщение.Тема = ("Исполнительный лист без изменений " + Напоминание);    
        ТекСообщение.Получатели.Добавить("*****@yandex.ru");
        ТекСообщение.Отправитель = "*******@yandex.ru";  
    ТекСообщение.Тексты.Добавить ("Дата последнего изменения: " + Период);
    ТекСообщение.Тексты.Добавить ("Номер исполнительного листа: "+ ИспЛист);
    ТекСообщение.Тексты.Добавить ("Дата получения в ЮУ: " + ДатаПВЮУ);    
    ТекСообщение.Тексты.Добавить ("Контрагент: " + Контрагент );
    ТекСообщение.Тексты.Добавить ("Взыскатель: " + Взыскатель);
    ТекСообщение.Тексты.Добавить ("Куратор: " + Куратор);
    ТекСообщение.Тексты.Добавить ("Статус: " + Статус);
    ТекСообщение.Тексты.Добавить ("Данное письмо сформировано автоматически и не требует ответа.");
    
    ТекПочта = Новый ИнтернетПочта();
    ТекПочта.Подключиться(Профиль);    
    ТекПочта.Послать(ТекСообщение);
 
КонецПроцедуры
Добавлено через 4 минуты
Этот же код я запускал с кнопки и он нормально отрабатывал.
И что самое странное что после создания регламентного задания от один раз тоже отрабатывает, а вот последующие разы или после изменения времени, уже не работает...
0
Злой самаритянин
182 / 182 / 94
Регистрация: 24.04.2014
Сообщений: 686
11.02.2016, 10:45 5
Dethmontt, куда пойдет ВызватьИсключение, если код рег задания исполняется только на сервере и ничего не возвращает на клиент, как код с кнопки, например? Или я не прав?
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 13
11.02.2016, 11:26  [ТС] 6
Код выполняется только на сервере. Для проверки с кнопки я создавал копию процедуры отбордокументовдляуведомления() в модуле формы. Собственно с кнопки она отлично работает.
0
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,669
Записей в блоге: 1
11.02.2016, 11:51 7
Цитата Сообщение от SHIFT_969 Посмотреть сообщение
ВызватьИсключение
При чем здесь клиент не клиент!?

В СП написано как работает ВызватьИсключение

Добавлено через 2 минуты
wardamask, поставь эту конструкцию в попытку

1C
1
2
3
4
5
6
7
Попытка
ТекПочта = Новый ИнтернетПочта();
    ТекПочта.Подключиться(Профиль);    
    ТекПочта.Послать(ТекСообщение);
Исключение
    ВызватьИсключение ОписаниеОшибки();
КонецПопытки;
Добавлено через 3 минуты
Цитата Сообщение от Dethmontt Посмотреть сообщение
В СП написано как работает ВызватьИсключение
Скудновато там написано....

короче.

ВызватьИсключение - регистрирует ошибку в журнале регистрации!

Добавлено через 1 минуту
Цитата Сообщение от wardamask Посмотреть сообщение
Этот же код я запускал с кнопки и он нормально отрабатывал.
что бы проверить как ты говоришь "НА КНОПКУ"
Это нужно делать на сервере и под пользователем под которым работает служба агента сервера!
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 13
11.02.2016, 13:56  [ТС] 8
Вот я заново создал регламентное задание, оно запустилось. Запуск регламентного задания отразился в журнале регистрации. (скрин приложил), код нормально отработал и сформированное сообщение отправилось.
Это ведь значит сто дело не к коде? А в самом механизме рег заданий потому что повторно или после изменения времени он задание не отрабатывает(Код в модуле я не меняю, просто создаю новое регл задание) И никаких ошибок в журнале не регистрируется. Вот и вопрос в чем может быть дело?
Миниатюры
Не запускаются регламентные задачи (Файловый вариант)  
0
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,669
Записей в блоге: 1
11.02.2016, 13:59 9
wardamask, консоль заданий то что говорит?

Добавлено через 24 секунды
wardamask, ты его хоть через консоль то включил?
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 13
11.02.2016, 14:22  [ТС] 10
Честно говоря я не нашел консоль заданий для 1с8.3 управляемых форм. То что у меня на диске ИТС за январь 2016 там только для обычного приложения и для версии 8.2, на УФ не запускается. В интернете находил исключительно версию под обычное приложение.
А без консоли заданий, регламентные задания разве работать не должны?

Добавлено через 14 минут
Нашел, консоль запросов для уф, видимо плохо искал... ща поиграюсь... по итогам отпишусь.
0
Злой самаритянин
182 / 182 / 94
Регистрация: 24.04.2014
Сообщений: 686
11.02.2016, 14:50 11
wardamask, кстати, тоже хотел тебе про консоль написать, но не нашел под УФ. Можешь поделиться?
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 13
11.02.2016, 15:47  [ТС] 12
Вот нашел на Инфостарте
Вложения
Тип файла: zip КонсольЗаданий8.2УФ.zip (20.6 Кб, 52 просмотров)
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 13
11.02.2016, 16:06  [ТС] 13
Вопрос с не запускающимся регламентным заданием решился следующим образом. Я в настройках расписания, поле завершать через - установил 0. Теперь код выполняется всегда в установленное время...

Но появилась следующая странность. Несмотря на то что в расписании поля повторять через и повторять с паузой = 0, код отрабатывается циклично примерно раз в 1-2 минуты. То есть он отрабатывает код не один раз в день как задано в расписании, каждые 1-2 минуты пока запущен пользователь.
Почему так происходит? Как можно ли прописать завершение регламентного задания после выполнения удачного процедуры?
Миниатюры
Не запускаются регламентные задачи (Файловый вариант)   Не запускаются регламентные задачи (Файловый вариант)  
0
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,669
Записей в блоге: 1
11.02.2016, 16:52 14
wardamask, в файловой базе очередь Рег. заданий обрабатывается раз в 1 минуту

Добавлено через 3 минуты
wardamask, настрой расписание сначала в консоли, потом в конфигуратор переноси
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 13
11.02.2016, 17:08  [ТС] 15
А почему нужно сначала в консоли настраивать? Ведь на стройки в конфигураторе и в консоли идентичны.
Тут есть какие то подводные камни?
0
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,669
Записей в блоге: 1
11.02.2016, 17:24 16
Цитата Сообщение от wardamask Посмотреть сообщение
А почему нужно сначала в консоли настраивать?
потому что так проще
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 13
11.02.2016, 20:35  [ТС] 17
Все получилось оставил только время начала... ошибка была из-за того консоле заданий на это же задание стояло время повторения 180 секунд, потому она и отрабатывала без остановки...
Спасибо за помощь)
0
11.02.2016, 20:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2016, 20:35
Помогаю со студенческими работами здесь

Турист ( найти ошибку ). Вариант задачи о рюкзаке
Всем привет, решал задачу, но всё-таки где-то допустил ошибку, подскажите где. Спасибо. Гена...

По указанию преподавателя выберите нужный вариант задачи из нижеприведенного списка
По указанию преподавателя выберите нужный вариант задачи из нижеприведенного списка. В заданиях...

Регламентные Задания
Посмотреть вложение ReglTask.bmp Здравствуйте! Помогите, пожалуйста, разобраться с регламентными...

регламентные задания 8.1
подскажите, пожалуйста..


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru