Так вот значит: пользуюсь я такой One Note, составляю список дел, по задаче. И тут другая прилетает. Естественно задача прилетает в 1Ске. По ней делаю новый список задач. Потом еще список, потом еще... И нужный список дел - уже не найти.
Вот и решил я сделать список дел, который будет угадывать, какой список мне сейчас нужен. Как минимум привязать к ссылочному объекту системы.
Это мой личный список дел, поэтому хранить его в базе смысла не вижу. Список хранится в файле на диске. В нем же могут хранится еще и другие списки.
Сначала сделал просто кнопку "Угадать объект", но этого показалось мало. В итоге появился режим "Закрепления", который закрепляет список справа и автоматически "Угадывает" открытый объект системы.
В итоге: при открытии задачи в закрепленной справа обработке у меня отображается список дел по этой задаче!
Данные списков и объектов хранятся файлах TDL в формате json. Не обошлось без небольшой сериализации ссылочных данных. В связи с этим, один файл списка (.tdl) рекомендую использовать только одной базе. А также периодически либо чистить этот файл, либо использовать новый.
Достаточно интересный получился алгоритм "угадывания" открытого объекта.
Ну и, конечно, пришлось повозиться с WScript.Shell, чтобы прикрепить/открепить для разных версий 1С. Получилось как-то так:
&НаКлиенте
Процедура ПрикрепитьКФормеОбъекта()
Активизировать();
Попытка
WSHShell = Новый COMОбъект("WScript.Shell");
Исключение
Возврат;
КонецПопытки;
СИ = Новый СистемнаяИнформация();
//До версии 8.3.15
Если СтрРазделить(СИ.ВерсияПриложения,".")[2] < "15" Тогда
WSHShell.SendKeys("%"); // Нажимаем кнопку Главное меню
WSHShell.SendKeys("{DOWN 5}"); // Нажимаем пятый сверху пункт меню - Окна
WSHShell.SendKeys("{RIGHT}"); // Переходим в подменю Окна
Если Не Прикреплена Тогда
WSHShell.SendKeys("{UP 5}"); // Закрепляем справа
Иначе
WSHShell.SendKeys("{UP 2}"); //Открепляем
КонецЕсли;
WSHShell.SendKeys("{ENTER}");
//В версиях после 8.3.15
Иначе
WSHShell.SendKeys("%(-)"); // Открываем меню окна
WSHShell.SendKeys("{DOWN}"); // Нажимаем вниз
WSHShell.SendKeys("{RIGHT}"); // Переходим в подменю Окна
Если Не Прикреплена Тогда
WSHShell.SendKeys("{DOWN 3}"); // Закрепляем справа
Иначе
WSHShell.SendKeys("{UP}"); //Открепляем
КонецЕсли;
WSHShell.SendKeys("{ENTER}");
КонецЕсли;
КонецПроцедуры
Спасибо за помощь в разработке Timic
Работать должно на всех конфигурациях с режимом совместимости 8.3.6 и выше. WScript.Shell - разные для версии ниже и выше 8.3.15. Тестировалась на версиях платформы 8.3.17.1386 и 8.3.12.1714. Второй вариант платформы с режимом совместимости 8.3.6 и без него.
UPD. Добавлена возможность подключения как дополнительной обработки. При открытии обработка сразу пытается закрепиться справа (успешно прикрепляется, если доступен WScript.Shell). Добавлено автосохранение измененных списков. Чтобы не путаться, убрана возможность сохранения нескольких списков для одного объекта в одном файле.