Консоль кода для управляемых форм

0. 1890 16.07.20 21:51 Сейчас в теме
Консоль кода для управляемых форма с подсказками и подсветкой синтаксиса.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
100. Evg-Lylyk 3095 23.07.20 14:08 Сейчас в теме
(99) Еще момент, а если разные версии платформы например функция СтрНайти она появилась в платформе 8.3.5.
Сейчас заранее предопределенно?
103. salexdv 1890 23.07.20 14:46 Сейчас в теме
(100) Да, заранее. Все описания внутреннего языка лежат тут
92. Evg-Lylyk 3095 23.07.20 12:46 Сейчас в теме
Иногда нужно чтобы текст был только для просмотра, например когда генерируется текст встроенного языка для копирования
Как такое реализовать?
96. salexdv 1890 23.07.20 13:52 Сейчас в теме
(92) Чуть позже добавлю пример
125. salexdv 1890 24.07.20 23:30 Сейчас в теме
(92) Добавил в новом релизе возможность устанавливать readonly
93. Evg-Lylyk 3095 23.07.20 12:50 Сейчас в теме
В консолях запросов контекстуную подсказку было бы удобно использовать для написания алгоритмов обработки и там обычно есть входные переменные, хотелось бы иметь возможность задать тип.
Например:
Результат - ТаблицаЗначений с колонками Номенклатура, Констрагент
Строка - Структура("Номенклатура, Контрагента")
Чтобы улучшить это https://infostart.ru/public/1056684/
164. salexdv 1890 30.07.20 09:57 Сейчас в теме
(93) Мне не до конца ясна задача. Если вы хотите вставлять уже готовые примеры (картинка 1), то это можно решить через пользовательские сниппеты, правда пока нет механизма их программной вставки. Если надо, я добавлю. Если же речь идет об автодополнении полей (реквизитов) для собственных объектов (картинка 2), то это сильно сложнее. Ладно, когда есть просто объект, в вашем случае он называется "Строка", то подсказку для его полей придумать можно, но дальше из него получается другая переменная "объект", и вот для него уже сложно что-то придумать.
Можете расписать несколько подробнее?
Прикрепленные файлы:
165. Evg-Lylyk 3095 30.07.20 10:36 Сейчас в теме
(164) Со сниппетами все правильно согласен, на помощник справа не обращайте внимание ваше решение его полностью заменяет.
Там смысл такой обрабатывается результат запроса, например Номенклатура - Справочник.Номенклатура, Остаток - Число
Во входном контексте Строка - это строка ТЧ результата она содержит два поля
Строка.Номенклатура - Справочник.Номенклатура
Строка.Остаток - Число
Т.е. нужно задать что Строка - это например структура с двумя полямя Номенклатура, Остаток - ну и имееют соответствующие типа
чтобы автодополнение сработало
166. salexdv 1890 30.07.20 11:00 Сейчас в теме
(165)
(165)
Т.е. нужно задать что Строка - это например структура с двумя полямя Номенклатура, Остаток - ну и имееют соответствующие типа
чтобы автодополнение сработало

Можно сделать только чтобы работало так:
Строка.Ном // тут предлагается номенклатура
Строка. // Предлагается номенклатура и остаток

Автодополнение для поля номенклатуры я точно не сделаю т.е
Строка.Номенклатура. // Тут предлагаются реквизиты номенклатуры

Это всё равно что делать автодополнение для конструкций вида
Запрос = Новый Запрос();
Результат = Запрос.Выполнить();
Таблица = Результат. // Тут предлагается, например, "Выгрузить()"
Таблица. // Тут предлагается, например, "ВыгрузитьКолонку()"

Это уже почти полноценный конфигуратор получается. Надо знать какой тип возвращает каждый метод, какие у этого типа доступны методы и т.д. У меня просто нет столько времени, да и желания тоже, если честно. Консоль она ведь, как вы правильно написали в своей статье, чтобы что-то быстренько сделать, а не для того чтобы совсем не пользоваться конфигуратором. Понимаю, что это упростило бы ваше решение и сделало бы его более удобным, но пока могу предложить только программную вставку сниппетов и автодополнение для произвольных объектов по их имени т.е. описали объект с именем "Строка", для него все поля и автодополнение для полей работает. А вот для полей полей, тут увы...
Evg-Lylyk; +1 Ответить
167. Evg-Lylyk 3095 30.07.20 11:55 Сейчас в теме
(166) Не прошу вычислять хочу на входе все задать чтобы он это понимал
Строка - Коллекция
содержит Номенклатура - Спр.номенклатура, Остаток - Число
168. salexdv 1890 30.07.20 12:09 Сейчас в теме
169. Evg-Lylyk 3095 30.07.20 12:10 Сейчас в теме
(168) Это наверное как то нужно глобальный контекст дополнять
170. salexdv 1890 30.07.20 12:13 Сейчас в теме
(169) Тут можно придумать какую-нибудь структуру, например, как это сейчас сделано с типами т.е. тип "СправочникСсылка" связан с объектом метаданных справочники. Будет описание для объекта "Строка", а в его полях указано, что он связан с конкретным справочником, но не просто это. Быстро не сделаю точно.
Evg-Lylyk; +1 Ответить
171. Evg-Lylyk 3095 30.07.20 12:19 Сейчас в теме
(170) Принял,
Не сочтите что за назойливость, хочу внедрить вашу разработку, но пока до этого не дошел.
Пишу вам о проблемами которые сейчас вижу, когда буду использовать уже сам что-то решу
172. salexdv 1890 31.07.20 11:23 Сейчас в теме
(171) В новом релизе добавил пример загрузки собственных объектов. Если всё сделаете правильно, то будет даже работать подсказка для реквизитов типа СправочникСсылка/ДокументСсылка. Вот так это выглядит.
Пока из-за особенностей реализации подсказка через точку для ссылочных типов работает только тогда, когда подсказываемый реквизит выбран через Enter
Evg-Lylyk; +1 Ответить
94. Evg-Lylyk 3095 23.07.20 13:12 Сейчас в теме
Основное торможение инициализации это ИзвлечьВсе
Было бы идеально если бы инициализация подстановки проходило по обращению написал
"Метаданные." считываются доступные метаданные.
"Перечисление." и аналогично
97. salexdv 1890 23.07.20 13:59 Сейчас в теме
(94) Можно просто не удалять исходники из временных файлов, тогда будет быстрее. В любом случае основной пожиратель времени сейчас - это загрузка поля HTML- документа. Чтобы быстро подсказывать надо все основные выражения держать в памяти, поэтому перед запуском всего этого дела, надо конструкции языка считать.
Evg-Lylyk; +1 Ответить
95. Evg-Lylyk 3095 23.07.20 13:13 Сейчас в теме
Еще бы редактирование запроса на этом механизме хотя бы с подсветкой
98. salexdv 1890 23.07.20 14:04 Сейчас в теме
(95) Сам я за такое не возьмусь, просто нет времени. А так можно описать синтаксис языка запросов и использовать, вот пример.
Evg-Lylyk; +1 Ответить
104. pm74 180 24.07.20 08:56 Сейчас в теме
(0) Добрый день. Еще раз спасибо за обработку. Добавил себе в подсистему (самую малость изменил для быстрой загрузки ) , работает отлично (см скриншот). Теперь вопрос. Я хочу динамически сформировать описание алгоритмов , для автокомплита (по принципу metadata.json в процедуре ОбновитьМетаданные() ) , собрать файл json в 1с естественно без проблем. Вопрос в том как мне это дело добавить в javascript.
Прикрепленные файлы:
105. salexdv 1890 24.07.20 08:59 Сейчас в теме
(104) Если речь про сниппеты (вставка готовых блоков кода), то в планах такое есть, скоро появится.
106. pm74 180 24.07.20 09:07 Сейчас в теме
(105) это не совсем снипеты , скорее похоже на описание функции или процедуры с описанием контекста выполнения , входящих параметров , возвращаемых значений , зависимостей , декораторов и кратким описанием функционала
108. salexdv 1890 24.07.20 10:08 Сейчас в теме
(106) Но работать это должно так? Если нет, то опишите подробнее, пожалуйста.
112. pm74 180 24.07.20 10:29 Сейчас в теме
(108) важно вставить описание , что именно эта функция делает и какие параметры получает на входе , например у глобальных функций работает подсказка при наведении мыши

например

РезультатВыполнения = __ф(КакаяТоМояФункцияСподсказкой, Новый Структура("параметрфункции",значениепараметра));
хотелось бы уже на этапе редактирования понимать какие параметры передаются и какой будет результат
113. salexdv 1890 24.07.20 10:32 Сейчас в теме
114. pm74 180 24.07.20 10:34 Сейчас в теме
(113) тогда вопрос в догонку , структура описания (json) будет произвольной или фиксированной
115. salexdv 1890 24.07.20 10:58 Сейчас в теме
(114) Структура во вложении.
Прикрепленные файлы:
customFunctions.json
116. pm74 180 24.07.20 11:08 Сейчас в теме
(115) отлично !
"name_en": для кастомных функций думаю лишнее
а вот лишнее поле для записи дополнительных данных не помешало бы
(например в моем случае - это зависимость функции от других функций )
117. salexdv 1890 24.07.20 11:51 Сейчас в теме
(116) "name_en" - необязательное поле. Про зависимости не очень понятно. Как это выглядит и как это надо обрабатывать?
118. pm74 180 24.07.20 11:58 Сейчас в теме
(117)
Про зависимости не очень понятно. Как это выглядит и как это надо обрабатывать?

когда внутри какой нибудь функции есть вызов другой функции в идеале весь стек вызовов ))
ну это я размечтался конечно , просто некоторое необязательное поле в котором можно указать любую дополнительную информацию на свое усмотрение
119. salexdv 1890 24.07.20 12:02 Сейчас в теме
(118) Идею я понял. Надо подумать.
120. salexdv 1890 24.07.20 12:34 Сейчас в теме
(118) Можно сделать так, но тут некоторая проблема. Если использовать автокомлит с шаблоном, то не видно описание параметров функции т.к сразу вставляется шаблон.
Пример json прикреплен.
Прикрепленные файлы:
customFunctions.json
121. pm74 180 24.07.20 12:59 Сейчас в теме
(120) но у первой функции видно описание параметров
а правило заполнения шаблонов настраивается в самом шаблоне , ведь так ?
122. pm74 180 24.07.20 13:04 Сейчас в теме
(120) если при наведении мыши (или при выделении слова ) на строку шаблона можно было почитать его описание , как в глобальных функциях , думаю этого было бы достаточно

конечно не представляю насколько трудно это реализовать, но было бы здорово потому , что можно было бы динамически собирать кастомные шаблоны с описанием в.т.ч по текстам выгруженных модулей
123. salexdv 1890 24.07.20 13:56 Сейчас в теме
(122) ближе к вечеру постараюсь выложить релиз
126. salexdv 1890 24.07.20 23:31 Сейчас в теме
(122) В новом релизе добавил примеры для загрузки пользовательских функций и сниппетов. Пробуйте.
129. pm74 180 25.07.20 07:56 Сейчас в теме
(126) сегодня вечером обязательно попробую
134. pm74 180 28.07.20 10:34 Сейчас в теме
(126) подключил свои сниппеты , все работает , большое спасибо
оставлась небольшая проблема , почему то событие HTMLДокументСформирован срабатывает через раз
см примеры

сам каталог с исходниками присваиваю полю HTML

Попытка
HTML = КаталогИсходников + "index.html";
Исключение
ВывестиОшибку(" Неудачная попытка извлечь исходники" + Символы.ПС + ОписаниеОшибки());
КонецПопытки;


