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

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С:Предприятие 8 Бесплатно (free)

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

14.05.2025    5442    DeerCven    15    

57

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

21.05.2024    46426    dimanich70    83    

164

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

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

1 стартмани

18.03.2024    6862    6    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

12.02.2024    57509    atdonya    31    

68

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

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

30.11.2023    8631    ke.92@mail.ru    17    

68

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

28.08.2023    22814    YA_418728146    8    

174
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 7325 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 7325 12.03.12 16:38 Сейчас в теме
Тем, кому идея действительно интересна и кто не боится объединить конфу с другой, рекомендую ИР http://infostart.ru/public/15126/
Там есть мощная консоль кода, которую можно вызывать во время отладки функциями Оп, Опс и др.
11. vec435 17 14.03.12 10:25 Сейчас в теме
(7) tormozit, В авторитете платформы ИР нет сомнений. Вещь необходимая любому разработчику. Но ,насколько я понял, передать в функции ОП,ОПС можно только определенный код, а не код из буфера.
12. tormozit 7325 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 7325 27.04.12 09:17 Сейчас в теме
В ИР добавлена функция режима отладки Поп()

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

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

http://www.youtube.com/watch?feature=player_embedded&v=btGHeiUAWEY#!
Для отправки сообщения требуется регистрация/авторизация