8.х Гиперссылки, отправка почты...

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Addm, 5 дек 2012.

  1. TopicStarter Overlay
    Addm
    Offline

    Addm Опытный в 1С

    Регистрация:
    22 ноя 2011
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте! У меня несколько вопросов:

    1. Можно ли создать в 1С (8.1) гиперссылку как любом файле MSWord, MSExcel? Т.е. что бы значение которое я вписываю в поле ввода или поле ввода табличной части отображалось ссылкой на интернет ресурс и при нажатии инициировалось открытие данного адреса в браузере?

    2. Можно ли подобным же образом как с гиперссылкой сделать инициацию открытия почтового клиента на ПК работника по нажатию, например, в поле ввода ввожу адрес 1@1.ru, а в таблице при нажатии на этот адрес открывается окно для написания письма почтовой программы? В Excel'е это делается гиперссылкой "mailto:1@1.ru"

    3. Как можно предопределенному полю "Наименование" указать ссылку на справочник, что бы при внесении данных на вписывать, а брать из указанного справочника?

    4. Как можно задать условия на внос запрещенных символов, точнее создать условие только на те символы, которые я хочу разрешить для ввода в поле или в табличную часть?

    Нашёл вот такой синтаксис, но не подходят:
    Код:
    ПолучитьНавигационнуюСсылку();
    КолонкаТабличногоПоля.ГиперСсылка();
    HTTPСоединение.Получить();
    Т.к. мне нужен просто переход на адрес или инициация открытия почтовой программы установленной по умолчанию на ПК работника.

    Могу я получить ответы на эти вопросы и реально ли такое сделать в 1С?
  2. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    1. С гиперссылками не работала, не могу сказать точно

    2. Можно, сразу ссылкой не знаю как, а вот можно используя штатные события (например активизацию) можно программно дописать принцип: создать COMОЪект Outlook (если он имеется ввиду), создать писмо и в адрес подставить значение Поля ввода на форме.

    3. Поле Наименование - это строка или число (как укажите) значение справочника туда никак не запихать. Сделайте свое наименование как реквизит, а у предопределенного поставьте длину 0.

    4. Не сталкивалась, но если штатно не получится, то программно точно можно проверить все ли правильно ввел пользователь.
  3. Lhfrjy
    Offline

    Lhfrjy Опытный в 1С

    Регистрация:
    4 фев 2011
    Сообщения:
    66
    Симпатии:
    0
    Баллы:
    26
    1. Можно: в событии гиперссылки (самое последнее свойсто в палитре свойст) нажимаете "Открыть" и в процедуре пишете свою ссылку на ресурс
    например
    Код:
    ЗапуститьПриложение("www.rambler.ru");
    2. Тоже можно, но как не скажу, никогда не пользовался.

    3. Можно если указать в свойствах тип значения Справочник (Выбирается из списка путем установки флажка на нужный элемент)

    4. Написав процедуру на проверку символа, введенного в поле, массиву заданных символов.
  4. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    Посмотрела бы как вместо стандартного поля Наименование (еще и Код) - речь ведь о них у ТС идет - вы установите тип СправочникСсылка
  5. TopicStarter Overlay
    Addm
    Offline

    Addm Опытный в 1С

    Регистрация:
    22 ноя 2011
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    А можно простой пример с подключением COMОбъектов?
    Тогда с наименованием поступлю как в прошлый раз (предыдущая тема), создам поле с ссылкой на справочник и автозаполнение наименования сделаю.
    а такой код будет правильным:
    Код:
    Если Найти(ЭлементыФормы.МоёПолеВвода, ";") > 0
    ИЛИ
    Если Найти(ЭлементыФормы.МоёПолеВвода, "*") > 0
    ИЛИ....
    Тогда
    Возврат Истина;
    Иначе
    Возврат Ложь;
    КонецЕсли;
    
    Если да, то он будет большим, т.к. придётся указывать все символы которые хочу запретить для конкретного поля в на форме.
    Кажется я немного параноик в безопасности, т.к. всё идёт от защиты sql-инъекций, но и тут хочу ограничить пользователя, что бы писали что-то общее, подобное в поля, а не каждый по своему. Вообще было бы хорошо придумать шаблон ввода данных для каждого поля.
  6. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    пройдитесь по форуму (COMОбЪекты много раз отсуждались) что-то типа такого
    Код:
    Outlook = Новый COMОбъект("Outlook.Application"); 
    Это по аналогии с Екселем, но поищите более рабочую конструкцию. В книге Михайлова (правда для 8.0) был пример работы с почтовиками, в принципе при большом жедлании код можно под себя подогнать, главное понять принцип.

    если у вас какой-то определенный тип сообщения от пользователя в поле ввода, то может имеет смысл использовать маску? а так, можно создать список разрешенных (или запрещенных, смотря каких меньше) символов, и проверять на содержание в этом списке, но это будет достаточно долгий процесс - все зависит от величины списка и от величины проверяемого текста.
  7. TopicStarter Overlay
    Addm
    Offline

    Addm Опытный в 1С

    Регистрация:
    22 ноя 2011
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    Хорошо, поищу работу с масками в 1С и с COMОбъектами.
  8. TopicStarter Overlay
    Addm
    Offline

    Addm Опытный в 1С

    Регистрация:
    22 ноя 2011
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    А как можно передать значение в эту команду?
    Код:
    ЗапуститьПриложение("www.rambler.ru");
    что бы он распознал верно и сделать действие открытия сайта по нажатию на поле?
    попробовал так:
    Код:
    Открыть = ЭлементыФормы.МоёПолеВвода;
    ЗапуститьПриложение("Открыть");
    
    Открыть = ЭлементыФормы.МоёПолеВвода;
    ЗапуститьПриложение(Открыть);
    
    не работает, т.е. ничего не происходит.
  9. TopicStarter Overlay
    Addm
    Offline

    Addm Опытный в 1С

    Регистрация:
    22 ноя 2011
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    Пошёл обходным путём. Рядом с полем ввода, где содержится адрес нужной страницы, установил надпись, назвал "Открыть", установил галочку гиперссылка в событии "ОткрытьНажатие()" прописал следующим образом:
    Код:
    ЗапуститьПриложение("explorer.exe" + ОфСайт);
    и вот что выдаёт:
    Посмотреть вложение 13188

    как это исправить? Какие ему права нужны, я под админом?!

    Ура! Решил! просто внёс значение:
    Код:
    ЗапуститьПриложение(ОфСайт);
    И всё заработало, до этого не работало таким же методом потому что не в то место и не в те процедуры вставлял код. Проблема с созданием гиперссылок решена! Осталось с почтой и маской разобраться. :)

    Вложения:

    • 1234.JPG
      1234.JPG
      Размер файла:
      12,7 КБ
      Просмотров:
      24
  10. TopicStarter Overlay
    Addm
    Offline

    Addm Опытный в 1С

    Регистрация:
    22 ноя 2011
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    И проверку сразу, что бы все было красиво:
    Код:
    Если Найти(МоёПолеВвода, "http")>0
    Тогда
    ЗапуститьПриложение(МоёПолеВвода);
    Иначе
    Предупреждение("Отсуствует адрес интернет ресурса");
    КонецЕсли;
    
  11. Lhfrjy
    Offline

    Lhfrjy Опытный в 1С

    Регистрация:
    4 фев 2011
    Сообщения:
    66
    Симпатии:
    0
    Баллы:
    26
    Не заметил что речь идет о предопределенном реквизите, извиняюсь.
  12. TopicStarter Overlay
    Addm
    Offline

    Addm Опытный в 1С

    Регистрация:
    22 ноя 2011
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    С почтой решил проблему, сделал именно так как надо для наших работников:
    Код:
    Если Найти(ПолеСEmailадресом, "@")>0
    Тогда
    ЗапуститьПриложение("C:\Program Files\Microsoft Office\OFFICE11\outlook /c ipm.note /m "+ПолеСEmailадресомl);
    Иначе
    Предупреждение("Отсутствует Email-адрес");
    КонецЕсли;
    

Поделиться этой страницей