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

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"));
    	
    	ИмяФайла = ПолучитьИмяВременногоФайла();
    	ДвоичныеДанные = СсылкаНаОбъект.ХранилищеВнешнейОбработки.Получить();
    	ДвоичныеДанные.Записать(ИмяФайла);
    	
    	ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
    	Форма = ВнешняяОбработка.ПолучитьФорму();
    	
    	Форма.СправочникОбъект			= ЭтаФорма.СправочникОбъект;
    	Форма.Открыть();
    	
    КонецПроцедуры

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

См. также

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

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

15500 руб.

02.09.2020    178901    992    403    

949

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    20392    136    75    

137

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    19065    51    19    

83

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

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

15000 руб.

10.11.2023    13013    54    33    

72

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

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    29249    101    48    

146

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

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 руб.

07.10.2021    18729    7    32    

43

Инструментарий разработчика Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    1852    2    0    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. json 3366 01.11.16 09:37 Сейчас в теме
Уберите мои фамилию и имя из текста статьи
2. wojwoo 70 01.11.16 10:11 Сейчас в теме
3. kuzyara 2127 02.11.16 09:22 Сейчас в теме
4. artbear 1568 02.11.16 20:09 Сейчас в теме
А потом появляется соблазн все навечно и оставить во внешних обработках :(
roma_semenov79; wojwoo; +2 Ответить
5. wojwoo 70 03.11.16 09:21 Сейчас в теме
(4) artbear,
Согласен, если с этим соблазном не бороться и навечно оставлять доработанный функционал в доп. обработках, конфигурация быстро превратиться в коллекцию заплаток.
6. Yashazz 4829 07.11.16 20:36 Сейчас в теме
Автор, наверное, думает, что он один такой супер-ленивый первооткрыватель. И те, кто за эту фигню ему наплюсил, тоже, вероятно, в восторге от новизны. Огорчу вас, господа: этот способ успешно применялся ещё 18 лет назад на тогдашних "клюшках". Вдобавок, тогда ещё была такая замечательная директива #ЗагрузитьИзФайла, удобная штука... Так что, увы, ничего нового.
7. wojwoo 70 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) ясно. Я анализировал цитату.
Оставьте свое сообщение