Имя: Пароль:
1C
1С v8
Макрос в Конфигураторе 1С
,
0 LevelUP
 
13.06.17
17:28
Здравствуйте!
Мысль такая повесить на сочетания клавиш, например, копирование строки кода, в которой находится курсор. Ну и другие операции частые.
Интересно насколько это ускорит работу.
Подкиньте идеи как реализовать.
1 Лефмихалыч
 
13.06.17
17:28
снегопат
2 Волшебник
 
модератор
13.06.17
17:28
Копирование кода — главный источник ошибок.
3 LevelUP
 
13.06.17
17:29
(1) он же платный кажется
4 Вафель
 
13.06.17
17:30
(3) ну так и конфигуратор не бесплатный
5 LevelUP
 
13.06.17
17:30
может через AutoIT можно? Сделал маленький скрипт чтоб проверить, повесил в винде горячее сочетание на запуск ярлыка.
Но при этом запуске теряется фокус 1с окна.
6 Fragster
 
гуру
13.06.17
17:31
(0) ни на сколько
7 LevelUP
 
13.06.17
17:32
Ну я вот когда-то узнал про "[" и  "]". Так очень даже приятнее стало и быстрее.
8 LevelUP
 
13.06.17
17:33
а вообще дело даже не в скорости сколько в реализации. Интересно новенькое узнать.
9 Вафель
 
13.06.17
17:35
лучше джаву / js изучай
10 Волшебник
 
модератор
13.06.17
17:36
(8) погугли 1C:Enterprise Development Tools
11 drcrasher
 
13.06.17
18:20
например вот это сильно помогает:
//    Шаблоны для работы в конфигураторе с системами 1С:Предприятие версии 8.3
//    Последнюю версию шаблонов всегда можно найти тут: 1c.chistov.pro
//    С уважением, Павел Чистов
12 vvp91
 
13.06.17
18:41
(0)> копирование строки кода, в которой находится курсор
На строке стоишь, выделения нет, жмешь Ctrl+C.
Двигаешься на нужную строку, жмешь Ctrl+V.
13 LevelUP
 
13.06.17
19:12
(12) вот это спасибо! А то я все Shift+home ...+ end.
14 orefkov
 
13.06.17
19:14
(0)
По этой теме были уже готовые наработки на AutoIt, только найти сходу не могу.
Так же по такому принципу сделан TurboConf - http://catalog.mista.ru/public/180406/

(3)
Тю, что уж там платного? 2500? Даже средний шуруповёрт дороже стоит.

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

ЗЫ: копирование текущей строки в снегопате в скрипте textEditorExt.js повешено на Ctrl+. Равн окак и куча других команд.
15 LevelUP
 
13.06.17
19:14
(11) Спасибо. Посмотрю на досуге.
16 orefkov
 
13.06.17
19:14
+(14)
Ctrl+D
17 MaxS
 
13.06.17
20:16
Использую клавиатуру с доп кнопками с макросами, на которые навешаны в том числе и запуск макросов снегопата...
18 Ник080808
 
13.06.17
20:49
(7) Alt+38 = &
19 kuzyara
 
14.06.17
04:03
alt + 60 62 91 93

так и живем...
20 LevelUP
 
14.06.17
06:39
(18),(19) Здорово! запомню
21 LevelUP
 
14.06.17
06:43
Кстати относительно (7) я имел ввиду не квадратные скобки как символы а возможность навигации по структурам кода сочетаниями Ctrl+[  ,   Ctrl+]. Ну и если надо всю процедуру выделить, то Ctrl+Shift+].
22 SiAl-chel
 
14.06.17
08:40
(5) Делаешь скрипт, в нем пишешь бесконечный цикл, в скрипте прописываешь инициализацию двух сочетаний клавиш, на первое сочетание вешаешь функцию запуска нужных тебе действий, на вторую - прерывание цикла. После этого запускаешь скрипт, и он у тебя болтается в трее. При нажатии первого сочетания клавиш срабатывает твоя функция с нужными действиями в активном окне.
Если же твой вариант, то тогда перед нужными действиями надо найти окно Конфигуратора и его сделать активным.
23 ret-Phoenix
 
14.06.17
10:47
(0) Набор скриптов на Autohotkey уже давно есть и прекрасно работает, делает очень многое http://catalog.mista.ru/public/339035/

Но лучше сразу смотреть https://github.com/ret-Phoenix/v8CfgAddsAhk/tree/dev

Функционал постоянно наращивается. Почти все написано на OneScript (http://oscript.io/), AHK только для работы с хоткеями.
24 dezss
 
14.06.17
11:45
дирек, а потом <ctrl> + Q
25 Повелитель
 
14.06.17
12:18
(0) Разленились 1с-ники, один купил мышку с 12 кнопкам, макросы повесил, второй тоже что-то приделвывает )))

Обычные шаблоны от 1с ускоряют в несколько раз работу с кодингом.
26 Dzenn
 
гуру
14.06.17
13:00
(2) +1
27 MaxS
 
14.06.17
13:07
(25) Как шаблон от 1С ускорит операцию выделить всё и скопировать в буфер в тексте модуля одного конфигуратора и потом выделить всё вставить из буфера в другом конфигураторе?
Мышкой - два движения, 4 кнопки.
Клавиатурой - нажать минимум 10 клавиш, если окна в фокусе.
28 SiAl-chel
 
15.06.17
06:17
(27) Мышка - зло. :) Использование хоткеев вместо мышки здорово ускоряют работу. Мышедавы по лени - деграданты.
29 Morkovkinator
 
15.06.17
07:08
(28) Мышка - добро.:) Но только там, где основной ввод происходит мышкой, AutoCAD, например. В других случаях скорее зло.
30 1dvd
 
15.06.17
07:22
(27) CTRL+A CTRL+C ALT+TAB CTRL+V

Хотя, я предпочитаю CTRL+INS SHIFT+INS, но не суть...
Слабо представляю какой макрос или шаблон может в значительной степени ускорить эту опирацию
31 LordCMEPTb
 
15.06.17
07:51
Шаблоны решают проблемы с написанием одинакового кода. Проблема шаблонов в том, что они вставляют кусок закодированного текста с заранее определенными переменными именно в текущее место. А как научить шаблон анализировать процедуру, в которую вставляется кусок кода, добавлять часть текста после окончания текущей процедуры, не совсем понятно..

Поясню, что имеется в виду. Банальная вставка кода асинхронного вопроса запроса:

СтруктураПараметров = Новый Структура;
ОписаниеОповещения = Новый ОписаниеОповещения("<?"Имя процедуры обработчика">", ЭтотОбъект, СтруктураПараметров);
ПоказатьВопрос(ОписаниеОповещения, "<?>", РежимДиалогаВопрос.ДаНетОтмена, 60);

<?>// Процедура-обработчик результата ответа на вопрос.
//
// Параметры:
//    РезультатВопроса        - КодВозвратаДиалога    - Ответ на вопрос.
//    ДополнительныеПараметры    - Произвольный            - Дополнительные параметры.
//
&НаКлиенте
Процедура <?"Имя процедуры обработчика">(Знач РезультатВопроса, Знач ДополнительныеПараметры = Неопределено) Экспорт
    
    Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
        
    ИначеЕсли РезультатВопроса = КодВозвратаДиалога.Нет Тогда
        
    ИначеЕсли РезультатВопроса = КодВозвратаДиалога.Отмена Тогда
        
    КонецЕсли;
    
КонецПроцедуры

требует ввода новой процедуры обработчика ответа на вопрос, в то время как достаточно взять имя текущей процедуры и добавить "Завершение". Плюс кусок кода после комментария надо вручную переносить после конца текущей процедуры, ибо этот кусок вставляется в существующую.
32 MaxS
 
