Когда мы разрабатывали CRM 4, то нам очень не нравилось постоянная публикация формы, и прочее для добавления и редактирования скриптов. Мы делали следующее.
В папку сайта ISV клали файл entitynameonload.js (вместо entityname может быть любой идентификатор)
На Onload формы интересующей нас сущности вешали следующий скрипт.
X++:
include = function (src) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = src+"?"+new Date().toString();
document.getElementsByTagName('head')[0].appendChild(script);
}
include('/isv/entitynameonload.js');
Что нам это даёт. Теперь если мы будем править файл entitynameonload.js, то изменения попадают на форму. Не нужно открывать кастомизацию и прочее.
Здесь даже можно переопределять события OnChange для полей.
X++:
crmForm.all.new_field.onchange = function ()
{
alert('change new_field');
}
Еще удобно в этом файле вызывать функции include для подключения других файлов. Таким образом можно разбивать скриптовые модификации на отдельные файлы. А не писать все в один большой онлоад.
Минусы этого подхода:
При переносе к клиенты Вы должны перенести и файлы. Не только кастомизацию. Но мне кажется это не настолько существенный минус, как время и нервый программиста.
Был интересный случай. одновременно одну форму разрабатывали 2 человека. При публикации этой формы каждый затирал изменения другого. При подобном подходе это невозможно, т.к каждый разрабатывает в отдльном файле.