интересно это только у меня или нет
Прикрепленные файлы:
135. salexdv 1890 28.07.20 10:49 Сейчас в теме
(134) У себя я ниразу не наблюдал такого, чтобы документ не был сформирован. Попробуйте в таком случае нажать ctrl+shift+alt+f12 и покажите скриншот закладки console
136. pm74 180 28.07.20 11:03 Сейчас в теме
(135) после вызова консоли все начинает работать ))
Прикрепленные файлы:
139. salexdv 1890 28.07.20 12:10 Сейчас в теме
(136) Вы так и не показали, что на закладке "Console" в открывшемся окне :-)
140. pm74 180 28.07.20 12:11 Сейчас в теме
(139) сорри отвлекли , сейчас
141. pm74 180 28.07.20 12:12 Сейчас в теме
142. salexdv 1890 28.07.20 12:13 Сейчас в теме
145. pm74 180 28.07.20 12:19 Сейчас в теме
146. salexdv 1890 28.07.20 12:30 Сейчас в теме
(145) Ну тогда трудно сказать, с чем это может быть связано. Тут надо смотреть "на месте".
147. pm74 180 28.07.20 12:42 Сейчас в теме
(146) да ладно вобщем это не сильно напрягает , подсистема в основном заточена не под редактирование , но с помощью вашей консоли редактировать гораздо удобнее
143. pm74 180 28.07.20 12:15 Сейчас в теме
(141) я таки думаю что проблема на стророне 1с
144. salexdv 1890 28.07.20 12:19 Сейчас в теме
(143) Если у вас в консоли нет ничего кроме трех строк, как на скриншоте ниже, то да, надо смотреть как у вас грузится сам HTML-документ.
Прикрепленные файлы:
152. salexdv 1890 29.07.20 12:10 Сейчас в теме
(143) Тоже столкнулся с проблемой, когда поле HTML-документа иногда не формируется. Началось это после того, как перестал удалять исходники из временных файлов. Видимо что-то где-то кэшируется. Решение оказалось в том, чтобы каждый раз при запуске давать файлу index.html уникальное имя перед тем, как присвоить его документу. Можете придумать свой механизм, а можете посмотреть в новом релизе.
153. pm74 180 29.07.20 12:38 Сейчас в теме
(152) понятно, у меня как раз ничего не удаляется ,a путь к исходникам передается в форму через параметры
спасибо за наводку , попробую
155. pm74 180 29.07.20 18:52 Сейчас в теме
(152)
Решение оказалось в том, чтобы каждый раз при запуске давать файлу index.html уникальное имя перед тем, как присвоить его документу. Можете придумать свой механизм, а можете посмотреть в новом релизе.



Проблему (похоже) удалось решить так

HTML ="file:///"+КаталогИсходников + "index.html";
107. savelievD 24.07.20 10:08 Сейчас в теме
Я смотрю данные из JS передаются через глобальную переменную. Так как обработка JS идёт в отдельном потоке, то это выглядит не безопасно..Для передачи данных из JS в 1С можно использовать кастомные ивенты.
Я делал по другому:
При загрузке страницы в глобальной переменной сохранить своё событие клика
self.evtClick = new MouseEvent('click');


далее добавим функцию для вызова события 1С :
self.call1C = function (p = null) {
    self.evtClick.data1C = p
    return self.dispatchEvent(self.evtClick)
    }


