gifts2017

Кусочек 8.2 в 8.меньше или быстро открываем документ

Опубликовал Андрей Вахрин (dolter) в раздел Программирование - Практика программирования

В некоторых конфигурациях мы используем автоматические почтовые рассылки на различные события в системе. Например "Уважаемый И.О. в документе Трам-па-рам за номером N от 01.01.01 требуется Ваша виза."
И начинает уважаемый "шляться" по интерфейсам в поисках журнала и в журнале ищет документ...

А всего-то надо передать в теле письма ЗначениеВСтрокуВнутр(), скопировать уважаемому в буфер это самое значение и нажать на одну единственную кнопку (у меня она в общем интерфейсе на отдельной панельке). А под кнопкой вот такой вот нехитрый код:

ПроцедураОткрытьОбъект() Экспорт

            my_obj= НовыйCOMОбъект("InternetExplorer.Application");

            my_obj.Navigate("about:blank");

            my_text=my_obj.Document.ParentWindow.ClipboardData.GetData("text");

            my_obj.Quit();

            Попытка

                        Ссылка=ЗначениеИзСтрокиВнутр(СокрЛП(my_text));

                        Ссылка.ПолучитьФорму().Открыть();

            Исключение

                        Сообщить("В буфере нет ссылки на объект этой базы...");

            КонецПопытки;

КонецПроцедуры

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

Просто и удобно :-)

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Артур Аюханов (artbear) 08.01.10 08:54
А если "уважаемый" не всю ссылку скопирует или при выделении добавит к ней лишние пробелы? :(
Где проверка правильности полученной строки?
2. Александр (PloAl) 08.01.10 13:42
Это ПОЛУ решение так как пользователю все равно требуется много действий.
Выделить, скопировать, перейти в нужную 1С или открыть нужную и последнее нажать кнопку.
Вот если бы в письме приходила бы ссылка вида 1c://+СтрокаКоннектаБазы+ЗначениеВСтрокуВнутр() и по клику ссылки активировалась или открывалась база с открытым переданным значением, тогда это было бы интересным решением.
3. Андрей Вахрин (dolter) 08.01.10 14:04
(1) Пара лишних пробелов обрезается перед подачей в обработку, а остальное на усмотрение "уважаемого" - его проблемы :-)
(2) Это не "полу", а самое простое решение из существующих. Есть и автообработка и даже с "большими кнопками". Максимальное - это проверка наличия уже открытой "нужной" базы, передача в нее ссылки, открытие и активация окна (внешняя компонента с TCP-IP клиент-сервером). Работает с батом и аутглюком (для последнего используется potolook).
4. Александр (PloAl) 08.01.10 16:35
(3) Кнопки я так понимаю это надстройки к почтовым клиентам.
Со ссылкой вместо кнопок, было бы более универсально и открывалось бы из любой программы без надстроек к каждой программе.
5. Андрей Вахрин (dolter) 09.01.10 10:11
(4) а ссылку кто будет обрабатывать (в том виде что ты представил)?
тогда уж примерно так: file://C:\open1c.htm
внутри которого vbs с тем же функционалом, что и в надстройках :-))
6. Александр (PloAl) 09.01.10 11:28
(5) ссылку будет обрабатывать программа которую можно указать в реестре для нового протокола 1c:// или oneS://
для примера можно найти строку mailto в реестре

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

P.S. насоветованное сам не пробовал :) но работать должно
7. Андрей Вахрин (dolter) 09.01.10 11:37
(6) ну, в общем, тоже самое что и в (5) если разобраться...
будет жить :-)
8. Sensey Master (MSensey) 13.01.10 09:53
Вообще-то в 8.2 есть строенный механизм открытия объекта по ссылке
9. dushelov (Душелов) 13.01.10 10:06
(8) В заголовке написано, что это "кусочек 8.2 в 8", т.е. в 8.0 и 8.1
При чем тут встроенный механизм 8.2 ?
10. Sensey Master (MSensey) 13.01.10 10:18
(9) Уже понял что речь о 8.1
Но заголовок не понятный ... причем здесь вообще 8.2.
11. art (ArtZh) 13.01.10 11:41
Для работы с буфером обмена COMОбъект не нужен, можно так:
ЭлементыФормы.Добавить(Тип("ПолеHTMLДокумента"), "ПолеHTMLДокумента", Ложь);
Окно = ЭлементыФормы.ПолеHTMLДокумента.Документ.parentWindow;
my_text= Окно.clipboardData.getData("Text");
12. Андрей Вахрин (dolter) 13.01.10 14:19
(10) сори за заголовок... Должно бы читаться "в 8.меньше"
(11) тот же COM, с теми же методами и свойствами...
artmicro; +1 Ответить
13. Сергей Пшеничников (Зеленоград) 10.12.13 11:52
Тут говорят, что в 82 это уже реализовано. Ткните пальцем, пожалуйста.
14. Андрей Вахрин (dolter) 10.12.13 12:34
15. Сергей Пшеничников (Зеленоград) 10.12.13 12:59
(14) dolter, Спасибо, сосед :)

Я на нормальных формах. В УПП 1.3/БП 2.0 есть такое?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа