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

24.07.14

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Архив с исходником скрипта, откопилированым файлов и настроечным файлов
.7z 357,40Kb
56
56 Скачать (1 SM) Купить за 1 850 руб.

Практический вопрос, который необходимо было решить: добавить в уведомления пользователя по задачам Документооборота кликабельную ссылку на саму задачу, по нажатию которой запускалась 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 Платные (руб)

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

6000 руб.

16.01.2015    62980    44    59    

82

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

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

2400 руб.

29.06.2020    18846    26    6    

41

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

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

1500 руб.

06.10.2020    10219    7    7    

10

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

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

20.08.2024    16754    mrXoxot    43    

121

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    7326    smielka    37    

100

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

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

27.12.2023    14773    913    elcoan    47    

117

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

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

2 стартмани

10.04.2023    11905    162    acces969    31    

124
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. vers139 53 25.07.14 18:13 Сейчас в теме
Можно ещё поднять веб-сервер, опубликовать базу и рассылать в письме внешнюю http-ссылку. Но это двойная работа в браузере и в тонком клиенте. Не каждому пользователю будет по нутру. Зато вариант.
3. merciful 16.01.16 09:45 Сейчас в теме
(1) vers139, Пожалуйста, Помогите! Перерыл весь интернет и нигде не нашел решения, как выводить в информационном письме ссылку на задачу вида http://мойвебсервер/и.т.д Где это настраивается и как????? На мо взгляд тривиальная задача, а нормально описанного решения нигде нет. Спасибо!
4. Puk2 190 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 Сейчас в теме
Оставьте свое сообщение