Открытие объекта базы 1С 8.2 по навигационной ссылке из письма.

24.07.14

Разработка - Работа с интерфейсом

Как известно, конфигурация Документооборота рассылает на пользователей уведомления, в которых указана задача для сотрудника (согласование, ознакомление и т.д.) В письмо вложена навигационная ссылка на задачу. Вопрос автоматизации перехода к задача в базе встал сразу же, так как много ручной работы заключается - запустить 1С, скпировать из письма навигационную ссылку, и переход по ней в задаче.
Написать скрипт, который бы занялся запуском 1С, либо открытием задачи в уже запущенной 1С, только часть проблемы. Труднее было его "вкрутить" в письмо.

Скачать файлы

Наименование Файл Версия Размер
Архив с исходником скрипта, откопилированым файлов и настроечным файлов
.7z 357,40Kb
54
.7z 357,40Kb 54 Скачать

Практический вопрос, который необходимо было решить: добавить в уведомления пользователя по задачам Документооборота кликабельную ссылку на саму задачу, по нажатию которой запускалась 1С (если не запущена), и открывалась задача.

Данное решение состоит из скрипта, написанного на AutoIt, и небольшого кода 1С, который нужно вставить в процедуру формирования текста письма (для создания cmd-файла запуска скрипта). Скомпилированный скрипт не требует доработки, и благодаря настраиваемому ini-файлу, может быть применен к любой базе без изменений.

В состав решения входит исходный файл AutoIt, скомпилированный exe-файл, файл конфигурирования.

[Конфигурация скрипта]

Скрипт настроен так, чтобы не зависел от конкретной базы, и не было необходимости его заново компилировать. Предварительно его необходимо настроить. Для этого внесите изменения в конфигурационный ini-файл.

Параметр BaseWindowName отвечает за название окна запущенной 1С, которое будет искать скрипт, чтобы активировать его, и выполнить переход по навигационной ссылке (предположительно, каждая база отличается наименованием окна).

Параметры BaseServer и BaseName отвечают за размещение базы 1С, которую необходимо запускать, если 1С неактивна.

Параметр OpenWaitTime указывает скрипт, сколько секунд необходимо ожидать запуска программы. Если время выходит, скрипт завершает свою работу.

Параметры RunDirPath1 и RunDirPath2 отвечают за определение каталога локально установленной 1С для 32-х и 64-х битных систем. В параметр RunFile указан файл запуск.

Если скрипт не находит 1С по локальным путям, считается что она не установлена, и тогда идет попытка запустить 1С по каталогу, указанному в параметре RunDirPathRemote по указанному в RunFileRemote файле запуска RemoteApp.

[Выполнение скрипта]

Скрипт работают с одним ключом запуска – навигационная ссылка объекта базы 1С. Если он не указан, то работа скрипта прерывается. Далее идет проверка, запущена ли программа 1С (определяется по названию окна). Если программа запущена, скрипт активирует окно 1С, помещает навигационную ссылку в буфер обмена, и эмитирует вызов окна перехода по навигационной ссылке. Содержимое буфера обмена автоматически подставляется в строку. Далее скрипт эмитирует нажатие Enter (основная кнопка формы - Перейти), и 1С открывает необходимый объект, если ссылка была корректной.

Если же программа 1С не запущена, тогда она будет принудительно запущена. Если происходит запуск локально установленной 1С, то навигационная ссылка передается как ключ запуска. Если же 1С локально не установлена, и запускается через ярлык RemoteApp, то параметр передать невозможно. По этому скрипт ожидает запуска 1С, затем активирует его окно, и выполняет ранее описанные действия с навигационной ссылкой.

[Использование скрипта]

Напрямую скрипт использовать из почты не получится. Исполняемый файл поместить в тело письма, чтобы он запускался с параметрами не выйдет. Для его активации с параметрами пришлось создавать cmd-файл. Для этого, при генерации письма пользователю необходимо добавить такой код в 1С:

Функция СоздатьФайлЗапускаДокумента(Задача, ПредставлениеЗадачи)Экспорт
   
   Результат =""; 
   
   ИмяСсылкиПолное = ПолучитьНавигационнуюСсылку(Задача);
   ИмяСсылки = Прав(ИмяСсылкиПолное, СтрДлина(ИмяСсылкиПолное)-Найти(ИмяСсылкиПолное,"="));
   ИмяКаталога = Константы.ПутьЗапускаПрограммыВнешнимиСредствами.Получить();
   ИмяФайла = ИмяКаталога+ИмяСсылки+".cmd";
   
   КаталогНаДиске =Новый Файл(ИмяКаталога);
   ФайлНаДиске =Новый Файл(ИмяФайла);
   ЕслиНе КаталогНаДиске.Существует()Тогда
      
      Возврат ПредставлениеЗадачи;
 
   ИначеЕслиНе ФайлНаДиске.Существует()Тогда
      
      НовыйТекст =Новый ТекстовыйДокумент();
      НовыйТекст.ДобавитьСтроку(ИмяКаталога+"Open1CObjectByNavigationLink.exe "+ИмяСсылкиПолное);
      НовыйТекст.Записать(ИмяФайла,"cp866");
      
   КонецЕсли;     
   
   Результат ="<a href="""+ ИмяФайла +""">"+ ПредставлениеЗадачи +"</a>";
      
   Возврат Результат;
   
КонецФункции


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

В тело письма подставляем путь на созданный cmd-файл:

ПредставлениеЗадачи = ПредставлениеЗадачи + РаботаСУведомлениями.СоздатьФайлЗапускаДокумента(ЗадачаСтруктура.Ссылка, СокрЛП(ЗадачаСтруктура.Ссылка));

 

Так же напомню, чтобы 1С обработала передаваемую навигационную ссылку, нужно добавить код в обработчик ПриНачалеРаботыСистемы, который будет разбирать на кусочки переменную ПараметрЗапуска. Ниже приведен пример обработки ключа, который передает скрипт (ключ /С)

Строкапараметровзапуска

"enterprise /AppAutoCheckMode /DisableStartupMessages /s BaseServer\BaseName /CLNKNavLink

Обработчик

Если Лев(ПараметрЗапуск,3)="LNK"Тогда
   НавигационнаяСтрокаСсылка = СтрЗаменить(ПараметрЗапуск,"LNK","");
   Попытка
      ПерейтиПоНавигационнойСсылке(НавигационнаяСтрокаСсылка);
   Исключение
   КонецПопытки;
КонецЕсли;

[Неудобства использования]

Необходимо иметь каталог, с полным доступом всем участникам, чтобы хранить там скрипт и иметь возможность от имени любого пользователя создавать cmd-файлы. Так же необходимо наладить регламентное задание, которое будет удалять неактуальные (по времени создания) cmd-файлы, чтобы их не накапливалось слишком много. Предположительно cmd-файлы можно заменить VBScript-ом, буду рад, если кто поделится такой реализацией.

Навигационная ссылка почта запуск 1С скрипт

См. также

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Также обработка может быть использована из встроенного языка как объект для редактирования картинок. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    61795    43    59    

80

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    54402    16    21    

42

Управление дашбордами

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    16697    21    4    

35

Новогоднее оформление для 1С

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    10736    750    elcoan    45    

106

Конструктор HTML, CSS и javascript

Инструментарий разработчика Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

2 стартмани

10.04.2023    9613    151    acces969    31    

118

Модель состояния для MVC

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    3665    kalyaka    2    

27

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12080    1    5    

10
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. vers139 53 25.07.14 18:13 Сейчас в теме
Можно ещё поднять веб-сервер, опубликовать базу и рассылать в письме внешнюю http-ссылку. Но это двойная работа в браузере и в тонком клиенте. Не каждому пользователю будет по нутру. Зато вариант.
3. merciful 16.01.16 09:45 Сейчас в теме
(1) vers139, Пожалуйста, Помогите! Перерыл весь интернет и нигде не нашел решения, как выводить в информационном письме ссылку на задачу вида http://мойвебсервер/и.т.д Где это настраивается и как????? На мо взгляд тривиальная задача, а нормально описанного решения нигде нет. Спасибо!
4. Puk2 187 26.01.16 11:24 Сейчас в теме
(3) merciful, настройки Документооборота - настройки уведомлений, в окошке внизу адрес публикации базы на веб-сервере, он то и будет подставляться в начале ссылки
2. merciful 16.01.16 09:44 Сейчас в теме
Пожалуйста, Помогите! Перерыл весь интернет и нигде не нашел решения, как выводить в информационном письме ссылку на задачу вида http://мойвебсервер/и.т.д Где это настраивается и как????? На мо взгляд тривиальная задача, а нормально описанного решения нигде нет. Спасибо!
5. DPotapov90 22.07.16 07:31 Сейчас в теме
Блин, рейта не хватает скачать :) Тоже такую тему хочу у себя сделать.
6. UNIT68RUS 13.02.19 15:49 Сейчас в теме
Как обойти извещение безопасности при открытии ссылки
7. mudrik6 27 12.03.19 13:03 Сейчас в теме
(6)
безопасности

Прошу прощения за такую длительную задержку.

Реализовано через CMD файлы, как раз чтобы обойти блокировки безопасности по запуску EXE-файлов.
Без конкретных скриншотов, на что именно ругается не скажу - лучше решить в паре с сисадмином, и тогда внести изменения на стороне 1С.

Прошу прощения, уже пару лет не использую, так как работаю на другую компанию, которая не испытывает необходимости в такой функциональности.
forpaid_13; +1 Ответить
8. UNIT68RUS 08.05.19 09:28 Сейчас в теме
Оставьте свое сообщение