TGViewer
1С и AI, полезные инструменты и сервисы, стандарты и паттерны 1С и AI, полезные инструменты и сервисы, стандарты и паттерны @usefultools1c · 2.27K subscribers
Post #36 2.48K

Forwarded from Жёлтый чайник 1С (Черненко Виталий)

КАК ВЫПОЛНИТЬ ПРОЦЕДУРУ В ОТЛАДКЕ?

Не баян, а классика.

Находясь в отладчике, мы можем вызывать функции (в т.ч. при помощи "Вычислить выражение").
Это бывает нужно для тестирования и выявления каких-то проблем. Например, сделать что-то с данными формы в закрытых полях и так далее.

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

❔ Как же можно вызвать процедуру в отладке?
Для этого нам нужна функция. Самый простой пример:
Функция Вып(Код, Параметр = Неопределено) Экспорт
Выполнить Код;
КонецФункции

Функция может быть сложнее и удобнее в использовании. Главное, чтобы она вызывала метод платформы Выполнить(НашКод)

🤔 ГДЕ РАЗМЕСТИТЬ ВСПОМОГАТЕЛЬНУЮ ФУНКЦИЮ?

1️⃣ В своём инструменте
Да, самое очевидное - добавить метод там, где мы его будем использовать. В нашей обработке, например. Но такая функция будет доступна только внутри нашего инструмента. Не очень удобно

2️⃣ Общий модуль
Другой напрашивающийся способ - найти (или добавить) где-то в общем модуле. Это может потребовать доработки конфигурации или же установки расширения.

2️⃣ Внешняя обработка
Если бы всегда нам подходили первые два способа, то было бы не так интересно.
Но если мы по какой-то причине не хотим ставить расширение для таких целей, то можно пойти другим путём. Создать внешнюю обработку с таким же методом. Метод придётся разместить в модуле самой обработки и дополнительно в форме. Тогда он будет доступен и на сервере и на клиенте.

🤔 КАК ИСПОЛЬЗОВАТЬ ТАКУЮ ОБРАБОТКУ
Сначала нужно её открыть в режиме предприятия. Так мы "подключим" её к сеансу. А далее уже в коде можем создавать её объекты. Давайте выведем таким образом сообщение:

Для выполнения НаКлиенте можно делать так:
ПолучитьФорму("ВнешняяОбработка.Вып.Форма").Вып("Сообщить(Параметр)", "Текст");

А НаСервере так:
ВнешниеОбработки.Создать("Вып").Вып("Сообщить(Параметр)", "Текст")

Если же мы ведем отладку в фоновом задании, то открытие обработки в режиме предприятия нам не поможет. Но можно использовать и другой вызов:
ВнешниеОбработки.Создать("МойПутьКФайлу", Ложь).Вып("Сообщить(Параметр)", "Текст")

Главное в таком случае разместить обработку в доступном для сервера каталоге. Правда и тут может произойти проблема, если установлена "Защита от опасных действий". Тогда нужно при создании обработки передать ещё третий параметр - ОписаниеЗащитыОтОпасныхДействий. Для его создания обычно в типовых есть метод ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений()

ВнешниеОбработки.Создать("МойПутьКФайлу", Ложь, ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений()).Вып("Сообщить(
Параметр
)", "Текст")

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

_______________
@JuniorOneS
  • 👍 11
  • 🤔 2
More from @usefultools1c
  1. Oct 11, 2026Всем привет. Сделал открытый инструмент, который подключает DeepSeek, Qwen и Kimi к DeepSe…
  2. Oct 3, 2026Code Review Notebook Расширение для Visual Studio Code позволяющее удобно добавлять замеча…
  3. Oct 2, 2026Post #235
  4. Oct 1, 2026🔗 СМОТРЕТЬ ВСЮ ПРОГРАММУ
  5. Sep 30, 2026NULL — это не ноль. И даже не пустая дата. Сегодня поговорим о NULL. Почему стандарты разр…
  6. Sep 23, 2026📚 Программа A&PM EVENT 2026 готова! Можно открывать и выбирать, на что идти 12–14 ноября.…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →