Как видно из сабжа, речь пойдет об использовании автоподстановки при разработке. Почему то эта возможность в Администраторе Terrasoft CRM не широко нами используется, хотя ее использование значительно может облегчить написание кода, зачастую рутинного занятия. Как?
Приведу простой пример. Очень часто необходимо при выполнении длительных операций вставить "sand clock" ("часики"). "Как называется та функция, которая "часики делает?", - обычно я спрашиваю у коллег. Не все сразу вспомнят, я думаю (хотя, кто знает... :)) А кто нам мешает вставить в AutoComplete.cfg (см. в папке Settings) такую запись:
clocks
|Sand clock
=try {
= System.BeginProcessing();
= System.ProcessMessages();
= |
=} finally {
= System.EndProcessing();
=}
Теперь, если мне нужно, я набираю clocks, нажимаю комбинацию Shift + пробел и в результате в скрипт вставляется нужный мне текст.
Минусы: пока не придумал.
Плюсы: 1. Быстрее пишется код.
2. Не нужно держать в голове редкие функции, которые можно просто добавить в AutoComplete.cfg.
3. Добавив частые операции (см. ниже), Вы также избавляете себя от рутинного набора "надоевших" функций.
4. Меньшее количество ошибок при написании кода (надеюсь :)).
5. И, что немаловажно, используя автоподстановку, поддерживается общий стиль написания кода, т.к. все отступы задаются в тексте автоподстановки.
Если согласны с этой идеей, можете модифицировать "свои" AutoComplete.cfg как Вам будет угодно, лишь бы Вам было удобно.
Теперь, как все это "добро" реализовать:
- заходите в папку Settings
- открываете AutoComplete.cfg
- 1-я строка - кодовое слово функционала или первые буквы функции
- 2-я строка - знак табуляции "|" и описание автоподстановки
- дальше, начиная каждую строчку со знака "=", сам текст автоподстановки. Если необходимо, чтобы после автоподстановки курсор установился в определенную позицию, в этом месте текста необходимо вставить "|".
Приведу добавленные у себя функции:
apply
|Apply dataset filter
=ApplyDatasetFilter(Dataset, 'FilterName', Value, true);
applys
|Apply select query filter
=ApplySelectQueryFilter(SelectQuery, 'FilterName', Value, true);
disable
|Enable dataset filters
=EnableDatasetFilters(Dataset, false);
enable
|Disable dataset filters
=EnableDatasetFilters(Dataset, true);
goto
|GotoWorkspace('WorkspaceUSI', IDValue);
=GotoWorkspace('WorkspaceUSI', IDValue);
new
|GetNewItemByUSI
=Services.GetNewItemByUSI('|');
open
|Dataset opening
=var Dataset = GetSingleItemByCode('|');
=Dataset.Close();
=EnableDatasetFilters(Dataset, false);
=ApplyDatasetFilter(Dataset, 'FilterName', Value, true);
=Dataset.Open();
opens
|Get dataset by select query service
=var SelectQuery = GetSingleItemByCode('|');
=ApplySelectQueryFilter(SelectQuery, 'FilterName', Value, true);
=var Dataset = SelectQuery.Open();
single
|GetSingleItemByCode
=GetSingleItemByCode('|');
try
|try {} finally {}
=try {
= |
=} finally {
= |
=}
tryc
|try {} catch {}
=try {
= |
=} catch(e) {
= System.MessageDialog(e.message, mdtWarning, mdbOK, 0);
=}
По-сути, никто нам не мешает вставлять целые реализации функционала или отдельные функции. Прикольно?