в итоге прямо в момент вызова 1С получаем данные в 1С в событии "ПриНажатии"
109. salexdv 1890 24.07.20 10:14 Сейчас в теме
(107) Да, ваш вариант более правильный, вот только о какой безопасности тут идет речь?
110. savelievD 24.07.20 10:15 Сейчас в теме
(109) я имел в виду, что данные в переменной JS могут уже измениться, до того, как 1С их прочитает.
111. salexdv 1890 24.07.20 10:18 Сейчас в теме
(110) Согласен. Такое возможно, если бы было какое-то постоянное взаимодействие 1С и JS, пока такого у меня нет. Как будет время обязательно присмотрюсь к вашему варианту. Спасибо!
127. salexdv 1890 24.07.20 23:32 Сейчас в теме
(110) Реализовал ваш вариант. Спасибо за наводку!
124. salexdv 1890 24.07.20 23:30 Сейчас в теме
Новое:
1. Загрузка метаданных конфигурации через модуль ДлительныеОперации, если это возможно
2. Функция для установки readonly
3. Подсказка свойств и методов для объектов, созданных через Новый
4. Поддержка пользовательских функций.
5. Функционал для загрузки пользовательских сниппетов и функций.
pm74; Evg-Lylyk; +2 Ответить
132. Evg-Lylyk 3095 28.07.20 09:30 Сейчас в теме
Написал статью зачем нужна консоль кода, рассказал о вашей разработке
133. salexdv 1890 28.07.20 10:07 Сейчас в теме
(132) Отлично! Очень полезно иметь подборку в одном месте.
137. Sibul 28.07.20 11:42 Сейчас в теме
Добрый день!
Подскажите новичку поподробнее, как её запустить. Открывал и броузерами и в 1С файл index.html, везде пустой экран.
Что я желаю не так?
138. salexdv 1890 28.07.20 12:08 Сейчас в теме
(137) Если вы открываете index.html в браузере, то у вас и будет пустой экран. Вернее будет одна пустая строка с номером 1. Дальше можете набирать код и смотреть, как работаю подсказки.
Если вы хотите запустить в 1С, то лучше воспользоваться обработкой из данной публикации, либо можете создать свою обработку, где будет реквизит с типом "Строка", размещенный на форме в виде поля html документа. Присваиваете своему реквизиту адрес к файлу index.html и видите тоже самое, что и в браузере.
Прикрепленные файлы:
148. Sibul 28.07.20 13:34 Сейчас в теме
(138) Спасибо большое, про браузер действительно всё работает, не догадался я начать писать, думал там инсталяция какая нибудь должна запуститься.
Для обработки пока нет подписки к сожалению(((
149. savelievD 29.07.20 11:35 Сейчас в теме
Можно включить русский язык в monaco. В начале скрипта подключения добавить
require.config({ 'vs/nls': { availableLanguages: { '*': "ru" } } });

Тогда будет использоваться файл editor.main.nls.ru .
Кстати другие языки можно удалить из исходников, чтобы размер сократить немного... ну или добавить выбор языка.
salexdv; Evg-Lylyk; +2 Ответить
150. salexdv 1890 29.07.20 11:45 Сейчас в теме
(149) Да, я в курсе такой возможности
151. salexdv 1890 29.07.20 12:05 Сейчас в теме
1. Добавлено описание структуры метаданных для следующих объектов: Общие модули, Планы обмена, Планы видов расчета, Планы видов характеристик, Бизнес-процессы, Задачи.
2. Добавлено описание всех типов и подсказка для функции Тип()
3. Команды для добавления CTRL+NUM/ и удаление комментариев CTRL+SHIFT+NUM/
4. По умолчанию для подсказок используется только русские имена функций/объектов. Английский язык опционально.
5. Вставка текста запроса с учетом отступа его первой строки
6. Для ускорения загрузки исходники теперь не удаляются из каталога временных файлов, если не поменялась версия обработки
7. Доработано определения текста запроса и его позиции с учетом возможного наличия в запросе строковых литералов
Evg-Lylyk; +1 Ответить
154. Evg-Lylyk 3095 29.07.20 12:52 Сейчас в теме
(151) Спасибо, очень полезные доработки. Не хватает в консоли после выполнения кода если возникает ошибка чтобы появлялась гиперссылка с ошибкой и происходило позиционирование в тексте
156. salexdv 1890 29.07.20 20:27 Сейчас в теме
157. salexdv 1890 29.07.20 20:28 Сейчас в теме
Добавил выделение строки, при выполнении которой произошла ошибка
Evg-Lylyk; +1 Ответить
158. Evg-Lylyk 3095 30.07.20 07:51 Сейчас в теме
(157) Супер, хорошо бы еще курсор переставить в позицию ошибки
163. salexdv 1890 30.07.20 09:38 Сейчас в теме
159. Simonov_NPM 30.07.20 07:53 Сейчас в теме
БП 3.0, 1С:Предприятие 8.3 (8.3.16.1224)
Пытаюсь выполнить текст который полностью составлен из автоподстановки
Запрос =Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
	|БанковскиеСчета.Владелец КАК Владелец,
	|БанковскиеСчета.Ссылка КАК Ссылка
|ИЗ
	|Справочник.БанковскиеСчета КАК БанковскиеСчета";
Результат=Запрос.Выполнить();
Выборка=Результат.Выбрать();
Пока Выборка.Следующий() Цикл
КонецЦикла;
Показать

Вываливается ошибка:
Поле объекта не обнаружено (ИсходнаяСтрока)
{ВнешняяОбработка.КонсольКода.Форма.Форма.Форма(582)}: Результат.ИсходнаяСтрока = Ошибка.ИсходнаяСтрока;
{ВнешняяОбработка.КонсольКода.Форма.Форма.Форма(597)}: Результат = ВыполнитьКодНаСервере(ПолучитьТекст());

Нужно переименовать Переменную Результат
в этой функции, либо менять в сниппете например на РезультатЗапроса
&НаСервере
Функция ВыполнитьКодНаСервере(Текст)
	
	Результат = Новый Структура("Успешно, ИсходнаяСтрока, ОписаниеОшибки", Ложь, "", "");
	
	Попытка
		Выполнить(Текст);
		Результат.Успешно = Истина;
	Исключение
		Ошибка = ИнформацияОбОшибке();		
		Результат.ИсходнаяСтрока = Ошибка.ИсходнаяСтрока;
		Если Ошибка.Причина <> Неопределено Тогда
			Результат.ОписаниеОшибки = Ошибка.Причина.Описание;
		Иначе
			Результат.ОписаниеОшибки = Ошибка.Описание;
		КонецЕсли;
	КонецПопытки;
	
	Возврат Результат;	
	
КонецФункции
Показать


Так как имена совпадают и выходит ошибка
160. salexdv 1890 30.07.20 09:09 Сейчас в теме
(159) Да, тут надо какое-то оригинальное имя придумать для переменной. Переделаю.
162. salexdv 1890 30.07.20 09:38 Сейчас в теме
161. Evg-Lylyk 3095 30.07.20 09:25 Сейчас в теме
Можете ответить на сообщение 93
Как задать входной контекст?
Нужно чтобы в момент редактирования допустим ТЗ уже была типом значений с определенными колонками.
173. salexdv 1890 31.07.20 11:24 Сейчас в теме
Добавил следующие возможности:
1. Подсказки через точку для реквизитов типа справочники/документы
2. Загрузка пользовательских объектов (структур) для использования в подсказках. Пример присутствует.
dwarrior; Evg-Lylyk; +2 Ответить
174. simonov_2015 2 31.07.20 12:40 Сейчас в теме
Платформа 8.3.16.1148
Не работает копипаст из других приложений.
175. salexdv 1890 31.07.20 12:57 Сейчас в теме
(174) Копипаст из других приложений пока не работает на любой платформе.
176. Evg-Lylyk 3095 31.07.20 13:23 Сейчас в теме
Есть маленькие недочеты:
1. В режиме только просмотр в контекстном меню актуальна только команда копировать, остальное лучше скрыть
2. Для добавления комментариев представление горячей клавишу Ctrl + NumPad_Devide, более понятно Ctrl + Num /
177. salexdv 1890 31.07.20 14:53 Сейчас в теме
(176) 1. Не могу на это влиять без сильных костылей
2. Исправил.
178. Fominro 02.08.20 14:34 Сейчас в теме
Добрый день.
Не получается в окно консоли вставить код из буфера обмена.
Так и должно быть?
179. salexdv 1890 03.08.20 09:02 Сейчас в теме
(178) Да, к сожалению, копипаст из других приложений/окон не работает
181. Pr-Mex 128 03.08.20 17:38 Сейчас в теме
(179) Установите самые новые версии платформы. Там это исправлено.
182. salexdv 1890 05.08.20 12:35 Сейчас в теме
(181) 8.3.16.1148 - не работает CTRL+C/V, работает CTRL-A, CTRL-Z
8.3.17.1549 - всё ровно наоборот работает CTRL+C/V, не работает CTRL-A, CTRL-Z
183. Pr-Mex 128 05.08.20 13:44 Сейчас в теме
(182) В 8.3.18 это должно работать. Проверь, плиз.
184. salexdv 1890 05.08.20 16:20 Сейчас в теме
(183) В 8.3.18.891 действительно всё работает. Лишь бы дальше не сломали ))
185. Evg-Lylyk 3095 05.08.20 16:24 Сейчас в теме
(184) Надо что то с этим делать как то обходить
186. salexdv 1890 05.08.20 16:27 Сейчас в теме
(185) Сейчас для этого есть собственные команды Копировать/Вставить, но у этого подхода есть очевидный минус - это работает только для окна редактора т.е. невозможно вставить текст в консоль из другого окна и невозможно скопировать текст из консоли в другое окно. Добавлю проверку для версии платформы. С 8.3.18 должно заработать, как положено.
180. 9539356 03.08.20 12:04 Сейчас в теме
Вот это вещь! Очень мощный инструмент. Спасибо автору.
Не хватает комбинации ctrl+пробел, а кое где мешают подсказки, которые отсутствуют в конфигураторе. Можно было бы добавить переключатель, отключающий весь функционал, отсутствующий в конфигураторе, чтобы не мешался при машинописи.
187. salexdv 1890 06.08.20 11:04 Сейчас в теме
Новое:
1. Подсказки через точку для объектов типа ТаблицаЗначений/Массив/РезультатЗапроса/ДвоичныеДанные и др., в том числе для объектов, полученных через методы других объектов.
2. Подсказки для объявленных переменных
3. Включение/отключение режима быстрых подсказок. Если подсказки выключены, то для их вызова необходимо использовать CTRL+SPACE
tormozit; Evg-Lylyk; +2 Ответить
188. salexdv 1890 07.08.20 10:54 Сейчас в теме
Новое:
1. Подсветка синтаксиса языка запросов.
2. Включение/отключение карты кода
tormozit; Evg-Lylyk; +2 Ответить
189. tormozit 6029 08.08.20 14:18 Сейчас в теме
Насколько реально прокинуть обработку событий из этого редактора в код 1С? Где то читал, что WEbKit уже не позволяет звать из своего кода методы объектов 1С. На старом HTML движке это работало вроде. Интересуюсь с целью прикрутить свою подсказку к этому редактору.
190. salexdv 1890 08.08.20 14:27 Сейчас в теме
(189) Сам я такого не пробовал, но тоже видел упоминание, что это невозможно. Можно передать подсказку, например, как JSON, а потом уже с помощью JS показывать в нужный момент.
191. tormozit 6029 08.08.20 14:31 Сейчас в теме
(190) Ну а в какой момент запускать мой вычислитель списка подсказки? Нажатие на клавишу "." невозможно платформой обработать
192. salexdv 1890 08.08.20 14:36 Сейчас в теме
(191) Тут надо в JS хранить информацию об объектах, и при нажатии точки определять, что за объект перед точкой стоит и уже от этого действовать. По крайней мере так это реализовано у меня. Возможно, это не единственный путь, но другого я пока не придумал.
193. salexdv 1890 08.08.20 16:52 Сейчас в теме
(191) Еще можно попробовать сделать следующее. При нажатии на точку в редакторе (editor) отрабатывает функция, которая зарегистрирована через registerCompletionItemProvider. Из этой функции генерировать событие нажатия, которое передается в 1С с какими-нибудь параметрами, на стороне 1С запускается вычислитель, а потом обратно в JS передается результат, но во-первых, не уверен, что это будет работать быстро, а во вторых надо будет при обратном вызове из 1С как-то опять в JS вызвать CompletionItemProvider. Думаю, что это как-то можно сделать, надо документацию по API читать или issues просматривать.
196. Evg-Lylyk 3095 17.09.20 18:44 Сейчас в теме
Нашел пару ошибок по комментрированию:
Комментит лишнию строку когда курсор в начале (поведение отличается от конфигуратора), если сложно понять поробуйте закомментить две строке в консоли и в конфигуратор
При комментировании нарушается выделение смещается начальная позиция (видимо на количество добавленных символов)
198. salexdv 1890 17.09.20 20:41 Сейчас в теме
(196) Про выделение понял, посмотрю, что с этим сделать.
197. Evg-Lylyk 3095 17.09.20 18:53 Сейчас в теме
Можно ли сделать учет модифицированности?
Чтобы при изменении текста генерировал событие "Изменено" аналогично как идет вызов конструктора
199. salexdv 1890 17.09.20 20:42 Сейчас в теме
(197) Думаю, что можно. Только я бы не генерировал событие, а сделал бы отдельную функцию, которая позволяет прочитать/изменить признак модифицированности.
Оставьте свое сообщение
Вопросы с вознаграждением