l0bsterssg

node.js static responsive blog post generator
Log | Files | Refs | README

1c.js (64571B)


      1 /*
      2 Language: 1C:Enterprise
      3 Author: Stanislav Belov <stbelov@gmail.com>
      4 Description: built-in language 1C:Enterprise (v7, v8)
      5 Category: enterprise
      6 */
      7 
      8 function _1c(hljs) {
      9 
     10   // общий паттерн для определения идентификаторов
     11   var UNDERSCORE_IDENT_RE = '[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+';
     12 
     13   // v7 уникальные ключевые слова, отсутствующие в v8 ==> keyword
     14   var v7_keywords =
     15   'далее ';
     16 
     17   // v8 ключевые слова ==> keyword
     18   var v8_keywords =
     19   'возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли ' +
     20   'конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ';
     21 
     22   // keyword : ключевые слова
     23   var KEYWORD = v7_keywords + v8_keywords;
     24 
     25   // v7 уникальные директивы, отсутствующие в v8 ==> meta-keyword
     26   var v7_meta_keywords =
     27   'загрузитьизфайла ';
     28 
     29   // v8 ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях ==> meta-keyword
     30   var v8_meta_keywords =
     31   'вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер ' +
     32   'наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед ' +
     33   'после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент ';
     34 
     35   // meta-keyword : ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях
     36   var METAKEYWORD = v7_meta_keywords + v8_meta_keywords;
     37 
     38   // v7 системные константы ==> built_in
     39   var v7_system_constants =
     40   'разделительстраниц разделительстрок символтабуляции ';
     41 
     42   // v7 уникальные методы глобального контекста, отсутствующие в v8 ==> built_in
     43   var v7_global_context_methods =
     44   'ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов ' +
     45   'датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя ' +
     46   'кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца ' +
     47   'коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид ' +
     48   'назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца ' +
     49   'начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов ' +
     50   'основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута ' +
     51   'получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта ' +
     52   'префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына ' +
     53   'рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента ' +
     54   'счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон ';
     55 
     56   // v8 методы глобального контекста ==> built_in
     57   var v8_global_context_methods =
     58   'acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока ' +
     59   'xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ' +
     60   'ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации ' +
     61   'выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода ' +
     62   'деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы ' +
     63   'загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации ' +
     64   'заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию ' +
     65   'значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла ' +
     66   'изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке ' +
     67   'каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку ' +
     68   'кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты ' +
     69   'конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы ' +
     70   'копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти ' +
     71   'найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы ' +
     72   'началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя ' +
     73   'начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты ' +
     74   'начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов ' +
     75   'начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя ' +
     76   'начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога ' +
     77   'начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией ' +
     78   'начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы ' +
     79   'номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения ' +
     80   'обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении ' +
     81   'отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения ' +
     82   'открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально ' +
     83   'отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа ' +
     84   'перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту ' +
     85   'подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения ' +
     86   'подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки ' +
     87   'показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение ' +
     88   'показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя ' +
     89   'получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса ' +
     90   'получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора ' +
     91   'получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса ' +
     92   'получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации ' +
     93   'получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла ' +
     94   'получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации ' +
     95   'получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления ' +
     96   'получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу ' +
     97   'получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы ' +
     98   'получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет ' +
     99   'получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима ' +
    100   'получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения ' +
    101   'получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути ' +
    102   'получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы ' +
    103   'получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю ' +
    104   'получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных ' +
    105   'получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию ' +
    106   'получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище ' +
    107   'поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода ' +
    108   'представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение ' +
    109   'прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока ' +
    110   'рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных ' +
    111   'раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени ' +
    112   'смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить ' +
    113   'состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс ' +
    114   'строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений '+
    115   'стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах ' +
    116   'текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации ' +
    117   'текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы ' +
    118   'удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим ' +
    119   'установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту ' +
    120   'установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных ' +
    121   'установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации ' +
    122   'установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения ' +
    123   'установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования ' +
    124   'установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима ' +
    125   'установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим ' +
    126   'установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией ' +
    127   'установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы ' +
    128   'установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса ' +
    129   'формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища ';
    130 
    131   // v8 свойства глобального контекста ==> built_in
    132   var v8_global_context_property =
    133   'wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы ' +
    134   'внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль ' +
    135   'документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты ' +
    136   'историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений ' +
    137   'отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик ' +
    138   'планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок ' +
    139   'рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений ' +
    140   'регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа ' +
    141   'средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек ' +
    142   'хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков ' +
    143   'хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ';
    144 
    145   // built_in : встроенные или библиотечные объекты (константы, классы, функции)
    146   var BUILTIN =
    147   v7_system_constants +
    148   v7_global_context_methods + v8_global_context_methods +
    149   v8_global_context_property;
    150 
    151   // v8 системные наборы значений ==> class
    152   var v8_system_sets_of_values =
    153   'webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля ';
    154 
    155   // v8 системные перечисления - интерфейсные ==> class
    156   var v8_system_enums_interface =
    157   'автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий ' +
    158   'анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы ' +
    159   'вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы ' +
    160   'виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя ' +
    161   'видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение ' +
    162   'горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы ' +
    163   'группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания ' +
    164   'интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки ' +
    165   'используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы ' +
    166   'источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева ' +
    167   'начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ' +
    168   'ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме ' +
    169   'отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы ' +
    170   'отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы ' +
    171   'отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы ' +
    172   'отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска ' +
    173   'отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования ' +
    174   'отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта ' +
    175   'отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы ' +
    176   'поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы ' +
    177   'поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы ' +
    178   'положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы ' +
    179   'положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы ' +
    180   'положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском ' +
    181   'положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы ' +
    182   'размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта ' +
    183   'режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты ' +
    184   'режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения ' +
    185   'режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра ' +
    186   'режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения ' +
    187   'режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы ' +
    188   'режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки ' +
    189   'режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание ' +
    190   'сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы ' +
    191   'способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление ' +
    192   'статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы ' +
    193   'типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы ' +
    194   'типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления ' +
    195   'типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы ' +
    196   'типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы ' +
    197   'типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений ' +
    198   'типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы ' +
    199   'типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы ' +
    200   'типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы ' +
    201   'факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени ' +
    202   'форматкартинки ширинаподчиненныхэлементовформы ';
    203 
    204   // v8 системные перечисления - свойства прикладных объектов ==> class
    205   var v8_system_enums_objects_properties =
    206   'виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса ' +
    207   'использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения ' +
    208   'использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента ';
    209 
    210   // v8 системные перечисления - планы обмена ==> class
    211   var v8_system_enums_exchange_plans =
    212   'авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных ';
    213 
    214   // v8 системные перечисления - табличный документ ==> class
    215   var v8_system_enums_tabular_document =
    216   'использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы ' +
    217   'положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента ' +
    218   'способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента ' +
    219   'типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента ' +
    220   'типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы ' +
    221   'типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента ' +
    222   'типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц ';
    223 
    224   // v8 системные перечисления - планировщик ==> class
    225   var v8_system_enums_sheduler =
    226   'отображениевремениэлементовпланировщика ';
    227 
    228   // v8 системные перечисления - форматированный документ ==> class
    229   var v8_system_enums_formatted_document =
    230   'типфайлаформатированногодокумента ';
    231 
    232   // v8 системные перечисления - запрос ==> class
    233   var v8_system_enums_query =
    234   'обходрезультатазапроса типзаписизапроса ';
    235 
    236   // v8 системные перечисления - построитель отчета ==> class
    237   var v8_system_enums_report_builder =
    238   'видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов ';
    239 
    240   // v8 системные перечисления - работа с файлами ==> class
    241   var v8_system_enums_files =
    242   'доступкфайлу режимдиалогавыборафайла режимоткрытияфайла ';
    243 
    244   // v8 системные перечисления - построитель запроса ==> class
    245   var v8_system_enums_query_builder =
    246   'типизмеренияпостроителязапроса ';
    247 
    248   // v8 системные перечисления - анализ данных ==> class
    249   var v8_system_enums_data_analysis =
    250   'видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных ' +
    251   'типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений ' +
    252   'типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций ' +
    253   'типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных ' +
    254   'типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных ' +
    255   'типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений ';
    256 
    257   // v8 системные перечисления - xml, json, xs, dom, xdto, web-сервисы ==> class
    258   var v8_system_enums_xml_json_xs_dom_xdto_ws =
    259   'wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto ' +
    260   'действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs ' +
    261   'исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs ' +
    262   'методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ' +
    263   'ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson ' +
    264   'типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs ' +
    265   'форматдатыjson экранированиесимволовjson ';
    266 
    267   // v8 системные перечисления - система компоновки данных ==> class
    268   var v8_system_enums_data_composition_system =
    269   'видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных ' +
    270   'расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных ' +
    271   'расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных ' +
    272   'расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных ' +
    273   'типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных ' +
    274   'типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных ' +
    275   'типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных ' +
    276   'расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных ' +
    277   'режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных ' +
    278   'режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных '+
    279   'вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных ' +
    280   'использованиеусловногооформлениякомпоновкиданных ';
    281 
    282   // v8 системные перечисления - почта ==> class
    283   var v8_system_enums_email =
    284   'важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения ' +
    285   'способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты ' +
    286   'статусразборапочтовогосообщения ';
    287 
    288   // v8 системные перечисления - журнал регистрации ==> class
    289   var v8_system_enums_logbook =
    290   'режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации ';
    291 
    292   // v8 системные перечисления - криптография ==> class
    293   var v8_system_enums_cryptography =
    294   'расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии ' +
    295   'типхранилищасертификатовкриптографии ';
    296 
    297   // v8 системные перечисления - ZIP ==> class
    298   var v8_system_enums_zip =
    299   'кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip ' +
    300   'режимсохраненияпутейzip уровеньсжатияzip ';
    301 
    302   // v8 системные перечисления -
    303   // Блокировка данных, Фоновые задания, Автоматизированное тестирование,
    304   // Доставляемые уведомления, Встроенные покупки, Интернет, Работа с двоичными данными ==> class
    305   var v8_system_enums_other =
    306   'звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных ' +
    307   'сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp ';
    308 
    309   // v8 системные перечисления - схема запроса ==> class
    310   var v8_system_enums_request_schema =
    311   'направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса ' +
    312   'типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса ';
    313 
    314   // v8 системные перечисления - свойства объектов метаданных ==> class
    315   var v8_system_enums_properties_of_metadata_objects =
    316   'httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления ' +
    317   'видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование ' +
    318   'использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения ' +
    319   'использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита ' +
    320   'назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных ' +
    321   'оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи ' +
    322   'основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении ' +
    323   'периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений ' +
    324   'повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение ' +
    325   'разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита '+
    326   'режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности ' +
    327   'режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов ' +
    328   'режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса ' +
    329   'режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов ' +
    330   'сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования ' +
    331   'типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса ' +
    332   'типномерадокумента типномеразадачи типформы удалениедвижений ';
    333 
    334   // v8 системные перечисления - разные ==> class
    335   var v8_system_enums_differents =
    336   'важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения ' +
    337   'вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки ' +
    338   'видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак ' +
    339   'использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога ' +
    340   'кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных ' +
    341   'отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения ' +
    342   'режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных ' +
    343   'способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter ' +
    344   'типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты';
    345 
    346   // class: встроенные наборы значений, системные перечисления (содержат дочерние значения, обращения к которым через разыменование)
    347   var CLASS =
    348   v8_system_sets_of_values +
    349   v8_system_enums_interface +
    350   v8_system_enums_objects_properties +
    351   v8_system_enums_exchange_plans +
    352   v8_system_enums_tabular_document +
    353   v8_system_enums_sheduler +
    354   v8_system_enums_formatted_document +
    355   v8_system_enums_query +
    356   v8_system_enums_report_builder +
    357   v8_system_enums_files +
    358   v8_system_enums_query_builder +
    359   v8_system_enums_data_analysis +
    360   v8_system_enums_xml_json_xs_dom_xdto_ws +
    361   v8_system_enums_data_composition_system +
    362   v8_system_enums_email +
    363   v8_system_enums_logbook +
    364   v8_system_enums_cryptography +
    365   v8_system_enums_zip +
    366   v8_system_enums_other +
    367   v8_system_enums_request_schema +
    368   v8_system_enums_properties_of_metadata_objects +
    369   v8_system_enums_differents;
    370 
    371   // v8 общие объекты (у объектов есть конструктор, экземпляры создаются методом НОВЫЙ) ==> type
    372   var v8_shared_object =
    373   'comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs ' +
    374   'блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема ' +
    375   'географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма ' +
    376   'диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания ' +
    377   'диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление ' +
    378   'записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom ' +
    379   'запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта ' +
    380   'интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs ' +
    381   'использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных ' +
    382   'итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла ' +
    383   'компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных ' +
    384   'конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных ' +
    385   'макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson ' +
    386   'обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs ' +
    387   'объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации ' +
    388   'описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных ' +
    389   'описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs ' +
    390   'определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom ' +
    391   'определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных ' +
    392   'параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных ' +
    393   'полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных ' +
    394   'построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml ' +
    395   'процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент ' +
    396   'процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml ' +
    397   'результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto ' +
    398   'сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows ' +
    399   'сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш ' +
    400   'сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент ' +
    401   'текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток ' +
    402   'фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs ' +
    403   'фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs ' +
    404   'фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs ' +
    405   'фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент ' +
    406   'фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла ' +
    407   'чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных ';
    408 
    409   // v8 универсальные коллекции значений ==> type
    410   var v8_universal_collection =
    411   'comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура ' +
    412   'фиксированноесоответствие фиксированныймассив ';
    413 
    414   // type : встроенные типы
    415   var TYPE =
    416   v8_shared_object +
    417   v8_universal_collection;
    418 
    419   // literal : примитивные типы
    420   var LITERAL = 'null истина ложь неопределено';
    421 
    422   // number : числа
    423   var NUMBERS = hljs.inherit(hljs.NUMBER_MODE);
    424 
    425   // string : строки
    426   var STRINGS = {
    427     className: 'string',
    428     begin: '"|\\|', end: '"|$',
    429     contains: [{begin: '""'}]
    430   };
    431 
    432   // number : даты
    433   var DATE = {
    434     begin: "'", end: "'", excludeBegin: true, excludeEnd: true,
    435     contains: [
    436       {
    437         className: 'number',
    438         begin: '\\d{4}([\\.\\\\/:-]?\\d{2}){0,5}'
    439       }
    440     ]
    441   };
    442 
    443   // comment : комментарии
    444   var COMMENTS = hljs.inherit(hljs.C_LINE_COMMENT_MODE);
    445 
    446   // meta : инструкции препроцессора, директивы компиляции
    447   var META = {
    448     className: 'meta',
    449 
    450     begin: '#|&', end: '$',
    451     keywords: {
    452       $pattern: UNDERSCORE_IDENT_RE,
    453       'meta-keyword': KEYWORD + METAKEYWORD
    454     },
    455     contains: [
    456       COMMENTS
    457     ]
    458   };
    459 
    460   // symbol : метка goto
    461   var SYMBOL = {
    462     className: 'symbol',
    463     begin: '~', end: ';|:', excludeEnd: true
    464   };
    465 
    466   // function : объявление процедур и функций
    467   var FUNCTION = {
    468     className: 'function',
    469     variants: [
    470       {begin: 'процедура|функция', end: '\\)', keywords: 'процедура функция'},
    471       {begin: 'конецпроцедуры|конецфункции', keywords: 'конецпроцедуры конецфункции'}
    472     ],
    473     contains: [
    474       {
    475         begin: '\\(', end: '\\)', endsParent : true,
    476         contains: [
    477           {
    478             className: 'params',
    479             begin: UNDERSCORE_IDENT_RE, end: ',', excludeEnd: true, endsWithParent: true,
    480             keywords: {
    481               $pattern: UNDERSCORE_IDENT_RE,
    482               keyword: 'знач',
    483               literal: LITERAL
    484             },
    485             contains: [
    486               NUMBERS,
    487               STRINGS,
    488               DATE
    489             ]
    490           },
    491           COMMENTS
    492         ]
    493       },
    494       hljs.inherit(hljs.TITLE_MODE, {begin: UNDERSCORE_IDENT_RE})
    495     ]
    496   };
    497 
    498   return {
    499     name: '1C:Enterprise',
    500     case_insensitive: true,
    501     keywords: {
    502       $pattern: UNDERSCORE_IDENT_RE,
    503       keyword: KEYWORD,
    504       built_in: BUILTIN,
    505       class: CLASS,
    506       type: TYPE,
    507       literal: LITERAL
    508     },
    509     contains: [
    510       META,
    511       FUNCTION,
    512       COMMENTS,
    513       SYMBOL,
    514       NUMBERS,
    515       STRINGS,
    516       DATE
    517     ]
    518   }
    519 }
    520 
    521 module.exports = _1c;