diff --git a/src/test_compare.html b/src/test_compare.html
new file mode 100644
index 0000000..cdd1de0
--- /dev/null
+++ b/src/test_compare.html
@@ -0,0 +1,18526 @@
+
+
+
+
+ Test BSL-editor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test_snip.js b/src/test_snip.js
new file mode 100644
index 0000000..695e472
--- /dev/null
+++ b/src/test_snip.js
@@ -0,0 +1,3197 @@
+
+describe("Проверка автокомлита и подсказок редактора кода", function () {
+
+ let urlParams = new URLSearchParams(window.location.search);
+ let slow = urlParams.get('slow');
+
+ if (slow)
+ mocha.slow(parseInt(slow));
+
+ let st1 = [
+ '{1,',
+ '{3,',
+ '{"Стандартные",1,0,"",""},',
+ '{18,',
+ '{"Управляющие",1,0,"",""},',
+ '{0,',
+ '{"Если",0,0,"Если","Если ""Условие""> Тогда',
+ '',
+ ' >',
+ '',
+ 'КонецЕсли;"}',
+ '},',
+ '{0,',
+ '{"ЕслиИначе",0,0,"Если","Если ""Условие""> Тогда',
+ '',
+ ' >',
+ '',
+ 'Иначе',
+ '',
+ ' ',
+ '',
+ 'КонецЕсли;"}',
+ '},',
+ '{0,',
+ '{"Пока",0,0,"Пока","Пока ""Условие""> Цикл',
+ '',
+ ' >',
+ '',
+ 'КонецЦикла;"}',
+ '},',
+ '{0,',
+ '{"Для",0,0,"Для","Для ""Счетчик""> По ""Ограничение""> Цикл',
+ '',
+ ' >',
+ '',
+ 'КонецЦикла;"}',
+ '},',
+ '{0,',
+ '{"Для каждого",0,0,"Для[ Каждого]","Для каждого ""Переменная""> Из ""Коллекция""> Цикл',
+ '',
+ ' >',
+ '',
+ 'КонецЦикла;"}',
+ '},',
+ '{0,',
+ '{"Процедура",0,0,"Проц[едура]","Процедура ""Имя процедуры"">()',
+ '',
+ ' >',
+ '',
+ 'КонецПроцедуры',
+ '"}',
+ '},',
+ '{0,',
+ '{"Процедура (с заголовком)",0,0,"Проц[едура]","// <Описание процедуры>',
+ '//',
+ '// Параметры:',
+ '// <Параметр1> - <Тип.Вид> - <описание параметра>',
+ '// <продолжение описания параметра>',
+ '// <Параметр2> - <Тип.Вид> - <описание параметра>',
+ '// <продолжение описания параметра>',
+ '//',
+ 'Процедура ""Имя процедуры"">()',
+ '',
+ ' >',
+ '',
+ 'КонецПроцедуры // ""Имя процедуры"">()',
+ '"}',
+ '},',
+ '{0,',
+ '{"Процедура модуля формы",0,0,"Проц[едура]","// <Описание процедуры>',
+ '//',
+ '// Параметры:',
+ '// <Параметр1> - <Тип.Вид> - <описание параметра>',
+ '// <продолжение описания параметра>',
+ '// <Параметр2> - <Тип.Вид> - <описание параметра>',
+ '// <продолжение описания параметра>',
+ '//',
+ '&""Выберите директиву компиляции"", ВыборВарианта, ""НаКлиенте"", ""НаКлиенте"", ""НаСервере"", ""НаСервере"", ""НаСервереБезКонтекста"", ""НаСервереБезКонтекста"", ""НаКлиентеНаСервереБезКонтекста"", ""НаКлиентеНаСервереБезКонтекста"">',
+ 'Процедура ""Имя процедуры"">()',
+ '',
+ ' >',
+ '',
+ 'КонецПроцедуры // ""Имя процедуры"">()',
+ '"}',
+ '},',
+ '{0,',
+ '{"Процедура модуля команды",0,0,"Проц[едура]","// <Описание процедуры>',
+ '//',
+ '// Параметры:',
+ '// <Параметр1> - <Тип.Вид> - <описание параметра>',
+ '// <продолжение описания параметра>',
+ '// <Параметр2> - <Тип.Вид> - <описание параметра>',
+ '// <продолжение описания параметра>',
+ '//',
+ '&""Выберите директиву компиляции"", ВыборВарианта, ""НаКлиенте"", ""НаКлиенте"", ""НаСервере"", ""НаСервере"", ""НаКлиентеНаСервере"", ""НаКлиентеНаСервере"">',
+ 'Процедура ""Имя процедуры"">()',
+ '',
+ ' >',
+ '',
+ 'КонецПроцедуры // ""Имя процедуры"">()',
+ '"}',
+ '},',
+ '{0,',
+ '{"Функция",0,0,"Функ[ция]","Функция ""Имя функции"">()',
+ '',
+ ' >',
+ '',
+ 'КонецФункции // ""Имя функции"">()',
+ '"}',
+ '},',
+ '{0,',
+ '{"Функция (с заголовком)",0,0,"Функ[ция]","// <Описание функции>',
+ '//',
+ '// Параметры:',
+ '// <Параметр1> - <Тип.Вид> - <описание параметра>',
+ '// <продолжение описания параметра>',
+ '// <Параметр2> - <Тип.Вид> - <описание параметра>',
+ '// <продолжение описания параметра>',
+ '//',
+ '// Возвращаемое значение:',
+ '// <Тип.Вид> - <описание возвращаемого значения>',
+ '//',
+ 'Функция ""Имя функции"">()',
+ '',
+ ' >',
+ '',
+ 'КонецФункции // ""Имя функции"">()',
+ '"}',
+ '},',
+ '{0,',
+ '{"Функция модуля формы",0,0,"Функ[ция]","// <Описание функции>',
+ '//',
+ '// Параметры:',
+ '// <Параметр1> - <Тип.Вид> - <описание параметра>',
+ '// <продолжение описания параметра>',
+ '// <Параметр2> - <Тип.Вид> - <описание параметра>',
+ '// <продолжение описания параметра>',
+ '//',
+ '// Возвращаемое значение:',
+ '// <Тип.Вид> - <описание возвращаемого значения>',
+ '//',
+ '&""Выберите директиву компиляции"", ВыборВарианта, ""НаКлиенте"", ""НаКлиенте"", ""НаСервере"", ""НаСервере"", ""НаСервереБезКонтекста"", ""НаСервереБезКонтекста"", ""НаКлиентеНаСервереБезКонтекста"", ""НаКлиентеНаСервереБезКонтекста"">',
+ 'Функция ""Имя функции"">()',
+ '',
+ ' >',
+ '',
+ 'КонецФункции // ""Имя функции"">()',
+ '"}',
+ '},',
+ '{0,',
+ '{"Функция модуля команды",0,0,"Функ[ция]","// <Описание функции>',
+ '//',
+ '// Параметры:',
+ '// <Параметр1> - <Тип.Вид> - <описание параметра>',
+ '// <продолжение описания параметра>',
+ '// <Параметр2> - <Тип.Вид> - <описание параметра>',
+ '// <продолжение описания параметра>',
+ '//',
+ '// Возвращаемое значение:',
+ '// <Тип.Вид> - <описание возвращаемого значения>',
+ '//',
+ '&""Выберите директиву компиляции"", ВыборВарианта, ""НаКлиенте"", ""НаКлиенте"", ""НаСервере"", ""НаСервере"", ""НаКлиентеНаСервере"", ""НаКлиентеНаСервере"">',
+ 'Функция ""Имя функции"">()',
+ '',
+ ' >',
+ '',
+ 'КонецФункции // ""Имя функции"">()',
+ '"}',
+ '},',
+ '{0,',
+ '{"Возврат",0,0,"","Возврат;>"}',
+ '},',
+ '{0,',
+ '{"Попытка",0,0,"Попы[тка]","Попытка',
+ '',
+ ' >',
+ '',
+ 'Исключение',
+ '',
+ 'КонецПопытки;"}',
+ '},',
+ '{0,',
+ '{"Директива компиляции",0,0,"Дирек[тива]","&""Выберите директиву компиляции"", ВыборВарианта, ""НаКлиенте"", ""НаКлиенте"", ""НаСервере"", ""НаСервере"", ""НаСервереБезКонтекста"", ""НаСервереБезКонтекста"", ""НаКлиентеНаСервере"", ""НаКлиентеНаСервере"", ""НаКлиентеНаСервереБезКонтекста"", ""НаКлиентеНаСервереБезКонтекста"">"}',
+ '},',
+ '{0,',
+ '{"Инструкция Если",0,0,"Инстр[укция]","#Если ""Выберите инструкцию препроцессора"", ВыборВарианта, ""Сервер"", ""Сервер"", ""Клиент"", ""Клиент"", ""ТонкийКлиент"", ""ТонкийКлиент"", ""ВебКлиент"", ""ВебКлиент"", ""ВнешнееСоединение"", ""ВнешнееСоединение"", ""ТолстыйКлиентУправляемоеПриложение"", ""ТолстыйКлиентУправляемоеПриложение"", ""ТолстыйКлиентОбычноеПриложение"", ""ТолстыйКлиентОбычноеПриложение""> Тогда',
+ ' >',
+ '#КонецЕсли"}',
+ '},',
+ '{0,',
+ '{"Инструкция Область",0,0,"#Обл[асть]","#Область >',
+ ' ',
+ '#КонецОбласти"}',
+ '}',
+ '},',
+ '{18,',
+ '{"Прикладные",1,0,"",""},',
+ '{0,',
+ '{"Перечисление",0,1,"Переч[исление]","ПредопределенноеЗначение(""Перечисление.""Выберите значение перечисления"", ЗначениеПеречисления>"")"}',
+ '},',
+ '{2,',
+ '{"Функциональные опции",1,0,"",""},',
+ '{0,',
+ '{"Получить функциональную опцию",0,1,"Функ[циональная опция]","ПолучитьФункциональнуюОпцию(""""Выберите функциональную опцию"", ОбъектМетаданных, ""ФункциональнаяОпция"">"")"}',
+ '},',
+ '{0,',
+ '{"Получить функциональную опцию интерфейса",0,1,"Функ[циональная опция]","ПолучитьФункциональнуюОпциюИнтерфейса(""""Выберите функциональную опцию"", ОбъектМетаданных, ""ФункциональнаяОпция"">"")"}',
+ '}',
+ '},',
+ '{4,',
+ '{"Общие формы",1,0,"",""},',
+ '{0,',
+ '{"Открыть общую форму",0,0,"Открыть[Форму]","ОткрытьФорму(""ОбщаяФорма.""Выберите общую форму"", ОбъектМетаданных, ""ОбщаяФорма"">"");"}',
+ '},',
+ '{0,',
+ '{"Открыть общую форму (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'ОткрытьФорму(""ОбщаяФорма.""Выберите общую форму"", ОбъектМетаданных, ""ОбщаяФорма"">"", ПараметрыФормы);"}',
+ '},',
+ '{0,',
+ '{"Получить общую форму",0,0,"Получить[Форму]","ПолучитьФорму(""ОбщаяФорма.""Выберите общую форму"", ОбъектМетаданных, ""ОбщаяФорма"">"");"}',
+ '},',
+ '{0,',
+ '{"Получить общую форму (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'Форма = ПолучитьФорму(""ОбщаяФорма.""Выберите общую форму"", ОбъектМетаданных, ""ОбщаяФорма"">"");',
+ '"}',
+ '}',
+ '},',
+ '{5,',
+ '{"Планы обмена",1,0,"",""},',
+ '{0,',
+ '{"Открыть форму плана обмена",0,0,"Открыть[Форму]","ОткрытьФорму(""ПланОбмена.""Выберите план обмена"", ПланОбмена>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">"");"}',
+ '},',
+ '{0,',
+ '{"Открыть форму плана обмена (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'ОткрытьФорму(""ПланОбмена.""Выберите план обмена"", ПланОбмена>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);"}',
+ '},',
+ '{0,',
+ '{"Получить форму плана обмена",0,0,"Получить[Форму]","ПолучитьФорму(""ПланОбмена.""Выберите план обмена"", ПланОбмена>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">"");"}',
+ '},',
+ '{0,',
+ '{"Получить форму плана обмена (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'Форма = ПолучитьФорму(""ПланОбмена.""Выберите план обмена"", ПланОбмена>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);',
+ '"}',
+ '},',
+ '{0,',
+ '{"Обход элементов",0,0,"","Выборка = ПланыОбмена."""", ПланОбмена>.Выбрать();',
+ '',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ ' >',
+ '',
+ 'КонецЦикла;"}',
+ '}',
+ '},',
+ '{3,',
+ '{"Константы",1,0,"",""},',
+ '{0,',
+ '{"Получить/установить",0,0,"Конст[анты]","Константы."""", Константа>.""Выбор метода"", ВыборВарианта, ""Получить"", ""Получить"", ""Установить"", ""Установить"">()"}',
+ '},',
+ '{0,',
+ '{"Установить",0,0,"","Константы."""", Константа>.Установить(>);"}',
+ '},',
+ '{0,',
+ '{"Получить",0,0,"","Константы."""", Константа>.Получить()"}',
+ '}',
+ '},',
+ '{6,',
+ '{"Справочники",1,0,"",""},',
+ '{0,',
+ '{"Открыть форму справочника",0,0,"Открыть[Форму]","ОткрытьФорму(""Справочник.""Выберите справочник"", Справочник>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Группы"", ""ФормаГруппы"", ""Выбора группы"", ""ФормаВыбораГруппы"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Открыть форму справочника (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'ОткрытьФорму(""Справочник.""Выберите справочник"", Справочник>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Группы"", ""ФормаГруппы"", ""Выбора группы"", ""ФормаВыбораГруппы"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);"}',
+ '},',
+ '{0,',
+ '{"Получить форму справочника",0,0,"Получить[Форму]","ПолучитьФорму(""Справочник.""Выберите справочник"", Справочник>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Группы"", ""ФормаГруппы"", ""Выбора группы"", ""ФормаВыбораГруппы"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Получить форму справочника (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'Форма = ПолучитьФорму(""Справочник.""Выберите справочник"", Справочник>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Группы"", ""ФормаГруппы"", ""Выбора группы"", ""ФормаВыбораГруппы"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);',
+ '"}',
+ '},',
+ '{0,',
+ '{"Обход элементов",0,0,"","Выборка = Справочники."""", Справочник>.Выбрать();',
+ '',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ ' >',
+ '',
+ 'КонецЦикла;"}',
+ '},',
+ '{0,',
+ '{"Обход элементов иерархически",0,0,"","Выборка = Справочники."""", Справочник>.ВыбратьИерархически();',
+ '',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ ' >',
+ '',
+ 'КонецЦикла;"}',
+ '}',
+ '},',
+ '{6,',
+ '{"Документы",1,0,"",""},',
+ '{0,',
+ '{"Открыть форму документа",0,0,"Открыть[Форму]","ОткрытьФорму(""Документ.""Выберите документ"", Документ>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Открыть форму документа (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'ОткрытьФорму(""Документ.""Выберите документ"", Документ>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);"}',
+ '},',
+ '{0,',
+ '{"Получить форму документа",0,0,"Получить[Форму]","ПолучитьФорму(""Документ.""Выберите документ"", Документ>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Получить форму документа (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'Форма = ПолучитьФорму(""Документ.""Выберите документ"", Документ>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);',
+ '"}',
+ '},',
+ '{0,',
+ '{"Обход документов",0,0,"","Выборка = Документы."""", Документ>.Выбрать();',
+ '',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ ' >',
+ '',
+ 'КонецЦикла;"}',
+ '},',
+ '{0,',
+ '{"Движения",0,0,"","Движения.""Выбор регистра"", ОбъектМетаданных, ""РегистрСведений"", ""РегистрНакопления"", ""РегистрБухгалтерии"", ""РегистрРасчета"">"}',
+ '}',
+ '},',
+ '{4,',
+ '{"Отчеты",1,0,"",""},',
+ '{0,',
+ '{"Открыть форму отчета",0,0,"Открыть[Форму]","ОткрытьФорму(""Отчет.""Выберите отчет"", Отчет>.""Выберите форму"", ВыборВарианта, ""Форма"", ""Форма"", ""ФормаНастроек"", ""ФормаНастроек"", ""ФормаРедактированияВарианта"", ""ФормаРедактированияВарианта"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Открыть форму отчета (с параметрами)",0,0,"Открыть[Форму]","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'ОткрытьФорму(""Отчет.""Выберите отчет"", Отчет>.""Выберите форму"", ВыборВарианта, ""Форма"", ""Форма"", ""ФормаНастроек"", ""ФормаНастроек"", ""ФормаРедактированияВарианта"", ""ФормаРедактированияВарианта"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);"}',
+ '},',
+ '{0,',
+ '{"Получить форму отчета",0,0,"Получить[Форму]","ПолучитьФорму(""Отчет.""Выберите отчет"", Отчет>.""Выберите форму"", ВыборВарианта, ""Форма"", ""Форма"", ""ФормаНастроек"", ""ФормаНастроек"", ""ФормаРедактированияВарианта"", ""ФормаРедактированияВарианта"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Получить форму отчета (с параметрами)",0,0,"Получить[Форму]","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'Форма = ПолучитьФорму(""Отчет.""Выберите отчет"", Отчет>.""Выберите форму"", ВыборВарианта, ""Форма"", ""Форма"", ""ФормаНастроек"", ""ФормаНастроек"", ""ФормаРедактированияВарианта"", ""ФормаРедактированияВарианта"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);',
+ '"}',
+ '}',
+ '},',
+ '{4,',
+ '{"Обработки",1,0,"",""},',
+ '{0,',
+ '{"Открыть форму обработки",0,0,"Открыть[Форму]","ОткрытьФорму(""Обработка.""Выберите обработку"", Обработка>.""Выберите форму"", ВыборВарианта, ""Форма"", ""Форма"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Открыть форму обработки (с параметрами)",0,0,"Открыть[Форму]","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'ОткрытьФорму(""Обработка.""Выберите обработку"", Обработка>.""Выберите форму"", ВыборВарианта, ""Форма"", ""Форма"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);"}',
+ '},',
+ '{0,',
+ '{"Получить форму обработки",0,0,"Получить[Форму]","ПолучитьФорму(""Обработка.""Выберите обработку"", Обработка>.""Выберите форму"", ВыборВарианта, ""Форма"", ""Форма"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Получить форму обработки (с параметрами)",0,0,"Получить[Форму]","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'Форма = ПолучитьФорму(""Обработка.""Выберите обработку"", Обработка>.""Выберите форму"", ВыборВарианта, ""Форма"", ""Форма"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);',
+ '"}',
+ '}',
+ '},',
+ '{5,',
+ '{"Планы видов характеристик",1,0,"",""},',
+ '{0,',
+ '{"Открыть форму плана видов характеристик",0,0,"Открыть[Форму]","ОткрытьФорму(""ПланВидовХарактеристик.""Выберите ПВХ"", ПланВидовХарактеристик>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Группы"", ""ФормаГруппы"", ""Выбора группы"", ""ФормаВыбораГруппы"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Открыть форму плана видов характеристик (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'ОткрытьФорму(""ПланВидовХарактеристик.""Выберите ПВХ"", ПланВидовХарактеристик>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Группы"", ""ФормаГруппы"", ""Выбора группы"", ""ФормаВыбораГруппы"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);"}',
+ '},',
+ '{0,',
+ '{"Получить форму плана видов характеристик",0,0,"Получить[Форму]","ПолучитьФорму(""ПланВидовХарактеристик.""Выберите ПВХ"", ПланВидовХарактеристик>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Группы"", ""ФормаГруппы"", ""Выбора группы"", ""ФормаВыбораГруппы"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Получить форму плана видов характеристик (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'Форма = ПолучитьФорму(""ПланВидовХарактеристик.""Выберите ПВХ"", ПланВидовХарактеристик>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Группы"", ""ФормаГруппы"", ""Выбора группы"", ""ФормаВыбораГруппы"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);',
+ '"}',
+ '},',
+ '{0,',
+ '{"Обход видов характеристик",0,0,"","Выборка = ПланыВидовХарактеристик."""", ПланВидовХарактеристик>.Выбрать();',
+ '',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ ' >',
+ '',
+ 'КонецЦикла;"}',
+ '}',
+ '},',
+ '{5,',
+ '{"Планы счетов",1,0,"",""},',
+ '{0,',
+ '{"Открыть форму плана счетов",0,0,"Открыть[Форму]","ОткрытьФорму(""ПланСчетов.""Выберите план счетов"", ПланСчетов>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Открыть форму плана счетов (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'ОткрытьФорму(""ПланСчетов.""Выберите план счетов"", ПланСчетов>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);"}',
+ '},',
+ '{0,',
+ '{"Получить форму плана счетов",0,0,"Получить[Форму]","ПолучитьФорму(""ПланСчетов.""Выберите план счетов"", ПланСчетов>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Получить форму плана счетов (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'Форма = ПолучитьФорму(""ПланСчетов.""Выберите план счетов"", ПланСчетов>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);',
+ '"}',
+ '},',
+ '{0,',
+ '{"Найти по коду",0,0,"","ПланыСчетов."""", ПланСчетов>.НайтиПоКоду(>)"}',
+ '}',
+ '},',
+ '{5,',
+ '{"Планы видов расчета",1,0,"",""},',
+ '{0,',
+ '{"Открыть форму плана видов расчета",0,0,"Открыть[Форму]","ОткрытьФорму(""ПланВидовРасчета.""Выберите план видов расчета"", ПланВидовРасчета>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Открыть форму плана видов расчета (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'ОткрытьФорму(""ПланВидовРасчета.""Выберите план видов расчета"", ПланВидовРасчета>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);"}',
+ '},',
+ '{0,',
+ '{"Получить форму плана видов расчета",0,0,"Получить[Форму]","ПолучитьФорму(""ПланВидовРасчета.""Выберите план видов расчета"", ПланВидовРасчета>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Получить форму плана видов расчета (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'Форма = ПолучитьФорму(""ПланВидовРасчета.""Выберите план видов расчета"", ПланВидовРасчета>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);',
+ '"}',
+ '},',
+ '{0,',
+ '{"Обход видов расчета",0,0,"","Выборка = ПланыВидовРасчета."""", ПланВидовРасчета>.Выбрать();',
+ '',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ ' >',
+ '',
+ 'КонецЦикла;"}',
+ '}',
+ '},',
+ '{5,',
+ '{"Бизнес-процессы",1,0,"",""},',
+ '{0,',
+ '{"Открыть форму бизнес-процесса",0,0,"Открыть[Форму]","ОткрытьФорму(""БизнесПроцесс.""Выберите бизнес-процесс"", БизнесПроцесс>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Открыть форму бизнес-процесса (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'ОткрытьФорму(""БизнесПроцесс.""Выберите бизнес-процесс"", БизнесПроцесс>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);"}',
+ '},',
+ '{0,',
+ '{"Получить форму бизнес-процесса",0,0,"Получить[Форму]","ПолучитьФорму(""БизнесПроцесс.""Выберите бизнес-процесс"", БизнесПроцесс>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Получить форму бизнес-процесса (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'Форма = ПолучитьФорму(""БизнесПроцесс.""Выберите бизнес-процесс"", БизнесПроцесс>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);',
+ '"}',
+ '},',
+ '{0,',
+ '{"Обход бизнес-процессов",0,0,"","Выборка = БизнесПроцессы."""", БизнесПроцесс>.Выбрать();',
+ '',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ ' >',
+ '',
+ 'КонецЦикла;"}',
+ '}',
+ '},',
+ '{4,',
+ '{"Задачи",1,0,"",""},',
+ '{0,',
+ '{"Открыть форму задачи",0,0,"Открыть[Форму]","ОткрытьФорму(""Задача.""Выберите задачу"", Задача>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Открыть форму задачи (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'ОткрытьФорму(""Задача.""Выберите задачу"", Задача>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);"}',
+ '},',
+ '{0,',
+ '{"Получить форму задачи",0,0,"Получить[Форму]","ПолучитьФорму(""Задача.""Выберите задачу"", Задача>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Получить форму задачи (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'Форма = ПолучитьФорму(""Задача.""Выберите задачу"", Задача>.""Выберите форму"", ВыборВарианта, ""Объекта"", ""ФормаОбъекта"", ""Списка"", ""ФормаСписка"", ""Выбора"", ""ФормаВыбора"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);',
+ '"}',
+ '}',
+ '},',
+ '{6,',
+ '{"Регистры сведений",1,0,"",""},',
+ '{0,',
+ '{"Открыть форму регистра сведений",0,0,"Открыть[Форму]","ОткрытьФорму(""РегистрСведений.""Выберите регистр сведений"", РегистрСведений>.""Выберите форму"", ВыборВарианта, ""Записи"", ""ФормаЗаписи"", ""Списка"", ""ФормаСписка"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Открыть форму регистра сведений (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'ОткрытьФорму(""РегистрСведений.""Выберите регистр сведений"", РегистрСведений>.""Выберите форму"", ВыборВарианта, ""Записи"", ""ФормаЗаписи"", ""Списка"", ""ФормаСписка"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);"}',
+ '},',
+ '{0,',
+ '{"Получить форму регистра сведений",0,0,"Получить[Форму]","ПолучитьФорму(""РегистрСведений.""Выберите регистр сведений"", РегистрСведений>.""Выберите форму"", ВыборВарианта, ""Записи"", ""ФормаЗаписи"", ""Списка"", ""ФормаСписка"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Получить форму регистра сведений (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'Форма = ПолучитьФорму(""РегистрСведений.""Выберите регистр сведений"", РегистрСведений>.""Выберите форму"", ВыборВарианта, ""Записи"", ""ФормаЗаписи"", ""Списка"", ""ФормаСписка"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);',
+ '"}',
+ '},',
+ '{0,',
+ '{"Выборка записей регистра сведений",0,0,"","Выборка = РегистрСведений.""Выберите регистр сведений"", РегистрСведений>.Выбрать();',
+ '',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ ' >',
+ '',
+ 'КонецЦикла;"}',
+ '},',
+ '{0,',
+ '{"Выборка записей регистра сведений (по регистратору)",0,0,"","Выборка = РегистрСведений.""Выберите регистр сведений"", РегистрСведений>.ВыбратьПоРегистратору(>);',
+ '',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ '',
+ 'КонецЦикла;"}',
+ '}',
+ '},',
+ '{6,',
+ '{"Регистры накопления",1,0,"",""},',
+ '{0,',
+ '{"Открыть форму регистра накопления",0,0,"Открыть[Форму]","ОткрытьФорму(""РегистрНакопления.""Выберите регистр накопления"", РегистрНакопления>.""Выберите форму"", ВыборВарианта, ""Списка"", ""ФормаСписка"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Открыть форму регистра накопления (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'ОткрытьФорму(""РегистрНакопления.""Выберите регистр накопления"", РегистрНакопления>.""Выберите форму"", ВыборВарианта, ""Списка"", ""ФормаСписка"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);"}',
+ '},',
+ '{0,',
+ '{"Получить форму регистра накопления",0,0,"Получить[Форму]","ПолучитьФорму(""РегистрНакопления.""Выберите регистр накопления"", РегистрНакопления>.""Выберите форму"", ВыборВарианта, ""Списка"", ""ФормаСписка"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Получить форму регистра накопления (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'Форма = ПолучитьФорму(""РегистрНакопления.""Выберите регистр накопления"", РегистрНакопления>.""Выберите форму"", ВыборВарианта, ""Списка"", ""ФормаСписка"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);',
+ '"}',
+ '},',
+ '{0,',
+ '{"Выборка записей регистра накопления",0,0,"","Выборка = РегистрСведений.""Выберите регистр накопления"", РегистрНакопления>.Выбрать();',
+ '',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ ' >',
+ '',
+ 'КонецЦикла;"}',
+ '},',
+ '{0,',
+ '{"Выборка записей регистра накопления (по регистратору)",0,0,"","Выборка = РегистрСведений.""Выберите регистр накопления"", РегистрНакопления>.ВыбратьПоРегистратору(>);',
+ '',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ '',
+ 'КонецЦикла;"}',
+ '}',
+ '},',
+ '{6,',
+ '{"Регистры бухгалтерии",1,0,"",""},',
+ '{0,',
+ '{"Открыть форму регистра бухгалтерии",0,0,"Открыть[Форму]","ОткрытьФорму(""РегистрБухгалтерии.""Выберите регистр бухгалтерии"", РегистрБухгалтерии>.""Выберите форму"", ВыборВарианта, ""Списка"", ""ФормаСписка"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Открыть форму регистра бухгалтерии (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'ОткрытьФорму(""РегистрБухгалтерии.""Выберите регистр бухгалтерии"", РегистрБухгалтерии>.""Выберите форму"", ВыборВарианта, ""Списка"", ""ФормаСписка"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);"}',
+ '},',
+ '{0,',
+ '{"Получить форму регистра бухгалтерии",0,0,"Получить[Форму]","ПолучитьФорму(""РегистрБухгалтерии.""Выберите регистр бухгалтерии"", РегистрБухгалтерии>.""Выберите форму"", ВыборВарианта, ""Списка"", ""ФормаСписка"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Получить форму регистра бухгалтерии (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'Форма = ПолучитьФорму(""РегистрБухгалтерии.""Выберите регистр бухгалтерии"", РегистрБухгалтерии>.""Выберите форму"", ВыборВарианта, ""Списка"", ""ФормаСписка"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);',
+ '"}',
+ '},',
+ '{0,',
+ '{"Выборка записей регистра бухгалтерии",0,0,"","Выборка = РегистрСведений.""Выберите регистр бухгалтерии"", РегистрБухгалтерии>.Выбрать();',
+ '',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ ' >',
+ '',
+ 'КонецЦикла;"}',
+ '},',
+ '{0,',
+ '{"Выборка записей регистра бухгалтерии (по регистратору)",0,0,"","Выборка = РегистрСведений.""Выберите регистр бухгалтерии"", РегистрБухгалтерии>.ВыбратьПоРегистратору(>);',
+ '',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ '',
+ 'КонецЦикла;"}',
+ '}',
+ '},',
+ '{6,',
+ '{"Регистры расчета",1,0,"",""},',
+ '{0,',
+ '{"Открыть форму регистра расчета",0,0,"Открыть[Форму]","ОткрытьФорму(""РегистрРасчета.""Выберите регистр расчета"", РегистрРасчета>.""Выберите форму"", ВыборВарианта, ""Списка"", ""ФормаСписка"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Открыть форму регистра расчета (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'ОткрытьФорму(""РегистрРасчета.""Выберите регистр расчета"", РегистрРасчета>.""Выберите форму"", ВыборВарианта, ""Списка"", ""ФормаСписка"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);"}',
+ '},',
+ '{0,',
+ '{"Получить форму регистра расчета",0,0,"Получить[Форму]","ПолучитьФорму(""РегистрРасчета.""Выберите регистр расчета"", РегистрРасчета>.""Выберите форму"", ВыборВарианта, ""Списка"", ""ФормаСписка"", ""Произвольная"", ""Форма."">>"");"}',
+ '},',
+ '{0,',
+ '{"Получить форму регистра расчета (с параметрами)",0,0,"","ПараметрыФормы = Новый Структура;',
+ 'ПараметрыФормы.Вставить("">"", );',
+ 'Форма = ПолучитьФорму(""РегистрРасчета.""Выберите регистр расчета"", РегистрРасчета>.""Выберите форму"", ВыборВарианта, ""Списка"", ""ФормаСписка"", ""Произвольная"", ""Форма."">"", ПараметрыФормы);',
+ '"}',
+ '},',
+ '{0,',
+ '{"Выборка записей регистра расчета",0,0,"","Выборка = РегистрСведений.""Выберите регистр расчета"", РегистрРасчета>.Выбрать();',
+ '',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ ' >',
+ '',
+ 'КонецЦикла;"}',
+ '},',
+ '{0,',
+ '{"Выборка записей регистра расчета (по регистратору)",0,0,"","Выборка = РегистрСведений.""Выберите регистр расчета"", РегистрРасчета>.ВыбратьПоРегистратору(>);',
+ '',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ '',
+ 'КонецЦикла;"}',
+ '}',
+ '}',
+ '},',
+ '{11,',
+ '{"Прочие",1,0,"",""},',
+ '{0,',
+ '{"Сообщение",0,1,"Сообщ[ение]","Сообщение = Новый СообщениеПользователю;',
+ 'Сообщение.Текст = "">"";',
+ 'Сообщение.Поле = """";',
+ 'Сообщение.УстановитьДанные();',
+ 'Сообщение.Сообщить();"}',
+ '},',
+ '{0,',
+ '{"Предупреждение",0,0,"Предупр[еждение]","Предупреждение(>);"}',
+ '},',
+ '{0,',
+ '{"Формат",0,0,"Формат","Формат(>, "", ФорматнаяСтрока>"")"}',
+ '},',
+ '{0,',
+ '{"Форматная строка",0,1,"",""", ФорматнаяСтрока>"""}',
+ '},',
+ '{0,',
+ '{"Создать структуру",0,0,"Струк[тура]","Новый Структура("">"", )"}',
+ '},',
+ '{0,',
+ '{"Запрос",0,0,"","Запрос = Новый Запрос;',
+ 'Запрос.Текст = """""", ТекстЗапроса>"";',
+ '',
+ 'Результат = Запрос.Выполнить();',
+ 'Выборка = Результат.Выбрать();',
+ '',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ ' ',
+ '',
+ 'КонецЦикла;',
+ '"}',
+ '},',
+ '{0,',
+ '{"Запрос с параметром",0,0,"","Запрос = Новый Запрос;',
+ 'Запрос.Текст = """""", ТекстЗапроса>"";',
+ '',
+ 'Запрос.УстановитьПараметр("">"", );',
+ '',
+ 'Результат = Запрос.Выполнить();',
+ 'Выборка = Результат.Выбрать();',
+ '',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ ' ',
+ '',
+ 'КонецЦикла;',
+ '"}',
+ '},',
+ '{0,',
+ '{"Вопрос",0,0,"Вопр[ос]","Вопрос(""""Текст вопроса"">"", ""Режим диалога вопрос"", ВыборВарианта, ""ДаНет"", ""РежимДиалогаВопрос.ДаНет"", ""ДаНетОтмена"", ""РежимДиалогаВопрос.ДаНетОтмена"", ""ОК"", ""РежимДиалогаВопрос.ОК"", ""ОКОтмена"", ""РежимДиалогаВопрос.ОКОтмена"", ""ПовторитьОтмена"", ""РежимДиалогаВопрос.ПовторитьОтмена"", ""ПрерватьПовторитьПропустить"", ""РежимДиалогаВопрос.ПрерватьПовторитьПропустить"">)"}',
+ '},',
+ '{0,',
+ '{"Вопрос с анализом результата",0,0,"Вопр[ос]","Вопрос(""""Текст вопроса"">"", ""Режим диалога вопрос"", ВыборВарианта, ""ДаНет"", ""РежимДиалогаВопрос.ДаНет"", ""ДаНетОтмена"", ""РежимДиалогаВопрос.ДаНетОтмена"", ""ОК"", ""РежимДиалогаВопрос.ОК"", ""ОКОтмена"", ""РежимДиалогаВопрос.ОКОтмена"", ""ПовторитьОтмена"", ""РежимДиалогаВопрос.ПовторитьОтмена"", ""ПрерватьПовторитьПропустить"", ""РежимДиалогаВопрос.ПрерватьПовторитьПропустить"">) = ""Код возврата диалога"", ВыборВарианта, ""Да"", ""КодВозвратаДиалога.Да"", ""Нет"", ""КодВозвратаДиалога.Нет"", ""ОК"", ""КодВозвратаДиалога.ОК"", ""Отмена"", ""КодВозвратаДиалога.Отмена"", ""Повторить"", ""КодВозвратаДиалога.Повторить"", ""Прервать"", ""КодВозвратаДиалога.Прервать"", ""Пропустить"", ""КодВозвратаДиалога.Пропустить"", ""Таймаут"", ""КодВозвратаДиалога.Таймаут"">"}',
+ '},',
+ '{0,',
+ '{"Проверка типа",0,0,"","Если ТипЗнч(""Выражение для проверки типа"">) = Тип(""""Выберите тип"", ВыборТипа>"") Тогда',
+ '',
+ ' >',
+ '',
+ 'КонецЕсли;"}',
+ '},',
+ '{0,',
+ '{"КонструкторОписанияТипов",0,0,"","""Конструктор описания типов"", КонструкторОписанияТипов>"}',
+ '}',
+ '}',
+ '}',
+ '}'].join('\n');
+
+ let st2 = [
+ '{1,',
+ '{21,',
+ '{"GROOVY (v8.3.21.12 от 15.03.21) ",1,0,"",""},',
+ '{0,',
+ '{"Есть мысли по развитию шаблонов? Телеграмм: https://t.me/st1c8",0,0,"","//Есть мысли по развитию шаблонов? https://t.me/st1c8"}',
+ '},',
+ '{0,',
+ '{"Описание",0,0,"","// Шаблоны для работы в конфигураторе с системами 1С:Предприятие версии 8.3',
+ '',
+ '// Последнюю версию шаблонов всегда можно найти тут: 1c.chistov.pro',
+ '',
+ '// С уважением, Павел Чистов"}',
+ '},',
+ '{0,',
+ '{"История изменений",0,0,"","#Область 2021_03_15',
+ ' //Добавлен шаблон модуля менеджера',
+ '#КонецОбласти ',
+ '',
+ '#Область 2021_02_25',
+ ' //Добавлен раздел ""Полезняшки"". В разделе нет автозамены.',
+ ' //Будет добавляться полезным кодом',
+ '#КонецОбласти ',
+ '',
+ '#Область 2020_06_23',
+ ' //Добавлен раздел Расширения',
+ ' //В раздел добавлены аннотации: Перед После, Вместо, ИзменениеИКонтроль',
+ '#КонецОбласти ',
+ '',
+ '#Область 2020_06_12',
+ ' //Добавлено сокращение ЗЗ (ЗаполнитьЗначенияСвойств)',
+ ' //Добавлен раздел Асинхронные вызовы, в раздео добавлены шаблоны описания оповещения',
+ ' //Добавлен шаблон помещения файла во временное хранилище (надоело набивать руками 4 процедуры)',
+ '#КонецОбласти ',
+ '',
+ '#Область 2018_08_06',
+ ' //ИсточникДанных заменен на ИсточникДанныхСКД, из-за конкуренции с объектом БлокировкаДанных',
+ '#КонецОбласти ',
+ '',
+ '#Область 2014_10_09',
+ ' //Добавлены шаблоны описывающие структуру модулей, Комментарии-Структура модулей, в автозамену не подключены',
+ ' //Изменен шаблон отчерка, вместо символов ""_"" используется ""="" и курсор помещается в начало отчерка, на основе рекомендации 1С',
+ ' //В шаблоне ""ТекущаяДата"" курсор устанавливается в конце метода, ранее устанавливался после пробела',
+ ' //Группы ""Комментарии"" и ""Области"" объединены',
+ ' //Начат раздел по СКД',
+ '#КонецОбласти ',
+ '',
+ '#Область 2014_02_13',
+ ' //Текст запроса в соответствующих шаблонах теперь начинается с новой строки',
+ '#КонецОбласти ',
+ '',
+ '#Область 2014_01_26',
+ ' //Изменен ""Отчерк"", теперь длина комментария 120 символов, по стандарту оформления 1С',
+ ' ',
+ ' //Добавлен шаблон ""нСтр""',
+ ' //Добавлен шаблон ""Фрагмент добавлен""',
+ ' //Добавлен шаблон ""Фрагмент удален""',
+ ' //Добавлен шаблон ""Комментарий модуля""',
+ '#КонецОбласти ',
+ '',
+ '#Область 2013_11_19',
+ ' //Исправлена ошибка в шаблоне ""Обл=""',
+ '#КонецОбласти ',
+ '',
+ '#Область 2013_10_02',
+ ' //Убран отчерк перед областью',
+ ' ',
+ ' //Добавлен прикладной шаблон ""ВидДвижения""',
+ ' // При наборе ВидДвижения= срабатывает шаблон на выбор видов движения регистров накопления и регистров бухгалтерии',
+ '#КонецОбласти ',
+ '',
+ '#Область 2013_09_15',
+ ' //Первая версия',
+ '#КонецОбласти ',
+ '"}',
+ '},',
+ '{8,',
+ '{"Управляющие",1,0,"",""},',
+ '{0,',
+ '{"Если",0,0,"Если","Если > Тогда',
+ ' ',
+ 'КонецЕсли;"}',
+ '},',
+ '{0,',
+ '{"ИначеЕсли",0,0,"ИначеЕсли","ИначеЕсли > Тогда"}',
+ '},',
+ '{0,',
+ '{"Пока",0,0,"Пока","Пока > Цикл',
+ ' ',
+ 'КонецЦикла;"}',
+ '},',
+ '{0,',
+ '{"Для",0,0,"Для","Для > По Цикл',
+ ' ',
+ 'КонецЦикла;"}',
+ '},',
+ '{0,',
+ '{"Для каждого",0,0,"Для[ Каждого]","Для каждого > Из Цикл',
+ ' ',
+ 'КонецЦикла;"}',
+ '},',
+ '{0,',
+ '{"Попытка",0,0,"Попы[тка]","Попытка',
+ ' >',
+ 'Исключение',
+ ' //ОписаниеОшибки()',
+ 'КонецПопытки;"}',
+ '},',
+ '{7,',
+ '{"Процедура",1,0,"",""},',
+ '{0,',
+ '{"Процедура",0,0,"Проц[едура]","Процедура >()',
+ ' ',
+ 'КонецПроцедуры',
+ '"}',
+ '},',
+ '{0,',
+ '{"Процедура с заголовком",0,0,"Процедура","////////////////////////////////////////////////////////////////////////////////',
+ '//',
+ '// Процедура ""Введите имя процедуры"">',
+ '//',
+ '// Описание:',
+ '//',
+ '//',
+ '// Параметры (название, тип, дифференцированное значение)',
+ '//',
+ 'Процедура ""Введите имя процедуры"">()',
+ ' >',
+ 'КонецПроцедуры //""Введите имя процедуры"">',
+ '',
+ '"}',
+ '},',
+ '{0,',
+ '{"Процедура НаКлиенте",0,0,"Проц[едура]","&НаКлиенте',
+ 'Процедура >()',
+ ' ',
+ 'КонецПроцедуры',
+ '"}',
+ '},',
+ '{0,',
+ '{"Процедура НаСервереБезКонтекста",0,0,"Проц[едура]","&НаСервереБезКонтекста',
+ 'Процедура >()',
+ '',
+ 'КонецПроцедуры"}',
+ '},',
+ '{0,',
+ '{"Процедура НаСервере",0,0,"Проц[едура]","&НаСервере',
+ 'Процедура >()',
+ ' ',
+ 'КонецПроцедуры',
+ '"}',
+ '},',
+ '{0,',
+ '{"Процедура НаКлиентеНаСервереБезКонтекста (только модули упр.форм)",0,0,"Проц[едура]","&НаКлиентеНаСервереБезКонтекста',
+ 'Процедура >()',
+ ' ',
+ 'КонецПроцедуры',
+ '"}',
+ '},',
+ '{0,',
+ '{"Процедура НаКлиентеНаСервере (только модули команд)",0,0,"Проц[едура]","&НаКлиентеНаСервере',
+ 'Процедура >()',
+ ' ',
+ 'КонецПроцедуры',
+ '"}',
+ '}',
+ '},',
+ '{7,',
+ '{"Функция",1,0,"",""},',
+ '{0,',
+ '{"Функция",0,0,"Функ[ция]","Функция >()',
+ ' ',
+ 'КонецФункции',
+ '"}',
+ '},',
+ '{0,',
+ '{"Функция с заголовком",0,0,"Функция","////////////////////////////////////////////////////////////////////////////////',
+ '//',
+ '// Функция ""Введите имя функции"">',
+ '//',
+ '// Описание:',
+ '//',
+ '//',
+ '// Параметры (название, тип, дифференцированное значение)',
+ '//',
+ '// Возвращаемое значение: ',
+ '//',
+ 'Функция ""Введите имя функции"">()',
+ ' >',
+ 'КонецФункции //""Введите имя функции"">',
+ '"}',
+ '},',
+ '{0,',
+ '{"Функция НаКлиенте",0,0,"Функ[ция]","&НаКлиенте',
+ 'Функция >()',
+ ' ',
+ 'КонецФункции',
+ '"}',
+ '},',
+ '{0,',
+ '{"Функция НаСервереБезКонтекста",0,0,"Функ[ция]","&НаСервереБезКонтекста',
+ 'Функция >()',
+ ' ',
+ 'КонецФункции',
+ '"}',
+ '},',
+ '{0,',
+ '{"Функция НаСервере",0,0,"Функ[ция]","&НаСервере',
+ 'Функция >()',
+ ' ',
+ 'КонецФункции',
+ '"}',
+ '},',
+ '{0,',
+ '{"Функция НаКлиентеНаСервереБезКонтекста (только модули упр.форм)",0,0,"Функ[ция]","&НаКлиентеНаСервереБезКонтекста',
+ 'Функция >()',
+ ' ',
+ 'КонецФункции"}',
+ '},',
+ '{0,',
+ '{"Функция НаКлиентеНаСервере (только модули команд)",0,0,"Функ[ция]","&НаКлиентеНаСервере',
+ 'Функция >()',
+ ' ',
+ 'КонецФункции"}',
+ '}',
+ '}',
+ '},',
+ '{8,',
+ '{"Прикладные",1,0,"",""},',
+ '{0,',
+ '{"Значение перечисления",0,0,"Переч[исления.]","Перечисления."""", ЗначениеПеречисления>"}',
+ '},',
+ '{0,',
+ '{"ВыборСчетаДт",0,0,"СчетДт=","СчетДт = """", ПланСчетовПредопределенныеДанные>;"}',
+ '},',
+ '{0,',
+ '{"ВыборСчетаКт",0,0,"СчетКт=","СчетКт = """", ПланСчетовПредопределенныеДанные>;"}',
+ '},',
+ '{0,',
+ '{"Движение",0,0,"Движение=","Движение = Движения>',
+ 'Движение.Период = Дата;"}',
+ '},',
+ '{0,',
+ '{"СубконтоДт",0,0,"СубконтоДт","СубконтоДт["""", ПланВидовХарактеристикПредопределенныеДанные>] = >;"}',
+ '},',
+ '{0,',
+ '{"СубконтоКт",0,0,"СубконтоКт","СубконтоКт["""", ПланВидовХарактеристикПредопределенныеДанные>] = >;"}',
+ '},',
+ '{0,',
+ '{"Граница",0,0,"Граница=","Граница = Новый Граница(>, """", ВыборВарианта, ""ВидГраницы.Включая"", ""ВидГраницы.Включая"", ""ВидГраницы.Исключая"", ""ВидГраницы.Исключая"">);"}',
+ '},',
+ '{2,',
+ '{"ВидДвижения",1,0,"",""},',
+ '{0,',
+ '{"РегистрыНакопления",0,0,"ВидД[вижения=]","ВидДвижения = """", ВыборВарианта, ""Приход"", ""ВидДвиженияНакопления.Приход"", ""Расход"", ""ВидДвиженияНакопления.Расход"">;"}',
+ '},',
+ '{0,',
+ '{"РегистрыБухгалтерии",0,0,"ВидД[вижения=]","ВидДвижения = """", ВыборВарианта, ""Дебет"", ""ВидДвиженияБухгалтерии.Дебет"", ""Кредит"", ""ВидДвиженияБухгалтерии.Кредит"">;',
+ '"}',
+ '}',
+ '}',
+ '},',
+ '{16,',
+ '{"Раскладка клавиатуры",1,0,"",""},',
+ '{0,',
+ '{">",0,0,"Ю",">"}',
+ '},',
+ '{0,',
+ '{"<",0,0,"Б","<"}',
+ '},',
+ '{0,',
+ '{"<>",0,0,"БЮ","<>"}',
+ '},',
+ '{0,',
+ '{"<=",0,0,"Б=","<="}',
+ '},',
+ '{0,',
+ '{">=",0,0,"Ю=",">="}',
+ '},',
+ '{0,',
+ '{"ЕстьТгдд",0,0,"ЕстьТгдд","ЕСТЬNULL(>"}',
+ '},',
+ '{0,',
+ '{"NULL",0,0,"тгдд","NULL"}',
+ '},',
+ '{0,',
+ '{"[]",0,0,"хъ","[>]"}',
+ '},',
+ '{0,',
+ '{"|",0,0,"\ ","| >"}',
+ '},',
+ '{0,',
+ '{"\'",0,0,"ээ","\'>\'"}',
+ '},',
+ '{0,',
+ '{"&",0,0,"? ","&>"}',
+ '},',
+ '{0,',
+ '{"WebЦвета",0,0,"цуицвета","WebЦвета>"}',
+ '},',
+ '{0,',
+ '{"?НаКлиенте",0,0,"?наКлиенте","&НаКлиенте"}',
+ '},',
+ '{0,',
+ '{"?НаСервере",0,0,"?НаСер[вере]","&НаСервере"}',
+ '},',
+ '{0,',
+ '{"?НаСервереБезКонтекста",0,0,"?НаСер[вереБезКонтекста]","&НаСервереБезКонтекста"}',
+ '},',
+ '{0,',
+ '{"?НаКлиентеНаСервереБезКонтекста",0,0,"?НаКлиенте[НаСервереБезКонтекста]","&НаКлиентеНаСервереБезКонтекста"}',
+ '}',
+ '},',
+ '{6,',
+ '{"Коллекции значений",1,0,"",""},',
+ '{0,',
+ '{"ТЗ",0,0,"ТЗ=","ТЗ = Новый ТаблицаЗначений;',
+ '>"}',
+ '},',
+ '{0,',
+ '{"СЗ",0,0,"СЗ=","СЗ = Новый СписокЗначений;',
+ '>"}',
+ '},',
+ '{0,',
+ '{"Структура",0,0,"Структура=","Структура = Новый Структура;',
+ '>"}',
+ '},',
+ '{0,',
+ '{"Соответствие",0,0,"Соответствие=","Соответствие = Новый Соответствие;',
+ '>"}',
+ '},',
+ '{0,',
+ '{"ДеревоЗначений",0,0,"ДеревоЗначений=","ДеревоЗначений = Новый ДеревоЗначений;',
+ '>"}',
+ '},',
+ '{0,',
+ '{"Массив",0,0,"Массив=","Массив = Новый Массив(>);"}',
+ '}',
+ '},',
+ '{10,',
+ '{"Запросы",1,0,"",""},',
+ '{0,',
+ '{"Запрос с конструктором",0,0,"Запрос=","Запрос = Новый Запрос;',
+ 'Запрос.Текст = ',
+ '"""""", ТекстЗапроса>"";',
+ '>Запрос.УстановитьПараметр("""", );',
+ 'РезультатЗапроса = Запрос.Выполнить();',
+ '',
+ '"}',
+ '},',
+ '{0,',
+ '{"Запрос вручную",0,0,"Запрос=","Запрос = Новый Запрос;',
+ 'Запрос.Текст = ',
+ '""ВЫБРАТЬ',
+ '| >',
+ '|',
+ '|',
+ '|',
+ '|',
+ '|',
+ '|',
+ '|',
+ '|"";',
+ '',
+ 'Запрос.УстановитьПараметр("""", );',
+ 'РезультатЗапроса = Запрос.Выполнить();',
+ '"}',
+ '},',
+ '{0,',
+ '{"Документ",0,0,"Документ.","Документ."""", ОбъектМетаданных, ""Документ"", ""Документ.ТабличнаяЧасть"">"}',
+ '},',
+ '{0,',
+ '{"Справочник",0,0,"Справочник.","Справочник."""", ОбъектМетаданных, ""Справочник"", ""Справочник.ТабличнаяЧасть"">"}',
+ '},',
+ '{0,',
+ '{"РегистрСведений",0,0,"Рег[истрСведений.Справочник]","РегистрСведений."""", ОбъектМетаданных, ""РегистрСведений"", ""Справочник"", ""Справочник.ТабличнаяЧасть"">"""", ВыборВарианта, ""Основная таблица"", "">"", ""СрезПервых"", "".СрезПервых(>)"", ""СрезПоследних"", "".СрезПоследних(>)"">"}',
+ '},',
+ '{0,',
+ '{"РегистрСведений",0,0,"Рег[истрСведений.]","РегистрСведений."""", ОбъектМетаданных, ""РегистрСведений"">"""", ВыборВарианта, ""Основная таблица"", "">"", ""СрезПервых"", "".СрезПервых(>)"", ""СрезПоследних"", "".СрезПоследних(>)"">"}',
+ '},',
+ '{0,',
+ '{"РегистрНакопления",0,0,"Рег[истрНакопления.]","РегистрНакопления."""", ОбъектМетаданных, ""РегистрНакопления"">"""", ВыборВарианта, ""Основная таблица"", "">"", ""Остатки"", "".Остатки(>)"", ""Обороты"", "".Обороты(>)"", ""ОстаткиИОбороты"", "".ОстаткиИОбороты(>)"">"}',
+ '},',
+ '{0,',
+ '{"РегистрБухгалтерии",0,0,"Рег[истрБухгалтерии.]","РегистрБухгалтерии."""", ОбъектМетаданных, ""РегистрБухгалтерии"">"""", ВыборВарианта, ""Основная таблица"", "">"", ""Субконто"", "".Субконто"", ""ДвиженияССубконто"", "".ДвиженияССубконто(>)"", ""Остатки"", "".Остатки(>)"", ""Обороты"", "".Обороты(>)"", ""ОстаткиИОбороты"", "".ОстаткиИОбороты(>)"", ""ОборотыДтКт"", "".ОборотыДтКт(>)"">"}',
+ '},',
+ '{0,',
+ '{"РегистрРасчета",0,0,"Рег[истрРасчета.]","РегистрРасчета."""", ОбъектМетаданных, ""РегистрРасчета"", ""РегистрРасчета.Перерасчет"">"}',
+ '},',
+ '{0,',
+ '{"ЛЕВОЕ СОЕДИНЕНИЕ",0,0,"ЛЕВОЕ","ЛЕВОЕ СОЕДИНЕНИЕ"}',
+ '},',
+ '{0,',
+ '{"ПРАВОЕ СОЕДИНЕНИЕ",0,0,"ПРАВОЕ","ПРАВОЕ СОЕДИНЕНИЕ"}',
+ '}',
+ '},',
+ '{5,',
+ '{"Диалоговые",1,0,"",""},',
+ '{0,',
+ '{"НастройкаПериода",0,0,"НастройкаПериода=","НастройкаПериода = Новый НастройкаПериода;',
+ 'НастройкаПериода.УстановитьПериод(НачПериода, ?(КонПериода=\'0001-01-01\', КонПериода, КонецДня(КонПериода)));',
+ 'НастройкаПериода.РедактироватьКакИнтервал = Истина;',
+ 'НастройкаПериода.РедактироватьКакПериод = Истина;',
+ 'НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;',
+ 'Если НастройкаПериода.Редактировать() Тогда',
+ ' НачПериода = НастройкаПериода.ПолучитьДатуНачала();',
+ ' КонПериода = НастройкаПериода.ПолучитьДатуОкончания();',
+ 'КонецЕсли;',
+ '"}',
+ '},',
+ '{3,',
+ '{"Предупреждение",1,0,"",""},',
+ '{0,',
+ '{"Предупреждение",0,0,"Пр[едупреждение]","ПоказатьПредупреждение(,>, 60);"}',
+ '},',
+ '{0,',
+ '{"Предупреждение",0,0,"ПоказатьПр[едупреждение]","ПоказатьПредупреждение(,>, 60);"}',
+ '},',
+ '{0,',
+ '{"Предупреждение c обработкой оповещения",0,0,"ПоказатьПр[едупреждение]","ОписаниеОповещения = Новый ОписаниеОповещения(""""Имя процедуры обработчика"">"", ЭтотОбъект);',
+ 'ПоказатьПредупреждение(ОписаниеОповещения, >, 60);',
+ '',
+ '//Вынести в отдельную процедуру',
+ '&НаКлиенте',
+ 'Процедура ""Имя процедуры обработчика"">(ДополнительныеПараметры) Экспорт',
+ ' ',
+ 'КонецПроцедуры',
+ '"}',
+ '}',
+ '},',
+ '{6,',
+ '{"Вопрос",1,0,"",""},',
+ '{0,',
+ '{"Вопрос",0,0,"Ответ=","ОписаниеОповещения = Новый ОписаниеОповещения(""""Имя процедуры обработчика"">"", ЭтотОбъект);',
+ 'ПоказатьВопрос(ОписаниеОповещения, """"Текст вопроса"">"",""Режим диалога вопрос"", ВыборВарианта, ""ДаНет"", ""РежимДиалогаВопрос.ДаНет"", ""ДаНетОтмена"", ""РежимДиалогаВопрос.ДаНетОтмена"", ""ОК"", ""РежимДиалогаВопрос.ОК"", ""ОКОтмена"", ""РежимДиалогаВопрос.ОКОтмена"", ""ПовторитьОтмена"", ""РежимДиалогаВопрос.ПовторитьОтмена"", ""ПрерватьПовторитьПропустить"", ""РежимДиалогаВопрос.ПрерватьПовторитьПропустить"">, 60);',
+ '',
+ '> ',
+ '//Вынести в отдельную процедуру',
+ '&НаКлиенте',
+ 'Процедура ""Имя процедуры обработчика"">(РезультатВопроса, ДополнительныеПараметры) Экспорт',
+ ' ',
+ 'КонецПроцедуры',
+ '"}',
+ '},',
+ '{0,',
+ '{"Вопрос",0,0,"ПоказатьВо[прос]","ОписаниеОповещения = Новый ОписаниеОповещения(""""Имя процедуры обработчика"">"", ЭтотОбъект);',
+ 'ПоказатьВопрос(ОписаниеОповещения, """"Текст вопроса"">"",""Режим диалога вопрос"", ВыборВарианта, ""ДаНет"", ""РежимДиалогаВопрос.ДаНет"", ""ДаНетОтмена"", ""РежимДиалогаВопрос.ДаНетОтмена"", ""ОК"", ""РежимДиалогаВопрос.ОК"", ""ОКОтмена"", ""РежимДиалогаВопрос.ОКОтмена"", ""ПовторитьОтмена"", ""РежимДиалогаВопрос.ПовторитьОтмена"", ""ПрерватьПовторитьПропустить"", ""РежимДиалогаВопрос.ПрерватьПовторитьПропустить"">, 60);',
+ '',
+ '> ',
+ '//Вынести в отдельную процедуру',
+ '&НаКлиенте',
+ 'Процедура ""Имя процедуры обработчика"">(РезультатВопроса, ДополнительныеПараметры) Экспорт',
+ ' ',
+ 'КонецПроцедуры',
+ '"}',
+ '},',
+ '{0,',
+ '{"Вопрос",0,0,"Воп[рос]","ОписаниеОповещения = Новый ОписаниеОповещения(""""Имя процедуры обработчика"">"", ЭтотОбъект);',
+ 'ПоказатьВопрос(ОписаниеОповещения, """"Текст вопроса"">"",""Режим диалога вопрос"", ВыборВарианта, ""ДаНет"", ""РежимДиалогаВопрос.ДаНет"", ""ДаНетОтмена"", ""РежимДиалогаВопрос.ДаНетОтмена"", ""ОК"", ""РежимДиалогаВопрос.ОК"", ""ОКОтмена"", ""РежимДиалогаВопрос.ОКОтмена"", ""ПовторитьОтмена"", ""РежимДиалогаВопрос.ПовторитьОтмена"", ""ПрерватьПовторитьПропустить"", ""РежимДиалогаВопрос.ПрерватьПовторитьПропустить"">, 60);',
+ '',
+ '> ',
+ '//Вынести в отдельную процедуру',
+ '&НаКлиенте',
+ 'Процедура ""Имя процедуры обработчика"">(РезультатВопроса, ДополнительныеПараметры) Экспорт',
+ ' ',
+ 'КонецПроцедуры',
+ '"}',
+ '},',
+ '{0,',
+ '{"Вопрос с анализом результата",0,0,"Ответ=","ОписаниеОповещения = Новый ОписаниеОповещения(""""Имя процедуры обработчика"">"", ЭтотОбъект);',
+ 'ПоказатьВопрос(ОписаниеОповещения, """"Текст вопроса"">"",""Режим диалога вопрос"", ВыборВарианта, ""ДаНет"", ""РежимДиалогаВопрос.ДаНет"", ""ДаНетОтмена"", ""РежимДиалогаВопрос.ДаНетОтмена"", ""ОК"", ""РежимДиалогаВопрос.ОК"", ""ОКОтмена"", ""РежимДиалогаВопрос.ОКОтмена"", ""ПовторитьОтмена"", ""РежимДиалогаВопрос.ПовторитьОтмена"", ""ПрерватьПовторитьПропустить"", ""РежимДиалогаВопрос.ПрерватьПовторитьПропустить"">, 60);',
+ '',
+ '> ',
+ '//Вынести в отдельную процедуру',
+ '&НаКлиенте',
+ 'Процедура ""Имя процедуры обработчика"">(РезультатВопроса, ДополнительныеПараметры) Экспорт',
+ ' ',
+ ' Если РезультатВопроса """", ВыборВарианта, ""Равен"", ""="", ""Не равен"", ""<>""> ""Код возврата диалога"", ВыборВарианта, ""Да"", ""КодВозвратаДиалога.Да"", ""Нет"", ""КодВозвратаДиалога.Нет"", ""ОК"", ""КодВозвратаДиалога.ОК"", ""Отмена"", ""КодВозвратаДиалога.Отмена"", ""Повторить"", ""КодВозвратаДиалога.Повторить"", ""Прервать"", ""КодВозвратаДиалога.Прервать"", ""Пропустить"", ""КодВозвратаДиалога.Пропустить"", ""Тайаут"", ""КодВозвратаДиалога.Таймаут""> Тогда',
+ ' ',
+ ' КонецЕсли; ',
+ ' ',
+ 'КонецПроцедуры"}',
+ '},',
+ '{0,',
+ '{"Вопрос с анализом результата",0,0,"ПоказатьВо[прос]","ОписаниеОповещения = Новый ОписаниеОповещения(""""Имя процедуры обработчика"">"", ЭтотОбъект);',
+ 'ПоказатьВопрос(ОписаниеОповещения, """"Текст вопроса"">"",""Режим диалога вопрос"", ВыборВарианта, ""ДаНет"", ""РежимДиалогаВопрос.ДаНет"", ""ДаНетОтмена"", ""РежимДиалогаВопрос.ДаНетОтмена"", ""ОК"", ""РежимДиалогаВопрос.ОК"", ""ОКОтмена"", ""РежимДиалогаВопрос.ОКОтмена"", ""ПовторитьОтмена"", ""РежимДиалогаВопрос.ПовторитьОтмена"", ""ПрерватьПовторитьПропустить"", ""РежимДиалогаВопрос.ПрерватьПовторитьПропустить"">, 60);',
+ '',
+ '> ',
+ '//Вынести в отдельную процедуру',
+ '&НаКлиенте',
+ 'Процедура ""Имя процедуры обработчика"">(РезультатВопроса, ДополнительныеПараметры) Экспорт',
+ ' ',
+ ' Если РезультатВопроса """", ВыборВарианта, ""Равен"", ""="", ""Не равен"", ""<>""> ""Код возврата диалога"", ВыборВарианта, ""Да"", ""КодВозвратаДиалога.Да"", ""Нет"", ""КодВозвратаДиалога.Нет"", ""ОК"", ""КодВозвратаДиалога.ОК"", ""Отмена"", ""КодВозвратаДиалога.Отмена"", ""Повторить"", ""КодВозвратаДиалога.Повторить"", ""Прервать"", ""КодВозвратаДиалога.Прервать"", ""Пропустить"", ""КодВозвратаДиалога.Пропустить"", ""Тайаут"", ""КодВозвратаДиалога.Таймаут""> Тогда',
+ ' ',
+ ' КонецЕсли; ',
+ ' ',
+ 'КонецПроцедуры"}',
+ '},',
+ '{0,',
+ '{"Вопрос с анализом результата",0,0,"Воп[рос]","ОписаниеОповещения = Новый ОписаниеОповещения(""""Имя процедуры обработчика"">"", ЭтотОбъект);',
+ 'ПоказатьВопрос(ОписаниеОповещения, """"Текст вопроса"">"",""Режим диалога вопрос"", ВыборВарианта, ""ДаНет"", ""РежимДиалогаВопрос.ДаНет"", ""ДаНетОтмена"", ""РежимДиалогаВопрос.ДаНетОтмена"", ""ОК"", ""РежимДиалогаВопрос.ОК"", ""ОКОтмена"", ""РежимДиалогаВопрос.ОКОтмена"", ""ПовторитьОтмена"", ""РежимДиалогаВопрос.ПовторитьОтмена"", ""ПрерватьПовторитьПропустить"", ""РежимДиалогаВопрос.ПрерватьПовторитьПропустить"">, 60);',
+ '',
+ '> ',
+ '//Вынести в отдельную процедуру',
+ '&НаКлиенте',
+ 'Процедура ""Имя процедуры обработчика"">(РезультатВопроса, ДополнительныеПараметры) Экспорт',
+ ' ',
+ ' Если РезультатВопроса """", ВыборВарианта, ""Равен"", ""="", ""Не равен"", ""<>""> ""Код возврата диалога"", ВыборВарианта, ""Да"", ""КодВозвратаДиалога.Да"", ""Нет"", ""КодВозвратаДиалога.Нет"", ""ОК"", ""КодВозвратаДиалога.ОК"", ""Отмена"", ""КодВозвратаДиалога.Отмена"", ""Повторить"", ""КодВозвратаДиалога.Повторить"", ""Прервать"", ""КодВозвратаДиалога.Прервать"", ""Пропустить"", ""КодВозвратаДиалога.Пропустить"", ""Тайаут"", ""КодВозвратаДиалога.Таймаут""> Тогда',
+ ' ',
+ ' КонецЕсли; ',
+ ' ',
+ 'КонецПроцедуры"}',
+ '}',
+ '},',
+ '{2,',
+ '{"СообщениеПользователю",1,0,"",""},',
+ '{0,',
+ '{"Сообщение пользователю",0,0,"Сооб[щение]","Сообщение = Новый СообщениеПользователю;',
+ 'Сообщение.Текст = "">"";',
+ 'Сообщение.Сообщить();"}',
+ '},',
+ '{0,',
+ '{"Сообщение пользователю с привязкой к реквизитам",0,0,"Сооб[щение]","Сообщение = Новый СообщениеПользователю;',
+ 'Сообщение.Текст = "">"";',
+ 'Сообщение.Поле = """"; //имя реквизита ',
+ 'Сообщение.УстановитьДанные(); //Ссылка на объект ИБ',
+ 'Сообщение.Сообщить();"}',
+ '}',
+ '},',
+ '{2,',
+ '{"НачатьПомещениеФайла",1,0,"",""},',
+ '{0,',
+ '{"ПоместитьФайл",0,0,"ПоместитьФ[айл]","ОписаниеОповещения = Новый ОписаниеОповещения(""""Имя процедуры обработчика"">"", ЭтотОбъект);',
+ 'НачатьПомещениеФайла(ОписаниеОповещения, , ,Истина, УникальныйИдентификатор);',
+ '',
+ '>',
+ '//Вынести в отдельную процедуру',
+ '&НаКлиенте',
+ 'Процедура ""Имя процедуры обработчика"">(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт',
+ ' ',
+ 'КонецПроцедуры',
+ '"}',
+ '},',
+ '{0,',
+ '{"ПоместитьФайл",0,0,"НачатьПо[мещениеФайла]","ОписаниеОповещения = Новый ОписаниеОповещения(""""Имя процедуры обработчика"">"", ЭтотОбъект);',
+ 'НачатьПомещениеФайла(ОписаниеОповещения, , ,Истина, УникальныйИдентификатор);',
+ '',
+ '>',
+ '//Вынести в отдельную процедуру',
+ '&НаКлиенте',
+ 'Процедура ""Имя процедуры обработчика"">(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт',
+ ' ',
+ 'КонецПроцедуры',
+ '"}',
+ '}',
+ '}',
+ '},',
+ '{3,',
+ '{"Табличный документ",1,0,"",""},',
+ '{0,',
+ '{"ТабДок",0,0,"ТабДок=","ТабДок = """", ВыборВарианта, ""ЭлементыФормы.ТабДок"", ""ЭлементыФормы.ТабДок"", ""Новый ТабличныйДокумент"", ""Новый ТабличныйДокумент"">;',
+ '>"}',
+ '},',
+ '{0,',
+ '{"ПолучитьОбласть",0,0,"Обл=","Обл""Название области""> = >.ПолучитьОбласть(""""Название области"">"");"}',
+ '},',
+ '{0,',
+ '{"Макет",0,0,"Макет=","Макет = ПолучитьМакет(""Макет"");"}',
+ '}',
+ '},',
+ '{21,',
+ '{"Сокращения",1,0,"",""},',
+ '{0,',
+ '{"НачалоМесяца",0,0,"НМ","НачалоМесяца(>)"}',
+ '},',
+ '{0,',
+ '{"КонецМесяца",0,0,"КМ","КонецМесяца(>)"}',
+ '},',
+ '{0,',
+ '{"НачалоДня",0,0,"НД","НачалоДня(>)"}',
+ '},',
+ '{0,',
+ '{"КонецДня",0,0,"КД","КонецДня(>)"}',
+ '},',
+ '{0,',
+ '{"ТекущаяДата",0,0,"ТД","ТекущаяДата()>"}',
+ '},',
+ '{0,',
+ '{"ПериодДействияНачало",0,0,"ПДН","ПериодДействияНачало"}',
+ '},',
+ '{0,',
+ '{"ПериодДействияКонец",0,0,"ПДК","ПериодДействияКонец"}',
+ '},',
+ '{0,',
+ '{"БазовыйПериодНачало",0,0,"БПН","БазовыйПериодНачало"}',
+ '},',
+ '{0,',
+ '{"БазовыйПериодКонец",0,0,"БПК","БазовыйПериодКонец"}',
+ '},',
+ '{0,',
+ '{"ПланыВидовХарактеристик",0,0,"ПВХ",""""", ПланВидовХарактеристикПредопределенныеДанные>"}',
+ '},',
+ '{0,',
+ '{"ПланыВидовРасчета",0,0,"ПВР",""""", ПланВидовРасчетаПредопределенныеДанные>"}',
+ '},',
+ '{0,',
+ '{"ДобавитьМесяц",0,0,"ДМ","ДобавитьМесяц(>,)"}',
+ '},',
+ '{0,',
+ '{"Неопределено",0,0,"Неоп[ределено]","Неопределено"}',
+ '},',
+ '{0,',
+ '{"УстановитьПараметр",0,0,"УП","УстановитьПараметр("">"",);"}',
+ '},',
+ '{0,',
+ '{"Контрагент",0,0,"Конт[рагент]","Контрагент"}',
+ '},',
+ '{0,',
+ '{"Номенклатура",0,0,"Номе[нклатура]","Номенклатура"}',
+ '},',
+ '{0,',
+ '{"Количество",0,0,"Коли[чество]","Количество"}',
+ '},',
+ '{0,',
+ '{"Стоимость",0,0,"Стои[мость]","Стоимость"}',
+ '},',
+ '{0,',
+ '{"УстановитьЗначениеПараметра",0,0,"УЗП","УстановитьЗначениеПараметра("">"",);"}',
+ '},',
+ '{0,',
+ '{"МоментВремени",0,0,"МВ","МоментВремени()"}',
+ '},',
+ '{0,',
+ '{"ЗаполнитьЗначенияСвойств",0,0,"ЗЗ","заполнитьЗначенияСвойств(>, );"}',
+ '}',
+ '},',
+ '{4,',
+ '{"НаборЗаписей",1,0,"",""},',
+ '{0,',
+ '{"РегистрСведений",0,0,"НаборЗаписей=","НаборЗаписей = РегистрыСведений."""", РегистрСведений>.СоздатьНаборЗаписей();',
+ '"}',
+ '},',
+ '{0,',
+ '{"РегистрНакопления",0,0,"НаборЗаписей=","НаборЗаписей = РегистрыНакопления."""", РегистрНакопления>.СоздатьНаборЗаписей();',
+ 'НаборЗаписей.Отбор.Регистратор.Установить(>);',
+ 'НаборЗаписей.Прочитать();"}',
+ '},',
+ '{0,',
+ '{"РегистрБухгалтерии",0,0,"НаборЗаписей=","НаборЗаписей = РегистрыБухгалтерии."""", РегистрБухгалтерии>.СоздатьНаборЗаписей();',
+ 'НаборЗаписей.Отбор.Регистратор.Установить(>);',
+ 'НаборЗаписей.Прочитать();"}',
+ '},',
+ '{0,',
+ '{"РегистрРасчета",0,0,"НаборЗаписей=","НаборЗаписей = РегистрыРасчета."""", РегистрРасчета>.СоздатьНаборЗаписей();',
+ 'НаборЗаписей.Отбор.Регистратор.Установить(>);',
+ 'НаборЗаписей.Прочитать();"}',
+ '}',
+ '},',
+ '{7,',
+ '{"Прочие",1,0,"",""},',
+ '{0,',
+ '{"Формат",0,0,"Формат","Формат(>, "", ФорматнаяСтрока>"")"}',
+ '},',
+ '{0,',
+ '{"Конструктор описания типов",0,1,"","""Конструктор описания типов"", КонструкторОписанияТипов>"}',
+ '},',
+ '{0,',
+ '{"Проверка типа",0,1,"","Если ТипЗнч(""Выражение для проверки типа"">) = Тип(""""Выберите тип"", ВыборТипа>"") Тогда',
+ '',
+ ' >',
+ '',
+ 'КонецЕсли;"}',
+ '},',
+ '{0,',
+ '{"Шрифт",0,0,"Шрифт=","// КОНСТРУКТОР Имя шрифта, Размер, Жирный, Наклонный, Подчеркнутый, Зачеркнутый',
+ 'Шрифт = Новый Шрифт( > , , , , , );"}',
+ '},',
+ '{0,',
+ '{"ЧислоПрописью",0,0,"Число[Прописью]","ЧислоПрописью(>,,""рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2"")"}',
+ '},',
+ '{0,',
+ '{"Выборка",0,0,"Выборка=","Выборка = >.Выбрать();',
+ 'Пока Выборка.Следующий() Цикл',
+ '',
+ 'КонецЦикла; "}',
+ '},',
+ '{0,',
+ '{"нСтр",0,0,"нСтр","нСтр(""ru=\'>\'"", ""ru"")"}',
+ '}',
+ '},',
+ '{2,',
+ '{"Инструкции предпроцессору",1,0,"",""},',
+ '{0,',
+ '{"#Если",0,0,"№Если","#Если """", ВыборВарианта, ""Клиент"", ""Клиент"", ""Сервер"", ""Сервер"", ""ВнешнееСоединение"", ""ВнешнееСоединение"" ,""ТолстыйКлиентОбычноеПриложение"", ""ТолстыйКлиентОбычноеПриложение"", ""ТолстыйКлиентУправляемоеПриложение"",""ТолстыйКлиентУправляемоеПриложение"", ""ТонкийКлиент"", ""ТонкийКлиент"", ""ВебКлиент"", ""ВебКлиент""> Тогда',
+ ' > ',
+ '#КонецЕсли"}',
+ '},',
+ '{0,',
+ '{"#Если",0,0,"#Если","#Если """", ВыборВарианта, ""Клиент"", ""Клиент"", ""Сервер"", ""Сервер"", ""ВнешнееСоединение"", ""ВнешнееСоединение"" ,""ТолстыйКлиентОбычноеПриложение"", ""ТолстыйКлиентОбычноеПриложение"", ""ТолстыйКлиентУправляемоеПриложение"",""ТолстыйКлиентУправляемоеПриложение"", ""ТонкийКлиент"", ""ТонкийКлиент"", ""ВебКлиент"", ""ВебКлиент""> Тогда',
+ ' > ',
+ '#КонецЕсли"}',
+ '}',
+ '},',
+ '{4,',
+ '{"Блокировки",1,0,"",""},',
+ '{0,',
+ '{"Блокировка РегистрНакопления",0,0,"Блокировка=","Блокировка = Новый БлокировкаДанных;',
+ 'ЭлементБлокировки = Блокировка.Добавить(""РегистрНакопления."""", РегистрНакопления>"");',
+ 'ЭлементБлокировки.Режим = """", ВыборВарианта, ""РежимБлокировкиДанных.Исключительный"", ""РежимБлокировкиДанных.Исключительный"", ""РежимБлокировкиДанных.Разделяемый"", ""РежимБлокировкиДанных.Разделяемый"">;',
+ '//ЭлементБлокировки.ИсточникДанных = >;',
+ '//ЭлементБлокировки.ИспользоватьИзИсточникаДанных("""", """");',
+ '//ЭлементБлокировки.УстановитьЗначение("""", );',
+ 'Блокировка.Заблокировать(); ',
+ '"}',
+ '},',
+ '{0,',
+ '{"Блокировка РегистрБухгалтерии",0,0,"Блокировка=","Блокировка = Новый БлокировкаДанных;',
+ 'ЭлементБлокировки = Блокировка.Добавить(""РегистрБухгалтерии."""", РегистрБухгалтерии>"");',
+ 'ЭлементБлокировки.Режим = """", ВыборВарианта, ""РежимБлокировкиДанных.Исключительный"", ""РежимБлокировкиДанных.Исключительный"", ""РежимБлокировкиДанных.Разделяемый"", ""РежимБлокировкиДанных.Разделяемый"">;',
+ '//ЭлементБлокировки.УстановитьЗначение(""Период"", Новый Диапазон( , ));',
+ '//ЭлементБлокировки.УстановитьЗначение(""Счет"", );',
+ 'Блокировка.Заблокировать(); ',
+ '"}',
+ '},',
+ '{0,',
+ '{"Блокировка РегистрСведений",0,0,"Блокировка=","Блокировка = Новый БлокировкаДанных;',
+ 'ЭлементБлокировки = Блокировка.Добавить(""РегистрСведений."""", РегистрСведений>"");',
+ 'ЭлементБлокировки.Режим = """", ВыборВарианта, ""РежимБлокировкиДанных.Исключительный"", ""РежимБлокировкиДанных.Исключительный"", ""РежимБлокировкиДанных.Разделяемый"", ""РежимБлокировкиДанных.Разделяемый"">;',
+ '//ЭлементБлокировки.ИсточникДанных = >;',
+ '//ЭлементБлокировки.ИспользоватьИзИсточникаДанных("""", """");',
+ '//ЭлементБлокировки.УстановитьЗначение("""", );',
+ 'Блокировка.Заблокировать(); ',
+ '"}',
+ '},',
+ '{0,',
+ '{"Блокировка РегистрРасчета",0,0,"Блокировка=","Блокировка = Новый БлокировкаДанных;',
+ 'ЭлементБлокировки = Блокировка.Добавить(""РегистрРасчета."""", РегистрРасчета>"");',
+ 'ЭлементБлокировки.Режим = """", ВыборВарианта, ""РежимБлокировкиДанных.Исключительный"", ""РежимБлокировкиДанных.Исключительный"", ""РежимБлокировкиДанных.Разделяемый"", ""РежимБлокировкиДанных.Разделяемый"">;',
+ '//ЭлементБлокировки.ИсточникДанных = >;',
+ '//ЭлементБлокировки.ИспользоватьИзИсточникаДанных("""", """");',
+ '//ЭлементБлокировки.УстановитьЗначение("""", );',
+ 'Блокировка.Заблокировать(); ',
+ '"}',
+ '}',
+ '},',
+ '{1,',
+ '{"Запись",1,0,"",""},',
+ '{0,',
+ '{"ЗаписьРегистраРасчетов",0,0,"Запись=","Запись = Движения."""", РегистрРасчета>.Добавить();',
+ 'Запись.ПериодРегистрации = Дата;',
+ 'Запись.ПериодДействияНачало = ;',
+ 'Запись.ПериодДействияКонец = ;',
+ 'Запись.Сторно = Ложь;',
+ 'Запись.Сотрудник = ;',
+ 'Запись.Подразделение = ;',
+ 'Запись.График = ;',
+ 'Запись.Параметр = ;',
+ 'Запись.БазовыйПериодНачало = ;',
+ 'Запись.БазовыйПериодКонец = ;"}',
+ '}',
+ '},',
+ '{10,',
+ '{"Комментарии и области",1,0,"",""},',
+ '{0,',
+ '{"Отчерк",0,0,"/*",">//======================================================================================================================"}',
+ '},',
+ '{0,',
+ '{"Группировка с комментарием ",0,0,"\хъ","//{>',
+ '//}"}',
+ '},',
+ '{0,',
+ '{"Группировка с комментарием Открыть",0,0,"\х","//{>"}',
+ '},',
+ '{0,',
+ '{"Группировка с комментарием Закрыть",0,0,"\ъ","//}>"}',
+ '},',
+ '{0,',
+ '{"Фрагмент добавлен",0,0,"/+","//{[+](фрагмент ДОБАВЛЕН), """", ПолноеИмяПользователя> """", ДатаВремя, ""ДЛФ=DT"">',
+ '>',
+ '//}"""", ПолноеИмяПользователя> """", ДатаВремя, ""ДЛФ=DT"">"}',
+ '},',
+ '{0,',
+ '{"Фрагмент удален",0,0,"/-","//{[-](фрагмент УДАЛЕН)"""", ПолноеИмяПользователя> """", ДатаВремя, ""ДЛФ=DT"">',
+ '>',
+ '//}"""", ПолноеИмяПользователя> """", ДатаВремя, ""ДЛФ=DT"">',
+ '"}',
+ '},',
+ '{0,',
+ '{"Фрагмент ИЗМЕНЕН",0,1,"","//{[*](фрагмент ИЗМЕНЕН), """", ПолноеИмяПользователя> """", ДатаВремя, ""ДЛФ=DT"">',
+ '>',
+ '//}"""", ПолноеИмяПользователя> """", ДатаВремя, ""ДЛФ=DT"">"}',
+ '},',
+ '{0,',
+ '{"Заголовок модуля",0,0,"/ЗМ","////////////////////////////////////////////////////////////////////////////////',
+ '// МОДУЛЬ >:',
+ '//',
+ '// -',
+ '//',
+ '//',
+ '////////////////////////////////////////////////////////////////////////////////"}',
+ '},',
+ '{5,',
+ '{"Структура модулей",1,0,"",""},',
+ '{0,',
+ '{"Общий модуль",0,0,"","////////////////////////////////////////////////////////////////////////////////',
+ '// <Заголовок модуля: краткое описание и условия применения модуля.>',
+ '// ',
+ '////////////////////////////////////////////////////////////////////////////////',
+ '#Область ПрограммныйИнтерфейс',
+ '',
+ '#КонецОбласти',
+ '',
+ '#Область СлужебныеПроцедурыИФункции',
+ '',
+ '#КонецОбласти"}',
+ '},',
+ '{0,',
+ '{"Модуль объекта",0,0,"","',
+ '////////////////////////////////////////////////////////////////////////////////',
+ '// <Заголовок модуля: краткое описание и условия применения модуля.>',
+ '// ',
+ '////////////////////////////////////////////////////////////////////////////////',
+ '',
+ '#Область ПрограммныйИнтерфейс',
+ '',
+ '#КонецОбласти',
+ '',
+ '#Область ОбработчикиПроведения',
+ '',
+ '#КонецОбласти',
+ '',
+ '#Область ОбработчикиСобытий',
+ '',
+ '#КонецОбласти',
+ '',
+ '#Область СлужебныеПроцедурыИФункции',
+ '',
+ '#КонецОбласти',
+ '',
+ '',
+ '"}',
+ '},',
+ '{0,',
+ '{"Модуль формы",0,0,"","////////////////////////////////////////////////////////////////////////////////',
+ '// <Заголовок модуля: краткое описание и условия применения модуля.>',
+ '// ',
+ '////////////////////////////////////////////////////////////////////////////////',
+ '',
+ '',
+ '#Область ОбработчикиСобытийФормы',
+ '',
+ '#КонецОбласти',
+ '',
+ '#Область ОбработчикиСобытийЭлементовШапкиФормы',
+ '',
+ '#КонецОбласти',
+ '',
+ '#Область ОбработчикиСобытийЭлементовТаблицыФормы<ИмяТаблицыФормы>',
+ '',
+ '#КонецОбласти',
+ '',
+ '#Область ОбработчикиКомандФормы',
+ '',
+ '#КонецОбласти',
+ '',
+ '#Область СлужебныеПроцедурыИФункции',
+ '',
+ '#КонецОбласти"}',
+ '},',
+ '{0,',
+ '{"Модуль бизнес-процесса",0,0,"","',
+ '////////////////////////////////////////////////////////////////////////////////',
+ '// <Заголовок модуля: краткое описание и условия применения модуля.>',
+ '// ',
+ '////////////////////////////////////////////////////////////////////////////////',
+ '',
+ '#Область ОбработчикиСобытийКартыМаршрута',
+ '',
+ '#КонецОбласти',
+ '',
+ '#Область ОбработчикиСобытийМодуля',
+ '',
+ '#КонецОбласти',
+ '',
+ '#Область ПрограммныйИнтерфейс',
+ '',
+ '#КонецОбласти',
+ '',
+ '#Область СлужебныеПроцедурыИФункции',
+ '',
+ '#КонецОбласти',
+ '"}',
+ '},',
+ '{0,',
+ '{"Модуль менеджера",0,0,"","////////////////////////////////////////////////////////////////////////////////',
+ '// <Заголовок модуля: краткое описание и условия применения модуля.>',
+ '// ',
+ '////////////////////////////////////////////////////////////////////////////////',
+ '',
+ '#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда',
+ '',
+ '#Область ПрограммныйИнтерфейс',
+ '',
+ '#КонецОбласти',
+ '',
+ '#Область СлужебныеПроцедурыИФункции',
+ '',
+ '#КонецОбласти',
+ '',
+ '#КонецЕсли',
+ '"}',
+ '}',
+ '},',
+ '{0,',
+ '{"Область",0,0,"Обла[сть]","#Область ""Имя области (без пробелов)"">',
+ '',
+ '#КонецОбласти"}',
+ '}',
+ '},',
+ '{4,',
+ '{"СКД - альфа версия",1,0,"",""},',
+ '{6,',
+ '{"НаборыДанных",1,0,"",""},',
+ '{0,',
+ '{"СхемаКомпоновки",0,0,"СКД=","СхемаКомпоновки = Новый СхемаКомпоновкиДанных;"}',
+ '},',
+ '{0,',
+ '{"ИсточникДанныхСКД",0,0,"Источник[ДанныхСКД]=","ИсточникДанных = СхемаКомпоновки.ИсточникиДанных.Добавить();',
+ 'ИсточникДанных.Имя = ""local"";',
+ 'ИсточникДанных.ТипИсточникаДанных = ""local"";',
+ '"}',
+ '},',
+ '{0,',
+ '{"Набор данных Запрос",0,0,"НаборД[анных=]","НаборДанных = СхемаКомпоновки.НаборыДанных.Добавить(Тип(""НаборДанныхЗапросСхемыКомпоновкиДанных""));',
+ 'НаборДанных.Имя = ""НаборДанных1"";',
+ 'НаборДанных.ИсточникДанных = ИсточникДанных.Имя;',
+ 'НаборДанных.Запрос = >;',
+ '"}',
+ '},',
+ '{0,',
+ '{"Набор данных Объект",0,0,"НаборД[анных=]","НаборДанных = СхемаКомпоновки.НаборыДанных.Добавить(Тип(""НаборДанныхОбъектСхемыКомпоновкиДанных""));',
+ 'НаборДанных.Имя = ""НаборДанных1"";',
+ 'НаборДанных.ИсточникДанных = ИсточникДанных.Имя;',
+ 'НаборДанных.ИмяОбъекта = >;',
+ '"}',
+ '},',
+ '{0,',
+ '{"Набор данных Объединение",0,0,"НаборД[анных=]","НаборДанных = СхемаКомпоновки.НаборыДанных.Добавить(Тип(""НаборДанныхОбъединениеСхемыКомпоновкиДанных""));',
+ 'НаборДанных.Имя = ""НаборДанных1"";',
+ 'НаборДанных.Элементы = >;',
+ '"}',
+ '},',
+ '{0,',
+ '{"ПолеСКД",0,0,"ПолеСКД=","ПолеСКД = НаборДанных.Поля.Добавить(Тип(""ПолеНабораДанныхСхемыКомпоновкиДанных""));',
+ 'ПолеСКД.Поле = "">"";',
+ 'ПолеСКД.ПутьКДанным = "">"";',
+ 'ПолеСКД.Роль.Измерение = Истина;',
+ '"}',
+ '}',
+ '},',
+ '{1,',
+ '{"Ресурсы",1,0,"",""},',
+ '{0,',
+ '{"РесурсСКД",0,0,"РесурсСКД=","РесурсСКД = СхемаКомпоновки.ПоляИтога.Добавить();',
+ 'РесурсСКД.ПутьКДанным = "">""; ',
+ 'РесурсСКД.Выражение = ""Сумма(>)"";"}',
+ '}',
+ '},',
+ '{1,',
+ '{"Параметры",1,0,"",""},',
+ '{0,',
+ '{"ПараметрСКД",0,0,"ПараметрСКД=","ПараметрСКД = СхемаКомпоновки.Параметры.Добавить(); //Разные параметры надо описывать разными переменными!',
+ 'ПараметрСКД.Имя = ""Имя параметра"">;',
+ 'ПараметрСКД.Заголовок = ""Имя параметра"">;',
+ 'ПараметрСКД.ТипЗначения = ""Конструктор описания типов"", КонструкторОписанияТипов>;',
+ 'ПараметрСКД.ВключатьВДоступныеПоля = Истина;',
+ 'ПараметрСКД.Использование = ИспользованиеПараметраКомпоновкиДанных.Авто;',
+ '"}',
+ '}',
+ '},',
+ '{10,',
+ '{"Настройки",1,0,"",""},',
+ '{0,',
+ '{"НастройкиСКД Новый вариант",0,0,"НастройкиСКД=","НастройкиСКД = СхемаКомпоновки.ВариантыНастроек.Добавить();"}',
+ '},',
+ '{0,',
+ '{"НастройкиСКД Настройки по умолчанию",0,0,"НастройкиСКД=","НастройкиСКД = СхемаКомпоновки.НастройкиПоУмолчанию;',
+ '"}',
+ '},',
+ '{0,',
+ '{"ГруппировкаСКД - новая группировка в корень",0,0,"ГруппировкаСКД=","ГруппировкаСКД = НастройкиСКД.Структура.Добавить(Тип("""""", ВыборВарианта, ""Группировка"", ""ГруппировкаКомпоновкиДанных"", ""Таблица"", ""ТаблицаКомпоновкиДанных"">""));',
+ 'ГруппировкаСКД.Использование = Истина;',
+ 'ПолеГруппировки = ГруппировкаСКД.ПоляГруппировки.Элементы.Добавить(Тип(""ПолеГруппировкиКомпоновкиДанных""));',
+ 'ПолеГруппировки.Использование = Истина;',
+ 'ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(""""Введите имя поля"">"");',
+ '"}',
+ '},',
+ '{0,',
+ '{"ГруппировкаСКД - вложенная группировка",0,0,"ГруппировкаСКД=","ГруппировкаСКД = ГруппировкаСКД.Структура.Добавить(Тип("""""", ВыборВарианта, ""Группировка"", ""ГруппировкаКомпоновкиДанных"", ""Таблица"", ""ТаблицаКомпоновкиДанных"">""));',
+ 'ГруппировкаСКД.Использование = Истина;',
+ 'ПолеГруппировки = ГруппировкаСКД.ПоляГруппировки.Элементы.Добавить(Тип(""ПолеГруппировкиКомпоновкиДанных""));',
+ 'ПолеГруппировки.Использование = Истина;',
+ 'ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(""""Введите имя поля"">"");',
+ '"}',
+ '},',
+ '{0,',
+ '{"ВыбранноеПолеСКД - АвтоПоле",0,0,"ВыбранноеПолеСКД=","ВыбранноеПолеСКД = ГруппировкаСКД.Выбор.Элементы.Добавить(Тип(""АвтоВыбранноеПолеКомпоновкиДанных""));',
+ 'ВыбранноеПолеСКД.Использование = Истина;',
+ '"}',
+ '},',
+ '{0,',
+ '{"ВыбранноеПолеСКД - Произольное поле",0,0,"ВыбранноеПолеСКД=","ВыбранноеПолеСКД = ГруппировкаСКД.Выбор.Элементы.Добавить(Новый ПолеКомпоновкиДанных(""""Введите имя поля"">""));',
+ 'ВыбранноеПолеСКД.Использование = Истина;',
+ '"}',
+ '},',
+ '{0,',
+ '{"ПолеСортировкиСКД - Авто",0,0,"ПолеСортировкиСКД=","ПолеСортировки = НастройкиСКД.Порядок.Элементы.Добавить(Тип(""АвтоЭлементПорядкаКомпоновкиДанных""));',
+ 'ПолеСортировки.Использование = Истина;',
+ '"}',
+ '},',
+ '{0,',
+ '{"ПолеСортировкиСКД - Произольное поле",0,0,"ПолеСортировкиСКД=","ПолеСортировки = НастройкиСКД.Порядок.Элементы.Добавить(Новый ПолеКомпоновкиДанных(""""Введите имя поля"">""));',
+ 'ПолеСортировки.Использование = Истина;',
+ '"}',
+ '},',
+ '{0,',
+ '{"ЗначениеПараметраСКД",0,0,"","ЗначениеПараметраСКД = НастройкиСКД.ПараметрыДанных.Элементы.Добавить();',
+ 'ЗначениеПараметраСКД.Использование = Истина;',
+ 'ЗначениеПараметраСКД.Параметр = Новый ПараметрКомпоновкиДанных(""""Имя параметра"">"");',
+ 'ЗначениеПараметраСКД.Значение = ""Значение параметра"">;"}',
+ '},',
+ '{0,',
+ '{"ОтборСКД",0,0,"","ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип(""ЭлементОтбораКомпоновкиДанных""));',
+ 'ЭлементОтбора.Использование = Истина;',
+ 'ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(""""Введите имя отбора"">"");',
+ 'ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;',
+ 'ЭлементОтбора.ПравоеЗначение = ""Укажите значение отбора"">;',
+ '"}',
+ '}',
+ '}',
+ '},',
+ '{11,',
+ '{"Асинхронные вызовы",1,0,"",""},',
+ '{0,',
+ '{"Описание оповещения",0,0,"Опис[ание]","ОписаниеОповещения = Новый ОписаниеОповещения(""""Имя процедуры"">"", ЭтотОбъект);',
+ '>"}',
+ '},',
+ '{0,',
+ '{"Описание оповещения (с описанием обработчика)",0,0,"Опис[ание]","ОписаниеОповещения = Новый ОписаниеОповещения(""""Имя процедуры"">"", ЭтотОбъект);',
+ '',
+ '//==========Вынести в отдельную процедуру========',
+ '//',
+ '//Список аргументов зависит от контекста вызова!',
+ '//&НаКлиенте',
+ '//Процедура ""Имя процедуры"">(ДополнительныеПараметры) Экспорт',
+ '// ',
+ '//КонецПроцедуры',
+ ' "}',
+ '},',
+ '{0,',
+ '{"Описание оповещения с обработчиком ошибки",0,0,"Опис[ание]","ОписаниеОповещения = Новый ОписаниеОповещения(""""Имя процедуры"">"", ЭтотОбъект, ,""""Имя процедуры"">ОбработкаОшибки"", ЭтотОбъект);',
+ '>"}',
+ '},',
+ '{0,',
+ '{"Описание оповещения с обработчиком ошибки (с описанем обработчика)",0,0,"Опис[ание]","ОписаниеОповещения = Новый ОписаниеОповещения(""""Имя процедуры"">"", ЭтотОбъект, ,""""Имя процедуры"">ОбработкаОшибки"", ЭтотОбъект);',
+ '',
+ '//==========Вынести в отдельную процедуру========',
+ '//',
+ '//Список аргументов зависит от контекста вызова!',
+ '//&НаКлиенте',
+ '//Процедура ""Имя процедуры"">(ДополнительныеПараметры) Экспорт',
+ '// ',
+ '//КонецПроцедуры',
+ '',
+ '//&НаКлиенте',
+ '//Процедура ""Имя процедуры"">ОбработкаОшибки(ДополнительныеПараметры) Экспорт',
+ '// ',
+ '//КонецПроцедуры',
+ ' "}',
+ '},',
+ '{2,',
+ '{"Помещение файла во временное хранилище",1,0,"",""},',
+ '{0,',
+ '{"Поместить файл",0,1,"","&НаКлиенте',
+ 'Процедура ПоместитьФайлКоманда(Команда)',
+ ' ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;',
+ ' ПараметрыДиалога.Заголовок = ""НачатьПомещениеФайлаНаСервер"";',
+ ' ПараметрыДиалога.МножественныйВыбор = Истина;',
+ ' ПараметрыДиалога.Фильтр = ""Все файлы|*.*"";',
+ ' //НСтр(""en = \'Excel (*.XLS, *.xlsx)|*.XLS;*.xlsx|\'; ru = \'Файл таблицы Excel (*.XLS, *.xlsx)|*.XLS;*.xlsx|\'"");',
+ ' //НСтр(""en = \'Text (*.txt)|*.txt|\'; ru = \'текстовый файл (*.txt)|*.txt|\'"");',
+ ' ЗавершениеОбратныйВызов = Новый ОписаниеОповещения(""ЗавершениеОбратныйВызов"", ЭтотОбъект);',
+ ' ПрогрессОбратныйВызов = Новый ОписаниеОповещения(""ПрогрессОбратныйВызов"", ЭтотОбъект);',
+ ' ПередНачалоОбратныйВызов = Новый ОписаниеОповещения(""ПередНачалоОбратныйВызов"", ЭтотОбъект);',
+ ' НачатьПомещениеФайлаНаСервер(ЗавершениеОбратныйВызов, ПрогрессОбратныйВызов, ПередНачалоОбратныйВызов, , ПараметрыДиалога);',
+ 'КонецПроцедуры',
+ '&НаКлиенте',
+ 'Процедура ЗавершениеОбратныйВызов(ОписаниеПомещенногоФайла, ДополнительныеПараметры) Экспорт',
+ ' Сообщить(""Помещение файла "" + ?(ОписаниеПомещенногоФайла.ПомещениеФайлаОтменено, ""отменено"", ""выполнено успешно""));',
+ ' Сообщить(""Адрес во временном хранилище: "" + ОписаниеПомещенногоФайла.Адрес);',
+ ' Сообщить(""Имя файла: "" + ОписаниеПомещенногоФайла.СсылкаНаФайл.Имя);',
+ ' Сообщить(""Размер файла, байт: "" + ОписаниеПомещенногоФайла.СсылкаНаФайл.Размер());',
+ 'КонецПроцедуры',
+ '&НаКлиенте',
+ 'Процедура ПрогрессОбратныйВызов(ПомещаемыйФайл, Помещено, ОтказОтПомещенияФайла, ДополнительныеПараметры) Экспорт',
+ ' Состояние(""Файл "" + ПомещаемыйФайл.Имя, Помещено, ""Файл имеет размер "" + ПомещаемыйФайл.Размер() + "" байт"", БиблиотекаКартинок.Документ);',
+ 'КонецПроцедуры',
+ '&НаКлиенте',
+ 'Процедура ПередНачалоОбратныйВызов(ПомещаемыйФайл, ОтказОтПомещенияФайла, ДополнительныеПараметры) Экспорт',
+ ' Сообщить(""Помещаемый файл - "" + ПомещаемыйФайл.Имя + "", размер = "" + ПомещаемыйФайл.Размер());',
+ 'КонецПроцедуры"}',
+ '},',
+ '{0,',
+ '{"Поместить файл АСИНХ",0,1,"","&НаКлиенте',
+ 'АСИНХ Процедура ПоместитьФайлКоманда(Команда)',
+ ' ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;',
+ ' ПараметрыДиалога.Заголовок = ""НачатьПомещениеФайлаНаСервер"";',
+ ' ПараметрыДиалога.МножественныйВыбор = Истина;',
+ ' ПараметрыДиалога.Фильтр = ""Все файлы|*.*"";',
+ ' //НСтр(""en = \'Excel (*.XLS, *.xlsx)|*.XLS;*.xlsx|\'; ru = \'Файл таблицы Excel (*.XLS, *.xlsx)|*.XLS;*.xlsx|\'"");',
+ ' //НСтр(""en = \'Text (*.txt)|*.txt|\'; ru = \'текстовый файл (*.txt)|*.txt|\'"");',
+ ' ПрогрессОбратныйВызов = Новый ОписаниеОповещения(""ПрогрессОбратныйВызов"", ЭтотОбъект);',
+ ' ПередНачалоОбратныйВызов = Новый ОписаниеОповещения(""ПередНачалоОбратныйВызов"", ЭтотОбъект);',
+ ' ОписаниеПомещенногоФайла = ЖДАТЬ НачатьПомещениеФайлаНаСервер(ПрогрессОбратныйВызов, ПередНачалоОбратныйВызов, , ПараметрыДиалога);',
+ ' Если ОписаниеПомещенногоФайла = Неопределено Тогда',
+ ' Возврат;',
+ ' КонецЕсли; ',
+ ' ',
+ ' Сообщить(""Помещение файла "" + ?(ОписаниеПомещенногоФайла.ПомещениеФайлаОтменено, ""отменено"", ""выполнено успешно""));',
+ ' Сообщить(""Адрес во временном хранилище: "" + ОписаниеПомещенногоФайла.Адрес);',
+ ' Сообщить(""Имя файла: "" + ОписаниеПомещенногоФайла.СсылкаНаФайл.Имя);',
+ ' Сообщить(""Размер файла, байт: "" + ОписаниеПомещенногоФайла.СсылкаНаФайл.Размер());',
+ '',
+ 'КонецПроцедуры',
+ '',
+ '&НаКлиенте',
+ 'Процедура ПрогрессОбратныйВызов(ПомещаемыйФайл, Помещено, ОтказОтПомещенияФайла, ДополнительныеПараметры) Экспорт',
+ ' Состояние(""Файл "" + ПомещаемыйФайл.Имя, Помещено, ""Файл имеет размер "" + ПомещаемыйФайл.Размер() + "" байт"", БиблиотекаКартинок.Документ);',
+ 'КонецПроцедуры',
+ '&НаКлиенте',
+ 'Процедура ПередНачалоОбратныйВызов(ПомещаемыйФайл, ОтказОтПомещенияФайла, ДополнительныеПараметры) Экспорт',
+ ' Сообщить(""Помещаемый файл - "" + ПомещаемыйФайл.Имя + "", размер = "" + ПомещаемыйФайл.Размер());',
+ 'КонецПроцедуры"}',
+ '}',
+ '},',
+ '{7,',
+ '{"Процедура",1,0,"",""},',
+ '{0,',
+ '{"Асинх Процедура",0,0,"Проц[едура]","Асинх Процедура >()',
+ ' ',
+ 'КонецПроцедуры',
+ '"}',
+ '},',
+ '{0,',
+ '{"Асинх Процедура с заголовком",0,0,"Процедура","////////////////////////////////////////////////////////////////////////////////',
+ '//',
+ '// Процедура ""Введите имя процедуры"">',
+ '//',
+ '// Описание:',
+ '//',
+ '//',
+ '// Параметры (название, тип, дифференцированное значение)',
+ '//',
+ 'Асинх Процедура ""Введите имя процедуры"">()',
+ ' >',
+ 'КонецПроцедуры //""Введите имя процедуры"">',
+ '',
+ '"}',
+ '},',
+ '{0,',
+ '{"Асинх Процедура НаКлиенте",0,0,"Проц[едура]","&НаКлиенте',
+ 'Асинх Процедура >()',
+ ' ',
+ 'КонецПроцедуры',
+ '"}',
+ '},',
+ '{0,',
+ '{"Асинх Процедура НаСервереБезКонтекста",0,0,"Проц[едура]","&НаСервереБезКонтекста',
+ 'Асинх Процедура >()',
+ '',
+ 'КонецПроцедуры"}',
+ '},',
+ '{0,',
+ '{"Асинх Процедура НаСервере",0,0,"Проц[едура]","&НаСервере',
+ 'Асинх Процедура >()',
+ ' ',
+ 'КонецПроцедуры',
+ '"}',
+ '},',
+ '{0,',
+ '{"Асинх Процедура НаКлиентеНаСервереБезКонтекста (только модули упр.форм)",0,0,"Проц[едура]","&НаКлиентеНаСервереБезКонтекста',
+ 'Асинх Процедура >()',
+ ' ',
+ 'КонецПроцедуры',
+ '"}',
+ '},',
+ '{0,',
+ '{"Асинх Процедура НаКлиентеНаСервере (только модули команд)",0,0,"Проц[едура]","&НаКлиентеНаСервере',
+ 'Асинх Процедура >()',
+ ' ',
+ 'КонецПроцедуры',
+ '"}',
+ '}',
+ '},',
+ '{7,',
+ '{"Функция",1,0,"",""},',
+ '{0,',
+ '{"Асинх Функция",0,0,"Функ[ция]","Асинх Функция >()',
+ ' ',
+ 'КонецФункции',
+ '"}',
+ '},',
+ '{0,',
+ '{"Асинх Функция с заголовком",0,0,"Функция","////////////////////////////////////////////////////////////////////////////////',
+ '//',
+ '// Функция ""Введите имя функции"">',
+ '//',
+ '// Описание:',
+ '//',
+ '//',
+ '// Параметры (название, тип, дифференцированное значение)',
+ '//',
+ '// Возвращаемое значение: ',
+ '//',
+ 'Асинх Функция ""Введите имя функции"">()',
+ ' >',
+ 'КонецФункции //""Введите имя функции"">',
+ '"}',
+ '},',
+ '{0,',
+ '{"Асинх Функция НаКлиенте",0,0,"Функ[ция]","&НаКлиенте',
+ 'Асинх Функция >()',
+ ' ',
+ 'КонецФункции',
+ '"}',
+ '},',
+ '{0,',
+ '{"Асинх Функция НаСервереБезКонтекста",0,0,"Функ[ция]","&НаСервереБезКонтекста',
+ 'Асинх Функция >()',
+ ' ',
+ 'КонецФункции',
+ '"}',
+ '},',
+ '{0,',
+ '{"Асинх Функция НаСервере",0,0,"Функ[ция]","&НаСервере',
+ 'Асинх Функция >()',
+ ' ',
+ 'КонецФункции',
+ '"}',
+ '},',
+ '{0,',
+ '{"Асинх Функция НаКлиентеНаСервереБезКонтекста (только модули упр.форм)",0,0,"Функ[ция]","&НаКлиентеНаСервереБезКонтекста',
+ 'Асинх Функция >()',
+ ' ',
+ 'КонецФункции"}',
+ '},',
+ '{0,',
+ '{"Асинх Функция НаКлиентеНаСервере (только модули команд)",0,0,"Функ[ция]","&НаКлиентеНаСервере',
+ 'Асинх Функция >()',
+ ' ',
+ 'КонецФункции"}',
+ '}',
+ '},',
+ '{0,',
+ '{"(Асинх) Процедура",0,0,"Асинх[ Процедура]","Асинх Процедура >()',
+ ' ',
+ 'КонецПроцедуры',
+ ' "}',
+ '},',
+ '{0,',
+ '{"(Асинх) Функция",0,0,"Асинх[ Функция]","Асинх Функция >()',
+ ' ',
+ 'КонецПроцедуры',
+ ' "}',
+ '},',
+ '{0,',
+ '{"Обещание",0,0,"Обещание=","Обещание = Ждать >;"}',
+ '},',
+ '{6,',
+ '{"Вопрос",1,0,"",""},',
+ '{0,',
+ '{"Асинх Вопрос",0,0,"Ответ=","Ответ = Ждать ВопросАсинх(""""Текст вопроса"">"",""Режим диалога вопрос"", ВыборВарианта, ""ДаНет"", ""РежимДиалогаВопрос.ДаНет"", ""ДаНетОтмена"", ""РежимДиалогаВопрос.ДаНетОтмена"", ""ОК"", ""РежимДиалогаВопрос.ОК"", ""ОКОтмена"", ""РежимДиалогаВопрос.ОКОтмена"", ""ПовторитьОтмена"", ""РежимДиалогаВопрос.ПовторитьОтмена"", ""ПрерватьПовторитьПропустить"", ""РежимДиалогаВопрос.ПрерватьПовторитьПропустить"">, 60);',
+ ' "}',
+ '},',
+ '{0,',
+ '{"Асинх Вопрос",0,0,"ПоказатьВо[прос]","Ответ = Ждать ВопросАсинх(""""Текст вопроса"">"",""Режим диалога вопрос"", ВыборВарианта, ""ДаНет"", ""РежимДиалогаВопрос.ДаНет"", ""ДаНетОтмена"", ""РежимДиалогаВопрос.ДаНетОтмена"", ""ОК"", ""РежимДиалогаВопрос.ОК"", ""ОКОтмена"", ""РежимДиалогаВопрос.ОКОтмена"", ""ПовторитьОтмена"", ""РежимДиалогаВопрос.ПовторитьОтмена"", ""ПрерватьПовторитьПропустить"", ""РежимДиалогаВопрос.ПрерватьПовторитьПропустить"">, 60);',
+ '"}',
+ '},',
+ '{0,',
+ '{"Асинх Вопрос",0,0,"Воп[рос]","Ответ = Ждать ВопросАсинх(""""Текст вопроса"">"",""Режим диалога вопрос"", ВыборВарианта, ""ДаНет"", ""РежимДиалогаВопрос.ДаНет"", ""ДаНетОтмена"", ""РежимДиалогаВопрос.ДаНетОтмена"", ""ОК"", ""РежимДиалогаВопрос.ОК"", ""ОКОтмена"", ""РежимДиалогаВопрос.ОКОтмена"", ""ПовторитьОтмена"", ""РежимДиалогаВопрос.ПовторитьОтмена"", ""ПрерватьПовторитьПропустить"", ""РежимДиалогаВопрос.ПрерватьПовторитьПропустить"">, 60);',
+ '"}',
+ '},',
+ '{0,',
+ '{"Асинх Вопрос с анализом результата",0,0,"Ответ=","Ответ = Ждать ВопросАсинх(""""Текст вопроса"">"",""Режим диалога вопрос"", ВыборВарианта, ""ДаНет"", ""РежимДиалогаВопрос.ДаНет"", ""ДаНетОтмена"", ""РежимДиалогаВопрос.ДаНетОтмена"", ""ОК"", ""РежимДиалогаВопрос.ОК"", ""ОКОтмена"", ""РежимДиалогаВопрос.ОКОтмена"", ""ПовторитьОтмена"", ""РежимДиалогаВопрос.ПовторитьОтмена"", ""ПрерватьПовторитьПропустить"", ""РежимДиалогаВопрос.ПрерватьПовторитьПропустить"">, 60);',
+ ' ',
+ 'Если Ответ """", ВыборВарианта, ""Равен"", ""="", ""Не равен"", ""<>""> ""Код возврата диалога"", ВыборВарианта, ""Да"", ""КодВозвратаДиалога.Да"", ""Нет"", ""КодВозвратаДиалога.Нет"", ""ОК"", ""КодВозвратаДиалога.ОК"", ""Отмена"", ""КодВозвратаДиалога.Отмена"", ""Повторить"", ""КодВозвратаДиалога.Повторить"", ""Прервать"", ""КодВозвратаДиалога.Прервать"", ""Пропустить"", ""КодВозвратаДиалога.Пропустить"", ""Тайаут"", ""КодВозвратаДиалога.Таймаут""> Тогда',
+ ' ',
+ 'КонецЕсли; ',
+ '"}',
+ '},',
+ '{0,',
+ '{"Асинх Вопрос с анализом результата",0,0,"ПоказатьВо[прос]","Ответ = Ждать ВопросАсинх(""""Текст вопроса"">"",""Режим диалога вопрос"", ВыборВарианта, ""ДаНет"", ""РежимДиалогаВопрос.ДаНет"", ""ДаНетОтмена"", ""РежимДиалогаВопрос.ДаНетОтмена"", ""ОК"", ""РежимДиалогаВопрос.ОК"", ""ОКОтмена"", ""РежимДиалогаВопрос.ОКОтмена"", ""ПовторитьОтмена"", ""РежимДиалогаВопрос.ПовторитьОтмена"", ""ПрерватьПовторитьПропустить"", ""РежимДиалогаВопрос.ПрерватьПовторитьПропустить"">, 60);',
+ ' ',
+ 'Если Ответ """", ВыборВарианта, ""Равен"", ""="", ""Не равен"", ""<>""> ""Код возврата диалога"", ВыборВарианта, ""Да"", ""КодВозвратаДиалога.Да"", ""Нет"", ""КодВозвратаДиалога.Нет"", ""ОК"", ""КодВозвратаДиалога.ОК"", ""Отмена"", ""КодВозвратаДиалога.Отмена"", ""Повторить"", ""КодВозвратаДиалога.Повторить"", ""Прервать"", ""КодВозвратаДиалога.Прервать"", ""Пропустить"", ""КодВозвратаДиалога.Пропустить"", ""Тайаут"", ""КодВозвратаДиалога.Таймаут""> Тогда',
+ ' ',
+ 'КонецЕсли; ',
+ '"}',
+ '},',
+ '{0,',
+ '{"Асинх Вопрос с анализом результата",0,0,"Воп[рос]","Ответ = Ждать ВопросАсинх(""""Текст вопроса"">"",""Режим диалога вопрос"", ВыборВарианта, ""ДаНет"", ""РежимДиалогаВопрос.ДаНет"", ""ДаНетОтмена"", ""РежимДиалогаВопрос.ДаНетОтмена"", ""ОК"", ""РежимДиалогаВопрос.ОК"", ""ОКОтмена"", ""РежимДиалогаВопрос.ОКОтмена"", ""ПовторитьОтмена"", ""РежимДиалогаВопрос.ПовторитьОтмена"", ""ПрерватьПовторитьПропустить"", ""РежимДиалогаВопрос.ПрерватьПовторитьПропустить"">, 60);',
+ ' ',
+ 'Если Ответ """", ВыборВарианта, ""Равен"", ""="", ""Не равен"", ""<>""> ""Код возврата диалога"", ВыборВарианта, ""Да"", ""КодВозвратаДиалога.Да"", ""Нет"", ""КодВозвратаДиалога.Нет"", ""ОК"", ""КодВозвратаДиалога.ОК"", ""Отмена"", ""КодВозвратаДиалога.Отмена"", ""Повторить"", ""КодВозвратаДиалога.Повторить"", ""Прервать"", ""КодВозвратаДиалога.Прервать"", ""Пропустить"", ""КодВозвратаДиалога.Пропустить"", ""Тайаут"", ""КодВозвратаДиалога.Таймаут""> Тогда',
+ ' ',
+ 'КонецЕсли; ',
+ '"}',
+ '}',
+ '}',
+ '},',
+ '{4,',
+ '{"Расширения",1,0,"",""},',
+ '{0,',
+ '{"Расширения Удаление",0,0,"Уд[аление]","#Удаление',
+ ' >',
+ '#КонецУдаления"}',
+ '},',
+ '{0,',
+ '{"Расширения Вставка",0,0,"Вст[авка]","#Вставка',
+ ' >',
+ '#КонецВставки"}',
+ '},',
+ '{4,',
+ '{"Процедуры",1,0,"",""},',
+ '{0,',
+ '{"Расширения &Перед",0,0,"Проц[едура]","&Перед(""""Имя процедуры"">"")',
+ 'Процедура ""Имя процедуры"">()',
+ ' >',
+ 'КонецПроцедуры"}',
+ '},',
+ '{0,',
+ '{"Расширения &После",0,0,"Проц[едура]","&После(""""Имя процедуры"">"")',
+ 'Процедура ""Имя процедуры"">()',
+ ' >',
+ 'КонецПроцедуры"}',
+ '},',
+ '{0,',
+ '{"Расширения &Вместо",0,0,"Проц[едура]","&Вместо(""""Имя процедуры"">"")',
+ 'Процедура ""Имя процедуры"">()',
+ ' >',
+ ' //ПродолжитьВызов();',
+ 'КонецПроцедуры"}',
+ '},',
+ '{0,',
+ '{"Расширения &ИзменениеИКонтроль",0,0,"Проц[едура]","&ИзменениеИКонтроль(""""Имя процедуры"">"")',
+ 'Процедура ПРЕФИКС_""Имя процедуры"">()',
+ ' >',
+ 'КонецПроцедуры"}',
+ '}',
+ '},',
+ '{4,',
+ '{"Функции",1,0,"",""},',
+ '{0,',
+ '{"Расширения &Перед",0,0,"Функ[ция]","&Перед(""""Имя функции"">"")',
+ 'Функция ""Имя Функции"">()',
+ ' >',
+ 'Конецфункции"}',
+ '},',
+ '{0,',
+ '{"Расширения &После",0,0,"Функ[ция]","&После(""""Имя функции"">"")',
+ 'Функция ""Имя функции"">()',
+ ' >',
+ 'Конецфункции"}',
+ '},',
+ '{0,',
+ '{"Расширения &Вместо",0,0,"Функ[ция]","&Вместо(""""Имя функции"">"")',
+ 'Функция ""Имя функции"">()',
+ ' >',
+ ' //ПродолжитьВызов();',
+ 'Конецфункции"}',
+ '},',
+ '{0,',
+ '{"Расширения &ИзменениеИКонтроль",0,0,"Проц[едура]","&ИзменениеИКонтроль(""""Имя функции"">"")',
+ 'Функция ПРЕФИКС_""Имя функции"">()',
+ ' >',
+ 'Конецфункции"}',
+ '}',
+ '}',
+ '},',
+ '{1,',
+ '{"Полезняшки",1,0,"",""},',
+ '{0,',
+ '{"Загрузка данных из Excel АСИНХ",0,0,"","&НаКлиенте',
+ 'АСИНХ Процедура ПоместитьФайлКоманда(Команда)',
+ ' ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;',
+ ' ПараметрыДиалога.Заголовок = ""НачатьПомещениеФайлаНаСервер"";',
+ ' ПараметрыДиалога.МножественныйВыбор = Истина;',
+ ' ПараметрыДиалога.Фильтр = НСтр(""en = \'Excel (*.XLS, *.xlsx)|*.XLS;*.xlsx|\'; ru = \'Файл таблицы Excel (*.XLS, *.xlsx)|*.XLS;*.xlsx|\'"");',
+ ' ПрогрессОбратныйВызов = Новый ОписаниеОповещения(""ПрогрессОбратныйВызов"", ЭтотОбъект);',
+ ' ПередНачалоОбратныйВызов = Новый ОписаниеОповещения(""ПередНачалоОбратныйВызов"", ЭтотОбъект);',
+ ' ОписаниеПомещенногоФайла = ЖДАТЬ ПоместитьФайлНаСерверАсинх(ПрогрессОбратныйВызов, ПередНачалоОбратныйВызов, , ПараметрыДиалога);',
+ ' Если ОписаниеПомещенногоФайла = Неопределено Тогда',
+ ' Возврат;',
+ ' КонецЕсли; ',
+ ' ',
+ ' Сообщить(""Помещение файла "" + ?(ОписаниеПомещенногоФайла.ПомещениеФайлаОтменено, ""отменено"", ""выполнено успешно""));',
+ ' Сообщить(""Адрес во временном хранилище: "" + ОписаниеПомещенногоФайла.Адрес);',
+ ' Сообщить(""Имя файла: "" + ОписаниеПомещенногоФайла.СсылкаНаФайл.Имя);',
+ ' Сообщить(""Размер файла, байт: "" + ОписаниеПомещенногоФайла.СсылкаНаФайл.Размер());',
+ '',
+ ' ОбработатьЗагруженныйФайл(ОписаниеПомещенногоФайла.Адрес);',
+ 'КонецПроцедуры',
+ '',
+ '&НаСервереБезКонтекста',
+ 'Процедура ОбработатьЗагруженныйФайл(Адрес)',
+ ' ',
+ ' ФайлНаДиске = ПолучитьИмяВременногоФайла(""xlsx""); ',
+ ' ДанныеФайла = ПолучитьИзВременногоХранилища(Адрес); ',
+ ' ДанныеФайла.Записать(ФайлНаДиске) ; ',
+ ' ',
+ ' ТабДок = Новый ТабличныйДокумент;',
+ ' ТабДок.Прочитать(ФайлНаДиске, СпособЧтенияЗначенийТабличногоДокумента.Значение);',
+ ' ',
+ ' ПостроительЗапроса = Новый ПостроительЗапроса;',
+ ' ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных (ТабДок.Область(""Лист1"")); //Здесть Лист1 - название листа экселя.',
+ ' ПостроительЗапроса.Выполнить();',
+ ' //В файле первой строчкой должны идти названия колонок. Если этого не будет, то построитель не вернет ТЗ, т.к. не будут заданы имена колонок.',
+ ' //Также нужно смотреть на типы ячеек файла. Типизация нормально отрабатывает, если заданы соответствующие типы. Иначе ""10.08.2017"" в экселе - это строка, а не дата.',
+ ' СтрокиТЗ = ПостроительЗапроса.Результат.Выгрузить(); //Выполняем запрос к источнику данных, автоматически выбирая все поля и получаем таблицу значений',
+ '',
+ ' Для каждого СтрокаТЗ Из СтрокиТЗ Цикл',
+ ' //Полученные данные',
+ ' КонецЦикла; ',
+ 'КонецПроцедуры ',
+ '',
+ '&НаКлиенте',
+ 'Процедура ПрогрессОбратныйВызов(ПомещаемыйФайл, Помещено, ОтказОтПомещенияФайла, ДополнительныеПараметры) Экспорт',
+ ' Состояние(""Файл "" + ПомещаемыйФайл.Имя, Помещено, ""Файл имеет размер "" + ПомещаемыйФайл.Размер() + "" байт"", БиблиотекаКартинок.Документ);',
+ 'КонецПроцедуры',
+ '',
+ '&НаКлиенте',
+ 'Процедура ПередНачалоОбратныйВызов(ПомещаемыйФайл, ОтказОтПомещенияФайла, ДополнительныеПараметры) Экспорт',
+ ' Сообщить(""Помещаемый файл - "" + ПомещаемыйФайл.Имя + "", размер = "" + ПомещаемыйФайл.Размер());',
+ 'КонецПроцедуры"}',
+ '}',
+ '}',
+ '}',
+ '}'
+ ].join('\n');
+
+ require(['editor'], function () {
+
+ init('8.3.18.1');
+ showStatusBar(true);
+
+ parseSnippets(st1);
+ parseSnippets(st2, true);
+
+ var assert = chai.assert;
+ var expect = chai.expect;
+ chai.should();
+
+ function getPosition(model) {
+
+ let strings = model.getValue().split('\n');
+ return new monaco.Position(strings.length, strings[strings.length - 1].length + 1);
+
+ }
+
+ function getModel(string) {
+
+ return monaco.editor.createModel(string, 'bsl');
+
+ }
+
+ function helper(string) {
+ let model = getModel(string);
+ let position = getPosition(model);
+ return new bslHelper(model, position);
+ }
+
+ function helperToConsole(helper) {
+
+ console.log('line number:', helper.column);
+ console.log('column:', helper.lineNumber);
+ console.log('word:', helper.word);
+ console.log('last operator:', helper.lastOperator);
+ console.log('whitespace:', helper.hasWhitespace);
+ console.log('last expr:', helper.lastExpression);
+ console.log('expr array:', helper.getExpressioArray());
+ console.log('last raw expr:', helper.lastRawExpression);
+ console.log('raw array:', helper.getRawExpressioArray());
+ console.log('text before:', helper.textBeforePosition);
+
+ }
+
+ function getModuleText() {
+
+ return [
+ '// Значение реквизита, прочитанного из информационной базы по ссылке на объект.',
+ '//',
+ '// Если необходимо зачитать реквизит независимо от прав текущего пользователя,',
+ '// то следует использовать предварительный переход в привилегированный режим.',
+ '//',
+ '// Параметры:',
+ '// Ссылка - ЛюбаяСсылка - объект, значения реквизитов которого необходимо получить.',
+ '// - Строка - полное имя предопределенного элемента, значения реквизитов которого необходимо получить.',
+ '// ИмяРеквизита - Строка - имя получаемого реквизита.',
+ '// ВыбратьРазрешенные - Булево - если Истина, то запрос к объекту выполняется с учетом прав пользователя, и в случае,',
+ '// - если есть ограничение на уровне записей, то возвращается Неопределено;',
+ '// - если нет прав для работы с таблицей, то возникнет исключение.',
+ '// - если Ложь, то возникнет исключение при отсутствии прав на таблицу',
+ '// или любой из реквизитов.',
+ '//',
+ '// Возвращаемое значение:',
+ '// Произвольный - зависит от типа значения прочитанного реквизита.',
+ '// - если в параметр Ссылка передана пустая ссылка, то возвращается Неопределено.',
+ '// - если в параметр Ссылка передана ссылка несуществующего объекта (битая ссылка), ',
+ '// то возвращается Неопределено.',
+ '//',
+ 'Функция ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные = Ложь) Экспорт',
+ ' ',
+ ' Если ПустаяСтрока(ИмяРеквизита) Тогда ',
+ ' ВызватьИсключение НСтр("ru = \'Неверный второй параметр ИмяРеквизита: ',
+ ' |- Имя реквизита должно быть заполнено\'");',
+ ' КонецЕсли;',
+ ' ',
+ ' Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные);',
+ ' Возврат Результат[СтрЗаменить(ИмяРеквизита, ".", "")];',
+ ' ',
+ 'КонецФункции ',
+ '',
+ '// Проверяет наличие ссылок на объект в базе данных.',
+ '//',
+ '// Параметры:',
+ '// СсылкаИлиМассивСсылок - ЛюбаяСсылка, Массив - объект или список объектов.',
+ '// ИскатьСредиСлужебныхОбъектов - Булево - если Истина, то не будут учитываться',
+ '// исключения поиска ссылок, заданные при разработке конфигурации.',
+ '// Про исключение поиска ссылок подробнее',
+ '// см. ОбщегоНазначенияПереопределяемый.ПриДобавленииИсключенийПоискаСсылок',
+ '// ДругиеИсключения - Массив - полные имена объектов метаданных, которые также',
+ '// требуется исключить из поиска ссылок.',
+ '//',
+ '// Возвращаемое значение:',
+ '// Булево - Истина, если есть ссылки на объект.',
+ '//',
+ 'Функция ЕстьСсылкиНаОбъект(Знач СсылкаИлиМассивСсылок, Знач ИскатьСредиСлужебныхОбъектов = Ложь, ДругиеИсключения = Неопределено) Экспорт',
+ ' ',
+ ' УстановитьПривилегированныйРежим(Истина);',
+ ' ТаблицаСсылок = НайтиПоСсылкам(МассивСсылок);',
+ ' Возврат ТаблицаСсылок.Количество() > 0;',
+ ' ',
+ 'КонецФункции',
+ '',
+ '// Производит замену ссылок во всех данных. После замены неиспользуемые ссылки опционально удаляются.',
+ '// Замена ссылок происходит с транзакциями по изменяемому объекту и его связям, не по анализируемой ссылке.',
+ '//',
+ '// Параметры:',
+ '// ПарыЗамен - Соответствие - Пары замен.',
+ '// * Ключ - ЛюбаяСсылка - Что ищем (дубль).',
+ '// * Значение - ЛюбаяСсылка - На что заменяем (оригинал).',
+ '// Ссылки сами на себя и пустые ссылки для поиска будут проигнорированы.',
+ '// ',
+ '// Параметры - Структура - Необязательный. Параметры замены.',
+ '// ',
+ '// * СпособУдаления - Строка - Необязательный. Что делать с дублем после успешной замены.',
+ '// "" - По умолчанию. Не предпринимать никаких действий.',
+ '// "Пометка" - Помечать на удаление.',
+ '// "Непосредственно" - Удалять непосредственно.',
+ '// ',
+ '// * УчитыватьПрикладныеПравила - Булево - Необязательный. Режим проверки параметра ПарыЗамен.',
+ '// Истина - По умолчанию. Проверять каждую пару "дубль-оригинал" (вызывается функция',
+ '// ВозможностьЗаменыЭлементов модуля менеджера).',
+ '// Ложь - Отключить прикладные проверки пар.',
+ '// ',
+ '// * ВключатьБизнесЛогику - Булево - Необязательный. Режим записи мест использования при замене дублей на оригиналы.',
+ '// Истина - По умолчанию. Места использования дублей записываются в режиме ОбменДанными.Загрузка = Ложь.',
+ '// Ложь - Запись ведется в режиме ОбменДанными.Загрузка = Истина.',
+ '// ',
+ '// * ЗаменаПарыВТранзакции - Булево - Необязательный. Определяет размер транзакции.',
+ '// Истина - По умолчанию. Транзакция охватывает все места использования одного дубля. Может быть очень ресурсоемко ',
+ '// в случае большого количества мест использований.',
+ '// Ложь - Замена каждого места использования выполняется в отдельной транзакции.',
+ '// ',
+ '// * ПривилегированнаяЗапись - Булево - Необязательный. Требуется ли устанавливать привилегированный режим перед запись.',
+ '// Ложь - По умолчанию. Записывать с текущими правами.',
+ '// Истина - Записывать в привилегированном режиме.',
+ '//',
+ '// Возвращаемое значение:',
+ '// ТаблицаЗначений - Неуспешные замены (ошибки).',
+ '// * Ссылка - ЛюбаяСсылка - Ссылка, которую заменяли.',
+ '// * ОбъектОшибки - Произвольный - Объект - причина ошибки.',
+ '// * ПредставлениеОбъектаОшибки - Строка - Строковое представление объекта ошибки.',
+ '// * ТипОшибки - Строка - Тип ошибки:',
+ '// "ОшибкаБлокировки" - при обработке ссылки некоторые объекты были заблокированы.',
+ '// "ДанныеИзменены" - в процессе обработки данные были изменены другим пользователем.',
+ '// "ОшибкаЗаписи" - не смогли записать объект, или метод ВозможностьЗаменыЭлементов вернул отказ.',
+ '// "ОшибкаУдаления" - не смогли удалить объект.',
+ '// "НеизвестныеДанные" - при обработке были найдены данные, которые не планировались к анализу, замена не реализована.',
+ '// * ТекстОшибки - Строка - Подробное описание ошибки.',
+ '//',
+ 'Функция ЗаменитьСсылки(Знач ПарыЗамен, Знач Параметры = Неопределено) Экспорт',
+ '',
+ ' Результат = Новый Структура;',
+ ' Результат.Вставить("ЕстьОшибки", Ложь);',
+ ' Результат.Вставить("Ошибки", ОшибкиЗамены);',
+ ' ',
+ ' Возврат Результат.Ошибки;',
+ '',
+ 'КонецФункции'].join('\n');
+
+ }
+
+ let bsl = helper('');
+ let bslLoaded = (bslGlobals != undefined);
+
+ it("проверка загрузки bslGlobals", function () {
+ assert.equal(bslLoaded, true);
+ });
+
+ if (bslLoaded) {
+
+ it("проверка существования глобальной переменной editor", function () {
+ assert.notEqual(editor, undefined);
+ });
+
+ it("проверка определения русского языка", function () {
+ assert.equal(bsl.hasRu('тест'), true);
+ });
+
+ it("проверка автокомплита для глобальной функции Найти", function () {
+ bsl = helper('най');
+ let suggestions = [];
+ bsl.getCommonCompletion(suggestions, bslGlobals.globalfunctions, monaco.languages.CompletionItemKind.Function)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ });
+
+ it("проверка автокомплита для глобальной функции Найти обернутой в функцию", function () {
+ bsl = helper('СтрНайти(Най');
+ let suggestions = [];
+ bsl.getCommonCompletion(suggestions, bslGlobals.globalfunctions, monaco.languages.CompletionItemKind.Function)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ });
+
+ it("проверка подсказки параметров для глобальной функции Найти(", function () {
+ bsl = helper('Найти(');
+ let suggestions = [];
+ let help = bsl.getCommonSigHelp(bslGlobals.globalfunctions);
+ expect(help).to.have.property('activeParameter');
+ });
+
+ it("проверка подсказки параметров для глобальной функции Найти обернутой в функцию", function () {
+ bsl = helper('СтрНайти(Найти(');
+ let suggestions = [];
+ let help = bsl.getCommonSigHelp(bslGlobals.globalfunctions);
+ expect(help).to.have.property('activeParameter');
+ });
+
+ it("проверка автокомплита для конструктора HTTPЗапрос", function () {
+ bsl = helper('Запрос = Новый HTTPЗа');
+ assert.equal(bsl.requireClass(), true);
+ let suggestions = [];
+ bsl.getCommonCompletion(suggestions, bslGlobals.classes, monaco.languages.CompletionItemKind.Constructor)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ expect(suggestions).to.have.deep.property('[0].label', 'HTTPЗапрос');
+ });
+
+ it("проверка автокомплита для конструктора HTTPЗапрос обернутого в функцию", function () {
+ bsl = helper('СтрНайти(Новый HTTPЗа');
+ assert.equal(bsl.requireClass(), true);
+ let suggestions = [];
+ bsl.getCommonCompletion(suggestions, bslGlobals.classes, monaco.languages.CompletionItemKind.Constructor)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ expect(suggestions).to.have.deep.property('[0].label', 'HTTPЗапрос');
+ });
+
+ it("проверка подсказки параметров для конструктора HTTPЗапрос", function () {
+ bsl = helper('Новый HTTPЗапрос(');
+ let suggestions = [];
+ let help = bsl.getClassSigHelp(bslGlobals.classes);
+ expect(help).to.have.property('activeParameter');
+ });
+
+ it("проверка подсказки параметров для конструктора HTTPЗапрос обернутого в функцию", function () {
+ bsl = helper('СтрНайти(Новый HTTPЗапрос(');
+ let suggestions = [];
+ let help = bsl.getClassSigHelp(bslGlobals.classes);
+ expect(help).to.have.property('activeParameter');
+ });
+
+ it("проверка автокомплита объекта HTTPЗапрос (список свойств и методов)", function () {
+ bsl = helper('HTTPЗапрос.');
+ let suggestions = [];
+ bsl.getClassCompletion(suggestions, bslGlobals.classes);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "УстановитьПараметр"), false);
+ });
+
+ it("проверка автокомплита для экземпляра объекта HTTPЗапрос (список свойств и методов)", function () {
+ bsl = helper('Запрос = Новый HTTPЗапрос();\nЗапрос.');
+ let suggestions = [];
+ bsl.getClassCompletion(suggestions, bslGlobals.classes);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "УстановитьПараметр"), false);
+ });
+
+ it("проверка автокомплита объекта HTTPЗапрос (список свойств и методов) обернутого в функцию", function () {
+ bsl = helper('Найти(HTTPЗапрос.');
+ let suggestions = [];
+ bsl.getClassCompletion(suggestions, bslGlobals.classes);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ });
+
+ it("проверка автокомплита метода УстановитьИмяФайлаТела объекта HTTPЗапрос", function () {
+ bsl = helper('HTTPЗапрос.УстановитьИмя');
+ let suggestions = [];
+ bsl.getClassCompletion(suggestions, bslGlobals.classes);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "УстановитьИмяФайлаТела"), true);
+ });
+
+ it("проверка автокомплита метода УстановитьИмяФайлаТела объекта HTTPЗапрос обернутого в функцию", function () {
+ bsl = helper('Найти(HTTPЗапрос.УстановитьИмя');
+ let suggestions = [];
+ bsl.getClassCompletion(suggestions, bslGlobals.classes);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "УстановитьИмяФайлаТела"), true);
+ });
+
+ it("проверка автокомплита для объекта метаданных 'Справочники'", function () {
+ bsl = helper('Товар = Справоч');
+ let suggestions = [];
+ bsl.getCommonCompletion(suggestions, bslGlobals.globalvariables, monaco.languages.CompletionItemKind.Class)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ expect(suggestions).to.have.deep.property('[0].label', 'Справочники');
+ });
+
+ it("проверка автокомплита для объекта метаданных 'Справочники.' обернутого в функцию", function () {
+ bsl = helper('Найти(Справочн');
+ let suggestions = [];
+ bsl.getCommonCompletion(suggestions, bslGlobals.globalvariables, monaco.languages.CompletionItemKind.Class)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ expect(suggestions).to.have.deep.property('[0].label', 'Справочники');
+ });
+
+ it("проверка автокомплита для объекта метаданных 'Справочники.' (список справочников)", function () {
+ bsl = helper('Товар = Справочники.');
+ let suggestions = [];
+ bsl.getMetadataCompletion(suggestions, bslMetadata)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ });
+
+ it("проверка автокомплита для объекта метаданных 'Справочники.' (список справочников) обернутого в функцию", function () {
+ bsl = helper('Найти(Справочники.');
+ let suggestions = [];
+ bsl.getMetadataCompletion(suggestions, bslMetadata)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ });
+
+ it("проверка автокомплита для объекта метаданных 'Справочники.Товары.' (список функций менеджера)", function () {
+ bsl = helper('Товар = Справочники.Товары.');
+ let suggestions = [];
+ bsl.getMetadataCompletion(suggestions, bslMetadata)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ });
+
+ it("проверка автокомплита для объекта метаданных 'Справочники.Товары.' (список функций менеджера) обернутого в функцию", function () {
+ bsl = helper('Найти(Справочники.Товары.');
+ let suggestions = [];
+ bsl.getMetadataCompletion(suggestions, bslMetadata)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ });
+
+ it("проверка автокомплита для элемента справочника 'Товары.' (список реквизитов и функций объекта)", function () {
+ bsl = helper('Товар = Справочники.Товары.НайтиПоКоду(1);\nТовар.');
+ let suggestions = [];
+ bsl.getMetadataCompletion(suggestions, bslMetadata)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "Цена"), true);
+ });
+
+ it("проверка автокомплита для элемента справочника 'Товары.' (список предопределенных)", function () {
+ bsl = helper('Товар = Справочники.Товары.');
+ let suggestions = [];
+ bsl.getMetadataCompletion(suggestions, bslMetadata)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "Услуга"), true);
+ });
+
+ it("проверка автокомплита для элемента справочника 'Товары.' (список реквизитов и функций объекта) обернутого в функцию", function () {
+ bsl = helper('Товар = Справочники.Товары.НайтиПоКоду(1);\nНайти(Товар.');
+ let suggestions = [];
+ bsl.getMetadataCompletion(suggestions, bslMetadata)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "Цена"), true);
+ });
+
+ it("проверка подсказки параметров для метода 'Записать' документа 'АвансовыйОтчет'", function () {
+ bsl = helper('Док = Документы.АвансовыйОтчет.НайтиПоНомеру(1);\nДок.Записать(');
+ let suggestions = [];
+ let help = bsl.getMetadataSigHelp(bslMetadata);
+ expect(help).to.have.property('activeParameter');
+ });
+
+ it("проверка получения существующего текста запроса", function () {
+ editor.setPosition(new monaco.Position(10, 1));
+ assert.notEqual(getQuery(), null);
+ });
+
+ it("проверка получения несуществующего текста запроса", function () {
+ editor.setPosition(new monaco.Position(1, 1));
+ assert.equal(getQuery(), null);
+ });
+
+ it("проверка очистки всего текста", function () {
+ let text = editor.getValue();
+ eraseText();
+ assert.equal(editor.getValue(), getText());
+ editor.setValue(text);
+ assert.equal(text, getText());
+ });
+
+ it("проверка обновления метаданных", function () {
+ let mCopy = JSON.parse(JSON.stringify(bslMetadata));
+ assert.notEqual(updateMetadata(123), true);
+ let strJSON = '{"catalogs": {"АвансовыйОтчетПрисоединенныеФайлы": {"properties": {"Автор": "Автор","ВладелецФайла": "Размещение","ДатаМодификацииУниверсальная": "Дата изменения (универсальное время)","ДатаСоздания": "Дата создания","Зашифрован": "Зашифрован","Изменил": "Отредактировал","ИндексКартинки": "Индекс значка","Описание": "Описание","ПодписанЭП": "Подписан электронно","ПутьКФайлу": "Путь к файлу","Размер": "Размер (байт)","Расширение": "Расширение","Редактирует": "Редактирует","СтатусИзвлеченияТекста": "Статус извлечения текста","ТекстХранилище": "Текст","ТипХраненияФайла": "Тип хранения файла","Том": "Том","ФайлХранилище": "Временное хранилище файла","ДатаЗаема": "Дата заема","ХранитьВерсии": "Хранить версии","ИмяПредопределенныхДанных": "","Предопределенный": "","Ссылка": "","ПометкаУдаления": "","Наименование": ""}}}}';
+ assert.equal(updateMetadata(strJSON), true);
+ bsl = helper('Отчет = Справочники.АвансовыйОтчетПрисоединенныеФайлы.НайтиПоКоду(1);\nОтчет.');
+ let suggestions = [];
+ bsl.getMetadataCompletion(suggestions, bslMetadata)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "ДатаМодификацииУниверсальная"), true);
+ bslMetadata = JSON.parse(JSON.stringify(mCopy));
+ });
+
+ it("проверка обновления сниппетов", function () {
+ let sCopy = JSON.parse(JSON.stringify(snippets));
+ assert.notEqual(updateSnippets(123), true);
+ let strJSON = '{"snippets": { "ЕслиЧто": { "prefix": "Если", "body": "Если ${1:Условие} Тогда\n\t$0\nКонецЕсли;", "description": "ЕслиЧто"}}}';
+ assert.equal(updateSnippets(strJSON), true);
+ bsl = helper('ЕслиЧто');
+ let suggestions = [];
+ bsl.getSnippets(suggestions, snippets, false);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.detail === "ЕслиЧто"), true);
+ snippets = JSON.parse(JSON.stringify(sCopy));
+ });
+
+ it("проверка замены сниппетов", function () {
+ let sCopy = JSON.parse(JSON.stringify(snippets));
+ let strJSON = '{"snippets": { "ЕслиЧто": { "prefix": "Если", "body": "Если ${1:Условие} Тогда\n\t$0\nКонецЕсли;", "description": "ЕслиЧто"}}}';
+ assert.equal(updateSnippets(strJSON, true), true);
+ bsl = helper('Если');
+ let suggestions = [];
+ bsl.getSnippets(suggestions, snippets, false);
+ assert.equal(suggestions.length, 1);
+ snippets = JSON.parse(JSON.stringify(sCopy));
+ });
+
+ it("проверка всплывающей подсказки", function () {
+ let model = getModel("Найти(");
+ let position = new monaco.Position(1, 2);
+ bsl = new bslHelper(model, position);
+ assert.notEqual(bsl.getHover(), null);
+ model = getModel("НайтиЧтоНибудь(");
+ bsl = new bslHelper(model, position);
+ assert.equal(bsl.getHover(), null);
+ });
+
+ it("проверка получения существующей форматной строки", function () {
+ editor.setPosition(new monaco.Position(47, 33));
+ assert.notEqual(getFormatString(), null);
+ });
+
+ it("проверка получения несуществующей форматной строки", function () {
+ editor.setPosition(new monaco.Position(47, 21));
+ assert.equal(getFormatString(), null);
+ editor.setPosition(new monaco.Position(10, 1));
+ assert.equal(getFormatString(), null);
+ });
+
+ it("проверка загрузки пользовательских функций", function () {
+ let strJSON = '{ "customFunctions":{ "МояФункция1":{ "name":"МояФункция1", "name_en":"MyFuntion1", "description":"Получает из строки закодированной по алгоритму base64 двоичные данные.", "returns":"Тип: ДвоичныеДанные. ", "signature":{ "default":{ "СтрокаПараметров":"(Строка: Строка): ДвоичныеДанные", "Параметры":{ "Строка":"Строка, закодированная по алгоритму base64." } } } }, "МояФункция2":{ "name":"МояФункция2", "name_en":"MyFuntion2", "description":"Выполняет сериализацию значения в формат XML.", "template":"МояФункция2(ВызовЗависимойФункции(${1:ПервыйЗависимыйПараметр}, ${2:ВторойЗависимыйПараметр}), ${0:ПараметрМоейФункции}))", "signature":{ "ЗаписатьБезИмени":{ "СтрокаПараметров":"(ЗаписьXML: ЗаписьXML, Значение: Произвольный, НазначениеТипа?: НазначениеТипаXML)", "Параметры":{ "ЗаписьXML":"Объект, через который осуществляется запись XML, полученный через зависимою функцию", "Значение":"Записываемое в поток XML значение. Тип параметра определяется совокупностью типов, для которых определена XML-сериализация." } }, "ЗаписатьСПолнымИменем":{ "СтрокаПараметров":"(ЗаписьXML: ЗаписьXML, Значение: Произвольный, ПолноеИмя: Строка, НазначениеТипа?: НазначениеТипаXML)", "Параметры":{ "ЗаписьXML":"Объект, через который осуществляется запись XML.", "Значение":"Записываемое в поток XML значение. Тип параметра определяется совокупностью типов, для которых определена XML-сериализация.", "ПолноеИмя":"Полное имя элемента XML, в который будет записано значение.", "НазначениеТипа":"Определяет необходимость назначения типа элементу XML. Значение по умолчанию: Неявное." } }, "ЗаписатьСЛокальнымИменемИПространствомИмен":{ "СтрокаПараметров":"(ЗаписьXML: ЗаписьXML, Значение: Произвольный, ЛокальноеИмя: Строка, URIПространстваИмен: Строка, НазначениеТипа?: НазначениеТипаXML)", "Параметры":{ "ЗаписьXML":"Объект, через который осуществляется запись XML.", "Значение":"Записываемое в поток XML значение. Тип параметра определяется совокупностью типов, для которых определена XML-сериализация.", "ЛокальноеИмя":"Локальное имя элемента XML, в который будет записано значение.", "URIПространстваИмен":"URI пространства имен, к которому принадлежит указанное ЛокальноеИмя.", "НазначениеТипа":"Определяет необходимость назначения типа элементу XML. Значение по умолчанию: Неявное." } } } } } }';
+ assert.notEqual(updateCustomFunctions(123), true);
+ assert.equal(updateCustomFunctions(strJSON), true);
+ });
+
+ it("проверка автокомплита для пользовательской функции МояФункция2", function () {
+ bsl = helper('мояфу');
+ let suggestions = [];
+ bsl.getCommonCompletion(suggestions, bslGlobals.customFunctions, monaco.languages.CompletionItemKind.Function)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ });
+
+ it("проверка подсказки параметров для пользовательской функции МояФункция2", function () {
+ bsl = helper('МояФункция2');
+ let suggestions = [];
+ let help = bsl.getCommonSigHelp(bslGlobals.customFunctions);
+ expect(help).to.have.property('activeParameter');
+ });
+
+ it("проверка подсказки переопределенных параметров для функции Состояние", function () {
+ let strJSON = '{ "Состояние": [ { "label": "(Первый, Второй)", "documentation": "Описание сигнатуры", "parameters": [ { "label": "Первый", "documentation": "Описание первого" }, { "label": "Второй", "documentation": "Описание второго" } ] } ] }';
+ assert.equal(setCustomSignatures(strJSON), true);
+ let position = new monaco.Position(28, 12);
+ let model = editor.getModel();
+ editor.setPosition(position);
+ bsl = new bslHelper(model, position);
+ let help = bsl.getCustomSigHelp();
+ expect(help).to.have.property('activeParameter');
+ assert.equal(setCustomSignatures('{}'), true);
+ });
+
+ it("проверка автокомплита для функции 'Тип'", function () {
+ bsl = helper('Тип("');
+ assert.equal(bsl.requireType(), true);
+ let suggestions = [];
+ bsl.getTypesCompletion(suggestions, bslGlobals.types, monaco.languages.CompletionItemKind.Enum)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "СправочникСсылка"), true);
+ });
+
+ it("проверка автокомплита для функции 'Тип' обернутой в функцию", function () {
+ bsl = helper('Поиск = Найти(Тип("');
+ assert.equal(bsl.requireType(), true);
+ let suggestions = [];
+ bsl.getTypesCompletion(suggestions, bslGlobals.types, monaco.languages.CompletionItemKind.Enum)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "СправочникСсылка"), true);
+ });
+
+ it("проверка автокомплита для функции 'Тип' с указанием конкретного вида метаданных", function () {
+ bsl = helper('Тип("СправочникСсылка.');
+ assert.equal(bsl.requireType(), true);
+ let suggestions = [];
+ bsl.getTypesCompletion(suggestions, bslGlobals.types, monaco.languages.CompletionItemKind.Enum)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "Товары"), true);
+ });
+
+ it("проверка загрузки пользовательских объектов", function () {
+ let strJSON = `{
+ "customObjects":{
+ "_СтруктураВыгрузки":{
+ "ref": "classes.Структура",
+ "properties":{
+ "Номенклатура":{
+ "name":"Номенклатура",
+ "detail":"Ссылка на справочник номенклатуры",
+ "description":"Подбробное описание поля номенклатуры пользовательского объекта",
+ "ref":"catalogs.Товары"
+ },
+ "Остаток":{
+ "name":"Остаток"
+ }
+ },
+ "methods":{
+ "ВставитьВСтруктуру": {
+ "name": "ВставитьВСтруктуру",
+ "name_en": "InsertToStructure",
+ "description": "Устанавливает значение элемента структуры по ключу. Если элемент с переданным значением ключа существует, то его значение заменяется, в противном случае добавляется новый элемент.",
+ "signature": {
+ "default": {
+ "СтрокаПараметров": "(Ключ: Строка, Значение?: Произвольный)",
+ "Параметры": {
+ "Ключ": "Ключ устанавливаемого элемента. Ключ должен соответствовать правилам, установленным для идентификаторов: - Первым символом ключа должна быть буква или символ подчеркивания (_). - Каждый из последующих символов может быть буквой, цифрой или символом подчеркивания (_).",
+ "Значение": "Значение устанавливаемого элемента."
+ }
+ }
+ }
+ },
+ "КоличествоЗаписейВВыгрузке": {
+ "name": "КоличествоЗаписейВВыгрузке",
+ "name_en": "CountItemsToUpload",
+ "description": "Получает количество элементов структуры.",
+ "returns": "Тип: Число. "
+ }
+ },
+ "detail":"Пользовательская структура выгрузка",
+ "description":"Подробное описание пользовательской структуры выгрузки"
+ },
+ "_ОстаткиТовара":{
+ "properties":{
+ "Партия":{
+ "name":"Партия",
+ "description":"Ссылка на приходный документ",
+ "ref":"documents.ПриходнаяНакладная"
+ },
+ "Номенклатура":{
+ "name":"Номенклатура",
+ "ref":"catalogs.Товары"
+ },
+ "Оборот":{
+ "name":"Оборот"
+ }
+ }
+ },
+ "_ОбъектСВложениями":{
+ "ref": "classes.Структура",
+ "properties":{
+ "Товар":{
+ "name":"Товар",
+ "description":"Ссылка на справочник номенклатуры",
+ "ref":"catalogs.Товары"
+ },
+ "ВложенныйОбъект":{
+ "name":"ВложенныйОбъект",
+ "description":"Вложенный объект",
+ "ref":"catalogs.Структура",
+ "properties":{
+ "ПервыйРеквизитОбъекта":{
+ "name":"ПервыйРеквизитОбъекта",
+ "ref":"documents.ПриходнаяНакладная"
+ },
+ "ВторойРеквизитОбъекта":{
+ "name":"ВторойРеквизитОбъекта",
+ "ref":"classes.Соответствие"
+ },
+ "ТретийРеквизитОбъекта":{
+ "name":"ТретийРеквизитОбъекта",
+ "ref":"classes.Структура",
+ "properties":{
+ "Партия":{
+ "name":"Партия",
+ "description":"Ссылка на приходный документ",
+ "ref":"documents.ПриходнаяНакладная"
+ },
+ "Номенклатура":{
+ "name":"Номенклатура",
+ "ref":"catalogs.Товары"
+ }
+ }
+ }
+ },
+ "methods":{
+ "ВложенныйМетод": {
+ "name": "ВложенныйМетод",
+ "name_en": "NestedMethod",
+ "description": "Устанавливает значение элемента структуры по ключу. Если элемент с переданным значением ключа существует, то его значение заменяется, в противном случае добавляется новый элемент.",
+ "ref": "customObjects._СтруктураВыгрузки",
+ "signature": {
+ "default": {
+ "СтрокаПараметров": "(Ключ: Строка, Значение?: Произвольный)",
+ "Параметры": {
+ "Ключ": "Ключ устанавливаемого элемента. Ключ должен соответствовать правилам, установленным для идентификаторов: - Первым символом ключа должна быть буква или символ подчеркивания (_). - Каждый из последующих символов может быть буквой, цифрой или символом подчеркивания (_).",
+ "Значение": "Значение устанавливаемого элемента."
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }`;
+ let res = updateMetadata(strJSON);
+ assert.equal(res, true);
+ bsl = helper('_ОстаткиТ');
+ let suggestions = [];
+ bsl.getCustomObjectsCompletion(suggestions, bslMetadata.customObjects, monaco.languages.CompletionItemKind.Enum);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "_ОстаткиТовара"), true);
+ });
+
+ it("проверка подсказки для вложенного пользовательского объекта", function () {
+ bsl = helper('_ОбъектСВложениями.');
+ let suggestions = [];
+ bsl.getCustomObjectsCompletion(suggestions, bslMetadata.customObjects, monaco.languages.CompletionItemKind.Enum);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "ВложенныйОбъект"), true);
+ suggestions.forEach(function (suggestion) {
+ if (suggestion.label == "ВложенныйОбъект") {
+ let command = suggestion.command.arguments[0];
+ contextData = new Map([
+ [1, new Map([[command.name.toLowerCase(), command.data]])]
+ ]);
+ suggestions = [];
+ bsl = helper('_ОбъектСВложениями.ВложенныйОбъект.');
+ bsl.getRefCompletion(suggestions);
+ assert.equal(suggestions.some(suggest => suggest.label === "ПервыйРеквизитОбъекта"), true);
+ contextData = new Map();
+ }
+ });
+ });
+
+ it("проверка подсказки методов, когда у пользовательского объекта явна задана ссылка", function () {
+ bsl = helper('_СтруктураВыгрузки.');
+ let suggestions = [];
+ bsl.getCustomObjectsCompletion(suggestions, bslMetadata.customObjects, monaco.languages.CompletionItemKind.Enum);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "Вставить"), true);
+ });
+
+ it("проверка подсказки собственных методов для пользовательского объекта", function () {
+ bsl = helper('_СтруктураВыгрузки.');
+ let suggestions = [];
+ bsl.getCustomObjectsCompletion(suggestions, bslMetadata.customObjects, monaco.languages.CompletionItemKind.Enum);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "КоличествоЗаписейВВыгрузке"), true);
+ });
+
+ it("проверка подсказки ссылочных реквизитов", function () {
+ bsl = helper('_ОстаткиТовара.Номенклатура.');
+ let suggestions = [];
+ contextData = new Map([
+ [1, new Map([["номенклатура", { "ref": "catalogs.Товары", "sig": null }]])]
+ ]);
+ bsl.getRefCompletion(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "СтавкаНДС"), true);
+ suggestions = [];
+ bsl = helper('_ОстаткиТовара.Наминклатура.');
+ bsl.getRefCompletion(suggestions);
+ expect(suggestions).to.be.an('array').that.is.empty;
+ contextData = new Map();
+ });
+
+ it("проверка подсказки для таблицы, полученной из результата запроса", function () {
+ bsl = helper('ОбъектЗапрос = Новый Запрос();\nРезультат = ОбъектЗапрос.Выполнить();\nТаблица = Результат.Выгрузить();\nТаблица.');
+ let suggestions = [];
+ contextData = new Map([
+ [2, new Map([["выполнить", { "ref": "types.РезультатЗапроса", "sig": null }]])],
+ [3, new Map([["выгрузить", { "ref": "classes.ТаблицаЗначений", "sig": null }]])]
+ ]);
+ bsl.getRefCompletion(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "ВыгрузитьКолонку"), true);
+ contextData = new Map();
+ });
+
+ it("проверка подсказки параметров для функции ВыгрузитьКолонку таблицы значений, полученной из другой таблицы", function () {
+ bsl = helper('Таблица1 = Новый ТаблицаЗначений();\nТаблица2 = Таблица1.Скопировать();\nТаблица2.ВыгрузитьКолонку(');
+ let suggestions = [];
+ let signature = {
+ "default": {
+ "СтрокаПараметров": "(Колонка: Число): Массив",
+ "Параметры": {
+ "Колонка": "Колонка, из которой нужно выгрузить значения. В качестве значения параметра может быть передан индекс колонки, имя колонки, либо колонка дерева значений."
+ }
+ }
+ };
+ contextData = new Map([
+ [2, new Map([["скопировать", { "ref": "classes.ТаблицаЗначений", "sig": null }]])],
+ [3, new Map([["выгрузитьколонку", { "ref": "classes.Массив", "sig": signature }]])]
+ ]);
+ let help = bsl.getRefSigHelp();
+ expect(help).to.have.property('activeParameter');
+ contextData = new Map();
+ });
+
+ it("проверка подсказки для таблицы, полученной функцией НайтиПоСсылкам", function () {
+ bsl = helper('Таблица = НайтиПоСсылкам();\nТаблица.');
+ let suggestions = [];
+ contextData = new Map([
+ [1, new Map([["найтипоссылкам", { "ref": "classes.ТаблицаЗначений", "sig": null }]])]
+ ]);
+ bsl.getRefCompletion(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "ВыгрузитьКолонку"), true);
+ contextData = new Map();
+ });
+
+ it("проверка подсказки для таблицы, полученной из результата запроса в одну строку", function () {
+ bsl = helper('ОбъектЗапрос = Новый Запрос();\nТаблица = ОбъектЗапрос.Выполнить().Выгрузить().');
+ let suggestions = [];
+ contextData = new Map([
+ [2, new Map([["выполнить", { "ref": "types.РезультатЗапроса", "sig": null }]])],
+ [2, new Map([["выгрузить", { "ref": "classes.ТаблицаЗначений", "sig": null }]])]
+ ]);
+ bsl.getRefCompletion(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "Скопировать"), true);
+ contextData = new Map();
+ });
+
+ it("проверка подсказки переменных из параметров функции", function () {
+ bsl = helper('Функция МояФункция(Парам1, Парам2, Парам3)\nПар');
+ let suggestions = [];
+ bsl.getVariablesCompetition(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "Парам1"), true);
+ });
+
+ it("проверка подсказки для реквизитов составного типа", function () {
+ bsl = helper('_ОстаткиТовара.Номенклатура.');
+ let suggestions = [];
+ contextData = new Map([
+ [1, new Map([["номенклатура", { "ref": "catalogs.Товары, documents.ПриходнаяНакладная", "sig": null }]])]
+ ]);
+ bsl.getRefCompletion(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "СтавкаНДС") && suggestions.some(suggest => suggest.label === "СуммаДокумента"), true);
+ contextData = new Map();
+ });
+
+ it("проверка подсказки объекта, полученного методом ПолучитьОбъект()", function () {
+ bsl = helper('СправочникСсылка = Справочник.Товары.НайтиПоКоду(1);\nСправочникОбъект = СправочникСсылка.ПолучитьОбъект();\nСправочникОбъект.');
+ let suggestions = [];
+ contextData = new Map([
+ [2, new Map([["получитьобъект", { "ref": "catalogs.Товары.obj", "sig": null }]])],
+ ]);
+ bsl.getRefCompletion(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "Заблокирован"), true);
+ contextData = new Map();
+ });
+
+ it("проверка подсказки ресурсов регистра", function () {
+ bsl = helper('Рег = РегистрыНакопления.ОстаткиТоваров.СоздатьНаборЗаписей();(1);\nРег.');
+ let suggestions = [];
+ bsl.getMetadataCompletion(suggestions, bslMetadata);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "Себестоимость"), true);
+ });
+
+ it("проверка подсказки определяемой по стеку для метаданных (первый потомок)", function () {
+
+ let position = new monaco.Position(95, 17);
+ let model = editor.getModel();
+ editor.setPosition(position);
+ bsl = new bslHelper(model, position);
+ let suggestions = [];
+ bsl.getStackCompletion(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "ПодотчетноеЛицо"), true);
+ assert.equal(suggestions.some(suggest => suggest.label === "Заблокировать"), true);
+
+ });
+
+ it("проверка подсказки определяемой по стеку для метаданных (второй потомок)", function () {
+
+ let position = new monaco.Position(100, 19);
+ let model = editor.getModel();
+ editor.setPosition(position);
+ let bsl = new bslHelper(model, position);
+ let suggestions = [];
+ bsl.getStackCompletion(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "СуммаДокумента"), true);
+ assert.equal(suggestions.some(suggest => suggest.label === "Заблокировать"), true);
+
+ });
+
+ it("проверка подсказки определяемой по стеку для метаданных через ранее определенную ссылку", function () {
+
+ let map = new Map();
+ map.set('товарссылка', {list:[], ref: 'catalogs.Товары', sig: null});
+ contextData.set(102, map);
+
+ let position = new monaco.Position(104, 18);
+ let model = editor.getModel();
+ editor.setPosition(position);
+ let bsl = new bslHelper(model, position);
+ let suggestions = [];
+ bsl.getStackCompletion(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "Ставка"), true);
+ assert.equal(suggestions.some(suggest => suggest.label === "Заблокировать"), true);
+
+ });
+
+ it("проверка подсказки определяемой по стеку для пользовательских объектов", function () {
+
+ let position = new monaco.Position(107, 24);
+ let model = editor.getModel();
+ editor.setPosition(position);
+ let bsl = new bslHelper(model, position);
+ let suggestions = [];
+ bsl.getStackCompletion(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "СтавкаНДС"), true);
+
+ });
+
+ it("проверка подсказки определяемой по стеку для классов", function () {
+
+ let position = new monaco.Position(114, 12);
+ let model = editor.getModel();
+ editor.setPosition(position);
+ bsl = new bslHelper(model, position);
+ let suggestions = [];
+ bsl.getStackCompletion(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "Следующий"), true);
+
+ });
+
+ it("проверка подсказки свойтва объекта 'ОбменДанными'", function () {
+
+ bsl = helper('Спр = Справочники.Товары.НайтиПоКоду(1);\nСпр2 = Спр.ПолучитьОбъект();\nСпр2.');
+ let suggestions = [];
+ contextData = new Map([
+ [2, new Map([["получитьобъект", { "ref": "catalogs.Товары.obj", "sig": null }]])],
+ ]);
+ bsl.getRefCompletion(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "ОбменДанными"), true);
+
+ bsl = helper('Спр = Справочники.Товары.НайтиПоКоду(1);\nСпр2 = Спр.ПолучитьОбъект();\nСпр2.ОбменДанными.');
+ suggestions = [];
+ contextData = new Map([
+ [3, new Map([["обменданными", { "ref": "types.ПараметрыОбменаДанными", "sig": null }]])],
+ ]);
+ bsl.getRefCompletion(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "Загрузка"), true);
+
+ });
+
+ it("проверка подсказки методов менеджера справочника", function () {
+ bsl = helper('Справочники.Товары.');
+ let suggestions = [];
+ bsl.getMetadataCompletion(suggestions, bslMetadata);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "ПервыйМетодМенеджера"), true);
+ });
+
+ it("проверка подсказки параметров для метода менеджера справочника", function () {
+ bsl = helper('Справочники.Товары.ПервыйМетодМенеджера(');
+ let help = bsl.getMetadataSigHelp(bslMetadata);
+ expect(help).to.have.property('activeParameter');
+ });
+
+ it("проверка подсказки методов объекта справочника", function () {
+
+ bsl = helper('Спр = Справочники.Товары.НайтиПоКоду(1);\nСпр2 = Спр.');
+ let suggestions = [];
+ bsl.getMetadataCompletion(suggestions, bslMetadata);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "ПервыйМетодМенеджера"), false);
+
+ bsl = helper('Спр = Справочники.Товары.НайтиПоКоду(1);\nСпр2 = Спр.ПолучитьОбъект();\nСпр2.');
+ suggestions = bsl.getCodeCompletion({triggerCharacter: ''});
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "ПервыйМетодОбъекта"), true);
+
+ });
+
+ it("проверка загрузки общего модуля (обычный и глобальный)", function () {
+
+ let text = getModuleText();
+ bslHelper.parseCommonModule('ОбщегоНазначения', text, false);
+
+ bsl = helper('ОбщегоНазначения.');
+ suggestions = bsl.getCodeCompletion({triggerCharacter: ''});
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "ЗначениеРеквизитаОбъекта"), true);
+
+ bsl = helper('ЗначениеРеквиз');
+ suggestions = bsl.getCodeCompletion({triggerCharacter: ''});
+ expect(suggestions).to.be.an('array').that.is.empty;
+
+ bslHelper.parseCommonModule('ОбщегоНазначения', text, true);
+
+ suggestions = bsl.getCodeCompletion({triggerCharacter: ''});
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "ЗначениеРеквизитаОбъекта"), true);
+
+ });
+
+ it("проверка загрузки модуля менеджера объекта метаданных", function () {
+
+ let text = getModuleText();
+ bslHelper.parseMetadataModule(text, 'documents.items.АвансовыйОтчет.manager');
+
+ bsl = helper('Документы.АвансовыйОтчет.');
+ let suggestions = [];
+ bsl.getMetadataCompletion(suggestions, bslMetadata);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "ЗаменитьСсылки"), true);
+
+ });
+
+ it("проверка подсказки описания метаданных", function () {
+
+ let position = new monaco.Position(151, 13);
+ let model = editor.getModel();
+ editor.setPosition(position);
+ bsl = new bslHelper(model, position);
+ let suggestions = bsl.getCodeCompletion({triggerCharacter: ''});
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "Автонумерация"), true);
+ assert.equal(suggestions.some(suggest => suggest.label === "ПолучитьИменаПредопределенных"), true);
+
+ });
+
+ it("проверка подсказки по глобальной структуре метаданных", function () {
+
+ bsl = helper('Структура.Метаданные.');
+ let suggestions = [];
+ bsl.getMetadataDescription(suggestions);
+ expect(suggestions).to.be.an('array').that.is.empty;
+
+ bsl = helper('(Метаданные.');
+ suggestions = [];
+ bsl.getMetadataDescription(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "Справочники"), true);
+
+ });
+
+ it("проверка подсказки табличных частей для справочника 'Товары.' ", function () {
+
+ bsl = helper('Товар = Справочники.Товары.НайтиПоКоду(1);\nТовар.');
+ let suggestions = [];
+ bsl.getMetadataCompletion(suggestions, bslMetadata)
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "ДополнительныеРеквизиты"), true);
+
+ });
+
+ it("проверка подсказки методов табличных частей для справочника 'Товары.' по ссылке", function () {
+
+ bsl = helper('Спр = Справочники.Товары.НайтиПоКоду(1);\nСпр.ДополнительныеРеквизиты.');
+ let suggestions = [];
+ contextData = new Map([
+ [2, new Map([["дополнительныереквизиты", { "ref": "universalObjects.ТабличнаяЧасть", "sig": null }]])],
+ ]);
+ bsl.getRefCompletion(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "ВыгрузитьКолонки"), true);
+
+ });
+
+ it("проверка подсказки реквизитов строки табличной частей для справочника 'Товары.' по ссылке", function () {
+
+ bsl = helper('Спр = Справочники.Товары.НайтиПоКоду(1);\nСтрокаТЧ = Спр.ДополнительныеРеквизиты.Добавить();\nСтрокаТЧ.');
+ let suggestions = [];
+ contextData = new Map([
+ [2, new Map([["добавить", { "ref": "catalogs.Товары.tabulars.ДополнительныеРеквизиты,universalObjects.СтрокаТабличнойЧасти", "sig": null }]])],
+ ]);
+ bsl.getRefCompletion(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "ЗначениеРеквизита"), true);
+ assert.equal(suggestions.some(suggest => suggest.label === "НомерСтроки"), true);
+
+ });
+
+ it("проверка подсказки реквизитов строки табличной части определяемой по стеку", function () {
+
+ bsl = helper('Спр = Справочники.Товары.НайтиПоКоду(1);\nСтрокаТЧ = Спр.ДополнительныеРеквизиты.Добавить();\nСтрокаТЧ.');
+ contextData.clear();
+ let suggestions = [];
+ bsl.getStackCompletion(suggestions);
+ expect(suggestions).to.be.an('array').that.not.is.empty;
+ assert.equal(suggestions.some(suggest => suggest.label === "ЗначениеРеквизита"), true);
+ assert.equal(suggestions.some(suggest => suggest.label === "НомерСтроки"), true);
+
+ });
+
+
+ }
+
+ mocha.run();
+
+ });
+
+});
\ No newline at end of file
diff --git a/src/tree/icons/array.png b/src/tree/icons/array.png
new file mode 100644
index 0000000..28e1ce8
Binary files /dev/null and b/src/tree/icons/array.png differ
diff --git a/src/tree/icons/binary.png b/src/tree/icons/binary.png
new file mode 100644
index 0000000..898e7f1
Binary files /dev/null and b/src/tree/icons/binary.png differ
diff --git a/src/tree/icons/boolean.png b/src/tree/icons/boolean.png
new file mode 100644
index 0000000..83713fa
Binary files /dev/null and b/src/tree/icons/boolean.png differ
diff --git a/src/tree/icons/bprocess.png b/src/tree/icons/bprocess.png
new file mode 100644
index 0000000..974ca3c
Binary files /dev/null and b/src/tree/icons/bprocess.png differ
diff --git a/src/tree/icons/catalog.png b/src/tree/icons/catalog.png
new file mode 100644
index 0000000..be8e275
Binary files /dev/null and b/src/tree/icons/catalog.png differ
diff --git a/src/tree/icons/close.png b/src/tree/icons/close.png
new file mode 100644
index 0000000..5d44f09
Binary files /dev/null and b/src/tree/icons/close.png differ
diff --git a/src/tree/icons/close_hover.png b/src/tree/icons/close_hover.png
new file mode 100644
index 0000000..0c29793
Binary files /dev/null and b/src/tree/icons/close_hover.png differ
diff --git a/src/tree/icons/date.png b/src/tree/icons/date.png
new file mode 100644
index 0000000..ef875f2
Binary files /dev/null and b/src/tree/icons/date.png differ
diff --git a/src/tree/icons/document.png b/src/tree/icons/document.png
new file mode 100644
index 0000000..3b77e45
Binary files /dev/null and b/src/tree/icons/document.png differ
diff --git a/src/tree/icons/empty.png b/src/tree/icons/empty.png
new file mode 100644
index 0000000..62fda8e
Binary files /dev/null and b/src/tree/icons/empty.png differ
diff --git a/src/tree/icons/enum.png b/src/tree/icons/enum.png
new file mode 100644
index 0000000..258eac3
Binary files /dev/null and b/src/tree/icons/enum.png differ
diff --git a/src/tree/icons/int.png b/src/tree/icons/int.png
new file mode 100644
index 0000000..83f48d4
Binary files /dev/null and b/src/tree/icons/int.png differ
diff --git a/src/tree/icons/keyvalue.png b/src/tree/icons/keyvalue.png
new file mode 100644
index 0000000..c39ddbe
Binary files /dev/null and b/src/tree/icons/keyvalue.png differ
diff --git a/src/tree/icons/null.png b/src/tree/icons/null.png
new file mode 100644
index 0000000..45e8f47
Binary files /dev/null and b/src/tree/icons/null.png differ
diff --git a/src/tree/icons/open.png b/src/tree/icons/open.png
new file mode 100644
index 0000000..5a23f1b
Binary files /dev/null and b/src/tree/icons/open.png differ
diff --git a/src/tree/icons/open_hover.png b/src/tree/icons/open_hover.png
new file mode 100644
index 0000000..f362c0b
Binary files /dev/null and b/src/tree/icons/open_hover.png differ
diff --git a/src/tree/icons/picture.png b/src/tree/icons/picture.png
new file mode 100644
index 0000000..2282c5e
Binary files /dev/null and b/src/tree/icons/picture.png differ
diff --git a/src/tree/icons/query.png b/src/tree/icons/query.png
new file mode 100644
index 0000000..36784b3
Binary files /dev/null and b/src/tree/icons/query.png differ
diff --git a/src/tree/icons/storage.png b/src/tree/icons/storage.png
new file mode 100644
index 0000000..0bc36ed
Binary files /dev/null and b/src/tree/icons/storage.png differ
diff --git a/src/tree/icons/string.png b/src/tree/icons/string.png
new file mode 100644
index 0000000..3a6724a
Binary files /dev/null and b/src/tree/icons/string.png differ
diff --git a/src/tree/icons/structure.png b/src/tree/icons/structure.png
new file mode 100644
index 0000000..d19f6c5
Binary files /dev/null and b/src/tree/icons/structure.png differ
diff --git a/src/tree/icons/table.png b/src/tree/icons/table.png
new file mode 100644
index 0000000..f0e052c
Binary files /dev/null and b/src/tree/icons/table.png differ
diff --git a/src/tree/icons/tabular.png b/src/tree/icons/tabular.png
new file mode 100644
index 0000000..a577244
Binary files /dev/null and b/src/tree/icons/tabular.png differ
diff --git a/src/tree/icons/task.png b/src/tree/icons/task.png
new file mode 100644
index 0000000..e64c10d
Binary files /dev/null and b/src/tree/icons/task.png differ
diff --git a/src/tree/icons/text.png b/src/tree/icons/text.png
new file mode 100644
index 0000000..02c6d48
Binary files /dev/null and b/src/tree/icons/text.png differ
diff --git a/src/tree/icons/tree.png b/src/tree/icons/tree.png
new file mode 100644
index 0000000..5b4b9f4
Binary files /dev/null and b/src/tree/icons/tree.png differ
diff --git a/src/tree/icons/undefined.png b/src/tree/icons/undefined.png
new file mode 100644
index 0000000..c33197d
Binary files /dev/null and b/src/tree/icons/undefined.png differ
diff --git a/src/tree/icons/uuid.png b/src/tree/icons/uuid.png
new file mode 100644
index 0000000..e11aab8
Binary files /dev/null and b/src/tree/icons/uuid.png differ
diff --git a/src/tree/loading.gif b/src/tree/loading.gif
new file mode 100644
index 0000000..5b33f7e
Binary files /dev/null and b/src/tree/loading.gif differ
diff --git a/src/tree/tree.css b/src/tree/tree.css
new file mode 100644
index 0000000..af71663
--- /dev/null
+++ b/src/tree/tree.css
@@ -0,0 +1,235 @@
+#display {
+ height: 0;
+ display: none;
+ font-family: "Courier new";
+}
+
+#display.dark {
+ background-color: #1e1e1e;
+}
+
+#display-header {
+ position: relative;
+ height: 22px;
+ width: 100%;
+ border-top: solid 1px #ddd;
+ border-bottom: solid 1px #ddd;
+ background-color: #fff;
+}
+
+#display.dark > #display-header {
+ background-color: #1e1e1e;
+ border-color: #000;
+}
+
+#display-title {
+ font-size: 12px;
+ color: #161616;
+ margin-left: 10px;
+ line-height: 22px;
+ cursor: pointer;
+}
+
+#display.dark #display-title {
+ color: #d4d4d4;
+}
+
+#variables-display {
+ overflow: auto;
+ height: 100%;
+}
+
+#variables-display::-webkit-scrollbar {
+ width: 13px;
+}
+
+#variables-display::-webkit-scrollbar-thumb {
+ border-radius: 100px;
+ background-color: #aaa;
+ border: 4px solid rgba(0, 0, 0, 0);
+ background-clip: padding-box;
+}
+
+#variables-tree {
+ padding: 15px;
+ width: 100%;
+ font-size: 10pt;
+ overflow: auto;
+ cursor: pointer;
+ box-sizing: border-box;
+}
+
+#variables-tree details > summary {
+ list-style: none;
+ padding: 3px;
+ margin: 2px 0;
+ color: #720501;
+}
+
+#display.dark #variables-tree details > summary {
+ color: #c3602c;
+}
+
+#variables-tree details > summary:hover {
+ background-color: #b8d9ff;
+ transition: all .1s
+}
+
+#display.dark #variables-tree details > summary:hover {
+ background-color: #424242;
+}
+
+#variables-tree details > summary::marker, #variables-tree details > summary::-webkit-details-marker {
+ display: none;
+}
+
+#variables-tree summary::marker, #variables-tree summary::-webkit-details-marker {
+ width: 16px;
+ height: 16px;
+ color: transparent;
+}
+
+#variables-tree summary.final:before {
+ background-image: url('./icons/empty.png');
+}
+
+#variables-tree summary:before {
+ content: '.';
+ padding-left: 7px;
+ background-image: url('./icons/close.png');
+ background-repeat: no-repeat;
+ width: 16px;
+ height: 16px;
+ color: transparent;
+ margin: 0 5px 0 5px;
+}
+
+#variables-tree summary.final:hover:before {
+ background-image: url('./icons/empty.png');
+}
+
+#variables-tree summary:hover:before {
+ background-image: url('./icons/close_hover.png');
+}
+
+#variables-tree details > summary.loading:before {
+ background-image: url("./loading.gif") !important;
+}
+
+#variables-tree details[open] > summary:before {
+ background-image: url('./icons/open.png');
+}
+
+#variables-tree details[open] > summary:hover:before {
+ background-image: url('./icons/open_hover.png');
+}
+
+#variables-tree summary .icon {
+ width: 16px;
+ height: 16px;
+ vertical-align: middle;
+}
+
+#variables-tree summary:only-child::-webkit-details-marker {
+ color: transparent;
+}
+
+#variables-tree details details {
+ margin-left: 20px;
+ display: block;
+}
+
+#variables-tree .label {
+ font-size: 14pt;
+ font-weight:bold;
+}
+
+#variables-tree a {
+ color: #0000ee;
+ text-decoration: none;
+ padding: 3px;
+}
+
+#variables-tree a:hover, #variables-tree a:visited:hover {
+ color: #ad0404;
+}
+
+#variables-tree a:visited {
+ color: #0000ee;
+ text-decoration: none;
+}
+
+#display.dark #variables-tree a {
+ color: #9acd32;
+}
+
+#display.dark #variables-tree a:visited {
+ color: #9acd32;
+}
+
+#display.dark #variables-tree a:hover, #display.dark #variables-tree a:visited:hover {
+ color: #ff2c2c;
+}
+
+#variables-tree .value, .equal {
+ color: black;
+}
+
+#variables-tree .value, .equal {
+ color: black;
+}
+
+#display.dark #variables-tree .value {
+ color: #b8d9ff;
+}
+
+#display.dark #variables-tree .equal {
+ color: #959595;
+}
+
+#variables-tree .type {
+ color: #959595;
+}
+
+#variables-tree .type:before {
+ content: '{';
+}
+
+#variables-tree .type:after {
+ content: '}';
+}
+
+#display-close {
+ position: absolute;
+ right: 0;
+ top: 3px;
+ width: 15px;
+ height: 20px;
+ opacity: 0.3;
+ cursor: pointer;
+}
+
+#display-close:hover {
+ opacity: 1;
+}
+
+#display-close:before, #display-close:after {
+ position: absolute;
+ content: ' ';
+ height: 12px;
+ width: 2px;
+ top: 2px;
+ background-color: #333;
+}
+
+.dark #display-close:before, .dark #display-close:after {
+ background-color: #fff;
+}
+
+#display-close:before {
+ transform: rotate(45deg);
+}
+
+#display-close:after {
+ transform: rotate(-45deg);
+}
\ No newline at end of file
diff --git a/src/tree/tree.html b/src/tree/tree.html
new file mode 100644
index 0000000..8476e3b
--- /dev/null
+++ b/src/tree/tree.html
@@ -0,0 +1,114 @@
+
+
+
+
+ Treeview
+
+
+
+
+
+
+
+Variables tree
+
+
+
+
\ No newline at end of file
diff --git a/src/tree/tree.js b/src/tree/tree.js
new file mode 100644
index 0000000..6c7f51f
--- /dev/null
+++ b/src/tree/tree.js
@@ -0,0 +1,100 @@
+class Treeview {
+ constructor(treeviewId, editor, imageBase) {
+ this.treeviewId = treeviewId;
+ this.editor = editor;
+ this.selected = null;
+ this.imageBase = imageBase;
+ document.querySelector(this.treeviewId).addEventListener("click", (event) => {
+ this.on("click", event);
+ });
+ document.querySelector(this.treeviewId)
+ };
+ on(eventName, eventData) {
+ switch (eventName) {
+ case "click": {
+ if (eventData.target.tagName == 'A') {
+ eventData.preventDefault();
+ let element = eventData.target;
+ if (this.editor) {
+ this.editor.sendEvent("EVENT_ON_LINK_CLICK", { label: element.innerText, href: element.getAttribute('href') });
+ }
+ }
+ else if (eventData.target.nodeName == 'SUMMARY' && !eventData.target.parentNode.hasAttribute("open")) {
+ if (eventData.target.dataset.requested == "false" && !eventData.target.classList.contains('final')) {
+ eventData.target.classList.add('loading');
+ eventData.preventDefault();
+ if (this.editor) {
+ let request = {
+ variableName: eventData.target.dataset.label,
+ variableId: eventData.target.id,
+ variablePath: eventData.target.dataset.path
+ };
+ this.editor.sendEvent("EVENT_GET_VARIABLE_DATA", request);
+ }
+ else {
+ setTimeout(() => {
+ eventData.target.dataset.requested = true;
+ this.open(eventData.target.id);
+ }, 500);
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ appendData(data, targetId) {
+ if (targetId != null) {
+ let target = document.getElementById(targetId);
+ target.parentNode.innerHTML += this.parseData(data)
+ }
+ else {
+ let target = document.querySelector(this.treeviewId);
+ target.innerHTML += this.parseData(data);
+ }
+ };
+ replaceData(data, targetId) {
+ if (targetId != null) {
+ let target = document.getElementById(targetId);
+ target.parentNode.outerHTML = this.parseData(data)
+ target.dataset.requested = true;
+ }
+ else {
+ let target = document.querySelector(this.treeviewId);
+ target.innerHTML = this.parseData(data);
+ }
+ };
+ parseData(data) {
+ let me = this;
+ let buf = Object.keys(data).map((key) =>
+ `
+
+ ${data[key].label} =
+ ${Object.keys(data[key]).map((subkey) => {
+ return subkey == 'type' || subkey == 'value' ? `${data[key][subkey]}` : ' '
+ }).join(' ')}
+
+ ${data[key].children ? me.parseData(data[key].children) : ""} `
+ );
+ return buf.join("\n")
+ };
+ open(id) {
+ let node = document.getElementById(id);
+ while (node.parentNode.nodeName == "DETAILS") {
+ node.classList.remove('loading');
+ node = node.parentNode;
+ node.setAttribute("open", "true");
+ }
+ };
+ close(id) {
+ let node = document.getElementById(id).parentNode;
+ node.removeAttribute("open");
+ let detailNodes = node.querySelectorAll("DETAILS");
+ console.log(detailNodes); detailNodes.forEach((node) => node.removeAttribute("open"));
+ };
+ select(id) {
+ this.open(id);
+ document.getElementById(id).focus();
+ document.getElementById(id).click();
+ }
+}
\ No newline at end of file