|
Вопрос по регламентному заданию TormozIT, vicof, H A D G E H O G s, integer, ass1c, shuhard, sxfoxi, Fish, _Batoo, Кир Пластелинин, hollow138, DeeK, yurikmellon2, Garykom, zenik, rozer76, Климов Сергей, lubitelxml, crotnn, reg0303, RomanYS, takefive, 1cVandal, Шурик71, Михаил_, nick86, alexxx961503, 1сПупс, obs191, Галахад, evorle145, Мультук, azt-yur, oleg_km, calmius, Доминошник, PuhUfa
| ☑ | ||
|---|---|---|---|---|
|
0
1сПупс
18.05.26
✎
09:14
|
Коллеги, доброго дня!
Есть УТ типовая, последний релиз. Подскажите как сделать чтобы в клиент серверной базе регламентное задание выполнялось последовательно?(пока не окончено, не запускалось еще раз) А то бывает такая ситуация: задание запущено по расписанию, выполняется, пользователь запускает вручную и создаются дубли объектов. |
|||
|
1
Kongo2019
18.05.26
✎
09:18
|
(0) Можно через константы, например, отслеживать - работает или нет.
|
|||
|
2
Fish
гуру
18.05.26
✎
09:29
|
(0) Надо, чтобы регламентное задание не создавало дублей. Иначе два пользователя запустят его - и будут те же грабли. Ну или константу взводить.
|
|||
|
3
Fish
гуру
18.05.26
✎
09:30
|
+(2) Но константа - вещь ненадёжная. Если регламентное упадет с ошибкой или будет какой-то сбой - она останется включенной. Надо это тоже предусмотреть.
|
|||
|
4
PuhUfa
18.05.26
✎
09:32
|
(0)
БСП. ДлительныеОперации.ЗаданиеВыполнено // Проверяет состояние фонового задания по переданному идентификатору // Возвращаемое значение: // Булево - состояние выполнения задания. // Структура: // * Статус - Строка - "Выполняется", если задание еще не завершилось; // "Выполнено", если задание было успешно выполнено; // "Ошибка", если задание завершено с ошибкой; // "Отменено", если задание отменено пользователем или администратором. |
|||
|
5
Климов Сергей
18.05.26
✎
09:36
|
1C:Напарник для разработки
09:34 Чтобы узнать, выполняется ли сейчас определённое регламентное задание, можно использовать свойства и методы объекта РегламентноеЗадание в 1С. Анализ задачи: Нам нужно получить информацию о текущем состоянии регламентного задания. Для этого мы будем использовать метод ПолучитьРегламентноеЗадание() и свойство Выполняется. Планирование и кодирование: Получить UUID регламентного задания, которое мы хотим проверить. Использовать метод РегламентныеЗадания.ПолучитьРегламентноеЗадание(UUID) для получения объекта регламентного задания. Проверить свойство Выполняется полученного объекта. Кодирование: Напишем функцию, которая принимает UUID регламентного задания и возвращает Истина, если задание выполняется, и Ложь в противном случае. Функция РегламентноеЗаданиеВыполняется(UUIDЗадания) Экспорт РегламентноеЗадание = РегламентныеЗадания.ПолучитьРегламентноеЗадание(UUIDЗадания); Если РегламентноеЗадание <> Неопределено Тогда Возврат РегламентноеЗадание.Выполняется; Иначе // Можно записать в журнал регистрации, что задание не найдено // ЗаписьЖурналаРегистрации("Ошибка", УровеньЖурналаРегистрации.Ошибка, , , "Регламентное задание с UUID " + UUIDЗадания + " не найдено"); Возврат Ложь; // Или можно бросить исключение, в зависимости от логики приложения КонецЕсли; КонецФункции Пример использования: Чтобы использовать эту функцию, вам нужно знать UUID регламентного задания. UUID можно получить из свойства УникальныйИдентификатор объекта РегламентноеЗадание, например, в обработчике события ПриСозданииНаСервере формы списка регламентных заданий. &НаКлиенте Процедура ПроверитьСтатусРегламентногоЗадания(UUIDЗадания) Если РегламентноеЗаданиеВыполняется(UUIDЗадания) Тогда Сообщить("Регламентное задание выполняется"); Иначе Сообщить("Регламентное задание не выполняется"); КонецЕсли; КонецПроцедуры Важные моменты: Для работы с регламентными заданиями необходимо иметь соответствующие права. UUID регламентного задания можно получить из консоли или программно, извлекая его из нужного объекта метаданных. (с) 1С:Напарник для разработки https://portalchat.1c.ai/conversation |
|||
|
6
PuhUfa
18.05.26
✎
09:39
|
(0) >>и создаются дубли объектов.
И почему в регламентном задании нет проверки при создании нового объекта. Есть он уже или нет? |
|||
|
7
Fish
гуру
18.05.26
✎
12:32
|
(6) Там может быть всё хитрее, если создание множества объектов в общей транзакции.
|
|||
|
8
Fedor-1971
18.05.26
✎
12:48
|
(0) Открой регламентные и фоновые задания в пользовательском режиме и задай "Ключ" в настройках твоего рег.задания
Штатно пойдёт проверка, если есть рег.задание с такими данными, новое не стартанёт |
|||
|
9
1сПупс
18.05.26
✎
15:26
|
(8) про такое не знал, спасибо!
|
|||
|
10
Garykom
гуру
18.05.26
✎
15:49
|
(8) (9) Не все так просто, вроде в начале процедуры твоего задания должен быть нужный вызов БСП
Как у прочих Или оно за блокировку регламентных отвечает когда КОПИЯ в заголовке, уже не помню |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |