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

24.07.14

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Архив с исходником скрипта, откопилированым файлов и настроечным файлов
.7z 357,40Kb
57
57 Скачать (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 Управляемые формы 1C:Бухгалтерия Платные (руб)

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

5000 руб.

14.01.2016    55590    17    23    

43

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

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

2400 руб.

29.06.2020    19909    28    6    

44

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

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

20.08.2024    23261    mrXoxot    44    

130

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

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

27.05.2024    11845    smielka    37    

105

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

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

27.12.2023    18317    1228    elcoan    53    

125

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

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

3 стартмани

10.04.2023    12851    167    acces969    31    

126

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

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

1 стартмани

05.07.2022    7883    kalyaka    6    

33

Работа с интерфейсом Программист Пользователь Платформа 1С v8.3 8.3.14 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Ещё с времен платформы 8.3.13 можно изменять цвет стилей интерфейса главного окна. Данное расширение позволит вам выбрать из подготовленных десятка стилей на свой вкус.

1 стартмани

01.07.2022    26785    420    rpgshnik    69    

101
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 Сейчас в теме
Оставьте свое сообщение