Как в БСП выполнять команду по расписанию (регламентное задание)

1. scarl1n 17.06.24 17:28 Сейчас в теме
Создал внешнюю обработку, в модуле объекта написал код:
Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.5.12.64");
	ПараметрыРегистрации.БезопасныйРежим = Ложь;
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
	ПараметрыРегистрации.Версия = "1.0";
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = НСтр("ru = 'Подтверждение заказов (регламент)'");
	НоваяКоманда.Идентификатор = "РегламентноеПодтверждениеЗаказов";
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	НоваяКоманда.ПоказыватьОповещение = Истина;
	
	Возврат ПараметрыРегистрации;
	
КонецФункции

Процедура ВыполнитьКоманду(ИмяКоманды, ПараметрыВыполнения = Неопределено) Экспорт
	
	// Диспетчеризация обработчиков команд.
	Если ИмяКоманды = "РегламентноеПодтверждениеЗаказов" Тогда
		ПодтвердитьЗаказыПоставщикам(ПараметрыВыполнения);	
	КонецЕсли;
	
КонецПроцедуры

Процедура ПодтвердитьЗаказыПоставщикам(ПараметрыВыполнения)
	Запрос = Новый Запрос("ВЫБРАТЬ
	                      |	ЗаказПоставщику.Ссылка КАК Ссылка
	                      |ИЗ
	                      |	Документ.ЗаказПоставщику КАК ЗаказПоставщику
	                      |ГДЕ
	                      |	ЗаказПоставщику.Дата МЕЖДУ &НачалоПериода И &КонецПериода
	                      |	И ЗаказПоставщику.ОбъектРасчетов <> ЗНАЧЕНИЕ(Справочник.ОбъектыРасчетов.ПустаяСсылка)
	                      |	И ЗаказПоставщику.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПоставщикам.Согласован)");
	Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(ТекущаяДата() - 86400 * 10));
	Запрос.УстановитьПараметр("КонецПериода", КонецДня(ТекущаяДата()));
	
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		ОбъектЗаказ = Выборка.Ссылка.ПолучитьОбъект();
		//ОбъектЗаказ.Статус = Перечисления.СтатусыЗаказовПоставщикам.Подтвержден;
		ОбъектЗаказ.Комментарий = ОбъектЗаказ.Комментарий + "Тест";
		ОбъектЗаказ.Записать();
	КонецЦикла;
КонецПроцедуры
Показать


Добавил обработку в дополнительные обработки, настроил для команды расписание (для теста каждые 60 сек), но ничего не происходит. Если нажать "Выполнить" в форме обработки, то команда выполнится и комментарий изменится. Что я упустил? Чего может не хватать? Прав? Или размещение базы влияет?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
10. laperuz 46 18.06.24 09:16 Сейчас в теме +0.5 $m
(9)На файловых работает только если есть запущенный сеанс.
Т.е. по расписанию запустится, только если в этот момент в базе кто-то есть и больше никаких фоновых не выполняется.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Lenten 26 17.06.24 18:28 Сейчас в теме
посмотрите в журнале регистрации запуск обработки

так же можно в тексте обработки добавить записи в журнал регистрации, чтоб понять до куда доходит


ЗаписьЖурналаРегистрации("1", УровеньЖурналаРегистрации.Информация,,,
"Выполнено", РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);

ЗаписьЖурналаРегистрации("2", УровеньЖурналаРегистрации.Информация,,,
"Выполнено", РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);

и тд
4. scarl1n 18.06.24 05:55 Сейчас в теме
(2)Смотрел в консоли заданий - оно не запускается как фоновое вообще
6. laperuz 46 18.06.24 05:58 Сейчас в теме
(4)База файловая или клиент-сервер?
7. scarl1n 18.06.24 08:31 Сейчас в теме
(6)Пробовал на двух: одна файловая, другая хз, но открывали через браузер по айпишнику, скорее второе
8. user2033930 18.06.24 08:53 Сейчас в теме
(7)
но открывали через браузер по айпишнику
Не показатель. Файловая тоже спокойно публикуется через веб.
9. scarl1n 18.06.24 08:56 Сейчас в теме
(8)Ну, допустим, что файловая. Значит на файловых не работает?
10. laperuz 46 18.06.24 09:16 Сейчас в теме +0.5 $m
(9)На файловых работает только если есть запущенный сеанс.
Т.е. по расписанию запустится, только если в этот момент в базе кто-то есть и больше никаких фоновых не выполняется.
11. scarl1n 18.06.24 09:22 Сейчас в теме
(10)Ну сеанс был запущен, вопрос в других фоновых заданиях...Каков шанс, что регламентное успеет запуститься, если я сделаю "Каждую секунду", чтобы поймать момент, когда не будет других фоновых?
12. laperuz 46 18.06.24 09:26 Сейчас в теме
(11)У вас в списке рег.заданий появилось отдельное задание для вашей доп.обработки?
Состояние есть какое-нибудь?
Выглядит примерно так
Прикрепленные файлы:
13. scarl1n 18.06.24 09:37 Сейчас в теме
(12)Да, оно там было. Состояние не было заполнено, пока не нажал "Выполнить сейчас" - тогда стало "Выполнено" (ну, конечно, когда дождался выполнения).
14. laperuz 46 18.06.24 09:43 Сейчас в теме
(13)Да, если оно не запускалось, то так и будет.
Блокировки регламентных случайно не установлено?
Вот этой надписи нет?
Прикрепленные файлы:
15. scarl1n 18.06.24 10:13 Сейчас в теме
(14)Была, снял перед тестированием - не работало.
16. scarl1n 18.06.24 10:47 Сейчас в теме
(14)В общем, какая-то блокировка была все-таки, ее сисадмин отключил, после чего все заработало.
3. odinsmot 18.06.24 03:23 Сейчас в теме
Как настроено расписание?
5. scarl1n 18.06.24 05:56 Сейчас в теме
(3)Каждый день, каждые 60 секунд
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот