Отладка дополнительных обработок БСП

Опубликовал Роман Уничкин (unichkin) в раздел Программирование - Практика программирования

Описан подход к отладке подключаемых дополнительных обработок. Протестировано в БСП 2.3.4.71 для вида "ДополнительнаяОбработка" с режимом использования "ВызовСерверногоМетода", но есть уверенность, что будет работать везде.

Посмотрел имеющиеся подходы, подумал - зачем так сложно? Опишу на примере обработки, которая располагается в "D:\ПроведениеДокументов.epf". Если работаете на серверной базе - должна быть включена отладка сервера, кроме этого добавляем в предмет отладки фоновые задания (Конфигуратор => Отладка\Подключение\Автоматическое подключение\ поставить флаг "Фоновые задания").  Ниже приведен модуль объекта - суть в том, что точка останова ставится в "ВыполнитьПроведениеДокументовПоВызову". Регистируем в 1С как доп. обработку, для интерактивного вызова выполнения команды "ВыполнитьПроведениеДокументов". После этого происходит выполнение метода исходной внешней обработки - и не надо каждый раз выполнять регистрацию в справочнике доп. отчетов и обработок. Поработали, отладили код, убрали вызов внешней обработки, обновили в справочнике. Всем добра)


#Область ПрограммныйИнтерфейс

// Возвращает сведения о внешней обработке.
Функция СведенияОВнешнейОбработке() Экспорт
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.3.4.71");
	ПараметрыРегистрации.Наименование = НСтр("ru = 'Выполнить проведение документов'");
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
	ПараметрыРегистрации.Версия = "0.1";
	ПараметрыРегистрации.БезопасныйРежим = Ложь;
	
	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = НСтр("ru = 'Выполнить проведение документов'");
	Команда.Идентификатор = "ВыполнитьПроведениеДокументов";
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	Команда.ПоказыватьОповещение = Ложь;
		
	Возврат ПараметрыРегистрации;
КонецФункции

// Обработчик серверных команд.
//
// Параметры:
//   ИдентификаторКоманды - Строка    - Имя команды, определенное в функции СведенияОВнешнейОбработке().
//   ПараметрыВыполнения  - Структура - Контекст выполнения команды.
//       * ДополнительнаяОбработкаСсылка - СправочникСсылка.ДополнительныеОтчетыИОбработки - Ссылка обработки.
//           Может использоваться для чтения параметров обработки.
//           Пример см. в комментарии к функции ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы().
//
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполнения) Экспорт

	Если ИдентификаторКоманды = "ВыполнитьПроведениеДокументов" Тогда
		ВыполнитьПроведениеДокументов(ПараметрыВыполнения);		
	КонецЕсли; 
		
КонецПроцедуры

Процедура ВыполнитьПроведениеДокументовПоВызову(ПараметрыВыполнения) Экспорт

// Здесь происходит вся разработка, после успешной отладки изменяем код 
// в "ВыполнитьПроведениеДокументов", и обновляем элемент справочника доп. обработок.
	ПровестиРеализациюЗаПериод();

КонецПроцедуры 

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Процедура ВыполнитьПроведениеДокументов(ПараметрыВыполнения)
	
	Адрес = "D:\ПроведениеДокументов.epf";
	обр = ВнешниеОбработки.Создать(Адрес, Ложь);
	обр.ВыполнитьПроведениеДокументовПоВызову(ПараметрыВыполнения);

	//ПровестиРеализациюЗаПериод();
		
КонецПроцедуры
 
Процедура ПровестиРеализациюЗаПериод()

//...

КонецПроцедуры

#КонецОбласти 

См. также

Добавить вознаграждение
Комментарии
1. Призрак (davdykin) 16 04.01.17 20:57 Сейчас в теме
Спасибо, познавательно.
2. Капитан Немо (capitan) 522 07.01.17 12:41 Сейчас в теме
Посмотрел статью, подумал - зачем так сложно? :)
Если ваша обработка может просто стартовать с диска D:\ПроведениеДокументов.epf
так и стартуйте ее с диска и отлаживайте
В чем профит запихивания во внешние обработки ?

А проблема отладки внешних обработок в том, что они свои настройки хранят в базе.
Ее вы этим финтом не решаете
3. Алексей Ермилов (Alex_E) 1446 07.01.17 13:17 Сейчас в теме
Всё, что можно запустить через Файл - Открыть отлаживается тупо и без выкрутасов.....
4. Роман Уничкин (unichkin) 287 07.01.17 23:06 Сейчас в теме
(2) (3)
Есть такая малость... Те параметры, которые передает этой самой обработке источник)) Через файл\открыть вы их не получите, разве что сами где-нибудь забьете. Кроме этого сама отладка ведется именно по контексту - открыл объект которому назначена обработка и выполняю команду... И сразу торможусь в конфигураторе на точке останова.И вижу весь отладочный контекст. Захотел - для одного объекта команду выполнил, захотел - для другого. ничего не перевыбирая, ничего не переписывая, а сразу. Больше возможностей для проверки.
5. Роман Уничкин (unichkin) 287 07.01.17 23:07 Сейчас в теме
(2)
В чем профит запихивания во внешние обработки ?

Обращу ваше внимание на тему статьи - "Отладка дополнительных обработок БСП", а не просто внешних обработок. О профите от помещения в внешние обработки речи не идет. Если изначально делаем назначаемую\глобальную обработку для БСП - так будет проще отлаживать, чем через файл\открыть.
6. Olga Kazakevich (ok521) 16 12.01.17 17:33 Сейчас в теме
Метод хороший, для отладки внешних печатных форм - то, что нужно. Позволяет цеплять обработку к нужному объекту без всяких дополнительных ухищрений. Подходит и для серверного метода, и для клиентского.
7. Александр Попков (pas) 46 16.01.17 13:44 Сейчас в теме
Если в подключаемой обработке есть форма с командными кнопками, то отладчик не заходит в процедуры формы. Видимо, ваш код необходимо выполнять до захода в форму.