#Часто используемые конструкции ##Регулярные выражения
var objRegExp = tools_web.reg_exp_init();
//var objRegExp = new ActiveXObject('VBScript.RegExp');
objRegExp.Global = true;
objRegExp.IgnoreCase = true;
objRegExp.MultiLine = true;
//определяем паттерн
objRegExp.Pattern = "\\n";
//текст для разбора
var text = "dolor ipsum"
Поиск фрагментов строки, соответствующих заданному выражению
//метод Test возвращает true, если фрагмент, соответствующий выражению,
//в заданной строке найден, и false в противном случае
objRegExp.Test(text);
//Execute возвращает объект - последовательность фрагментов текста, совпавших с шаблоном
var mathes = objRegExp.Execute(text);
try{
var mathes = objRegExp.Execute(text);
return mathes.item(0).SubMatches(0);
}catch(exp){
return "";
}
//замена найденного
text = objRegExp.Replace(text, "fragment");
##Запросы к БД Пример sql запроса с объедиением нескольких таблиц, выборкой настраиваемого поля
var data = XQuery("
SELECT
c.id as id,
cs.fullname as fullname,
c.data.value('collaborator/custom_elems/custom_elem[name=\"GK_hire_date\"][1]/value', 'varchar(512)') as GK_hire_date,
c.data.value('collaborator/org_name', 'varchar(512)') as org_name,
c.data.value('collaborator/is_dismiss', 'bit') as is_dismiss
FROM collaborator as c
INNER JOIN collaborators as cs ON c.id=cs.id
INNER JOIN Positions as ps ON cs.position_id=ps.id
");
Запрос xQuery с фильтром по настраиваемому полю
var data = XQuery("for $elem in collaborators where doc-contains($elem/id,'wt_data','[collab_type=руководитель~string]') return $elem")
Запрос xQuery с поиском множества значений поля
var tests_id = [id1, id2];
var end_tests = XQuery("for $elem in test_learnings where MatchSome($elem/assessment_id,("+tests_id.join(",")+")) return $elem")
Выборка подчиненных для функцонального руководителя
//boss_type_id - id типа функц. руководителья
var users = ArraySelectDistinct( tools.get_all_sub_persons_by_func_manager_id(hr_id, "collaborator,subdivision,org,position", boss_type_id), "id")
Выборка сотрудников заданного подразделения
var users = tools.get_sub_person_ids_by_subdivision_id(sub_id);
#Манипуляции с объектами (карточками) Получение значения настраиваемого поля
var collDoc = OpenDoc(UrlFromDocID(coll_id));
var value = collDoc.TopElem.custom_elems.ObtainChildByKey("value").value;
Копирование данных из одного элемента в другой, включая дочерние элементы. Удобный способ создавать объекты по эталону.
elemDoc.TopElem.AssignElem(otherElemDoc);
А так удобно заполнять дочерние элементы:
//находим нужный дочерний элемент
fldTutor = docEvent.TopElem.tutors.ObtainChildByKey( id_сотрудника );
//fldTutor = docEvent.TopElem.collaborators.AddChild();
//заполняем этот элемент из карточки сотрудника
tools.common_filling( 'collaborator', fldTutor, id_сотрудника );
docEvent.Save();
#Присвоения отрицательного значения
//нужно присвоить переменной -1, в WT это можно сделать так
var num = 0-5;
//вывод
alert(StrSignedInt(num));
#Работа с файлами
Локальный url выглядит так x-local://wt/web/dir
, wt - директория с файлами сайта.
Чтобы получить абсолютный путь используем метод UrlToFilePath
#Работа с Url Формирование Url
link = UrlAppendPath( global_settings.settings.portal_base_url, '/view_doc.html?mode=career_reserve&object_id='+objDocSecID+'&doc_id='+doc_id );