Реализован механизм защиты от опасных действий. При выполнении потенциально опасного действия система выдает предупреждение, содержащее информацию о выполняемом действии и потенциальной опасности этого действия. К потенциально опасным действиям относятся:
Загрузка внешнего отчета, обработки или расширения конфигурации.
Загрузка или обновление конфигурации/расширения.
Доступ из внешнего отчета/обработки или расширения к следующим возможностям:
Исполнение команды операционной системы.
Управление пользователями.
Загрузка внешней компоненты.
Пользователь имеет возможность разрешить или отклонить потенциально опасное действие. Если действие разрешено, в ряде случаев может потребоваться повторно выполнить разрешенное действие.
Сообщение выглядит так:
Предупреждение безопасности
Открывается "" из файла " C:\.......epf". Рекомендуется обращать внимание на источник, из которого был получен данный файл. Если с источником нет договоренности о разработке дополнительных модулей, или есть сомнения в содержимом файла, то его не рекомендуется открывать, поскольку это может нанести вред компьютеру и данным. Разрешить открывать данный файл. ДА, НЕТ
Решение:
В конфигураторе в свойствах пользователя ИБ убрать флажок "Защита от опасных действий".
Из документации: Отключение механизма защиты от опасных действий
В ряде случае необходимо отключить механизм защиты от опасных действий. Для этого можно воспользоваться следующими возможностями:
1. Выключить флажок Защита от опасных действий (ЗащитаОтОпасныхДействий) в свойствах конкретного пользователя. Это отключит защиту для этого пользователя.
2. Воспользоваться параметром ЗащитаОтОпасныхДействий методов Подключить() менеджеров внешних обработок (отчетов). В этом случае имеется возможность загрузить внешнюю обработку (отчет) без запросов пользователя.
3. Воспользоваться свойством ЗащитаОтОпасныхДействий объекта РасширениеКонфигурации перед вызовом метода Записать() этого объекта.
4. Воспользоваться параметром DisableUnsafeActionProtection файла conf.cfg. В этом случае механизм защиты от опасных действий будет отключаться для всех пользователей информационных баз, строки соединения которых удовлетворяют указанным маскам.
Отключение защиты от опасных действий выполняется по следующим правилам (в указанном порядке):
1. Защита считается отключенной, если у текущего пользователя сброшен флажок Защита от опасных действий.
2. Защита считается отключенной, если строка соединения с информационной базой удовлетворяет одному из шаблонов, указанных в параметре DisableUnsafeActionProtection файла conf.cfg.
3. Если внешняя обработка (отчет) подключается с явным образом отключенной защитой с помощью параметра ЗащитаОтОпасныхДействий.
4. Если защита явным образом отключена с помощью свойства расширения ЗащитаОтОпасныхДействий.
У клиента огромная база клиентов и соответственно огромный штат менеджеров. Дошло до того, что менеджеры в поисках новых клиентов( знакомство, интернет, реклама и т.д.) очень часто звонят одним и тем же клиентам по несколько раз. Стали вести базу звонков... Но в базе одного и того же клиента могли назвать по разному - как-только вздумается...
Понадобился поиск по нечеткому названию и для этого решено было использовать полнотекстовый поиск 1С:
Механизм полнотекстового поиска в 1С позволяет быстро находить необходимую для пользователя информацию. Данный вид поиска особенно эффективен, если информационная база располагает большим объемом информации, а также точно не известно, где находятся интересующие пользователя данные или как часто бывает, их точное название не известно.
Смысл обработки в том, что менеджер копирует названия клиентов в список слева, нажимает Выполнить поиск и справа видит найденных в базе контрагентов (подходящих по нечеткости). Порог нечеткости менеджеры могут устанавливать сами.
Приведу краткий пример реализации данного поиска, код:
Для установки отбора используется свойство "Отбор" у менеджеров списков объектов, например, для открытия списка договоров определенного контрагента можно написать следующий код:
В данном случае мы применили вид сравнения "Равно", но не указывали его т.к. оно стоит по умолчанию. Используя разные значения вида сравнения мы значительно расширяем возможности.
Например, у нас в базе контрагент является и продавцом и покупателем, при этом договоры находятся в соответствующей группе внутри справочника. Поэтому мы сделаем отбор не только на самого контрагента, но и на группу "Группа Покупатели" в которой находится договор:
При запуске 1С:Предприятия 8.x на раб.станции сначала производится поиск ключа в локальных USB портах, затем ключ ищется в сети. После нахождения в сети менеджера лицензий, у него забирается одна лицензия, и программа запускается. Если свободных лицензий не осталось, то ищется другой менеджер лицензий в сети. Если он не обнаружен или на остальных менеджерах тоже нет свободных лицензий, то появляется сообщение, что ключ не обнаружен.
Если программа завершена аварийно, то лицензия менеджером лицензий не освобождается. Если выход нормальный, то лицензия освобождается. Если повторно запустить завершившуюся аварийно программу, то ей выделяется не новая лицензия, а та, которая была у нее ранее, и которая оставалась не освобожденной.
При запуске второго экземпляра программы новая лицензия не забирается. То есть лицензия выделяется не на экземпляр программы, а на рабочее место.
Но при выделении повторно зависшей лицензии есть одна особенность:
Если в сети несколько менеджеров лицензий, то программа при поиске ключа опрашивает их в определенной последовательности. И если, например, на первом лицензий нет, то второй выдаст ей лицензию. Если потом программа упала, лицензия не освободится. Программу запускают повторно. Но теперь на первом менеджере лицензий, предположим, появились свободные лицензии. Тогда программа не найдет свою неосвобожденную лицензию от второго менеджера, а обратится сначала к первому и получит новую лицензию от первого.
Таким образом, на втором менеджере останется зависшая лицензия, которая освободится через 36 часов. Можно избежать этого, если на компьютерах, на которых запускается 1С:Предприятие, настроить файлы NETHASP.INI таким образом, чтобы на одной части компьютеров 1С:Предприятие обращалось к одному менеджеру лицензий, а на другой части компьютеров - ко второму менеджеру лицензий.
Файл NETHASP.INI, если связь с менеджерами лицензий организуется по TCP/IP, должен иметь примерно такое содержимое [NH_COMMON]
NH_IPX = Disabled
NH_NETBIOS = Disabled
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 10.1.170.65 ; нужно указать IP-адрес Вашего компьютера, на котором запущен Менеджер лицензий, с которым предполагается взаимодействовать
Также можно дополнить раздел [NH_TCPIP] строками, которые могут ускорить поиск ключа: NH_TCPIP_METHOD=UDP
NH_USE_BROADCAST=Disabled
Файл NetHASP.ini должен находиться в каталоге CONF каталога исполняемого файла 1С:Предприятия 8.x (BIN)
Пример этого файла устанавливается в папке BIN при установке платформы.
Пожалуй, начнем сразу с практического примера.
В справочник Контрагенты нам необходимо заносить информацию о поставщиках, покупателях, банках, налоговых органах, различных фондах и пр. Для каждого вида контрагента нас интересует разная информация.
Создадим функцию, возвращающую список «важных» реквизитов в зависимости от вида контрагента:
Где же ее правильнее разместить?
Напрашивается вариант - в процедуре Модуля объекта «ПередЗаписью()». Тем самым мы на этапе записи будем контролировать правильность заполнения нужных нам реквизитов. С точки зрения создания, изменения элемента справочника, нас все устраивает. Но если нам необходимо, чтобы некоторые менеджеры заносились контрагентов в ИБ без контроля, а спустя какое-то время мы будем выполнять проверку на корректность заполнения данных в справочнике. Тогда нужно будет написать обработку. И в этой обработке, перебирая элементы, проверять заполнение реквизитов. Т.о. эту функцию придется разместить в коде обработки. А это получается дублирование кода, со всеми вытекающими проблемами. Можно получать объект каждого элемента, обращаться к функции, расположенной в его Модуле объекта. Но это будет дополнительные обращения к БД, тогда как в обработке нам достаточно только ссылок.
Можно выйти из этой ситуации создав Общий модуль «РаботаСКонтрагентами» и разместить в нем функцию возвращающую список реквизитов для проверки. В этом случае будем обращаться так «РаботаСКонтрагентами.ПолучитьСписокВажныхРеквизитов(ВидКонтрагента)».
Но! На платформе 8.2 как раз для решения подобной задачи и был создан Модуль менежера. Там и разместим нашу функцию. А обращаться мы будем: «Справочники.Контрагенты.ПолучитьСписокВажныхРеквизитов(ВидКонтрагента)».
Т.о. на ряду с предопределенными методами, мы можем самостоятельно разработать свои процедуры и обращаться к ним как методам Менеджера объекта, через точку. У нас отпадает необходимость создавать «тематические» внешние модули такие как «Работа с Контрагентами», «Процедуры Номенклатуры»...
Обратимся теперь к теории, чтобы «разложить все по полочкам».
Руководство разработчика дает нам следующее описание: «Модуль менеджера существует у всех прикладных объектов и предназначен для управления этим объектом как объектом конфигурации. Модуль менеджера позволяет расширить функциональность менеджеров за счет введения процедур и функций на встроенном языке. Фактически это позволяет описать методы для объекта конфигурации, которые относятся не к конкретному экземпляру объекта базы данных, а к самому объекту конфигурации». Именно это мы и разобрали в нашем практическом примере.
Отобразим иерархию классов прикладных объектов на примере Справочников:
Т.е. мы видим, что появление «Модуля менеджера объекта» логично расширяет свойства класса СправочникМенеджер, так же как экспортные процедуры «Модуля объекта» расширяют методы класса СправочникОбъект. Нужно ли было создавать «Модуль прикладного объекта Справочники (Документы, Перечисления)». Наверное нет. Достаточно трудно придумать какие-либо задачи для единой обработки всех видов справочников.
Кроме возможности расширения методов класса, в модуле менеджера существует предопределенная процедура События . Она возникает на сервере перед стандартным формированием списка при вводе по строке, автоподборе текста и быстром выборе, а также при выполнении метода «ПолучитьДанныеВыбора()».
Так же хочу обратить внимание. При использовании конструктора печати прикладного объекта, платформа расположит процедуру формирования табличного документа непосредственно в Модуле менеджера. И это логично. Теперь, чтобы получить табличный документ элемента справочника нет необходимости получать объект. Достаточно кода: .
Для защиты от несанкционированного использования системы 1С:Предприятия 8 в случае многопользовательской лицензии используется сетевая система защиты HASP4 Net. Особенностью данной системы защиты является то, что с помощью одного аппаратного ключа защиты HASP4 Net может разрешаться одновременная работа 1С:Предприятия 8 на нескольких компьютерах в рамках локальной сети. Использование системы 1С:Предприятие 8 в этом случае регламентируется дополнительной многопользовательской лицензией. При использовании нескольких ключей защиты HASP4 Net, в локальной сети должно быть соответствующее количество компьютеров с запущенным HASP License Manager. Количество компьютеров, на которых запущены HASP License Manager, должно соответствовать количеству ключей HASP4 Net, используемых для защиты 1С:Предприятия 8. В этом случае, количество рабочих мест, на которых может быть запущено 1С:Предприятие 8 определяется как сумма "возможностей" каждого из отдельно взятых аппаратных ключей.
Проблема:
Количество пользователей, одновременно работающих с 1С:Предприятием 8, оказывается меньше, чем сумма лицензий каждого из отдельно взятых аппаратных ключей. Подключение новых пользователей становится невозможным, несмотря на достаточное количество лицензий. Проблема проявляется после неоднократного аварийного завершении сеанса работы 1С:Предприятия 8 и последующими попытками повторного подключения. После перезагрузки всех HASP License Manager, проблема исчезает.
Причина:
Проблема с нехваткой лицензий обусловлена тем, что при повторном запуске 1С:Предприятия 8 после аварийного завершения, оно может подключиться к другому HASP License Manager, который выдаст новую лицензию. Предыдущая, при этом, останется занятой еще 36 часов. Этого не произойдет, если при повторном запуске 1С:Предприятие подключится к тому же HASP License Manager.
Решение:
При работе с несколькими сетевыми ключами, с помощью файла конфигурации HASP.INI, можно "прикрепить" пользователей к конкретному HASP License Manager. Количество "прикрепленных" пользователей должно соответствовать количеству лицензий ключа, обслуживаемого данным HASP License Manager. В этом случае одному и тому же пользователю(рабочей станции) не будет выдаваться несколько лицензий, независимо от того, сколько раз он подключился. Параметры файла конфигурации HASP.INI описаны в документации - "Руководство по установке и запуску".
Например:
Основная идея настройки в данном случае – назначить каждому менеджеру лицензий свое имя и сообщить каждой копии защищенной программы эти имена. Задать имя менеджеру лицензий можно через файл nhsrv.ini, он должен находиться в одном каталоге с менеджером лицензий. Если менеджер лицензий установлен как сервис, то в каталоге Windows\System32. Имя менеджера лицензий должно состоять из алфавитно-цифровых символов (только английские буквы!), и не должно быть длиннее 7 символов.
Пример настройки:
Сообщить защищенной программе имена менеджеров можно через файл nethasp.ini, который должен находится в одной директории с защищенным приложением.
Пример:
Адреса даны для примера, следует указывать реальные IP-адреса компьютеров, где установлены соответствующие менеджеры лицензий.
1)НЕ СТАВЬТЕ МЕНЕДЖЕР ЛИЦЕНЗИЙ В ТЕРМИНАЛЕ (точнее устанавливайте в 0-й сессии, запуская %SystemRoot%system32mstsc.exe /console
2) сначала ставьте менеджер лицензий, и только потом устанавливайте сетевой ключ
3) если клиент 1С 8.0 видит ключ, это не значит что увидит 8.1 (файл теперь обычно C:Program Files1cv81inconf
ethasp.ini)
4) в терминале локальные ключи не видны, надо в nethasp.ini прописывать в явном виде место расположения сетевого ключа и менеджера лицензий
NH_SERVER_ADDR = 192.168.159.1 ;;(IP-адрес должен быть правильный)
5) клиент 8.1 сначала ищет локальный ключ и если его находит, никогда не будет искать сетевой
6) несколько сетевых ключей или локальный и сетевой ключ на один компьютер ставить нельзя
7) для серверной части 1С надо бывают ТОЛЬКО ЛОКАЛЬНЫЕ НЕ КЛИЕНТСКИЕ ключи
Здорово серверный 64 битный ключ (он зеленый) поддерживает 32битный сервер, в том числе 8.0, но серверный 32битный ключ не поддерживает 64битный сервер 1С
9) для SQL ключей не надо, он не проверяет даже купленные свои лицензии, но покупать их надо : )
10) если большая нагрузка в сети и много клиентов, то менеджер лицензий может не успеть выдать лицензию : ), чтобы это решить, увеличьте интервал опроса к менеджера лицензий клиентов в C:Program Files1cv81inconf
ethasp.ini
NH_SESSION = 5
NH_SEND_RCV = 4
NH_USE_BROADCAST = Disabled
И ограничьте в C:Program FilesAladdinHASP LM nhsrv.ini компьютеры с которых могут подключаться пользователи, например
NHS_IP_LIMIT = 10.24.2.18-99
11) для 64битных менеджеров лицензий или просто свежие скачайте драйвера с http://www.aladdin.ru/support/download/category260
12) на сервере с менеджером лицензий должен быть статический ip-адрес
13) при большом количестве пользователей раздавайте менеджеры лицензий для каждого клиента персонально, указывая конкретный компьютер
NH_SERVER_ADDR = 192.168.159.1 ;;(IP-адрес должен быть правильный)