Быстрая доработка и отладка "обычных" форм без перезапуска конфигуратора

31.10.16

Разработка - Инструментарий разработчика

Предлагаю вашему вниманию несколько приемов для быстрой доработки и отладки форм и общих модулей без перезапуска конфигуратора.

Вместо постановки задачи

Я ленивый, просто супер ленивый! (надеюсь, потенциальные работодатели не читают Инфостарт).

Мне лень хранить лишнюю информацию в голове, ведь на это тоже уходит энергия. Мне лень удерживать в своей оперативной памяти внутреннюю реализацию какого-либо функционала: хочется сразу протестировать, отладить и высвободить память.

Чтобы доработать, например, форму документа, после реализации каждого логически завершенного блока мне нужно завершить предыдущую отладку, обновить конфигурацию, запустить 1С:Предприятие в режиме отладки, открыть меню операции, выбрать подменю документы, напечатать первые несколько символов имени документа (да, да… мне лень помнить состав меню), найти отлаживаемый документ (еще и номер помнить!). Как же мне лень!

Насколько же проще отлаживать внешние обработки:

  • Ctrl+S (сохранить)
  • Alt+Tab (перейти из конфигуратора в окно 1С предприятия)
  • Alt+A(Ф),1 (открыть последнюю обработку из меню «Файл»)

Решение: производить максимальное количество доработок, используя внешние обработки.

Приемы:

1. Быстрое редактирование и отладка формы документа (справочника)

2. Редактирование нескольких форм документов и произвольного общего модуля

3. Открытие формы документа или справочника, сохраненной в дополнительных внешних отчетах

  1. Быстрое редактирование и отладка формы документа (справочника):
    Самый простой вариант:
    в случае если предполагается отладка на одном объекте, то просто копируем форму во внешнюю обработку, а в обработчике события «ПередОткрытием» формы прописываем всего 1 строчку, которую, естественно, нужно удалить перед возвратом формы в конфигурацию:
    ДокументОбъект = Документы.ИмяДокумента.НайтиПоНомеру("НомерДокумента", ТекущаяДата()).ПолучитьОбъект();
    или
    СправочникОбъект = Справочники.ИмяСправочника.НайтиПоКоду("Код").ПолучитьОбъект();
    
    Для более удобной отладки на реальных данных дополнительно копируем форму списка и при открытии элемента из списка «заменяем» форму конфигурации на модифицируемую форму:
  • Создаем внешнюю обработку.
  • Копируем форму списка и форму документа (элемента) в обработку:
  • Добавляем на форму документа (элемента) реквизит "Обработка":
  • Для поля списка документа (справочника) реализуем обработчики событий ПередНачаломДобавления и ПередНачаломИзменения:
    Процедура ДокументСписокПередНачаломДобавления(Элемент, Отказ, Копирование)
    	
    	Отказ = Истина;
    	Форма = Обработка.ПолучитьФорму("ФормаДокумента");
    	Если Копирование Тогда
    		Форма.ДокументОбъект = ЭлементыФормы.ДокументСписок.ТекущаяСтрока.Скопировать();
    	Иначе
    		Форма.ДокументОбъект = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
    	КонецЕсли;
    	Форма.Открыть();
    	
    КонецПроцедуры
    
    Процедура ДокументСписокПередНачаломИзменения(Элемент, Отказ)
    	
    	Отказ = Истина;
    	Форма = Обработка.ПолучитьФорму("ФормаДокумента");
    	Форма.ДокументОбъект = ЭлементыФормы.ДокументСписок.ТекущаяСтрока.ПолучитьОбъект();
    	Форма.Открыть();
    	
    КонецПроцедуры
  • Редактируем и отлаживаем форму документа (элемента) после чего возвращаем модуль формы обратно в конфигурацию или меняем форму целиком.
  1. Редактирование нескольких форм документов и произвольного общего модуля:
    Для доработки нескольких форм документов или справочников копируем их формы во внешнюю обработку. Создаем основную форму обработки, из которой открываем модифицируемые формы.
    При необходимости редактирования общего модуля – помещаем его в модуль обработки. В модулях форм меняем «имя общего модуля» на «имя общего модуля» + «суффикс» и добавляем реквизит формы (тип – внешняя обработка) с таким же именем.
    Удобно при рефакторинге, выносе дублирующегося функционала форм в общий модуль.
  • Создаем внешнюю обработку
  • Копируем общий модуль в модуль обработки.
  • Копируем 2 экземпляра каждой формы в обработку (одну для редактирования и резервную копию). Называем первую по имени объекта, вторую - имя объекта + "_bak":
  • Добавляем на все формы реквизит с типом внешняя обработка и называем его ИмяОбщегоМодуля + "_Обработка":
  • Меняем в модулях форм текст ИмяОбщегоМодуля + "." на ИмяОбщегоМодуля + "_Обработка.":
  • Добавляем основную форму обработки, создаем поля ввода, соответствующие по наименованию именам форм. Реализуем для всех полей ввода общий обработчик события "Открытие":
    Процедура ЭлементОткрытие(Элемент, СтандартнаяОбработка)
    	
    	СтандартнаяОбработка = Ложь;
    	
    	ДокументСсылка = ЭтаФорма[Элемент.Имя];
    	Форма = ПолучитьФорму(Элемент.Имя);
    	Форма.ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
    	Форма.Открыть();
    	
    КонецПроцедуры
  • Редактируем и отлаживаем формы документов (элемента) после чего возвращаем все обработано в конфигурацию, не забыв произвести обратную замену ИмяОбщегоМодуля + "_Обработка." на ИмяОбщегоМодуля + ".".
  1. Открытие формы документа или справочника, сохраненной в дополнительных внешних отчетах:
    На этапе внедрения бывает удобно сохранить форму документа (справочника) в дополнительных внешних отчетах для максимально быстрой доработки формы без обновления конфигурации. Для этого достаточно заменить обработчик события "ПередОткрытием" формы в конфигурации.
    Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    	
    	СтандартнаяОбработка = Ложь;
    	Отказ = Истина;
    	
    	СсылкаНаОбъект = Справочники.ВнешниеОбработки.ПолучитьСсылку(Новый УникальныйИдентификатор("e3e52588-8594-11e6-8cde-005056ab2498"));
    	
    	ИмяФайла = ПолучитьИмяВременногоФайла();
    	ДвоичныеДанные = СсылкаНаОбъект.ХранилищеВнешнейОбработки.Получить();
    	ДвоичныеДанные.Записать(ИмяФайла);
    	
    	ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
    	Форма = ВнешняяОбработка.ПолучитьФорму();
    	
    	Форма.СправочникОбъект			= ЭтаФорма.СправочникОбъект;
    	Форма.Открыть();
    	
    КонецПроцедуры

Тестирование отладка перезапуск

См. также

INFOSTART TECH EVENT 2023, 11-13 октября, Санкт-Петербург

Инструментарий разработчика Мобильная разработка DevOps и автоматизация разработки Администрирование СУБД Мероприятия Россия Платные (руб)

XIII конференция по управлению и технологиям автоматизации учета на платформе 1С:Предприятие, которая пройдет в Санкт-Петербурге и соберет 1500 участников из разных регионов России и мира.

5100 руб.

09.12.2022    30068    5    0    

427

Онлайн-интенсив "DevOps для 1С". с 4 сентября по 17 октября 2023 г.

Инструментарий разработчика DevOps и автоматизация разработки DevOps для 1С Платные (руб)

Данный онлайн-курс (интенсив) предусматривает изучение процессов, инструментов и методик DevOps, их применение при разработке на платформе 1С. 

20.06.2023    9772    0    Infostart    2    

121

SALE! %

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

12000 10000 руб.

02.09.2020    93356    476    380    

531

SALE! 25%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2700 руб.

14.01.2013    170148    1051    0    

792

Автоматизация труда программиста. Библиотека прикладных функций

Инструментарий разработчика Платформа 1С v8.3 Платформа 1C v8.2 Платформа 1С v8.1 Конфигурации 1cv8 Платные (руб)

Программист - это человек, непрерывно принимающий решения. Написание кода не является процессом принятия решения - это всего лишь трансляция ваших желаний. Если вас периодически тяготит написание сотен строк кода ради решения задач, то прошу обратить внимание. Данный продукт позволит существенно сократить время на рутинные операции при разработке. За счет библиотечной реализации сокращается объём кода, а его читаемость повышается. К библиотеке прилагается документация API и шаблоны кода для наиболее популярных методов.

4200 руб.

16.04.2021    12465    3    9    

9

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    96448    234    97    

285

Менеджер конфигураций 1С

Инструментарий разработчика Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1439 руб.

21.02.2023    5226    2    33    

14

Программное формирование существующих печатных форм

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Получение списка печатных форм, формирование выбранной печатной формы и сохранение ее в файл.

1 стартмани

17.12.2021    14083    39    RocKeR_13    5    

46
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. json 3243 01.11.16 09:37 Сейчас в теме
Уберите мои фамилию и имя из текста статьи
2. wojwoo 67 01.11.16 10:11 Сейчас в теме
(1) Убрал
3. kuzyara 1765 02.11.16 09:22 Сейчас в теме
(1), уже поздно.
4. artbear 1438 02.11.16 20:09 Сейчас в теме
А потом появляется соблазн все навечно и оставить во внешних обработках :(
roma_semenov79; wojwoo; +2 Ответить
5. wojwoo 67 03.11.16 09:21 Сейчас в теме
(4) artbear,
Согласен, если с этим соблазном не бороться и навечно оставлять доработанный функционал в доп. обработках, конфигурация быстро превратиться в коллекцию заплаток.
6. Yashazz 4554 07.11.16 20:36 Сейчас в теме
Автор, наверное, думает, что он один такой супер-ленивый первооткрыватель. И те, кто за эту фигню ему наплюсил, тоже, вероятно, в восторге от новизны. Огорчу вас, господа: этот способ успешно применялся ещё 18 лет назад на тогдашних "клюшках". Вдобавок, тогда ещё была такая замечательная директива #ЗагрузитьИзФайла, удобная штука... Так что, увы, ничего нового.
7. wojwoo 67 08.11.16 09:39 Сейчас в теме
(6) Yashazz,
Как раз потеря восьмеркой данной директивы рождают идеи у топовых авторов инфостарта реализовывать в модулях конфигурации следующий сценарий:
#ifndef DEBUG
Debugger.Foo();
#endif
Foo();

Где Debugger – встроенная обработка, которая «дергает» внешнюю.

Вместо раздутого комментария к описанной статье родилась данная.

То, что очевидно для вас или меня, не означает, что это очевидно всем. Некоторые просто не ставили себе подобной задачи.

Видя успех статьи (26 плюсов за 3 дня), решил добавить забавную картинку и наивное описание задачи. Вероятно, я хреновый маркетолог )))
8. webester 26 15.12.16 08:24 Сейчас в теме
Чтобы доработать, например, форму документа, после реализации каждого логически завершенного блока мне нужно завершить предыдущую отладку, обновить конфигурацию, запустить 1С:Предприятие в режиме отладки

Я один не понял, зачем перезапускать конфигуратор?
9. spacecraft 15.12.16 08:55 Сейчас в теме
(8) и где там про перезапуск конфигуратора?
10. webester 26 15.12.16 09:15 Сейчас в теме
(9)Да собственно жирными буквами в заголовке и в описании http://i.imgur.com/sNAGCIQ.png
11. spacecraft 15.12.16 10:54 Сейчас в теме
(10) ясно. Я анализировал цитату.
Оставьте свое сообщение