Как посмотреть структуру в модуле объекта
По теме из базы знаний
- Как читать чужой код? Часть 4. Программный интерфейс. Исправление чужих доработок
- Тонкости и подводные камни работы типового модуля интеграции Битрикс24 и 1С (Часть 2)
- Модульность в 1С – как следовать принципам DRY в реалиях 1С: Предприятие 8.3
- Зачем и как читать чужой код? Какой результат ожидаем получить? Основные подходы
- Эффективное управление фоновыми заданиями и коммуникация сеансов сервера с Фоном с помощью Структуры обмена (ноу-хау) + Бонус: Альтернативный вариант через Хранилище настроек
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) покажи кусок кода, откуда ты это фоновое задание запускаешь ?
Если она файловая, то она значит у тебя программно создается - соответственно твоя точка остановки стоит не в этой копии которая запускается.
А если она ищет ссылку по справочнику доп обработок, - то вообще не то отлаживаешь.
А других вариантов и нет, запустить фоновое задание во внешней обработке )
А вообще, для отладки - надо несколько вариантов делать, чтобы не только в фоне, твои процедуры запускались..а чтобы и напрямую можно было вызвать, для отладки.
Если она файловая, то она значит у тебя программно создается - соответственно твоя точка остановки стоит не в этой копии которая запускается.
А если она ищет ссылку по справочнику доп обработок, - то вообще не то отлаживаешь.
А других вариантов и нет, запустить фоновое задание во внешней обработке )
А вообще, для отладки - надо несколько вариантов делать, чтобы не только в фоне, твои процедуры запускались..а чтобы и напрямую можно было вызвать, для отладки.
(8)
&НаКлиенте
Процедура ЗапуститьПланировщик(Команда)
Если Элементы.ЗапуститьПланировщик.Заголовок = "Запустить планировщик" Тогда
Если ИнтервалВыгрузки = 0
И ИнтервалЗагрузки = 0 Тогда
Сообщить( "Не указан интервал для автоматического обмена данными.");
Возврат;
КонецЕсли;
Элементы.ЗапуститьПланировщик.Заголовок = "Остановить работу планировщика";
Если ИнтервалВыгрузки > 0 Тогда
ПодключитьОбработчикОжидания("ВыгрузитьДанные", ИнтервалВыгрузки*60);
КонецЕсли;
Если ИнтервалЗагрузки > 0 Тогда
ПодключитьОбработчикОжидания("ЗагрузитьДанные", ИнтервалЗагрузки*60);
КонецЕсли;
Сообщить("" + ТекущаяДата() + ": Автоматический обмен подключен. Не завершайте сеанс 1С и не закрывайте форму обработки.");
Иначе
Элементы.ЗапуститьПланировщик.Заголовок = "Запустить планировщик";
ОтключитьОбработчикОжидания("ВыгрузитьДанные");
ОтключитьОбработчикОжидания("ЗагрузитьДанные");
Сообщить("" + ТекущаяДата() + ": Автоматический обмен отключен.");
КонецЕсли;
КонецПроцедуры
Показать
(13) Начало фонового задания:
&НаКлиенте
Процедура ЗагрузитьДанные()
ПроверитьВерсиюОбработки( Токен, ДругойМетодОбмена);
//Если НЕ ПроверкаПодключения( Токен, ДругойМетодОбмена, ИмяКонфигурации) Тогда
// Возврат;
//КонецЕсли;
ЗаписатьНастройки();
НастройкиФормы = СтруктураНастроекКлиент();
ВыполнитьОбменДаннымиНаКлиенте( НастройкиФормы, Истина, Ложь);
ЗаписатьНастройки();
ЗаписатьЗагруженныеДокументы();
УстановитьУсловноеОформление();
ДругойМетодОбмена = НастройкиФормы.ДругойМетодОбмена;
КонецПроцедуры
Показать
(15) да не то это...
фоновое задание стартуется примерно так... интересно как у тебя оно запускается
фоновое задание стартуется примерно так... интересно как у тебя оно запускается
ЭтоВнешняяОбработка = ЭтоВнешняяОбработка();
ТекОбъект = РеквизитФормыВЗначение("Объект");
//ТекОбъект.ФоноваяФункция(ПараметрыВыполненияОбработки,УникальныйИдентификатор);
// Получим имя обработки
Версия = ТекОбъект.Метаданные().Комментарий;
ИмяОбработки = "Перенос документов из АЦ v."+Версия;
ИмяОбработки = ?(ЭтоВнешняяОбработка, ХранениеФайлаОбработки, ИмяОбработки);
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("ИмяОбработки", ИмяОбработки);
ПараметрыЗадания.Вставить("ИмяМетода", "ФоноваяФункция");
ПараметрыЗадания.Вставить("ПараметрыВыполнения", ПараметрыВыполненияОбработки);
ПараметрыЗадания.Вставить("ЭтоВнешняяОбработка", Истина);
Если НЕ ЭтоВнешняяОбработка Тогда
ПараметрыЗадания.Вставить("ДополнительнаяОбработкаСсылка",(Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОбработки)));
КонецЕсли;
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр(ИмяЗадания);
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ПараметрыВыполнения.Вставить("ИдентификаторФормы", УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = ИмяЗадания;
ПараметрыВыполнения.КлючФоновогоЗадания = КлючФЗ;
ВыполняемыйМетод = "ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки"; // Выполняем процедуру из модуля объекта
Возврат ДлительныеОперации.ВыполнитьВФоне(ВыполняемыйМетод, ПараметрыЗадания, ПараметрыВыполнения);
Показать
(3) Если клиент-сервер, то проверить, что на сервере приложений debug включен. И ещё, помнится, почему-то внешние обработки не хотели по протоколу TCP/IP отлаживаться, а по HTTP прям сразу взлетело. Но это я могу списать только на собственные баги... Ну а если база файловая, то не знаю - должно работать.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот