Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Перестали отображаться свои подсказки по параметрам setCustomSignatures #343

Open
tormozit opened this issue Apr 25, 2024 · 6 comments

Comments

@tormozit
Copy link
Contributor

tormozit commented Apr 25, 2024

Очень давно не менял этот код. Версия редактора вроде бы последняя. Видимо при последнем обновлении редактора сломалось отображение своей подсказки. При генерации события отображения подсказки по параметрам у меня в 1С работает код

		РедакторHTML.setCustomSignatures(ирОбщий.ОбъектВСтрокуJSONЛкс(ВариантыСинтаксиса));
		РедакторHTML.setOption("generateBeforeShowSuggestEvent", Ложь);
		РедакторHTML.triggerSigHelp();
		РедакторHTML.setOption("generateBeforeShowSuggestEvent", Истина);

Но почему то при этом часто происходит ничего.
Например вызываю подсказку по параметрам между скобками в тексте

я = Новый ТаблицаЗначений;
я.Колонки.Добавить()

Далее приведен текст JSON. Сверил его с примером в документации https://github.com/salexdv/bsl_console/blob/develop/docs/set_custom_signatures.md . Вроде бы все правильно.

{
  "добавить": [
    {
      "label": "Добавить(Имя?, Тип?, Заголовок?, Ширина?) [КолонкаТаблицы…]",
      "parameters": [
        {
          "label": "Имя?",
          "documentation": "Обяз.: Нет, \"\";  Возвр.: ?\nТип: Строка.\n> Имя колонки. Значение по умолчанию: Пустая строка."
        },
        {
          "label": "Тип?",
          "documentation": "Обяз.: Нет, ?;  Возвр.: ?\nТип: ОписаниеТипов.\n> Объект, описывающий допустимые типы значений для колонки. Если параметр не указан, в колонке можно будет хранить значение любого типа."
        },
        {
          "label": "Заголовок?",
          "documentation": "Обяз.: Нет, \"\";  Возвр.: ?\nТип: Строка.\n> Заголовок колонки таблицы значений. Используется при визуальном отображении таблицы значений. Значение по умолчанию: Пустая строка."
        },
        {
          "label": "Ширина?",
          "documentation": "Обяз.: Нет, 0;  Возвр.: ?\nТип: Число.\n> Ширина колонки в символах. Используется при визуальном отображении таблицы значений. Значение по умолчанию: 0."
        }
      ],
      "documentation": "Возвращаемое значение:Тип: КолонкаТаблицыЗначений.  \nОписание:\nДобавляет колонку в конец коллекции колонок таблицы."
    }
  ]
}

Но в следующей ситуации работает между скобками
ОткрытьФорму()
с таким JSON

{
  "открытьформу": [
    {
      "label": "ОткрытьФорму(ИмяФормы, Параметры?, Владелец?, Уникальность?, Окно?, НавигационнаяСсылка?, ОписаниеОповещенияОЗакрытии?, РежимОткрытияОкна?) [Форма, ФормаКл…]",
      "parameters": [
        {
          "label": "ИмяФормы",
          "documentation": "Обяз.: Да;  Возвр.: ?\nТип: Строка.\n> Имя формы. 
        },
        {
          "label": "Параметры?",
          "documentation": "Обяз.: Нет, ?;  Возвр.: ?\nТип: Структура.\n> Параметры формы. Ключ структуры - имя параметра, а значение - значение параметра формы. Имя элемента должно совпадать с именем параметра структуры. \nП = Новый Структура(\"Ключ\", Поставщик); Форма = ПолучитьФорму(\"Справочник.Контрагенты.ФормаОбъекта\", П); Форма.Открыть();"
        },
        {
          "label": "Владелец?",
          "documentation": "Обяз.: Нет, ?;  Возвр.: ?\nТип: .\n> Владелец формы - форма или элемент управления другой формы."
        },
        {
          "label": "Уникальность?",
          "documentation": "Обяз.: Нет, Ложь;  Возвр.: ?\nТип: Произвольный.\n> В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм. Если будет найдена форма с таким же ключом уникальности, вместо открытия новой формы будет активизирована найденная форма. Ложь - искать форму с ключом уникальности по умолчанию, Истина - не искать форму вообще, любое другое значение устанавливает ключ уникальности, по которому будет произведен поиск. Значение по умолчанию: Ложь."
        },
        {
          "label": "Окно?",
          "documentation": "Обяз.: Нет, ?;  Возвр.: ?\nТип: ОкноКлиентскогоПриложения.\n> Окно приложения, в котором будет открыта форма.  Применимо только для формы клиентского приложения. Окном может быть только основное окно приложения или вспомогательное окно формы. Используется только в управляемом приложении."
        },
        {
          "label": "НавигационнаяСсылка?",
          "documentation": "Обяз.: Нет, Неопределено;  Возвр.: ?\nТип: Строка, Неопределено.\n> Если содержит значение, отличное от Неопределено, то это значение присваивается свойству НавигационнаяСсылка формы, полученной в результате вызова данного метода, и свойство АвтоНавигационнаяСсылка этой формы устанавливается в Ложь. Значение по умолчанию: Неопределено."
        },
        {
          "label": "ОписаниеОповещенияОЗакрытии?",
          "documentation": "Обяз.: Нет, ?;  Возвр.: ?\nТип: ОписаниеОповещения.\n> Содержит описание процедуры, которая будет вызвана при закрытии формы со следующими параметрами: <РезультатЗакрытия> - значение, переданное при вызове метода Закрыть открываемой формы, <ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения.  Если параметр не указан, то по завершению никакая процедура вызвана не будет. Используется только в управляемом приложении."
        },
        {
          "label": "РежимОткрытияОкна?",
          "documentation": "Обяз.: Нет, Неопределено;  Возвр.: ?\nТип: РежимОткрытияОкнаФормы.\n> Указывает режим открытия окна формы клиентского приложения. Используется только в управляемом приложении.  Форма, открытая в режиме БлокироватьОкноВладельца, не участвует в поиске уже открытых форм. При попытке открыть такую же форму (с параметром уникальности, установленным в значение Ложь), форма открытая в таком режиме, не будет найдена и будет открыта новая форма. Значение по умолчанию: Неопределено."
        }
      ],
      "documentation": "Вариант: По имени.\n."
    },
    {
      "label": "ОткрытьФорму(Форма, Окно?, ??) [Форма, ФормаКл…]",
      "parameters": [
        {
          "label": "Форма",
          "documentation": "Обяз.: Да;  Возвр.: ?\nТип: Форма, ФормаКлиентскогоПриложения.\n> Форма или форма клиентского приложения. В режиме тонкого и веб-клиентов только форма клиентского приложения."
        },
        {
          "label": "Окно?",
          "documentation": "Обяз.: Нет, ?;  Возвр.: ?\nТип: ОкноКлиентскогоПриложения.\n> Окно приложения, в котором будет открыта форма.  Применимо только для формы клиентского приложения. Окном может быть только основное окно приложения или вспомогательное окно формы."
        },
        {
          "label": "??",
          "documentation": "Обяз.: Нет, ;  Возвр.: ?\nТип: ."
        }
      ],
      "documentation": "Вариант: По форме.\n."
    }
  ]
}
@tormozit
Copy link
Contributor Author

Еще почему то перестала отображаться эта подсказка когда каректа внутри текстового литерала
ОткрытьФорму("ОбщаяФорма.Форма");
Если каретку ставлю перед первой кавычкой, то подсказка отображается, А если между кавычками, то не отображается.
Причем в обоих случаях передается одинаковый JSON и выполняется одинаковый код.

@tormozit
Copy link
Contributor Author

Работает также в
Новый Структура( )

Похоже не работает если вызов метода идет после точки. Например еще не работает в тексте
Справочники.Валюты.Выбрать()

@salexdv
Copy link
Owner

salexdv commented Apr 25, 2024

Посмотрю

@tormozit
Copy link
Contributor Author

tormozit commented Apr 28, 2024

Основную проблему удалось обойти путем использования в качестве названия метода полное выражение слева от скобки приведенное к нижнему регистру. Т.е. для исходного текста
я.Колонки.Добавить()
передавать такой JSON

{
"я.колонки.добавить": [
{
"label": "Добавить(Имя?, Тип?, Заголовок?, Ширина?) [КолонкаТаблицы…]",
"parameters": [...

Название метода ранее я брал из Событие.params.word. Возможно заполнение этого параметра события изменилось.
Если это задуманное изменение, то очень рекомендую его четко обозначить в документации, т.к. это сейчас непонятно из документации.

@tormozit
Copy link
Contributor Author

tormozit commented Apr 28, 2024

Таким образом у меня непобежденной осталась проблема отобразить подсказку по параметрам, когда каретка внутри текстового литерала (или сразу справа от закрывающей кавычки тоже).

@tormozit
Copy link
Contributor Author

Проблему с отображением подсказки внутри кавычек исправил #344

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants