Каталог решений - Маленькие хитрости большого программирования. Часть 1. «Контекст, покажи личико»

Маленькие хитрости большого программирования. Часть 1. «Контекст, покажи личико»

Маленькие хитрости большого программирования. Часть 1. «Контекст, покажи личико»

В наличии

Привыкнув к лучшему с трудом переходишь на хорошее. Заставляем контекстную подсказку показывать то, что нужно Вам, а не то, что видит она.

Категория:

Описание

Заходишь раним солнечным утром в обработчик ОбработкаЗаполнения, хочешь написать что-то хорошее и красивое…

…но после первого же нажатия любомого Ctrl+Space после «Основание.» весь романтический настрой разбивается о 30-тиэтажный небоскрёб 50-значных наименований реквизитов типа «ОбъемПродукцииРаботДляВычисленияАмортизации» или «ПорядокВключенияСтоимостиВСоставРасходовУСН»…  паника… КОНТЕКСТНАЯ ПОДСКАЗКА, ВЕРНИСЬ, Я ВСЁ ПРОЩУ!!!

Знакомо? Нет? А, ну да! Какой-же нормальный программер с утра пораньше в код-то полезет! Извиняюсь… Сторно «Заходишь раним солнечным утром», приход «Залетаешь поздним-поздним вечером»…

Итак, решение: вставляем до текущего вызова нужной переменной незначащий блок

    Если Ложь Тогда  //ПОТОМ УДАЛИТЬ!!!
        НужнаяПеременная = <Создание или назначение объекта нужного типа>;
    КонецЕсли;

ИЛИ для любителей чистого исполняемого кода (объяснения см. в конце статьи)

    #Если НЕ (Клиент Или Сервер Или ВнешнееСоединение) Тогда  // типизирование переменных без вреда для исполняемого кода
        НужнаяПеременная = <Создание или назначение объекта нужного типа>;
    #КонецЕсли

и обманываем парсер контекстной подсказки, заставляя его подумать, что возможно… в принципе… ну, при каких-то обстоятельствах… ведь чем чёрт не шутит… две параллельные пересекутся и этот блок отработает!

Результат — видим по «НужнаяПеременная.» и Ctrl+Space.

После написания всего кода, блок можно стереть. А если поставить комментарий «//ПОТОМ УДАЛИТЬ!!!», то в последствии блок для удаления легко найти поиском по «!!!». Основная прелесть способа в том, что даже если забыть его потом удалить — ничего страшного (кроме недоумения того, кто не знает) не произойдёт.

На всякий случай размещаю явный пример:

пример

Для реализации всплывающего контекста для составного типа привожу пример на базе конф. «Бухгалтерия предприятия 8 ред. 1.6»:

    Если Ложь Тогда  //ПОТОМ УДАЛИТЬ!!!
        Основание = Документы.СчетФактураВыданный.СоздатьДокумент().ДокументОснование;
    КонецЕсли;

Бурные обсуждения статьи в комментариях сподвигли сделать ещё одно дополнение (см. выше). Так как в бой вступили сторонники семёрки, а точнее приверженцы таких модов для семёрки, как телепат или интеллисенс, поднялся вопрос о чистоте исполняемого кода уже скомпилированного приложения. В связи с этим выложил ещё один вариант принудительного типизирования переменной с использованием инструкций препроцессора. Суть этого варианта — полное исключение из компиляции объявления переменной за счет того, что условие «НЕ (Клиент Или Сервер Или ВнешнееСоединение)» никогда не вернёт положительный результат. Тем не менее процессор контекстной подсказки обрабатывает этот блок и приводит к нужному результату.


За поднятие темы про чистоту кода спасибо artbear и orefkov

За дополнение комментарием «//ПОТОМ УДАЛИТЬ!!!» спасибо Трактор

За вопрос про составной тип спасибо GROOVY

has been added to your cart:
Оформление заказа