Отладка кода в режиме отладки без перезагрузки клиента

06.03.12

Разработка - Универсальные функции

Позволяет многократно выполнять отлаживаемый код непосредственно в режиме отладчика не перегружая клиента

Иногда достаточно изменить 1-2 строки кода.Но для проверки всегда нужно перегрузить клиента и выполнить код заново. Можно конечно воспользоваться какой-нибудь консолью кода,выложенной на сайте, и отлаживать код в ней. Но для получения конечного результата нужны переменные исходного модуля. Есть еще замечательная функция Ду (на Мисте автор Гений 1С) ,куда можно передать переменные. Но код там нужно писать от руки , что непросто для большого куска. А если использовать буфер обмена Windows? То получится функция ДуБуфер, где код берем из буфера, описываем и присваиваем ему переменные и на выходе - результат выполнения измененного кода. Иными словами порядок работы таков

1) в отладчике поставили точку останова после отлаживаемого кода, т.е. видим результат его выполнения

2) изменили кода

3) скопировали код в буфер

4) в строке описали через параметры функции все необходимые входящие переменные, которые используются в отлаживаемом коде но назначаются не в нем (пример в функции)

5) так же в строке описали через параметры функции все исходящие переменные, результат которых мы хотим увидеть

6) вызвали функцию ДуБуфер - и увидели на выходе результат выполнения изменного кода

7) если результат не устраивает- повторили пункты 2,3,4,5,6

Разукрашка кода //infostart.ru/public/19856/

 


//вызов на картинке

// ДуБуфер(,"п0=вых;","инит=п1;","",инит)[0]

//на рисунке "пример вызова для части кода" пример вызова с несколькими параметрами
//модульрпчв.ВО().ДуБуфер(,"п0=вых;п1=сч;","инит=п2;выборка=п3;","","",инит,выборка)[0]

 

   
   Функция ДУбуфер(ВернутьМассив=неопределено, СписокПараметрыИсходящие,СписокПараметрыВходящие="",П0=Неопределено, П1=Неопределено,  П2=Неопределено, П3=Неопределено, П4=Неопределено,П5=Неопределено)  Экспорт

   
Код=GetClip();
   
мас= Новый Массив(6);

    Если
найти(код,"дубуфер")<>0 Тогда мас[0]="зацикленная ссылка в коде"; возврат мас; КонецЕсли;
   
исходныйКод=Код;
   
исполняемыйКод=СписокПараметрыВходящие+символы.ПС+Код+символы.ПС+СписокПараметрыИсходящие;
    Попытка
        выполнить
исполняемыйКод;
    Исключение
       
оО=описаниеОшибки();
       
мас[0]=оО+символы.пс+исполняемыйКод; возврат мас;
    КонецПопытки;

    Если
П0<>Неопределено Тогда мас[0]=п0; КонецЕсли;
    Если
П1<>Неопределено Тогда мас[1]=п1; КонецЕсли;
    Если
П2<>Неопределено Тогда мас[2]=п2; КонецЕсли;
    Если
П3<>Неопределено Тогда мас[3]=п3; КонецЕсли;
    Если
П4<>Неопределено Тогда мас[4]=п4; КонецЕсли;
    Если
П5<>Неопределено Тогда мас[5]=п5; КонецЕсли;
    Если
ВернутьМассив<>неопределено Тогда ВернутьМассив=мас; КонецЕсли;
    Возврат
мас;
КонецФункции
Функция  
GetClip() Экспорт
   
strTXT="";
   
objHTM=Новый COMОбъект("htmlfile");
   
strTXT=строка(objHTM.ParentWindow.ClipboardData.GetData("text"));
    возврат 
strTXT
КонецФункции

 

См. также

Универсальные функции Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

21.05.2024    20141    dimanich70    81    

144

Универсальные функции Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    4091    3    John_d    11    

57

Универсальные функции Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    18081    atdonya    24    

56

Универсальные функции Программист Платформа 1С v8.3 Бесплатно (free)

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

30.11.2023    5503    ke.92@mail.ru    16    

65

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    14741    YA_418728146    7    

166

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

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    3581    56    progmaster    8    

4

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

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    18480    171    sapervodichka    112    

135
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 7230 05.03.12 19:54 Сейчас в теме
2. antares_of 11 07.03.12 11:36 Сейчас в теме
Отладка без перезагрузки клиента, это нужная вещь, попробуем)
3. Necytij 07.03.12 21:34 Сейчас в теме
Интересная очень идея. И очень бы хотелось иметь такой инструмент, чтобы можно было отладку кода проводить "онлайн", как в интерпретаторах, но, честно говоря, мне кажется это подойдет только для мелкой рихтовки кода, когда сомневаешься в небольшой части кода, а так описывать даже 15-20 входящих переменных слишком накладно. Это ладно, если еще сам список во время отладки меняться не будет - 1 раз написал список входящих и копируешь опять же хоть из текстового редактора, но в полевых условиях собирать такую строку не очень удобно.
имхо, широкого применения обработка иметь не может. Но большое спасибо топикстартеру за ссылку на f ДУ... почитал, обогатился.
4. vec435 17 11.03.12 15:52 Сейчас в теме
(3) Necytij, действительно описывать множество переменных неудобно и отлаживаться можно частями, прописывая переменные в каждую часть. но 1)код-описание !временно! можно писать прямо в модуле 2) выложу обработку, где будет выгружаться код и переменные . через обработку будет удобнее отлаживать большие куски
5. vec435 17 11.03.12 16:13 Сейчас в теме
(3) Necytij, да и описывать нужно либо те переменные которые хочешь получить на выходе либо те которых нет в изменном коде .зачем 15-20 переменных?
6. genayo 12.03.12 14:42 Сейчас в теме
Интересно, будем посмотреть...
7. tormozit 7230 12.03.12 16:38 Сейчас в теме
Тем, кому идея действительно интересна и кто не боится объединить конфу с другой, рекомендую ИР http://infostart.ru/public/15126/
Там есть мощная консоль кода, которую можно вызывать во время отладки функциями Оп, Опс и др.
11. vec435 17 14.03.12 10:25 Сейчас в теме
(7) tormozit, В авторитете платформы ИР нет сомнений. Вещь необходимая любому разработчику. Но ,насколько я понял, передать в функции ОП,ОПС можно только определенный код, а не код из буфера.
12. tormozit 7230 14.03.12 12:45 Сейчас в теме
(11) ИР не платформа, а подсистема. По поводу автоматической вставки из буфера в случае открытия консоли кода (Оп, Опс и т.д.) кажется что это не такая уж и полезная "фича". Нажать CTRL+V в открывшемся окне большого труда не составляет. В твоей ДуБуфер эта "фича" действительно полезна, т.к. все делается неинтерактивно. В ИР есть еще Ду, но она скромнее, т.к. не позволяет подменять имена. Надо будет ее "проапгрейдить" тоже.
8. galinka1c8 12.03.12 22:03 Сейчас в теме
Интересная идея. Для отладки пригодится. Очень часто приходится менять что-то по мелочи, а не большие участки кода.
9. JER_MARK 13.03.12 06:48 Сейчас в теме
Речь идет про 8-ку. Насколько я знаю, если вы не меняли структуру базы (новый справочник, реквизит и т.д.), то изменив кусочек кода, можно обновиться динамически не выгоняя пользователей.
10. vec435 17 13.03.12 08:13 Сейчас в теме
(9) JER_MARK, можно обновиться динамически, но с функцией можно проверить изменный вариант тут же не обновляясь
13. tormozit 7230 27.04.12 09:17 Сейчас в теме
В ИР добавлена функция режима отладки Поп()

открытие фрагмента программы в консоли кода - Поп(ТекстПрограммы=), используется путем копирования в буфер обмена целостного фрагмента программы и вычисления "Вычислить(Поп())"

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

http://www.youtube.com/watch?feature=player_embedded&v=btGHeiUAWEY#!
Оставьте свое сообщение