V8 FORMATTER: Расширенная версия


Форматирование кода модуля одним хот-кеем, ввод "неудобных" символов без переключения раскладки.

Не Снегопат и даже не Turbo Conf, зато халява 😉

Лично мне, при наличии в 8.3 какой-никакой контестной подсказки, а также достаточного количества продуманных шаблонов, вполне хватает.

Форматирование производится в соответствии с моими предпочтениями: удаляются все лишние пустые строки (пустые строки остаются только между функциями и процедурами), удаляются строки «// Вставить содержимое обработчика.»

Ввод «неудобных» символов []@&<> осуществляется нажатием соответствующей клавиши в совокупности с клавишей «CTRL» без преключения языка ввода.

_____________

Второй файл — версия 3.1.1.2  Для тех, у кого «кракозябрило». Прошу проверить. У Altair777 кракозябрило, на 3.1.1.2 полет нормальный

_____________

Версия 4.1.1.2, дополненная 3.1.1.2. Возможность подключения до 5 шаблонов текста к хот-кеям CTRL+1,CTRL+3,CTRL+4,CTRL+5,CTRL+6. Ini-файл. Описание ini-файла в самом файле в секции COMMENTS.

Также в архиве пять файлов шаблонов для примера.

_____________

Версия 4.1.2.2 — небольшая доработка. В ini файле добавлен параметр OnlyFormat. Если OnlyFormat=1 тогда обработка текста на предмет удаления лишних строк и пр. не производится, только форматирование родного текста. Для любителей межстрочья.

99 Comments

  1. Bazil

    Отличная разработка. Но почему-то подряд несколько спецсимволов ввести не удается. Удерживаю Ctrl нажимаю < и > первый символ вводится, а второй и следующие нет.

    Reply
  2. Abadonna

    (1) Bazil, надо не удерживая, а по новой CTRL+Клавиша… Нюансы

    Reply
  3. ShantinTD

    а у меня почему-то «отформатировался» модуль кракозябликаи….

    Win 7Pro 64bit, 1С 8.3.3.658. Пробовал 1С 8.2.17.169.

    Reply
  4. Abadonna

    (3) ShantinTD, если честно — не знаю… На Win7 (32) у меня без проблем. ХР — тоже. Че-то с кодировками…

    Проверю на серваке 64 — отпишусь

    Reply
  5. ilov_boris

    Ввод неудобных символов легко побеждается шаблонами

    Reply
  6. Abadonna

    (4) ilov_boris, ну и пусть себе побеждается… Он так же побеждается ALT+Код клавиши… Что с того?

    Reply
  7. Altair777
    Форматирование производится в соотвествии с моими предпочтениями: удаляются все лишние пустые строки (пустые строки остаются только между фугкциями и процедурами), удаляются строки «// Вставить содержимое обработчика.»

    А можно подробнее о форматировании?

    Reply
  8. Abadonna

    (7) Altair777, супер-подробно о форматировании вот тут http://infostart.ru/public/19946/

    не расширенная версия

    Reply
  9. ShantinTD

    (5) прикола ради за неделю заново научился кодить без снегопата. =)

    Reply
  10. Abadonna

    (9) ShantinTD, я, кстати, что на 7.7 опенконфом никогда не пользовался, что снегопатом сейчас…

    Как там у Евдокимова было:- «Не знаю.. привычка что ли такая дурацкая?…» 😉

    Reply
  11. Ёпрст

    Можно ли слепить настраиваемый ini файлик с хоткеями ?…

    По-умолчанию, твои хоткеи, при желании — новые, например, вставка произвольного блока, а не просто символа.

    Reply
  12. Abadonna

    (10) Ёпрст, можно, если не поленюсь;) вообще-то и сам думал, например, кое какие шаблоны заменить…

    Reply
  13. Ёпрст

    (12) вот-вот, дополнить и ценник навесить — глядишь, разбогатеешь не по-детски!

    🙂

    Reply
  14. dour-dead

    Ctr+D

    Reply
  15. ShantinTD

    (14) dour-dead, вот-вот-вот…

    Reply
  16. Ёпрст

    Ничего вы не понимаете, это заготовка к обфускатору кода..

    🙂

    Reply
  17. Abadonna

    (14) dour-dead, там используется TMemo, с чарсетом DEFAULT_CHARSET, попробую поставить ANSI_CHARSET, может поможет. Но у меня нигде не глючило. Дома вечером подправлю, напиши в личку, куда выслать (чтобы $m не тратил)

    Reply
  18. break

    а под снегопатом работает? не расширенная версия не срабатывает (похоже считает что окно не от конфигуратора 1С)

    Reply
  19. Abadonna

    (18) break, не знаю, я Снегопат не юзал никогда.

    Фокус ввода (грубо говоря курсор) должен обязательно на модуле находиться

    Reply
  20. Ёпрст

    Да, у меня тоже иероглифы всё..

    win 2008

    Reply
  21. Ёпрст

    а так прикольно, в 8.1 тоже работает

    Reply
  22. Ёпрст

    вот только неудобство:

    при зажатом контроле не работает, т.е работает только первое нажатие, все последующие — болт.

    Не очень удобно, например, <> поставить — надо отпускать контрол.

    Reply
  23. Abadonna

    (20) Блинский клин. У меня на всех доступных серваках без кракозябров… Даже и проверить не на чем, остается только догадываться… Вечером выложу второй файл, Ёпрст богатый :))) качнет, нам потом расскажет

    Reply
  24. NoRazum

    Windwos 7 Максимальная 64 бит SP1.

    Платформа 8.2.18.104

    кодировка неправильная в крагозябрах.

    Исправьте пожалуйста.

    Добавите настройки кнопок или помощь какую-то. НЕ удобно очень.

    Reply
  25. Ёпрст

    (24) помощь есть — Ctrl+F12

    Reply
  26. Abadonna

    (20) Ёпрст, Качни, плиз, второй файл. Проверь на «кракозяберность». Поменял чарсет на ANSI, проверить не на чем.

    Reply
  27. Ёпрст

    (26) не помогло 🙁

    Reply
  28. AlexInqMetal

    8.2.18.102

    Win7 x64

    Win2008 x64

    Полет нормальный

    p.s. пробовал первую версию…

    Reply
  29. Abadonna

    (27) Ёпрст, хреново… теперь мне даже трудно предполагать, что там такое. Может, дельфя не хочет дружить…

    У меня на всех серверах клиентов, на Win 7 локалке, на ХР — никаких кракозябров.

    А режим совместимости ей попробуй задать

    Reply
  30. Ёпрст

    Самое поганое, что он и по Ctrl+Q

    вставляет &ÍàÑåðâåðå

    Reply
  31. Ёпрст

    режим совместимости не помог

    Reply
  32. Ёпрст

    попробовал на 2003 — там усё нормально, на 2008 х64 болт, мот там конечно CodePage выставить везде в реестре на 1251 попробовать, но рестартить сервер не могу щас.

    Reply
  33. ShantinTD

    Если интересно: Win7 русская, по умолчанию поставлен английский язык.

    А еще подобный глюк встречал при копировании (Ctrl+C, Ctrl+V), скажем, из табличного документа 1С в документ MS Office или Open Office. Там тоже вставлялись кракозяблики, если при копировании русского текста текущий язык ввода стоит английский. Переключаешь на русский — все нормально копируется, вставляется.

    Тут переключение не помогает. =(

    Reply
  34. Abadonna

    (32) Ёпрст, есть еще одна задумка, но, блин, хреново, что потестить мне не на чем…

    Положу прям в комменты файлик с полем мемо, надо будет проробовать КАК оно туда вставится.

    Reply
  35. Ёпрст

    ну кидай варианты, потестю.

    Reply
  36. Abadonna

    (35) На форме 2 кнопки Old и New. По кнопке Old в поле мемо должны быть кракозябры, а вот что по кнопке New появится — напиши. Там прога сама автоматом заносит в клипборд текст «&НаКлиенте» двумя способами, а потом вставляет в мемо

    Reply
  37. Ёпрст

    нормально всё.. возвращает &НаКлиенте по обоим кнопкам

    Reply
  38. Abadonna

    (37) Ёпрст, уже легче 🙂 Будем посмотреть, как с большим текстом исправить.

    Спасибо, получится — сделаю тебе лично именную, как бета-тестеру

    Reply
  39. Abadonna

    (37) Ёпрст, хм… по ОБЕИМ? странно. Тогда щас перезалью второй файл.

    Reply
  40. Ёпрст

    давай

    Reply
  41. Abadonna

    (40) Ёпрст, ТРЕТИЙ файл, с двумя плюсами

    Reply
  42. Ёпрст

    не помогает :(((

    Reply
  43. Ёпрст

    даешь 4-ый!

    🙂

    Reply
  44. Abadonna

    (42)Я тогда в шоке. Потому что у тебя по кнопке Old сработало правильно, хотя там, по идее, так же, как и обработке.

    Лана, вечерком попозже еще вариант попробую. Отпишусь

    Reply
  45. Abadonna

    (42) Ёпрст, Я вот тут подумал: раз по кнопке Old правильно сработало, может дело не в мемо и не клипборде, а в самом поле ввода модуля 1С? А попробуй, плиз, в блокноте че-нить набрать, скопривать в буфер и в модуль 1С вставить. И разные раскладки (в 1С) попробуй перед вставкой

    Reply
  46. NoRazum

    Попробовал.

    с 1с 77 есть такая беда.

    а в 1с 8.2 с блокнота все нормально.

    (35) На форме 2 кнопки Old и New. По кнопке Old в поле мемо должны быть кракозябры, а вот что по кнопке New появится — напиши. Там прога сама автоматом заносит в клипборд текст «&НаКлиенте» двумя способами, а потом вставляет в мемо

    Прикрепленные файлы

    Test.zip (200.81 КБ) [ Скачать ]

    Скачал потестил все по русски.

    Куда еще нажать чтоб прояснилось у тебя в чем ошибка?

    Открыл блокнот и нажал ctrl + Q при включенной твоей проги. Тоже крагозябру вставило))

    Reply
  47. Ёпрст

    Из блокнота вставляет любой текст (рус/англ) нормально при копировании в любой расскладке

    Reply
  48. Ёпрст

    я посмотрел через clipbrd.exe — текст уже в буфере обмена с кракозябрами…

    Reply
  49. Ёпрст

    т.е у тебя как то в буфер обмена уже «не торт» прилетает.

    Reply
  50. Abadonna

    (49) Ёпрст, попытка номер… уж хз какой…

    третий файл, чтобы не запутался в релизах, там версия файла 5.1.1.1 — убедись, что она

    Reply
  51. Ёпрст

    (50) неа, не выходит каменный цветок

    🙁

    Reply
  52. Ёпрст

    версия именно та..

    Reply
  53. Abadonna

    (52) Ёпрст, с Альтаиром (у него тоже кракозябрит) вроде выяснили — кракозябрит при повторной вставке в буффер обмена (обработанный результат). В Дельфи пока не нашел средств, как победить. Но победю;)

    Reply
  54. Abadonna

    (52) Ёпрст, Если еще не свалил, попробуй файл …8111 (тоже третий)

    Reply
  55. Ёпрст

    (54) Ужо лучше!

    Ctrl+D работает, Ctrl+Q вставляет мусор , как и раньше.

    Reply
  56. dour-dead

    скачал ещё разок Ctrl+D у меня не работает

    Reply
  57. dour-dead

    блин самое палево Ctrl+D в командаре закладки открывает, плиз сделайте что бы можно было настраивать кнопки вызова.

    Reply
  58. Ёпрст

    (56) какой именно файл скачал ?

    Reply
  59. Altair777

    (53)

    Да, это правда. Windows-7 проф 64 (см.скриншот)

    Reply
  60. Altair777

    (58) Ёпрст,

    лично я перепробовал:

    2.1.1.1

    5.1.1.1

    6.1.1.1

    7.1.1.1

    8.1.1.1

    Reply
  61. Ёпрст

    (60) и ?

    8.1.1.1 у меня заработал как описано в (55)

    Reply
  62. Altair777

    (61) Ёпрст,

    Ctrl+D два модальных окна нормально, а в модуль вставляет кракозяблы

    Ctrl+Q

    кракозяблы в блокноте

    а при вставке сюда

    все нормально!

    #Если Клиент Тогда

    ////////////////////////////////////////////////////////////­////////////////////

    // ПРОЦЕДУРЫ И ФУНКЦИИ НАЧАЛЬНОЙ НАСТРОЙКИ ОТЧЕТА

    // Процедура установки начальных настроек отчета с использованием текста запроса

    //

    Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт

    // Настройка общих параметров универсального отчета

    // Содержит название отчета, которое будет выводиться в шапке.

    // Тип: Строка.

    // Пример:

    // УниверсальныйОтчет.мНазваниеОтчета = «Название отчета»;

    УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним);

    Показать

    &НаСервере
    Reply
  63. Ёпрст

    >>>>Ctrl+D два модальных окна нормально, а в модуль вставляет кракозяблы

    Это как ?

    ты Ctrl+D где нажимаешь хоть ?

    у меня в пофигураторе всё супер стало, что в 8.1, что в 8.2, только по Ctrl+Q мусор

    Reply
  64. Altair777

    (63) Ёпрст,

    в модуле внешнего отчета, а где надо? 🙂

    платформа 1С:Предприятие 8.2 (8.2.18.61)

    в 1С:Предприятие 8.3 (8.3.3.658) то же самое

    Reply
  65. Ёпрст

    вот это смутило — «два модальных окна нормально»

    Reply
  66. Ёпрст

    это о чем ?

    Reply
  67. Altair777

    (66) Ёпрст,

    Может, у меня другая версия 8.1.1.1?

    Мне вчера вечером Аркадий слал версии, одну за одной 🙂

    Reply
  68. Altair777

    (65) Ёпрст,

    > Abadonna (16:58:08 22/07/2013)

    > ушло. 6.1.1.1

    > два раза должно окошко модельно показать: первый раз — что попало до обработки, второй — после обработки во втором мемо.

    Reply
  69. Ёпрст

    ага, у меня тот — что в шапке темы , там нет модальных окошек 🙂

    Reply
  70. Ёпрст

    и версия на 20 минут позже

    Reply
  71. Abadonna

    (55) Ёпрст, Краскозябры на CTRL+Q потому, что там не менял принцип помещения в буффер

    доделаю

    Reply
  72. Abadonna

    (69) Ёпрст, с ShowMessage я Альтаиру высылал, тут (третий файл) они убраны. Так что не парьтесь 😉

    Reply
  73. Abadonna

    (69) Ёпрст, проверяй, версия 2.2.1.1

    Не уверен, но…

    Reply
  74. Ёпрст

    Шеф!

    Усё пропало — опять иероглифы везде 🙁

    Reply
  75. Abadonna

    (74) Короче, в тот раз не было краков, потому что оно в буффер не заносило обработанное…

    Alik (16:31:00 23/07/2013)

    хм…. кажись сработало 🙂

    Поменял TMemo на TRichEdit

    Щас погоняем, выложу

    Reply
  76. Abadonna

    (74) Ёпрст,

    Alik (16:32:44 23/07/2013)

    да, работает!

    Abadonna (16:37:35 23/07/2013)

    лови 3.1.1.1

    Alik (16:39:46 23/07/2013)

    поймал

    контрол кью раюотает )

    _________________

    Уфф. Надеюсь и у тебя будет ОК.

    Reply
  77. dour-dead
  78. Ёпрст

    (76) ща посмотрю.

    (77) эта не работает

    Reply
  79. Ёпрст

    Да, «Версия 3.1.1.1» работает, за исключением, по Ctrl+Q и Ctrl+W — по ним ничего не вставляет вообще

    🙂

    Reply
  80. Altair777

    Поборись еще с табуляторами после директив

    #Если Клиент Тогда
    
    ////////////////////////////////////////////////////////////­////////////////////
    // ПРОЦЕДУРЫ И ФУНКЦИИ НАЧАЛЬНОЙ НАСТРОЙКИ ОТЧЕТА
    
    // Процедура установки начальных настроек отчета с использованием текста запроса
    //
    Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт
    
    // Настройка общих параметров универсального отчета
    
    // Содержит название отчета, которое будет выводиться в шапке.
    // Тип: Строка.
    // Пример:
    // УниверсальныйОтчет.мНазваниеОтчета = «Название отчета»;
    УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним);

    Показать

    становится

    #Если Клиент Тогда
    ////////////////////////////////////////////////////////////­////////////////////
    // ПРОЦЕДУРЫ И ФУНКЦИИ НАЧАЛЬНОЙ НАСТРОЙКИ ОТЧЕТА
    // Процедура установки начальных настроек отчета с использованием текста запроса
    //
    Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт
    // Настройка общих параметров универсального отчета
    // Содержит название отчета, которое будет выводиться в шапке.
    // Тип: Строка.
    // Пример:
    // УниверсальныйОтчет.мНазваниеОтчета = «Название отчета»;
    УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним);
    

    Показать

    и так до конца модуля

    Reply
  81. Ёпрст

    А у меня пустые строки вообще не удаляются

    :(((

    Reply
  82. Ёпрст

    ни в 8.1 , ни в 8.2

    Reply
  83. Altair777

    (81) Ёпрст,

    я такое заметил на сервере 2008 R2 Enerprise SP1 64 bit

    а табуляторы после директив добавляются? 😉

    Reply
  84. Ёпрст

    (81) неа

    Reply
  85. Altair777

    (84) Ёпрст,

    в 2008 пустые строки не удаляются, зато табуляторы….

    #Если Клиент Тогда
    
    ////////////////////////////////////////////////////////////­////////////////////
    // ПРОЦЕДУРЫ И ФУНКЦИИ НАЧАЛЬНОЙ НАСТРОЙКИ ОТЧЕТА
    
    // Процедура установки начальных настроек отчета с использованием текста запроса
    //
    Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт
    
    // Настройка общих параметров универсального отчета
    
    // Содержит название отчета, которое будет выводиться в шапке.
    // Тип: Строка.
    // Пример:
    // УниверсальныйОтчет.мНазваниеОтчета = «Название отчета»;
    УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним);
    

    Показать

    Вин-7

    #Если Клиент Тогда
    ////////////////////////////////////////////////////////////­////////////////////
    // ПРОЦЕДУРЫ И ФУНКЦИИ НАЧАЛЬНОЙ НАСТРОЙКИ ОТЧЕТА
    // Процедура установки начальных настроек отчета с использованием текста запроса
    //
    Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт
    // Настройка общих параметров универсального отчета
    // Содержит название отчета, которое будет выводиться в шапке.
    // Тип: Строка.
    // Пример:
    // УниверсальныйОтчет.мНазваниеОтчета = «Название отчета»;
    УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним);
    

    Показать

    Reply
  86. Abadonna

    Всё! На сегодня оно меня уже достало. Завтра днем поработаю еще

    Reply
  87. Ёпрст

    (68) просто всё дело в названии версий..

    надо 911, или 112 ..тогда усё получится 🙂

    Reply
  88. МимохожийОднако

    Скачал. Работает без кракозябров.

    Для статистики: Win7 Проф 64-разр Sp1. Раскладка по умолчанию русская

    Reply
  89. Abadonna

    (85) Altair777, ха-ха-ха. Отформати этот модуль родным 1С-форматтером и получишь то же самое!

    Прога сама не форматит

    Reply
  90. Ёпрст

    Ну вот, в последней версии усё заработало, но, есть недочет..

    если втыкать НаСервере/НаКлиенте … курсор убегает вверх текста, ладно, этим пользоваться не буду.

    Reply
  91. Abadonna

    (90) Ёпрст, Прям чудеса с вашими «экзотическими» системами :))) У меня никуда не убегает, я сейчас как раз этой версией пользоваться стал. Вернее уже 4.1.1.2

    Reply
  92. Altair777

    (89) а слабо самому написать форматтер? 😉

    Reply
  93. Altair777

    (91)

    на моей вин-7 64 самая удачная была 3.1.1.1, а все остальное до 8.1.1.1+ …. фигня )

    Reply
  94. Abadonna

    (92) Altair777

    а слабо самому написать форматтер? 😉

    А на хрена? В плагине к Тоталу под 7.7 писал, а тут-то зачем?

    Reply
  95. Abadonna

    (90) Ёпрст, нашел в чем дело. Разнес по таймерам, а кое-что забыл… Там после вставки &НаСервере еще и форматирование работало, поэтому и прыгало вверх. Та же хрень и после вставки шаблонов. Качай сегодняшнюю

    (26/07) версию 4122, подправил

    Reply
  96. Ёпрст

    (95) ага, ща проверим.

    Reply
  97. Ёпрст

    А можешь еще сделать..»множественное» нажатие ?

    Чтоб, удерживая контрол и нажимая на «>» этот знак всегда вставлялся.. А то, «<>» неудобно вводить, приходится контрол отпускать-нажимать. Ловится только «одноразовое» нажатие.

    Reply
  98. mdie

    (97) Ёпрст, для этого придется переписать процедуру hook’а с проверкой текущего статуса нажатия клавиши. Странно , что изначально не было сделано.

    Вообще ради удобной вставки спецсимволов я бы посоветовал использовать вот это (и вообще с помощью софтины, которой это сделано, можно свои «плюшки» реализовать)

    Reply
  99. Abadonna

    (98) mdie,

    для этого придется переписать процедуру hook’а с проверкой текущего статуса нажатия клавиши. Странно , что изначально не было сделано.

    НЕ ТАМ НИКАКОГО ХУКА!!!! см. /99/

    Поэтому ни изначально, ни конечно статус не проверяется, проверяется:

    msg.message = WM_HOTKEY

    и

    HIWORD(msg.lParam) = КодТакойТоКлавиши

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *