ИР адаптеру для улучшения обновления кэша нужны события в порядке убывания важности
ПриСменеАктивногоПоля(СтарыйДокумент, СтарыйТекст, СтараяПозиция). В параметрах нужен доступ к данным поля документа, которое было активно до смены фокуса. Оно должно вызываться в частности
ПриОбновленииКэша(Вариант), которое бы вызывалось по кнопке из списка Т9. Оттуда я буду запрашивать тексты всех общих модулей.
0 0
ред. 03 декабря 2023 20:08
Недостаточно рейтинга для добавления отрицательного голоса. Шаблон будет скрыт из ваших результатов поиска.
Комментарии
tormozit #1, 01 декабря 2023 08:08
Пользователи ИР адаптера настоящие и будущие очень ждут решения этой задачи, т.к. она избавит от необходимости выполнять фиктивный вызов подсказки для обновления модуля в кэше ИР.
tormozit изменил статус на Открыто
0
bolsun #2, 02 декабря 2023 00:11
Все это влечет за собой кучу возможных проблем и побочек. Вместо этого могу предоставить метод для получения всех документов, которые были изменены за предыдущий период. Если документ был неидентифицирован или заголовок пустой (т.к. неразвернут) тут ничего не сделать. Но если был развернут то данные вполне будут полезные.
Тут все реализуемо.
0
bolsun #3, ред. 02 декабря 2023 00:13
Это можно использовать совместно с новым обработчиком ПриОткрытииОкна
Если заголовок окна = "Выражение"
Вызываем метод ПолучитьМодифицированныеДокументы()
Обновляем для них кэш.
0
bolsun #4, 02 декабря 2023 00:25
Для подписки на измененные документы будет соответствующая директива, тогда я буду хранить эти данные для скрипта и выдавать ему по запросу ПолучитьМодифицированныеДокументы(), с последующей очисткой. Далее снова собирать
0
bolsun #5, 02 декабря 2023 00:27
Т.к. этот функционал уже реализован и используется для ToDo Навигатора и Автосохранения модулей, то реально использовать его и для скриптов.
0
tormozit #6, 02 декабря 2023 00:27
Если метод ПолучитьМодифицированныеДокументы() будет копить изменения с момента последнего моего вызова этого метода, то думаю этого будет достаточно чтобы решить главную задачу (№1).
0
bolsun #7, 02 декабря 2023 00:29
(6) tormozit, да, именно так я и предполагаю его работу.
0
tormozit #8, ред. 02 декабря 2023 00:50
Для ускорения обновления структуры модуля, мне важно также получать любую одну позицию каретки (желательно там где модификация текста была), которые были использованы с последнего вызова ПолучитьМодифицированныеДокументы(). Т.е. в наборе измененых текстов хочется атрибуты:
ПолныйТекст
НазваниеДокумента
Любая одна позиция, где изменился текст
0
bolsun #9, 02 декабря 2023 00:34
(8) tormozit, 1 и 2 есть. 3 - могу только последнюю позицию изменения предоставить.
0
bolsun #10, 02 декабря 2023 00:36
Также доступны будут RuntimeId, ConfRuntimeId, ConfName, DocumentType, IsExtFileModule
0
tormozit #11, ред. 02 декабря 2023 00:50
"могу только последнюю позицию изменения предоставить"
Ну вроде под "любая одна позиция изменения" подходит и "последнюю позицию изменения". Или что ты имеешь ввиду под "последняя"?
0
bolsun #12, 02 декабря 2023 00:40
(11) tormozit, уточнил какую одну позицию могу предоставить - последную позицию изменения.
0
bolsun #13, 02 декабря 2023 00:41
Остальные позиции тоже могу хранить теоретически, но будет ли от них толк, раз текст документа может меняться кардинально.
Добавлен метод ПолучитьМодифицированныеДокументы()
//Метод возвращает все документы, которые были модифицированы с момента последнего вызова этого метода.
//В директивы скрипта необходимо добавить
//@subscribe МодифицированныеДокументы
Документы = ТурбоКонф.ПолучитьМодифицированныеДокументы();
0
tormozit #15, ред. 02 декабря 2023 17:22
Есть один второстепенный сценарий, где метода ПолучитьМодифицированныеДокументы() может не хватить.
Это - открытие модального окна "Выражение" или "Точка останова" из поля модуля. В таком случае мне нужно знать, какой документ был активен последним до активации текущего окна.
0
bolsun #16, 02 декабря 2023 17:26
(15) tormozit, это же для формирования значений подсказки нужно, а не для обновления кэша? Это другая задача, там по другому будет реализовано, через ТекущийДокумент, т.к. модуль может быть не модифицирован в этих случаях.
0
bolsun #17, 02 декабря 2023 17:32
По результатам тестирования текущих правок TurboConf_RDT, прошу дать подтверждение о работоспособности версии, для включения этих изменений в основную ветку.
0
bolsun #18, ред. 02 декабря 2023 17:42
В МодифицированныеДокументы не попадают документы, если у них не известен Заголовок. Данные обновляются асинхронно, поэтому это Не гарантированное состояние документов в момент получения.
0
bolsun #19, ред. 02 декабря 2023 17:46
Уточняю, идентификацию документ может и не проходить для добавления в список измененных, но Заголовок должен быть известен. Поэтому данных ИмяКонфигурации и т.д. может не быть.
Заголовок, Текст, Позиция, ЗаголовокКонфигуратора - гарантированно должны присутствовать.
Позиция - последняя позиция при изменении
ЗаголовокКонфигуратора - полный заголовок Конфигуратора на момент изменения.
0
tormozit #20, ред. 02 декабря 2023 17:57
Не вижу свойство "Текст" и "Позиция" у модифицированного документа
Часто приходит самое первое состояние измененного модуля вместо последнего. Примерно в половине случаев приходит последнее, а в другой половине - самое первое состояние, в котором он был открыт. т.е. до всех правок. Это я пока экспериментирую с двумя модулям - в одном правлю, а в другом пишу вызовы его методов.
0
tormozit #24, 02 декабря 2023 19:04
Еще один раз заметил, что у измененного документа был чужой текст - от активного документа.
Параметр Вариант - решил пока не делать, т.к. в окне T9 обновляю весь кэш, ты можешь в обработчике вызывать окно выбора значения и предложить варианты пользователю.
Эту заявку закрываю, если будут какие-то баги, то на них просьба создавать отдельные тикеты.
bolsun изменил статус на Закрыто
0
tormozit #31, ред. 03 декабря 2023 19:16
Сохраняются ли измененные документы
Между сеансами работы Турбоконфа?
Между сеансами работы конфигуратора?
Иными словами, если пользователь поменял пару модулей в их окнах и сразу закрыл конфигуратор без вызова скрипта, то при следующем запуске конфигуратора в той же базе вызов ПолучитьМодифицированныеДокументы() выдаст измененные в прошлом сеансе конфигуратора документы?
0
bolsun #32, 03 декабря 2023 20:08
(31) tormozit, документы хранятся до перезапуска ТурбоКонф, между сеансами не сохраняются.
Между сеансами конфигуратора - сохраняются, т.к. обновляются по ключу - Заголовок документа. Но в следующих версиях ключ будет ЗаголовокКонфигуратора, что бы избежать совпадений с документами других открытых конфигураторов.
#1, 01 декабря 2023 08:08
Пользователи ИР адаптера настоящие и будущие очень ждут решения этой задачи, т.к. она избавит от необходимости выполнять фиктивный вызов подсказки для обновления модуля в кэше ИР.
tormozit изменил статус на Открыто
#2, 02 декабря 2023 00:11
#3, ред. 02 декабря 2023 00:13
Это можно использовать совместно с новым обработчиком ПриОткрытииОкна
Если заголовок окна = "Выражение"
Вызываем метод ПолучитьМодифицированныеДокументы()
Обновляем для них кэш.
#4, 02 декабря 2023 00:25
Для подписки на измененные документы будет соответствующая директива, тогда я буду хранить эти данные для скрипта и выдавать ему по запросу ПолучитьМодифицированныеДокументы(), с последующей очисткой. Далее снова собирать
#5, 02 декабря 2023 00:27
Т.к. этот функционал уже реализован и используется для ToDo Навигатора и Автосохранения модулей, то реально использовать его и для скриптов.
#6, 02 декабря 2023 00:27
Если метод ПолучитьМодифицированныеДокументы() будет копить изменения с момента последнего моего вызова этого метода, то думаю этого будет достаточно чтобы решить главную задачу (№1).
#7, 02 декабря 2023 00:29
(6) tormozit, да, именно так я и предполагаю его работу.
#8, ред. 02 декабря 2023 00:50
Для ускорения обновления структуры модуля, мне важно также получать любую одну позицию каретки (желательно там где модификация текста была), которые были использованы с последнего вызова ПолучитьМодифицированныеДокументы(). Т.е. в наборе измененых текстов хочется атрибуты:
#9, 02 декабря 2023 00:34
(8) tormozit, 1 и 2 есть. 3 - могу только последнюю позицию изменения предоставить.
#10, 02 декабря 2023 00:36
Также доступны будут RuntimeId, ConfRuntimeId, ConfName, DocumentType, IsExtFileModule
#11, ред. 02 декабря 2023 00:50
"могу только последнюю позицию изменения предоставить"
Ну вроде под "любая одна позиция изменения" подходит и "последнюю позицию изменения". Или что ты имеешь ввиду под "последняя"?
#12, 02 декабря 2023 00:40
(11) tormozit, уточнил какую одну позицию могу предоставить - последную позицию изменения.
#13, 02 декабря 2023 00:41
Остальные позиции тоже могу хранить теоретически, но будет ли от них толк, раз текст документа может меняться кардинально.
#14, ред. 02 декабря 2023 16:59
1 часть добавлена в ветку TurboConf_RDT 6.0.8736.33837
https://disk.yandex.ru/d/XKCz9ijzgtoO1w
API 6
#15, ред. 02 декабря 2023 17:22
Есть один второстепенный сценарий, где метода ПолучитьМодифицированныеДокументы() может не хватить.
Это - открытие модального окна "Выражение" или "Точка останова" из поля модуля. В таком случае мне нужно знать, какой документ был активен последним до активации текущего окна.
#16, 02 декабря 2023 17:26
(15) tormozit, это же для формирования значений подсказки нужно, а не для обновления кэша? Это другая задача, там по другому будет реализовано, через ТекущийДокумент, т.к. модуль может быть не модифицирован в этих случаях.
#17, 02 декабря 2023 17:32
По результатам тестирования текущих правок TurboConf_RDT, прошу дать подтверждение о работоспособности версии, для включения этих изменений в основную ветку.
#18, ред. 02 декабря 2023 17:42
В МодифицированныеДокументы не попадают документы, если у них не известен Заголовок. Данные обновляются асинхронно, поэтому это Не гарантированное состояние документов в момент получения.
#19, ред. 02 декабря 2023 17:46
Уточняю, идентификацию документ может и не проходить для добавления в список измененных, но Заголовок должен быть известен. Поэтому данных ИмяКонфигурации и т.д. может не быть.
Заголовок, Текст, Позиция, ЗаголовокКонфигуратора - гарантированно должны присутствовать.
Позиция - последняя позиция при изменении
ЗаголовокКонфигуратора - полный заголовок Конфигуратора на момент изменения.
#20, ред. 02 декабря 2023 17:57
Не вижу свойство "Текст" и "Позиция" у модифицированного документа
#21, 02 декабря 2023 18:07
(20) tormozit, https://disk.yandex.ru/d/XKCz9ijzgtoO1w
#22, 02 декабря 2023 18:52
Вроде что то заработало. Еще потестирую сегодня.
#23, ред. 02 декабря 2023 19:03
Часто приходит самое первое состояние измененного модуля вместо последнего. Примерно в половине случаев приходит последнее, а в другой половине - самое первое состояние, в котором он был открыт. т.е. до всех правок. Это я пока экспериментирую с двумя модулям - в одном правлю, а в другом пишу вызовы его методов.
#24, 02 декабря 2023 19:04
Еще один раз заметил, что у измененного документа был чужой текст - от активного документа.
#25, 02 декабря 2023 19:17
(23) tormozit, исправил
https://disk.yandex.ru/d/XKCz9ijzgtoO1w
#26, 02 декабря 2023 19:18
(24) tormozit, может это было следствие той же ошибки, которую исправил. Если повторится, нужно будет разбираться.
#27, 02 декабря 2023 19:21
Теперь вроде каждый раз стал правильный текст приходить
#28, ред. 02 декабря 2023 20:46
@tormozit,
Часть 2 добавлена в ветку TurboConf_RDT 6.0.8736.40595
https://disk.yandex.ru/d/XKCz9ijzgtoO1w
API 6
Добавлено событие ПриОбновленииКэша
СтандартнаяОбработка - Если Истина - обновить также кэш TurboConf
Параметр Вариант - решил пока не делать, т.к. в окне T9 обновляю весь кэш, ты можешь в обработчике вызывать окно выбора значения и предложить варианты пользователю.
#29, 02 декабря 2023 22:03
Обработчик ПриОбновленииКэша() проверил. Работает.
#30, 02 декабря 2023 22:08
Эту заявку закрываю, если будут какие-то баги, то на них просьба создавать отдельные тикеты.
bolsun изменил статус на Закрыто
#31, ред. 03 декабря 2023 19:16
Сохраняются ли измененные документы
Иными словами, если пользователь поменял пару модулей в их окнах и сразу закрыл конфигуратор без вызова скрипта, то при следующем запуске конфигуратора в той же базе вызов ПолучитьМодифицированныеДокументы() выдаст измененные в прошлом сеансе конфигуратора документы?
#32, 03 декабря 2023 20:08
(31) tormozit, документы хранятся до перезапуска ТурбоКонф, между сеансами не сохраняются.
Между сеансами конфигуратора - сохраняются, т.к. обновляются по ключу - Заголовок документа. Но в следующих версиях ключ будет ЗаголовокКонфигуратора, что бы избежать совпадений с документами других открытых конфигураторов.