При разработке часто приходиться вызывать методы из общих модулей и передавать в них параметры типа Ссылка или Объект, или часто приходиться делать подписки на события объектов метаданных и работать в них с Источником подписки.
И неудобно то, что в Конфигураторе в рамках метода общего модуля теряется видимость контекстной подсказки к объекту, получаемую через точку "." после имени переменной объекта.
Примечание: Сама Контекстная подсказка, позволяет в процессе ввода текста или при нажатии (Ctr+Пробел) получать список, позволяющий выбирать нужное свойство, метод, функцию и т.д., что позволяет быстро и правильно набирать тексты модулей. Цветовые выделения в контекстной подсказке свойство, метод, функции …. (Красный – Текущий модуль, Зеленый – Локальный контекст, Темный - Глобальный контекст). Также можно донастроить контекстную подсказку в конфигураторе Сервис – Параметры – Модули – Контекстная подсказка.
Этот грустный момент можно поправить инициализировав переменную объекта через несуществующую инструкцию препроцессора. Ниже пример как можно применить в подписке на событие перед записью документа:
Рис.1 Пишем фиктивный блок кода #Если Малышев Тогда ... и получаем возможность через "." точку получить контекст Источника

Такую фиктивную инициализацию можно делать и в других модулях и местах, где при передаче объекта между методами теряется (но нужен!) контекст объекта получаемый через "." точку.
Дальше при реальном выполнении кода решения блок игнорируется, так как инструкция препроцессора не существует (т.е. при разработке/отладки конфигурации можно по умолчанию не удалять при каждом запуске, но для чистоты кода из продуктива всё-таки убирайте, т.к. 1С может внезапно изменить алгоритм компиляции неподдерживаемых дирректив препроцессора, хотя я пользуюсь более 5 лет таким приемом и пока не менялось ничего).
#Если ЛюбоеНеПредопределенноеСловоВЯзыке1С Тогда
Источник = Документ.РеализацияТоваровУслуг.СоздатьОбъект();
#КонецЕсли
Я ставлю свою фамилию "Малышев" в своём коде, точно зная что её нет в словаре языка 1С, и для удобства дальнейшего поиска в коде. Договоримся на берегу, что дальше каждый в своём коде ставит свою фамилию или ЛюбоеНеПредопределенноеСловоВЯзыке1С... но не мою =)))
Для справки вот информация по использованию директив компиляции и инструкций препроцессора с сайта its.1c.
Снегопат, не прокатил так как он 32х, а сейчас все на 64х клиентах работают.
Можно в 1С:EDT но она требует мощных ресурсов компьютера и пользуются ей сейчас 1-2% разработчиков 1С.
Также другие примеры получения контекстной подсказки:
#Если Сервер И Не Сервер Тогда
Источник = Документ.РеализацияТоваровУслуг.СоздатьОбъект();
#КонецЕсли
Если 1 = 0 Тогда
Источник = Документ.РеализацияТоваровУслуг.СоздатьОбъект();
КонецЕсли
| Расширение: Быстрые отборы через буфер [Alt+C] Копировать, [Alt+V] Вставить | Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации клавиш [Alt+C] Копировать, [Alt+V] Вставить. |
| Резервное копирование и восстановление 1С баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика | В данной инструкции будет описано, как с помощью pgAdmin, bat-файлов и планировщика заданий Windows организовать резервное копирование, восстановление и хранение копий баз данных. |
| Гарантированное проведение документов (подключаемое расширение) | Гарантированное проведение указанного в регистре сведений списка документов. Регистрируем документы к проведению с помощью произвольных отборов СКД в регистре сведений, далее запускаем фоновое проведение в нескольких потоках. Проведенные документы удаляются из регистра, по непроведенным регистрируются ошибки. |
| Ускорим проведение в 1С:Управление холдингом | В 1С:Управление холдингом есть "нехороший" запрос, который съедает значительную часть времени проведения документов. Если его подправить, то проведение заметно ускорится. |
| Динамическая кнопка VS Комбинация клавиш | Часто требуется ко всем формам или к списку форм привязать новые действия. Но как это сделать не меняя каждую форму и в идеале не меняя конфигурацию? Ниже будет описано, как запрограммировать новые действия через расширение (т.е. не меняя конфигурации) и сделать это универсально (не меняя каждую форму). |
| Параметризация печатных форм под контрагентов (подключаемое расширение) | Расширение добавляет возможности параметризации печати для контрагентов. Подробнее описано здесь //infostart.ru/1c/articles/1510459/ |
| Просмотр объектов очереди сообщений в 1С:Документооборот | В базах с бесшовной интеграцией с 1С:Документооборот есть Регистр сведений "Очередь сообщений в 1С:Документооборот". Для пользователя он мало информативен. Расширение позволяет просматривать сообщение в человеческом виде. И понимать проблему до объекта. |
| Поддержка пользователей [Alt+S] (подключаемое расширение) | Расширение, подключаемое к базе 1С для решения задач поддержки пользователей. Позволяет быстро (по кнопке или комбинации клавиш Alt+S), не выходя из программы 1С из любой формы, создать обращение к консультантам и программистам со скринами, файлами, в привязке к проблемному объекту (документу, справочнику, отчету, обработке и т.п.). Вести переписку по обращениям, отслеживать их выполнение с трудозатратами и уведомлять участников через механизмы: Telegram, Обсуждения 1С и Электронную почту. Код открыт и расширение может развиваться и быть доработано под индивидуальные потребности. |
| Интерактивная справка [Alt+I] (подключаемое расширение) | Дополнительная справка, подключаемая к базе 1С. Содержит дерево разделов и статьи. Позволяет создавать статьи с картинками, прикреплять к ним файлы и видео, а также связывать статьи с объектами 1С (документам, справочникам, отчетам). Вызывается на динамически создаваемую кнопку панели либо быстрой комбинацией клавиш Alt+I. |
| Защита объектов от изменения обменом | Расширение позволяет пользователю заблокировать объект 1С (документ, справочник) от изменения последующими загрузками данных или обменами. |
|
Вступайте в нашу телеграмм-группу Инфостарт Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
См. такжеМеханизмы платформы 1С Программист Бесплатно (free) Разберем 15 мифов о работе платформы «1С:Предприятие 8» – как распространенных, так и малоизвестных. Начнем с классики: «Код, написанный в одну строку, работает быстрее, чем многострочный». Так ли это на самом деле? 16.07.2025 41987 TitanLuchs 109 Работа с интерфейсом WEB-интеграция Механизмы платформы 1С Бесплатно (free) Веб-интерфейсы повышают качество внешнего вида приложений 1С, предсказуемы с точки зрения верстки, позволяют организовать удобные и высокопроизводительные рабочие места для пользователей. Расскажем об особенностях разработки веб-интерфейсов на React внутри 1С, двустороннем взаимодействии 1С и JavaScript, а также сборке веб-приложения в одностраничный файл. 19.06.2025 15766 zeegin 15 Механизмы платформы 1С Работа с интерфейсом Программист Стажер 1С:Предприятие 8 Бесплатно (free) Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface). 03.02.2025 23772 bayselonarrend 127 Механизмы платформы 1С Программист 1С:Предприятие 8 Бесплатно (free) В этой статье подробно рассматривается работа с JSON в XDTO в 1С:Предприятие. Вы узнаете, как сериализовать и десериализовать объекты XDTO в JSON, интегрировать 1С с веб-сервисами и API, а также корректно обрабатывать данные при обмене. Разбираются особенности работы с коллекциями, использование функций восстановления и частые ошибки при работе с JSON и XDTO. 30.01.2025 29937 user2122906 10 Механизмы платформы 1С Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 Бесплатно (free) Этот материал познакомит вас с механизмом XDTO (XML Data Transfer Objects) в 1С и научит эффективно использовать его возможности. Мы разберёмся, как работать с XML-схемами, создавать модели данных, манипулировать объектами XDTO, а также сериализовать и десериализовать их в XML. Вы узнаете, как использовать XDTO для интеграции с внешними системами, избегать типичных ошибок и оптимизировать код. К концу вы будете уверенно применять XDTO для решения сложных задач обмена данными и автоматизации процессов. 17.01.2025 50141 user2122906 12 Механизмы платформы 1С WEB-интеграция Программист 1С:Предприятие 8 Бесплатно (free) В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно. 14.01.2025 42840 dsdred 108 Механизмы платформы 1С Программист 1С:Предприятие 8 Бесплатно (free) Особенности "Знач" и разбор документации к нему. 10.01.2025 24110 VAAngelov 59 Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free) Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает. 23.06.2024 37503 bayselonarrend 22 Комментарии
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
1.
malikov_pro
1384
17.08.20 09:42
Сейчас в теме
Почему не используете Если Ложь Тогда?
По идее нужно увязать с описанием перед функцией/процедурой по формату описания и озадачить разработчиков Snegopat и TurboConf.
2.
sapervodichka
7623
17.08.20 10:16
Сейчас в теме
(1) указываю фамилию чтобы искать по конфе и просто в коде красиво выглядит
3.
malikov_pro
1384
17.08.20 10:35
Сейчас в теме
(2) Использую Снегопат, в нем реализовано через //:Перем = Справочник.Имя.ПустаяСсылка(), уточняю варианты использования.
На мой взгляд лучше двигаться в типизацию на уровне аннотаций чем делать "костыли", это потенциально приведет к более полному описанию функции, после более удобно работать с функцией. По фиксации автора изменений: из моего опыта лучше смотреть в git, а через комментарий выделять правки типового кода, для упрощения разбора при обновлении.
4.
sapervodichka
7623
17.08.20 11:04
Сейчас в теме
(3) GitHub - хочу, EDT - хочу, Снегопат - хочу, Ноутбук с i7 b 16 Gb - хочу, много чего видел, много хочу, но не всегда получается, на том и так как хочу.
11.
sapervodichka
7623
17.08.20 22:06
Сейчас в теме
(4) Кстати в Снегопат есть типизируемые параметры, основано на том же принципе (this is хорошо)
Прикрепленные файлы:
19.
sapervodichka
7623
04.09.20 13:35
Сейчас в теме
(11) Снегопат, пока 32х, а все сейчас на клиентах 1С 64х, поэтому снег уже не катит (слышал они 64х готовят, тогда можно попробовать и снега)
8.
sapervodichka
7623
17.08.20 12:11
Сейчас в теме
(7) спасибо кста за ссылку, в ней видно, что Сергей Старых вам ровно тоже само показывает #Если Сервер и Не Сервер Тогда (и на большинстве норм курсов по программированию, вам этот приём также покажут в качестве лайфхака получения подсказки #Если Фамилия Тогда )
Прикрепленные файлы:
9.
VKislitsin
1057
17.08.20 14:48
Сейчас в теме
(8) Дмитрий, я пожалуй, соглашусь и с полезностью метода и с тем, что этот код является мусорным. Мне думается, что лучше этот костыль удалить после написания всего кода, для которого требуется контекстная подсказка - ведь это только для удобства при написании. К чему вводить в ступор тех, кому это попадется в дальнейшем? По крайней мере, когда мне впервые попался такой образец в существующем коде, я не сразу сообразил для чего это.
10.
sapervodichka
7623
17.08.20 14:57
Сейчас в теме
(9) Можно удалить в финальной реализации конфы. Словами не нужно удалять, я хотел отметить, что когда при разработке раз 50 нужно перезапустить конфигуратор, то кодеру не нужно заморачиватся и удалять код #Если ... Тогда каждый раз, т.к. этот блок кода всё равно исключается из выполнения и ни на что не влияет. А вот в финальном выпуске можно и удалить, чтобы избежать вопроса: "Фигасе чё это о_О?!".
12.
sapervodichka
7623
17.08.20 22:09
Сейчас в теме
(8) ну и в Снегопад, я выше картинку прикреплял, тот же принцип "классического мусорного кода" ))) Ужос получается, треш кругом...хотя если "подумать" то и не треш вовсе
Фамилию писать в такой инструкции опасно, т.к. в любом очередном релизе платформы поддержка незначащих слов может быть убрана.
Кажется, уже был диапазон таких релизов около 8.3.8-8.3.9, но потом это дело, видимо, откатили взад: Использовать #Если Сервер И НЕ Сервер Тогда
16.
sapervodichka
7623
20.08.20 15:39
Сейчас в теме
(15) нет он не лучший (он во первых мой), во вторых потому, что ты контрпример и обоснование привёл (всем и мне в том числе полезное и this is хорошо). Лучший твой ))
17.
TreeDogNight
22
04.09.20 13:30
Сейчас в теме
Обычно пишу такое условие:
Если 1 = 2 ТогдаИ когда полностью дописываю код, просто комментирую этот блок условия.
18.
sapervodichka
7623
04.09.20 13:33
Сейчас в теме
(17) получается все сталкиваются с проблемой контекста, хороший вариант
20.
CyberCerber
906
07.09.20 15:26
Сейчас в теме
Проблема контекстной подсказки понятна, но это не то решение, которое следует оставлять в реальных базах, да еще и делать публикации на эту тему.
Раньше тоже иногда писал "Если Ложь Тогда", а дальше инициацию. Но после написания метода удалял этот блок. А сейчас в ЕДТ правильные комменты к функциям дополняют контекстную подсказку. Но если уж так хочется подобного в конфигураторе, то можно предложить Снегопат.
21.
sapervodichka
7623
07.09.20 16:53
Сейчас в теме
(20) Снегопат как написано выше 32х, а на 32х сейчас никто не работает =( только на 64х
22.
sapervodichka
7623
07.09.20 16:54
Сейчас в теме
(21) и 1C:EDT процентов 5 программистов используют
23.
sapervodichka
7623
07.09.20 16:55
Сейчас в теме
(22) и о том что в продуктиве удалять тоже написано выше в комментариях =(
Проблема очевидна, лекарство понятно и остроумно.
Только, ИМХО, это тот случай, когда лекарство не лучше болезни. Лечить неочевидными финтами кода недостатки контекстной подсказки - так себе решение. Это ведь еще и сопровождать надо не забывать и поменяться это может в любой момент (например, перестанет компилироваться в очередном релизе) и WTF от тех, кто не в курсе подобных финтов обеспечены. Как временный фокус на этапе разработки еще могу понять, если сильно болит, но отправлять такое в продакшн я бы точно не стал. А руками комментировать/раскомментировать - теряется весь цимес. Так что увы.
25.
sapervodichka
7623
07.09.20 17:43
Сейчас в теме
(24) да, странно, а у многих зашло и оч помогает ) #Если Сервер И Не Сервер Тогда, #Если Ложь Тогда, #Если Фамилия Тогда - короче не надо сожалений усё в абажуре )))
(25) Многие с моим мнением согласны, раз упоминают что удаляют этот код при отправке в продакшн. Ну и вот да - если уж выбирать, то вариант с документированными директивами, явно указывающими на то что этот кусок никогда не компилируется - более надежен и понятен, чем с использованием недокументированной директивы.
29.
sapervodichka
7623
08.09.20 10:05
Сейчас в теме
(28) очень смешно )) если не грусно, ведь из продакшена и я согласен удалять, читайте выше в комментах (но на время 500 перезапусков при отладке можно не удалять). Меня просто прикалывает мнение, которое пишут не читая мнение автора и не учитывая, то что автор вообщем-то с ними согласен =( и вообщем-то автор и не дурак раз 30 проектов ЕРП запустил
30.
sapervodichka
7623
08.09.20 10:37
Сейчас в теме
(29) многие просто напросто пытаются с умничать, и не совсем по делу. По делу только Cyberhawk написал
(29) Из самой статьи этого вовсе не следует. Не воспринимайте критику статьи настолько лично. Просто поправьте статью, чтобы ни у кого не возникало вопросов насчет вашего мнения касательно области применимости этого приема - и всего делов-то. Ну или будьте готовы и всех будущих читателей вашей статьи отправлять за мнением автора в комментарии.
33.
sapervodichka
7623
08.09.20 11:09
Сейчас в теме
(32) что касается личного восприятия, то я не воспринимаю лично, я просто анализирую компетентные ли даются комментарии, или просто человеку я не понравился, а по существу у него нет аргументов
Обычно использую для доступа к контекстной подсказке конструкцию вида:
Если 1 = 0 Тогда Ссылка = Документы.Реализация.НайтиПоНомеру(); КонецЕсли; Имхо пишется быстрее, чем конструкция #Если... Ну и после завершения работы с этим куском, удаляю блоки по поиску "1 = 0"
Контекстная подсказка - далеко не единственный помощник среды разработки, которому нужно знать тип выражения. В своей я показал и другие в разделе "Помощники опирающиеся на вычисление типа". А они уже используются не только для редактирования, как контекстная подсказка, но и для чтения и отладки кода, т.е. несут пользу в продуктивной среде. Кроме них еще и контекстная справка могла бы использовать информацию о типе выражения, но к сожалению это пожелание за 15 лет так и не было реализовано в конфигураторе.
Автор:
(sapervodichka)
Рейтинг: 7623 Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора. Публикация:
№ 1279456 Создание 17.08.20 09:00 Обновление 14.10.22 22:43 Статистика:
Просмотры 9467 Загрузки 0
Рейтинг
27 Комментарии 36 Характеристики:
Код открыт Да Рубрики Механизмы платформы 1С Кому Программист Тип файла Нет файла Платформа 1С:Предприятие 8 Конфигурация 1C:Бухгалтерия Операционная система Не имеет значения Страна Не имеет значения Отрасль Не имеет значения Налоги Не имеет значения Вид учета Не имеет значения Доступ к файлу Бесплатно (free) |