Пожелания по расширению функционала v7crypt

  1. Оффлайн

    KotMurza

    Посетители

    Сообщений: 4

    1. Крайне важной и полезной (лично мне необходимой) была бы предопределенная процедура Модуля Документа «ПослеЗаписи» (сейчас есть только «ПриЗаписи»). Если можно, по этому вопросу мне хотелось бы «быстрой» ясности, в таком плане: если этой процедуры НЕ БУДЕТ, работать дальше исходя из этого. Или немного подождать и построить код совсем по другому.

    2. Если в одном из МГМ определить процедуру «ОбработкаВнешнегоСобытия», при этом, в других модулях она не определена (у меня этих модулей 46) то при обработке внешнего события будет «вылетать» сообщение «Не определена обработка внешнего события» столько раз, сколько модулей. Мне пришлось определять «пустую» обработку во всех модулях, чтобы «оно заткнулось».

    3. Директива @autoheader – без нее все равно все «не пашет». Иными словами, зачем вообще ее писать. Пусть компонента компилирует модуль так, как если бы эта директива там всегда была. Но это так…момент не принципиальный..
    6 июля 2012 - 16:23 / #1
  2. Оффлайн

    Wirth

    Администраторы

    Сообщений: 389

    "После записи" - посмотрю, не могу пока сказать. На вскидку не помню. А как она должна работать?

    "обработка внешнего события" исправлено в новой версии, пока не публиковал.

    @autoheader – что не пашет, уточните? Директива позволяет не предопределять функции, все должно работать и без нее.

    crypt v.1019 - исправлены ошибки, расширена функциональность в направлении внешних контекстов, подготовлю описание, опубликую
    Прикрепления: crypt_1019.zip
    6 июля 2012 - 16:38 / #2
  3. Оффлайн

    KotMurza

    Посетители

    Сообщений: 4

    1. «ПослеЗаписи» - это предопределенная процедура, которой нужно передать управление после того, как документ физически записан в базу и метод ТекущийДокумент() стал «не пустым». «ПриЗаписи» не поможет в том случае, если нужно произвести такие операции, где нужна ссылка Текущийдокумент(), но документ еще не записан. Если из процедуры «ПриЗаписи» вызвать метод «Записать()» - получаем ран-тайм ошибку.

    2. …

    3. Под «не пашет» я подразумевал такое: если директивы в модуле нет, то обращение к его процедурам извне – например, из «более нижестоящих» МГМ – приводит к ошибке «процедура не найдена». Для избежания ошибки приходится явно определять контекст и через него обращаться к процедуре. Ну, или просто объявить директиву @autoheader.
    Я двое суток «раскладывал» всю свою (15-ти летнюю) конфигурацию на логические МГМ.
    И этот «прикол» – с отсутствием @autoheader – обнаружил чисто эмпирическим путем.
    Еще обнаружил один прикол: если модуль МГМ пустой, но директива @autoheader есть – то проверка синтаксиса «зависает». Если модуль МГМ пустой без @autoheader – все ОК.

    4. (NEW) Да, и еще, как мысль: было-бы не плохо завести какой-то «внешний реестр» МГМ.
    И в нем определить порядок следования МГМ.
    Потому, что, как в моем случае, выстраиваешь их в конфигураторе по порядку (46 штук) – методом запусков синтаксис-контроля и постоянного перетягивания «туда-сюда»…
    А потом, во хмелю, тыцнешь в кнопку «сортировать по алфавиту» - и можно начинать «выстраивать» с матюками заново.
    6 июля 2012 - 17:23 / #3
  4. Оффлайн

    Wirth

    Администраторы

    Сообщений: 389

    Добавил событие ПослеЗаписи (AfterWrite) и ПослеЗаписиДокумента (AfterWriteDocument)
    Сильно не тестировал.
    Прикрепления: crypt_1020.zip
    10 июля 2012 - 11:07 / #4
  5. Оффлайн

    KotMurza

    Посетители

    Сообщений: 4

    Протестировал.
    В Модуле Документа событие ПослеЗаписи() отрабатывается.
    Правильно ли я понимаю, что процедура (событие) ПослеЗаписиДокумента() должно вызываться в Глобальном Модуле?
    10 июля 2012 - 21:16 / #5
  6. Оффлайн

    Wirth

    Администраторы

    Сообщений: 389

    Quote
    Правильно ли я понимаю, что процедура (событие) ПослеЗаписиДокумента() должно вызываться в Глобальном Модуле?


    Да, как в основном, так и в мгм. Событие получает один параметр - контекст документа.

    Процедура ПослеЗаписиДокумента(Конт)
    Сообщить(""+Конт.ТекущийДокумент());
    КонецПроцедуры
    10 июля 2012 - 22:36 / #6
  7. Оффлайн

    KotMurza

    Посетители

    Сообщений: 4

    Протестировал.
    Очень доволен.
    Простое расширение встроенного языка, которое, тем не менее, принципиальным образом меняет функционал программы.

    Всем очень рекомендую!
    11 июля 2012 - 14:30 / #7