15.06.17
08:43
(28) Ничего нового для меня в этом нет. Знаю я таких энергичных. )) У меня тоже могли бы быть всякие сравнения, но в силу культуры я воздерживаюсь от крайних высказываний. :P
(30) Перед CTRL+V нужно CTRL+A

Все эти комбинации клавиш можно повесить на дополнительную кнопку мыши и клавиатуры.
У человека две руки, одна на клавиатуре, другая на мышке. Непосредственно набор длинного текста - это мизер по сравнению с другими операциями и потратить доли секунды, чтобы переложить правую руку на клавиатуру не составляет труда.
(31) Одинаковый код скорее всего уже был ранее написан и даже может быть в текущей конфигурации, поэтому на соседнем мониторе обычно открыта аналогичная конфигурация или БСП и т.п. скопипастил и поправил для текущей задачи. И это будет быстрее правки результата не совсем интеллектуального шаблона.
33 dezss
 
15.06.17
08:56
(28) мышка добро, но глупое, просто надо более интеллектуальную обработку ее действий...
даблклик, триплклик и т.п. надо лучше обрабатывать.
Если б в платформу подобное добавили, тогда от мыши было бы куда больше плюсов (что-то вроде четырекратного нажатия, выделяющего процедуру/функцию, например)
34 SiAl-chel
 
19.06.17
09:01
(32) Лет 18 назад работал оператором ПК, набивали заявки от покупателей в 1С ТиС 7.7 на слух. Скорость набора у тех, кто пользовался мышкой была в разы меньше, чем у тех (у меня), кто выучил хоткеи. Потому что мышкой еще нужно попасть в несколько пикселей, чтобы по "педальке" открылось окно подбора, а при помощи клавиш выходит несколько нажатий Tab и одно F4.
Да и перекидывание руки с клавиатуры на мышку и обратно тратит время. Так что если интерфейс рабочего места настроен грамотно, то и надобность в мышке почти отсутствует.
35 orefkov
 
19.06.17
09:45
(31)
Это примерно так https://snegopat.ru/video/vt_creator или https://snegopat.ru/video/newdoc что-ли?
36 MaxS
 
19.06.17
12:45
(34) Тема топика началась с обсуждением инструментов программиста. Вы же приводите пример оператора ПК, где действительно вся работа однообразна и все часто используемые однообразные операции можно найти или запрограммировать на клавиатуру.
Программист больше похож на художника, дизайнера, архитектора. И только клавиатурой не всегда удобно пользоваться. Например, простая операция - открыть обработку через файл-открыть, открыть код неосновной формы и открыть модуль объекта обработки. Мышкой удобнее и если трудно куда-то попасть, можно на той же мышке её кнопками убавить чувствительность.
37 LordCMEPTb
 
19.06.17
13:56
(35) Скорее всего да, что-то похожее, но мне скорее не хватает кнопки, которая в текущее место закинет новый код (это реализовано в шаблонах), возьмет имя текущей процедуры и добавит к ней "Завершение", после завершения текущей процедуры создаст новую с полученным заголовком, в которую вставит нужный код (этого через шаблоны не сделать).
38 MaxS
 
19.06.17
16:05
(37) Как вариант - написать код синхронный (по старинке) натравить на него штатный рефакторинг, который сделает все процедуры. ))

Макросов ИИ пока не хватает. Надиктовал в микрофон ТЗ, на утро разгребаешь сгенерированный код по стандартам 1С с использованием БСП и процедур конфигурации.
39 LordCMEPTb
 
20.06.17
09:50
(38) Хы. Однажды как-то пытался натравить типовой функционал преобразователя на функцию выбора файла. Преобразователь сказал, что он не в состоянии.

// Функция вызывает диалог открытия файла.
//
// Параметры:
//    ПутьКФайлу        - Строка    - Значение, в которое будет помещен новый путь.
//    РежимДиалога    - Строка    - Доступные значения:
//        - "ВыбратьФайл" для открытия файла;
//        - "СохранитьФайл" для сохранения файла;
//        - другое значение для выбора папки.
//    Заголовок        - Строка    - Заголовок окна.
//    Фильтр            - Строка    - Фильтр файлов, например:
//        - "Текстовый документ(*.txt)|*.txt|Текстовый документ с расширением txt в любом регистре|*.[tT][xX][tT]".
//        
//
// Возвращаемое значение:
//    Булево    - Истина, если файл был выбран,
//            - Ложь, если пользователь отменил выбор.
//
Функция ВыбратьФайл(ПутьКФайлу, Знач РежимДиалога = "ВыбратьФайл", Знач Заголовок = "", Знач Фильтр = "") Экспорт
    
    Если Не ПодключитьРасширениеРаботыСФайлами() Тогда
        УстановитьРасширениеРаботыСФайлами();
    КонецЕсли;
    
    РежимРаботыСФайлом = Истина;
    // Установим режим выбора файла
    Если РежимДиалога = "ВыбратьФайл" Тогда
        РежимВыбораДиалога = РежимДиалогаВыбораФайла.Открытие;
    ИначеЕсли РежимДиалога = "СохранитьФайл" Тогда
        РежимВыбораДиалога = РежимДиалогаВыбораФайла.Сохранение;
    Иначе // Остается только выбор каталога
        РежимВыбораДиалога = РежимДиалогаВыбораФайла.ВыборКаталога;
        РежимРаботыСФайлом = Ложь;
    КонецЕсли;
    
    // Инициализируем диалог выбора файла
    ДиалогВыбора = Новый ДиалогВыбораФайла(РежимВыбораДиалога);
    
    // Заполним основные реквизиты
    ДиалогВыбора.Заголовок    = Заголовок;
    ДиалогВыбора.Фильтр        = Фильтр;
    
    // Проверим заполнение пути к файлу
    Если Не ПустаяСтрока(ПутьКФайлу) Тогда
        // Попробуем найти файл по переданному пути
        СуществующийФайл = Новый Файл(ПутьКФайлу);
        Если СуществующийФайл.Существует() Тогда
            Если СуществующийФайл.ЭтоФайл() Тогда
                ДиалогВыбора.ПолноеИмяФайла    = СуществующийФайл.ИмяБезРасширения;
                ДиалогВыбора.Каталог        = СуществующийФайл.Путь;
            Иначе // Выбранный файл - каталог
                ДиалогВыбора.ПолноеИмяФайла    = "";
                ДиалогВыбора.Каталог        = СуществующийФайл.ПолноеИмя;
            КонецЕсли;
        Иначе // Файла не существует, определим по наличию "\" в конец
            Если Прав(ПутьКФайлу, 1) = "\" Тогда // Видимо каталог
                ДиалогВыбора.ПолноеИмяФайла    = "";
                ДиалогВыбора.Каталог        = СуществующийФайл.ПолноеИмя;
            Иначе // Подразумевался файл
                ДиалогВыбора.ПолноеИмяФайла    = СуществующийФайл.ИмяБезРасширения;
                ДиалогВыбора.Каталог        = СуществующийФайл.Путь;
            КонецЕсли;
        КонецЕсли;    
    КонецЕсли;
    
    // Отобразим диалог выбора для пользователя    
    Если ДиалогВыбора.Выбрать() Тогда
        Если РежимРаботыСФайлом Тогда
            ПутьКФайлу = ДиалогВыбора.ПолноеИмяФайла;
        Иначе // Работаем с папкой
            ПутьКФайлу = ДиалогВыбора.Каталог;
        КонецЕсли;
        // Сообщим об успехе
        Возврат Истина;    
    КонецЕсли;
    
    // Если дошли до сюда, значит что-то не удалось
    Возврат Ложь;
    
КонецФункции

В итоге ручным разбором у меня это вышло на 6 асинхронных немодальных процедур, в которых сейчас я уже не разберусь без комментариев, если надо будет внести изменения.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.