Контекст любого объекта конструкцией #Если Фамилия Тогда
Делаем инициализацию переменной в «своей» инструкции препроцессора, для получения контекстной подсказки объекта через точку. В дальнейшем в компилированном коде сама инициализация игнорируется, т.к. «своя» инструкция препроцессора НИКОГДА не выполняется.
- Описание
- Подробнее
Описание
При разработке часто приходиться вызывать методы из общих модулей и передавать в них параметры типа Ссылка или Объект, или часто приходиться делать подписки на события объектов метаданных и работать в них с Источником подписки.
И неудобно то, что в Конфигураторе в рамках метода общего модуля теряется видимость контекстной подсказки к объекту, получаемую через точку "." после имени переменной объекта.
Примечание: Сама Контекстная подсказка, позволяет в процессе ввода текста или при нажатии (Ctr+Пробел) получать список, позволяющий выбирать нужное свойство, метод, функцию и т.д., что позволяет быстро и правильно набирать тексты модулей. Цветовые выделения в контекстной подсказке свойство, метод, функции …. (Красный – Текущий модуль, Зеленый – Локальный контекст, Темный — Глобальный контекст). Также можно донастроить контекстную подсказку в конфигураторе Сервис – Параметры – Модули – Контекстная подсказка.
Этот грустный момент можно поправить инициализировав переменную объекта через несуществующую инструкцию препроцессора. Ниже пример как можно применить в подписке на событие перед записью документа:
Рис.1 Пишем фиктивный блок кода #Если Малышев Тогда … и получаем возможность через "." точку получить контекст Источника
Такую фиктивную инициализацию можно делать и в других модулях и местах, где при передаче объекта между методами теряется (но нужен!) контекст объекта получаемый через "." точку.
Дальше при реальном выполнении кода решения блок игнорируется, так как инструкция препроцессора не существует (т.е. при разработке/отладки конфигурации можно по умолчанию не удалять при каждом запуске, но для чистоты кода из продуктива всё-таки убирайте, т.к. 1С может внезапно изменить алгоритм компиляции неподдерживаемых дирректив препроцессора, хотя я пользуюсь более 5 лет таким приемом и пока не менялось ничего).
#Если ЛюбоеНеПредопределенноеСловоВЯзыке1С Тогда
Источник = Документ.РеализацияТоваровУслуг.СоздатьОбъект();
#КонецЕсли
Я ставлю свою фамилию "Малышев" в своём коде, точно зная что её нет в словаре языка 1С, и для удобства дальнейшего поиска в коде. Договоримся на берегу, что дальше каждый в своём коде ставит свою фамилию или ЛюбоеНеПредопределенноеСловоВЯзыке1С… но не мою =)))
Для справки вот информация по использованию директив компиляции и инструкций препроцессора с сайта its.1c.
Снегопат, не прокатил так как он 32х, а сейчас все на 64х клиентах работают.
Можно в 1С:EDT но она требует мощных ресурсов компьютера и пользуются ей сейчас 1-2% разработчиков 1С.
Также другие примеры получения контекстной подсказки:
#Если Сервер И Не Сервер Тогда
Источник = Документ.РеализацияТоваровУслуг.СоздатьОбъект();
#КонецЕсли
Если 1 = 0 Тогда
Источник = Документ.РеализацияТоваровУслуг.СоздатьОбъект();
КонецЕсли