Изменение данных среды выполнения «на лету» в процессе отладки с помощью внешней обработки

14.02.14

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

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

Осуществить это желание довольно просто.

Достаточно создать внешнюю обработку(можно даже без формы) и в модуле объекта прописать вот такую экспортную(это обязательно!) функцию:

 

Функция ИсполнитьКод(ТекстКода, Параметр="",Ответ="ОК") Экспорт
    Попытка
        Выполнить(ТекстКода);
    Исключение
        Ответ= «!!!Ошибка выполнения внешнего кода!!!...»+ОписаниеОшибки();
    КонецПопытки;
    Возврат Ответ;
КонецФункции 

 

По принимаемым параметрам:

 

  1. ТекстКода. – тут все понятно. Это произвольный текст на встроенном языке, желательно без синтаксических и логических ошибок : - ).В случае ошибки получите в возврате текст  ««!!!Ошибка выполнения внешнего кода!!!...»» и т.д.
  1. Параметр. – сюда можете передавать всякие всякости, доступные в текущем контексте, над которыми нужно поиздеваться и менять их значения пока стоит точка останова.
  2. Ответ. – По умолчанию равен «ОК» и если все прошло штатно и ничего не надо было возвращать для «посмотреть»  в табло, то «ОК» и  вернется при вызове. В случае ошибки - см. выше.

Теперь собственно сам главный финт ушами – как этим безобразием пользоваться.

 

Создадим внешнюю обработку с вышеуказанной процедурой и сохраним ее скажем вот так:

«E:\execute.epf»

Когда сработала точка останова, в табло пишем вызов с произвольной строкой кода.

Допустим вот такое традиционное:

 

ВнешниеОбработки.Создать("E:\execute.epf").Исполнить("Ответ=""Hello, world!""")


Имеем вот такой результат:

Т.е. функция, выполняя ваш посланный код, присвоила переменной Ответ строку «Hello, world!» и отправила вам же обратно в возврате. На этом примере понятен принцип: если хотим увидеть какой-то результат в табло при вызове функции, то надо в передаваемом коде присвоить переменной Ответ его значение. Оно вернется как результат выполнения функции и отобразится в табло. Если ничего не будем присваивать переменной Ответ, то при успешном выполнении вернется «ОК»

 Поле применения этого метода довольно широкое.

Допустим вас не устраивает текущее значение реквизита документа, которое приводит в последствии к ошибке.

 Тогда просто передаем в параметр текущий документ объект и в обработке над ним издеваемся, как хотим.

 

Предположим мы хотим поменять дату объекта документ в момент отладки.

Пишем в табло:

 

ВнешниеОбработки.Создать("E:\execute.epf").Исполнить("Параметр.Дата ='20131231235959'",ЭтотОбъект)

 

Видим результат ДО

и ПОСЛЕ (Для отображения нового значения даты надо "перещелкнуть" сроку с ЭтотОбъект.Дата)

 

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

Вот такие пироги с котятами.: -)

Надеюсь кому-то это будет интересным и полезным.

См. также

Вставляем картинку из буфера обмена (платформа 1С 8.3.24)

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

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

1 стартмани

18.03.2024    2670    0    John_d    8    

54

GUID в 1С 8.3 - как с ними быть

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

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

12.02.2024    4607    atdonya    22    

45

Переоткрытие внешних обработок

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

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

30.11.2023    3960    ke.92@mail.ru    16    

61

Валидация JSON через XDTO (включая массивы)

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

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

28.08.2023    8821    YA_418728146    6    

141

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

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

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

2 стартмани

22.08.2023    2071    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 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    16143    133    sapervodichka    112    

129

Система контроля ведения учета [БСП]

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

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7243    quazare    8    

109
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ksvd 13.02.14 13:11 Сейчас в теме
Кавычки надо поменять на "
в
Ответ= «!!!Ошибка выполнения внешнего кода!!!...»+ОписаниеОшибки();

А для какой это конфигурации?
У меня в табло пишет:
{(1,1)}: Переменная не определена (ВнешниеОбработки)
Рэйв; +1 Ответить
3. Franco 82 13.02.14 15:12 Сейчас в теме
(1) ksvd, Для выполнения на сервере

Глобальный контекст (Global context)
ВнешниеОбработки (ExternalDataProcessors)
Использование:

Только чтение.
Описание:

Тип: ВнешниеОбработкиМенеджер.
Используется для доступа к внешним обработкам.

Доступность:

Сервер, толстый клиент, внешнее соединение.
2. Franco 82 13.02.14 15:10 Сейчас в теме
(0)
Ошибся, наверное, в
ВнешниеОбработки.Создать("E:\execute.epf").Исполнить("Параметр.Дата ='20132131235959'",ЭтотОбъект)
20132131235959
21-ый месяц 2013-го года.
За идею спасибо!
Рэйв; +1 Ответить
4. ksvd 13.02.14 16:06 Сейчас в теме
Понял, выполнять только под толстым клиентом. Жалко.
И название функции в обработке тогда уже не ИсполнитьКод, а Исполнить
5. artbear 1448 19.02.14 10:56 Сейчас в теме
(0) Давно известный прием.
Например, автор "Инструментов разработчика" кучу лет назад выкладывал свою статью об этом
Оставьте свое сообщение