TGViewer
Жёлтый чайник 1С (Черненко Виталий) Жёлтый чайник 1С (Черненко Виталий) @juniorones · 5.29K subscribers
Post #647 6.79K
😁 Мои вкусы очень специфичны...

В продолжение викторины про обращение к методу объекта сразу после его создания.

🤔 У многих может возникнуть справедливый вопрос: а зачем?

❌ И, конечно, подобные костыли использовать в коде нельзя. Это просто не имеет смысла.

🛠 Но при этом, иногда знание их может стать для вас удобным инструментом.

🔍 Конкретно данный пример в викторине может пригодиться во время отладки. Когда вы долго и нудно ползли по веренице типового кода и вдруг очень нужно, например, выполнить запрос к базе. Прям внутри отладки (тут может быть транзакция). А возможности отладчика ограничены и вот на помощь приходит столь мерзкий костыль:
?(0,0,Новый Запрос("ВЫБРАТЬ * ИЗ Справочник.Валюты")).Выполнить().Выгрузить()


Для облегчения жизни в отладке мастера делали разные варианты "подсистем" в общих модулях или просто внешних обработках. Тут я кстати писал про вызов процедуры в отладке. А тут делал метод для анализа выполнения запроса и просмотр его данных \ времени и так далее.

🦖 А когда-то давно люди отладчиком не могли даже значение переменной установить (привет, динозавры). И умение использовать костыли было ой как кстати. Например, так можно в отладке "отключить" Отказ:
?(0,0, Новый Структура("А", Ложь)).Свойство("А", Отказ)


🫣 И это я ещё более красивые примеры с ?(,,) привожу, а я-то тогда не знал про эту возможность и юзал Вычислить("Новый Структура...").Свойство(...). На первый взгляд кажется, что это одинаковое решение, но чем сложнее манипуляции, тем больше нужно было "экранировать" кавычки в Вычислить (например, в тексте запроса).

🩼 Сейчас мы, конечно, можем без проблем установить значение переменной, но умение "костылить" мне всё равно периодически помогает. Например, что можно сделать в отладчике:

➖ Проверить существование файла:
?(0,0, Новый Файл("МойФайликНаСервере.ффф")).Существует()


➖ Выполнить HTTP запрос и поместить результат в файл (или просто получить как текст в отладке):
?(0,0, Новый HTTPСоединение("cbr.ru")).Получить("/scripts/XML_val.asp?d=0", "D:\Temp\1\1.xml")


➖ Сравнить две переменные через "сравнятор"
?(0,0, Новый СравнениеЗначений).Сравнить(1, 2)


➖ Привести значение к типу и квалификатору
?(0,0, Новый ОписаниеТипов("МойТип")).ПривестиЗначение(МоеЗначение)


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

😁😁😁В "штатных" ситуациях это ненужно. Но когда у вас суровые ограничения, надо срочно, надо быстро, вот в отладке что-то подкрутить и проверить поведение, то на помощь приходит безумие и смекалка =)
  • 👍 68
  • 🔥 25
  • ❤ 9
  • 😁 2
More from @juniorones
  1. Sep 7, 2026🤖 1С-разработка с ИИ По советам прошел обучение на курсе Владимира Харина. Могу сказать,…
  2. Jul 15, 2026Post #768
  3. Jun 11, 2026🚀 Записался на вахту 18 июня стартует уже третий поток у Владимира Харина на курсе «1С-ра…
  4. Jun 5, 2026Нашел себе новое задротское хобби (а планировал пойти в спортзал) - ардуино. Давно погляды…
  5. Jun 1, 2026📈 Оптимизация настроек СКД 🧲😺 Внутри Магнита огромный лес легаси кода. И иногда мы им д…
  6. Apr 27, 2026⚫️️️️️️️️️️️️️️️️️️️️️️ 1С DAY от MAGNIT TECH: погружение в практику и технологии! ️️️️Вст…
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 →