Реализован механизм защиты от опасных действий. При выполнении потенциально опасного действия система выдает предупреждение, содержащее информацию о выполняемом действии и потенциальной опасности этого действия. К потенциально опасным действиям относятся:
Загрузка внешнего отчета, обработки или расширения конфигурации.
Загрузка или обновление конфигурации/расширения.
Доступ из внешнего отчета/обработки или расширения к следующим возможностям:
Исполнение команды операционной системы.
Управление пользователями.
Загрузка внешней компоненты.
Пользователь имеет возможность разрешить или отклонить потенциально опасное действие. Если действие разрешено, в ряде случаев может потребоваться повторно выполнить разрешенное действие.
Сообщение выглядит так:
Предупреждение безопасности
Открывается "" из файла " C:\.......epf". Рекомендуется обращать внимание на источник, из которого был получен данный файл. Если с источником нет договоренности о разработке дополнительных модулей, или есть сомнения в содержимом файла, то его не рекомендуется открывать, поскольку это может нанести вред компьютеру и данным. Разрешить открывать данный файл. ДА, НЕТ
Решение:
В конфигураторе в свойствах пользователя ИБ убрать флажок "Защита от опасных действий".
Из документации: Отключение механизма защиты от опасных действий
В ряде случае необходимо отключить механизм защиты от опасных действий. Для этого можно воспользоваться следующими возможностями:
1. Выключить флажок Защита от опасных действий (ЗащитаОтОпасныхДействий) в свойствах конкретного пользователя. Это отключит защиту для этого пользователя.
2. Воспользоваться параметром ЗащитаОтОпасныхДействий методов Подключить() менеджеров внешних обработок (отчетов). В этом случае имеется возможность загрузить внешнюю обработку (отчет) без запросов пользователя.
3. Воспользоваться свойством ЗащитаОтОпасныхДействий объекта РасширениеКонфигурации перед вызовом метода Записать() этого объекта.
4. Воспользоваться параметром DisableUnsafeActionProtection файла conf.cfg. В этом случае механизм защиты от опасных действий будет отключаться для всех пользователей информационных баз, строки соединения которых удовлетворяют указанным маскам.
Отключение защиты от опасных действий выполняется по следующим правилам (в указанном порядке):
1. Защита считается отключенной, если у текущего пользователя сброшен флажок Защита от опасных действий.
2. Защита считается отключенной, если строка соединения с информационной базой удовлетворяет одному из шаблонов, указанных в параметре DisableUnsafeActionProtection файла conf.cfg.
3. Если внешняя обработка (отчет) подключается с явным образом отключенной защитой с помощью параметра ЗащитаОтОпасныхДействий.
4. Если защита явным образом отключена с помощью свойства расширения ЗащитаОтОпасныхДействий.
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка:
Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe
«Содержимое указанного ниже веб-узла в этом приложении блокировано конфигурацией усиленной безопасности Internet Explorer».
Ошибка исчезает после многократного нажатия на «Закрыть», что несколько мешает работать, мягко говоря. Похожая ошибка бывает и в конфигураторе, при обновлении конфигурации или сравнении/объединении конфигураций. Чаще всего, мне попадалась эта проблема в серверных ОС, в частности Windows 2008 r2.
Решение: нужно добавить исключение в настройках безопасности Internet Explorer (далее & IE).
Это делается просто, если у вас один или несколько компьютеров & просто открываете IE/Свойства обозревателя/Безопасность/Надёжные узлы/Сайты, добавляете Aboutsecurity_1cv8c.exe и Aboutsecurity_1cv8.exe, нажимаете Ок, и наслаждаетесь результатом.
Но вот если у вас терминал-сервер и 40/60 пользователей, или еще хуже & пользователей 150 и они ходят в SQL версию 1С с локальных рабочих станций, то бегать по всем корпусам и добавлять эту настройку весьма накладно по времени, да и отвлекать пользователей лишний раз от работы не порядочно.
В этом случае, нужно пользоваться групповыми политиками домена (который у вас должен быть настроен, если вы не офисный спортсмен-бегун).
Вариант №1. Неудавшийся.
Первое решение & прописать настройки через Group Polices (Административные шаблоны/Компоненты Windows/Internet explorer/Вкладка «Безопасность»/Список назначений зоны для веб-сайтов) & не увенчалось успехом. Настройки пользователей, как и обещалось в статьях по данному методу, перестали работать, а вот зоны, описанные в этих настройках, работать не начали. При этом, я пробовал добавлять настройки и в локальные политики, и в доменные и в политики контроллера домена. Скорее всего из-за этих экспериментов с разными зонами действия групповых политик и появилась проблема.
И так, после этих манипуляций, в настройках безопасности IE появилась надпись «Некоторыми параметрами управляет системный администратор» и добавлять/удалять сайты узлов безопасности стало невозможно. От этой надписи, почему-то, оказалось не так просто избавиться. Удаление проделанных настроек GPO не разблокировали вкладку «Безопасность», а манипуляции с реестром привели к появлению ошибок «В параметрах зоны есть ошибка. Не удалось добавить сайт.» (IE 10) или «При установке параметров безопасности зоны произошла ошибка. Добавить узел не удается.» (IE 9) & все дальнейшие действия сходили на нет.
Исправить косяк удалось следующим путём:
Обновил Internet Explorer до версии 10 (был 9-й).
Предварительно экспортировав разделы реестра в файл, на случай восстановления, удалил из следующие ключи:
Восстановил настройки Internet Explorer (Свойства обозревателя/Дополнительно/Сброс).
Проверить, что проблема не вернётся можно введя команду gpupdate /force в командной строке. После обновления политики запустите IE и проверьте, что настройки остались на месте. Если настройки опять слетели и добавление сайтов в узлы безопасности стало опять невозможно, то, скорее всего вы забыли отключить параметр «Список назначений зоны для веб-сайтов» в какой-то из зон групповой политики.
Чтобы определить в какой из зон групповых политик засела настройка (в локальных, доменных или контроллера домена), удобно пользоваться мастером отчётов «Результаты групповой политики», который находится в консоли «Диспетчер сервера», в разделе «Компоненты/Управление групповой политикой» (в Windows 2008 r2, по крайне мере он там).
Так что, здесь стоит быть осторожным, чтобы не создать себе дополнительной работы.
Вариант №2. Через GPO и реестр.
Этот метод делается через те же групповые политики, но через прямые записи в реестр, а не манипулирование стандартными настройками.
Что делать:
Удаляем узлы Aboutsecurity_1cv8 из настроек IE, если вы их туда уже добавили вручную & это нужно для чистоты эксперимента. Проверьте, что в 1С ошибка сохранилась.
Небольшая ремарка: подраздел EscDomains используется в режиме расширенной настройки безопасности, если же этот режим отключен по какой-то причине, то нужно использовать раздел Domains вместо EscDomains (подробнее о записях реестра IE см. в базе знаний Microsoft).
И пробуем добавить его в реестр & если срабатывает, и в тонком клиенте 1С ошибка Aboutsecurity_1cv8c.exe исчезает, делаем дальше.
Снова открываем Default Domain Policy в диспетчере управления сервером, далее Конфигурация пользователя/Настройка/Конфигурация Windows/Реестр.
Добавляем туда две записи, где поле «Путь раздела»:
в первой записи это «Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\EscDomains\security_1cv8c.exe» (для тонкого клиента 1С),
во второй записи «Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\EscDomains\security_1cv8.exe» (для толстого клиента).
В остальном запись содержит те же данные, что и на картинке.
После этого, как положено, перелогиниваемся и проверяем результат. В толстом и тонком клиенте 1С:предприятие, ошибка должна исчезнуть.
В моём случае, для надёжности избавления от проделанных в Варианте №2 настроек, были добавлены ещё три записи в реестр:
Обновить: HKCU\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings; параметр: ListBox_Support_ZoneMapKey; значение 0 (тип DWORD десятичный)
Есть ещё вариант, который переключит работу программы в режим интерфейса «Такси» : Администрирование/Настройки программы/Интерфейс & здесь включаем «Интерфейс «Такси»" & в этом режиме данная ошибка не появляется, но пользователям может не понравиться работать с этим вариантом интерфейса, т. к. он предназначен для мобильных устройств и планшетов (например, для работы через Web).
Для начала давайте установим сервер 1С:Предприятия. Запустите файл 1CEnterprise 8.2.msi из дистрибутива 1С:Предприятия.
Предполагается, что 1С:Предприятие 8 уже установлено, если нет, то вместе с установкой платформы выберите нужный компонент, о котором речь пойдет ниже.
Следуйте указаниям мастера установки. На первом этапе выберите пункт "Изменить". Затем выберите компонент: Сервер 1С:Предприятия, как показано на рисунке ниже.
В том случае, если у Вас установлен 1С:Предприятие 8.1 в серверном варианте и Вам необходимо, чтобы он работал и дальше, Вам нужно узнать, как запустить агента сервера 1С:Предприятие 8.1 и агента сервера 1С:Предприятие 8.2 одновременно на одном компьютере.
На следующем этапе нужно указать, что Вы хотите установить Сервер 1С:Предприятия как сервис Windows.
Установка сервера 1С:Предприятия как сервис Windows
Важно! Если Вы создаете нового пользователя или используете уже созданного, тогда убедитесь, что этот пользователь имеет права (Роль сервера) sysadmin на MS SQL сервере. Как это сделать можно прочитать в подзаголовке Среда SQL Server Management Studio, но лучше это сделать после установки Microsoft SQL Server 2008 R2 Express.
Если Вы создаете нового пользователя, а у Вас для этого недостаточно прав, тогда возникнет ошибка и пользователь не будет создан.
Установка Microsoft SQL Server 2008 R2 Express
Скачайте Microsoft SQL Server 2008 R2 Express (файл SQLEXPRWT_x86_RUS.exe) с официального сайта Microsoft. В этот дистрибутив входит приложение SQL Server Management Studio.
Возможно придётся установить обновление для Windows XP (WindowsXP-KB968930-x86-RUS.exe), содержащий компонент Windows PowerShell 2.0 (мастер установки сообщит, если Windows PowerShell 2.0 отсутствует).
Теперь установите MS SQL Server 2008 со следующими параметрами, которые указаны ниже.
Параметр сортировки должен быть Cyrillic_General_CI_AS.
Режим проверки подлинности должен быть смешанный (mixed).
Добавление серверной базы в 1С
Итак, мы всё подготовили для добавления базы в 1С:Предприятие.
Теперь запустим 1С:Предприятие и в появившемся списке баз нажмём кнопку "Добавить".
Выберите "Создание новой информационной базы". Далее.
В следующем окне выберите второй пункт "Создание информационной базы без конфигурации...". Далее.
В третьем окне укажите название, например: "Серверная база".
Выберите пункт "На сервере 1С:Предприятие". Далее.
В пункте "Сервер базы данных:" сначала укажите название компьютера, на котором установлен Microsoft SQL Server 2008 R2 Express (в моём случае HOMEPC), затем через символ обратный слэш, название сервера SQLEXPRESS, если в процессе установки Вы не изменяли его. Остальные пункты можно оставить без изменений.
Нажмите кнопку "Готово". Если всё было установлено правильно, то 1С сама создаст базу в Microsoft SQL Server 2008 R2 Express. Если нет, тогда проверьте имеет ли достаточно прав пользователь на сервере Microsoft SQL Server 2008 R2 Express, которого Вы выбрали при установке сервера 1С:Предприятия. Как это сделать можно прочитать в подзаголовке Среда SQL Server Management Studio.
Теперь, чтобы загрузить Вашу базу необходимо открыть Конфигуратор и в пункте "Администрирование-Загрузить информационную базу..." указать путь к Вашей ранее выгруженной базе. Чтобы иметь файл ранее выгруженной базы, нужно знать, как сделать резервную копию информационной базы.
Среда SQL Server Management Studio
Чтобы проверить права пользователя (Роль сервера) нужно открыть приложение "Среда SQL Server Management Studio".
Затем соединиться с сервером с помощью этого приложения.
Соединение с сервером с помощью среды SQL Server Management Studio:
В пункте "Имя сервера:" сначала укажите название компьютера, на котором установлен Microsoft SQL Server 2008 R2 Express (в моём случае HOMEPC), затем через символ обратный слэш, название сервера SQLEXPRESS, если в процессе установки Вы не изменяли его. Остальные пункты можно оставить без изменений. Нажмите кнопку "Соединить".
В Обозревателе объектов выделите нужного пользователя (в моём случае HOMEPCUSR1CV82) и нажав правой кнопкой мыши на нём, вызовите контекстное меню. Выберите "Свойства". Если в списке нет Вашего пользователя, создайте его и присвойте ему роль сервера sysadmin.
Открылся диалог свойства имени входа - HOMEPCUSR1CV82. Выберите в левом окне пункт "Роли сервера". Теперь в правом окне видно какие роли присвоены данному пользователю. Вашему пользователю необходимо иметь роль sysadmin, чтобы беспрепятственно создать базу.
******************************* FAQ **************************************
(1) Как организовать дозвон? (тонкости организации дозвона)
1. Во первых, надо вручную создать подключение в списке удаленного
доступа (win 2000 - пуск, настройка, сеть и уд.доступ, создание
нового подключения).
Или создать подключение с помощью компоненты (см. "Атрибуты
подключений" и "СохранитьНастройкиПодключения()").
2. Если импульсный набор, то перед номером телефона надо ставить "p"
напр "p212121", тоновый - по умолчанию или "t". Если необходимо ждать
гудка после цифры, то ставится "w", напр. "t8w0952223333".
3. (только если RAS-сервер находится под управлением Windows 95-98)
Если система-клиент NT, 2000 или XP тогда в свойствах созданного
в п.1 соединения в разделе "Безопасность" выберите возможность
отправления незашифрованного пароля (win 2000 - закладка
"безопасность", п. Дополнительные (особые параметры), кн
"Настройка", п.Разрешить следующие протоколы, галочка
ТОЛЬКО на "Незашифрованный пароль PAP")
4. При вызове дозвона, необходимо использовать имя созданного в
п.1 подключения в качестве первого параметра.
5. При использовании процедуры "ОбработкаВнешнегоСобытия" (последний
параметр = 1 в Дозвониться (RASDIAL), ПолучитьПисьмо,
ПолучитьВсеПисьма (POP3), ОтправитьПисьмо, ОтправитьВсеПисьма(SMTP)
форма подключения в обязательном порядке должна быть в "фокусе",
иначе события могут теряться. Вернее они не теряются, а начинают
(пытаются) обрабатываться в глобальном модуле.
*********************************************************************
(2) Через какие объекты добраться до общих методов ?
Если методы и свойства "общие" это значит, что у объектов POP3 и SMTP есть одинаково действующие
методы и свойства.
!!! Отметим при этом, что Получ.РабочийКаталог<>Отпр.РабочийКаталог !!!
"РабочийКаталог" - одинаковое свойство для объектов POP3 и SMTP
*********************************************************************
(3) Почему при дозвоне компонента 3 раза подряд генерирует
событие "Начало Аутенфикации"?.
Дозвон происходит через системную DLL'ку RasDial.
Все события, которые генерируются этой DLL'кой перенаправляются
компонентой DialMail в 1С (процедура ОбработкаВнешнегоСобытия(...))
Так что от компоненты в данном случае ничего не зависит.
Причина этого (можно предположить) лежит на уровне того сервера,
к которому идет подсоединение (кто мешает аутенфикацию
проводить 3 раза или 3-мя различными способами?).
*********************************************************************
(4) При дозвоне (отправке, приеме почты) у меня в форме перестают
генерироваться события в процедуре ОбработкаВнешнегоСобытия(...),
хотя дозвон (отправка, прием почты) продолжает свою работу.
Это глюк 1С. Проявляется иногда во время работы компоненты при
сворачивании окон программ,открытия новых окон программ, при
потере фокуса 1С-Предприятием. Лечится это следующим образом.
На самом деле все события, сгенерированные компонентой, не пропадают
если процедуру ОбработкаВнешнегоСобытия(...) разместить
в глобальном модуле. В этом случае нам нужна будет глобальная
переменная - контекст нашей формы. Все переменные, которые нам
понадобятся в процедуре ОбработкаВнешнегоСобытия(...), можно
сделать либо глобальными, либо разместить на нашей форме в виде
невидимых реквизитов.
КоличествоСобытий - реквизит, размещенный на нашей форме
========================================
*********************************************************************
(5) Можно ли использовать дозвон для разговоров по телефону?
Нет. Компонента не предназначена для простых звонков на
телефон. Только для установления "сетевого" соединения между
2-мя компьютерами (например, между клиентским компьютером и
компьютером провайдера).
*********************************************************************
(6) Хотелось бы использовать компоненту DialMail в проектах,
написанных на Visual Basic, Delphi и т.д.
Компонента 1С хоть и полностью COM объект, но интерфейс
особый, свой - 1С-ий. Чтобы работать с данной компонентой
из других средств разработки, надо полностью переписывать
компоненту. Мне это не нужно, да и нет времени.
Модули Synapse, на которых базируются почтовые клиенты компонеты, лежат
в http://www.ararat.cz/synapse/ , могу прислать примеры компоненты
и интерфейсный модуль RasUnit.pas (для облегченной работы с RAS API -
тоже кстати из инета). Могу оказать посильную помощь, если что-то с этими
исходниками будет неясно. Но полностью исходники выложу в свободное
распространение только когда не буду поддерживать компоненту.
*********************************************************************
(8) Почему при передаче/приеме почты возникает ошибка 10054?
10054 - "Connection reset by peer", т.е. "Соединение сброшено удаленной
системой"
Происходит в результате:
1. Выключения сокета на удаленной машине в
рез-те ресета или таймаута
2. Вызывается локальной машиной при обнаружении потери
соединения (например, если дозванивались по dial-up и соединение
разорвалось - свойственно плохим модемам и плохим тел. линиям)
3. Связано с неправильным использованием "потоков" при приеме/передаче
Например, последовательность
может вызвать именно эту ошибку.
Пояснение: Т.к. получение запущено в отдельном потоке (3-ий параметр=1),
команда отключения вызовет закрытие сокета. Поток, который принимает почту,
из-за закрытия сокета "внешним процессом" инициирует данную ошибку -
фактически причина №2.
*********************************************************************
(9) RasDial: Как задать импульсный/тоновый набор номера,
паузу для ожидания гудка, и т.п. ?
Начинаться номер телефона может с "p" или "t" - cоответственно импульсный
или тоновый набор номера, по умолчанию - тоновый набор номера.
"w" - пауза, дождемся гудка - "линия свободна", "," - пауза в не помню сколько
времени (1 сек?) Пример задания телефонного номера: p8w095,,1234567
В данном примере - 'p' - импульсный набор, после '8' пауза, дождемся гудка,
после '095' подождем 2 сек и продолжим набирать номер. Более подробную
информацию по данным управляющим символам можно найти на просторах интернета.
Программируя под 8.2, работающем в режиме управляемого приложения, я столкнулся с проблемой печати штрихкода. Для платформы 8.1 и платформы 8.2 в режиме обычного приложения такой проблемы не было: устанавливаем элемент «1С:Печать штрихкодов» в макет и наслаждаемся вертикальными черточками. В режиме управляемого приложения вываливается ошибка:
Что же случилось?
Дело в том, что для управляемого приложения внешние компоненты разрабатываются по другой технологии. Пример внешней компоненты для печати штрих-кода в 8.2 есть в демонстрационной конфигурации "Управляемое приложение" в макетах справочника Товары либо в конфигурации «1С:Управление торговлей» версии 11, макеты обработки «Печать этикеток и ценников».
Данная компонента, получив в качестве параметра строку штрихкода, возвращает картинку – штрихкод, которую программисту предлагается поместить в любое удобное место печатной формы.
Теперь как это сделать.
Всего обработок аж четыре штуки: КомпонентаПечатиШтрихкодовWindows32
КомпонентаПечатиШтрихкодовWindows64
КомпонентаПечатиШтрихкодовLinux32
КомпонентаПечатиШтрихкодовLinux64
Все они загружены в одноименные макеты. Функция, подключающая внешнюю компоненту в зависимости от платформы может выглядеть так:
В коде выше все компоненты загружены в макеты обработки «ПечатьЭтикетокИЦенников». В принципе ничто не мешает поместить их в любое иное место. Вызов функции осуществляется командой:
Если что-то не получилось – возвращает НЕОПРЕДЕЛЕНО.
Далее опишем функцию, которая, получив данные, сформирует нужную нам картинку с штрихкодом:
В данной функции используется автоопределение типа штрихкода командой
Можно тип штрихкода указать вручную:
ТипКода - число от 0 до 15: 0 - EAN8, 1 - EAN13, 2 - EAN128. Вот полный список типов по порядку: EAN8, EAN13, EAN128, Code39, Code128, Code16k, PDF417, Standart (Industrial) 2 of 5, Interleaved 2 of 5, Расширение Code39, Code93, ITF14, RSS14, CodaBar, EAN13 AddOn 2, EAN13 AddOn 5.
Кроме типа штрихкода, компонента имеет ряд других свойств, например ВнешняяКомпонента.ОтображатьТекст, ВнешняяКомпонента.РазмерШрифта и прочие, можно посмотреть в свойствах.
Наконец последнее - вывод штрихкода. Для этого в макет поместим картинку с именем «Штрихкод». Получаем и выводим штрихкод в область командой:
Где Штрихкод – переменная, содержащая строку штрихкода номенклатуры, 50 – требуемая ширина, 30 – высота картинки. В макете размер картинки лучше всего поставить «Реальный размер».
Замечание. Сразу бросается в глаза то, что я вручную указываю размер требуемой картинки – 50 на 30. Возникает вопрос, а нельзя ли размеры требуемой картинки получить из картинки на макете? Конечно можно:
К сожалению, цифры получаемые этими командами почему-то слишком малы. Как получить реальный видимый размер картинки я пока не знаю, может кто подскажет? Источник
Обработка ПечатьЭтикеток использует компоненту "1С:Печать штрихкодов"(доступную на диске ИТС) для печати штрих-кодов(далее ШК). Эта компонента поддерживает следующие типы штрих-кодов: EAN8, EAN13, EAN128, Code39, Code128.
Что делать если на предприятии используется отличный ШК, например Interleave 2 of 5, для которго есть системный шрифт @IDAutomationSHI25M, используемый для вывода ШК на экран или на принтер.
Рассмотрим как проще всего добавить поддержку этого типа ШК в обработке ПечатьЭтикеток.
Первым делом скопируем общий макет Этикетка в макет для вывода нашего штрих-кода ЭтикеткаInterleave. В этом макете надо удалить элемент управления, связанный с компонентой "1С:Печать штрихкодов". И оформить центральное поле как параметр табличного документа ШтрихКод, выводимый шрифтом @IDAutomationSHI25M.
Далее разрешаем запуск обработки даже с неустановленной компонентой т.к. для вывода нашего ШК компонента не нужна. Для этого комментируем строчку в модуле формы обработки:
В общем модуле УправлениеРозничнойТорговлей также есть место проверки на компоненту
В обработке есть место, где выполняется проверка типа ШК. Наш ШК сейчас не пройдет проверку и печать выполнена не будет. Чтоб печать выполнялась необходимо исправить функцию в общем модуле УправлениеРозничнойТорговлей.
Мы на завершающем этапе, вносим изменения непосредственно в обработку.
Последний штрих это добавить регулятор размера шрифта (в коде переменная РезмерШрифтаInterleave) на форму обработки:
Система компоновки данных (СКД) – является визуальным средством для построения и вывода отчетов, без использования кодирования на языке 1С. Т.е. мы можем задавать источники данных, способ их вывода на экран, при этом, не написав ни строчки кода.
Сама идея СКД не является чем-то новым, данный принцип использован во множестве программ. Нечто похожее реализовано в MS Access, MS SQL 2005, также существуют встраиваемые в различные среды разработки компонент, самый типичный FastReport.
В 1С уже есть конструктор выходной формы , который может формировать простые отчеты.
Но когда возникает потребность в формировании отчетов с сложной структурой, тут приходится полученный конструктором отчет серьезно переделывать. Также в типовых конфигурациях (УПП, УТ, БП) можно формировать отчеты на основе «УниверсальныйОтчет». В других конфигурация есть свои механизмы, например в конфигурациях фирмы Рарус формирования отчетов происходит на основе создаваемого вручную макета:
Для решения некоторых задач, иногда требуется имееть возможность шифровать и дешифровывать, какие-то данные. Но при этом нет возможности использовать стороние внешнии компоненты.
Предлагаем пример реализации алгоритма шифрования RC4 на встроенном языке 1С.
Зарегистрированная внешняя компонента хранится в реестре следующим образом:
Предположим, что у нас есть внешняя компонента E:\Events\Events.dll.
В 1С мы пишем:
Теперь зайдем в программу regedit.exe (Пуск-Выполнить-Regedit.exe).
Если регистрация прошла успешно, то в реестре мы увидим следующие записи (я сделал поиск по подстроке "AddIn.Events" в редакторе реестра regedit.exe, нажав сочетание клавиш Ctrl-F):
Значение {2E5E6B2C-EFE0-4872-9AB6-DF187B9CE397} является уникальным для каждого OLE-объекта идентификатором (CLSID). Его должен явно задать разработчик в коде внешней компоненты.
Значение ProgID, которое в нашем случае - "AddIn.Events" также задает разработчик внешней компоненты.
Чтобы в реестре появились эти записи, необходимы права доступа:
Начиная с Windows 2000, обычный пользователь не имеет прав доступа к указанным выше ветвям реестра. Нужны права или администратора, или привилегированного пользователя Windows. После первой загрузки компонента пропишет себя в реестре, и ее смогут использовать и непривилегированные пользователи Windows.
Где 1С ищет внешнюю компоненту?
Если при загрузке внешней компоненты вы не указываете полный путь, такой как E:\Events\Events.dll или сетевой путь наподобие \\ВашСервер\ПапкаГдеЛежатВК\Events.dll, то 1С ищет внешние компоненты
-относительно папки 1Cv7\BIN (КаталогПрограммы())
-относительно каталога информационной базы (КаталогИБ())
Метод ЗагрузитьВнешнююКомпоненту(), обнаружив ВК по новому пути, обновляет ее регистрацию в реестре
Это означает, например, что на терминальном сервере программист, который вошел в тестовую базу, где лежит ВК, и потом ее стер, оставит у всех пользователей запись в реестре о несуществующей ВК.
Аналогичная проблема - когда ВК по данному пути недоступна тем или иным пользователям.
А поскольку пользователи не имеют права на изменение записей в реестре, то у них перестанет загружаться и внешняя компонента.
В 1С:Предприятие 8.0 убрана возможность загрузки ВК относительно каталога ИБ.
В 7.7 же, чтобы избежать проблем, всегда убирайте ВК из каталога ИБ, и прописывайте полные пути (или складывайте DLL в общую для всех пользователей папку BIN).
Кардинальное решение проблемы - VKLoader и RegsvrEx
Имеется компонента VKLoader.dll (автор - Александр Орефков), которая позволяет решить проблемы с регистрацией компонент.
Цитата:
"vkloader (далее ВК) - внешняя компонента для 1С-Предприятия 7.7, которая может загружаться без ее регистрации в реестре, и загружать другие внешние компоненты без их регистрации. Предназначена для беспроблемной загрузки внешних компонент пользователями, не имеющими прав на запись в HKCR ветку реестра.
Принцип работы основан на перехвате обращения 1С к WinAPI функциям CLSIDFromProgID и CoCreateInstance.
Также ВК решает проблему "зависания" процесса 1С в памяти при закрытии программы при использовании несовсем корректно написанных сторонних внешних компонент".
Пример использования vkloader:
Замечу, что сама vkloader "умеет" загружать себя без прав доступа к реестру.
Еще одно решение: RegsvrEx
Автор - AlexQC.
Регистрирует компоненты (OLE-объекты) в пользовательской ветке реестра. RegsvrEX
Решение:
1. На клиенте включить DCOM утилитой dcomcnfg и добавить нужные протоколы в список.
2. На серваке добавить пользователей в группу "Distributed COM Users"
3. Перезапустить COM-приложение на сервере 1С:Предприятия
В настройках Windows на сервере должна быть включена роль "Сервер приложений" (Application Server)
Прочитать статью на ИТС.
Если клиент и сервер в разных подсетках (доменах), на сервере в локальную группу "Пользователи DCOM" пропишите пользователя клиента. Члены этой группы могут запускать, активизировать и использовать объекты DCOM на этом компьютере.
-----------
Проблема:
После выбора информационной базы (но до логина в 1с) возникает ощибка "Объект сервера 1С предприятия не обнаружен. 800706BF".
Решение:
1) Права пользователя.
Возможно, что пользователь, от имени которого запускается клиентское приложение не зарегистрирован и не доступен компьютеру сервера 1С:Предприятия.
2) Проверьте на клиентском компьютере настройки DCOM.
dcomcnfg/ Default protocols:
- Connection oriented TCP/IP
dcomcnfg/ Default properties:
- Enable distributed COM on this computer
- Default authentication level: Connect
- Default impersonation level: Identify
3) Попробуйте на серверном и клиентском компьютере понизить уровень
аутентификации:
Default authentication level: None
4) Проверьте, не установлено ли сетевых экранов. Откройте порт 135 и те, которые указаны на клиенте и сервере в диалоге:
dcomcnfg/ Default protocols/ Properties/ Post Ranges.
Если там диапазонов портов не указано - задайте их.
----------
Ошибка соединения с сервером 1С:Предприятия 8.0: Неправильный путь к файлу C:W
Решение:
Возможная причина ошибки в том, что для пользователя USER1CV8SERVER не заданы переменные окружения TEMP и TMP, поэтому при создании новой базы временные файлы пытаются быть созданными в корне диска C:
----------
Ошибка создания информационной базы: Компоненты OLE DB провайдера не найдены
Решение:
Такое сообщение может быть выдано, если сервер 1С:Предприятия не смог создать COM объект OLE DB Provider for Microsoft SQL Server.
Ознакомьтесь с разделом "Администрирование/ Установка и настройка/ Сервер 1С:Предприятия и SQL-сервер" на диске ИТС.
1) Найдите в Registry ветку
HKEY_CLASSES_ROOTCLSID{0C7FF16C-38E3-11d0-97AB-00C04FC2AD98}InprocServer32
Какой маршрут до файла SQLOLEDB.DLL является значением параметра default?
Убедитесь, что в этом каталоге этот файл есть.
2) Убедитесь, что каталог с файлом SQLOLEDB.DLL доступен пользователю USER1CV8SERVER. Для этого к списку пользователей, имеющих права на каталог можно добавить пользователя USER1CV8SERVER или группу everyone.
3) Запустите утилиту Microsoft SQL Server Client Network Utility. На закладке General установите протокол TCP/IP. На закладке Network Libraries посмотрите маршрут сетевой библиотеки для протокола TCP/IP. Убедитесь, что она присутствует в указанном каталоге и пользователь USER1CV8SERVER имеет доступ в этот каталог.
Попробуйте переустановить MDAC.
Убедитесь, что у пользователя, от имени которого стартует сервер 1С:Предприятия, есть права на каталог, содержащий компоненту OLE DB провайдера, и на файлы в этом каталоге.
----------
При попытке добавить базу с локальной станции, 1C предлагает только вариант выбора файлового варианта базы.
Решение:
На появление меню выбора вида создания базы (файловая или на сервере Предприятия) может влиять только ключ. Если ключа нет, то платформа может быть максимум базовой, а базовая не работает с сервером, поэтому этого меню нет. Если же оно есть, но недоступно, то возможно не установлены компоненты доступа к серверу на этой локальной станции.
----------
Проблема:
Выдается ошибка "Не удалось зафиксировать файл базы данных для открытия или изменения .../1cv8.1CD"
Решение:
Фиксация файла базы данных – это разновидность внутренней блокировки, которая требуется, чтобы на некоторое непродолжительное время обеспечить целостность структуры файла при выполнении операций чтения данных или фиксации транзакции. При чтении требуется, чтобы эти структура файла была в целостном состоянии, а при фиксации транзакции структура может изменяться.
При нормальной работе такая ошибка возникать не должна. Суть сводится к следующему: для выполнения фиксация результатов транзакции может потребоваться выполнить перестройку внутренних структур данных файла *.1cd. А для выполнения чтения данных необходимо гарантировать, чтобы такая перестройка структур данных не выполнялась. Для обеспечения согласования этих операций имеется механизм внутренних блокировок, называемых фиксацией. Фиксация выполняется с ожиданием. В то же время предполагается, что фиксация выполняется на непродолжительное время, меньшее, чем время ожидания. Таким образом, если упомянутая ошибка возникла, то имеет место некоторое нарушение нормального хода событий. Мы наблюдали такую ситуацию и уже описывали ее в партнерской конференции. Вкратце все выглядит примерно так. В какой-то момент времени запрос на блокировку участка файла (функция LockFile() Win32 API) выдает ошибку Network error. В результате возникает ошибка движка файловой базы данных "Не удалось зафиксировать файл базы данных для открытия или изменения".
Природа ошибки нам пока непонятна. Известно только, что она возникает далеко не у всех. Не отмечено никакой связи возникновения этой ошибки с версией 1С:Предприятия 8.0 и используемой конфигурацией. По-видимому речь идет о каких-то особенностях некоторых сетей.
Вполне возможно, что проблема возникает из за нестабильности работы сети
Один из способов проверить - выполнить команду:
ping [Имя сервера] -t
на компьютере, с которого запускается 1с
после чего запустить 1с и посмотреть, что будет происходить...
----------
80004027 - приложение 1CV8 или сомпонента v8.server.1 выключена,
если сервер на Windows Server 2003.
См. статью "Особенности настройки Windows Server 2003 при установке сервера 1С:Предприятия 8.0" на диске ИТС.
00000005
00000041
80070005
80080005
80000009
80030005
8001011B - клиент не имеет прав на доступ к серверу (access denied). Выполните
рекомендации статьи "Вопросы установки и настройки 1C:Предприятия 8.0
в варианте "клиент-сервер"" из раздела методической поддержки
1С:Предприятия 8.0 на диске ИТС.
800706BA
800706BE- на сервере произошло неожиданное исключение. Сервер упал.
Нужны записи из Event Log с сервера.
80010108 - внутренняя ошибка клиентского приложения. Нужны записи
Event Log клиентского компьютера и описание действий, выполнявшихся
в это время.
80070776 - Запустить DcomCnfg.exe и проверить протокол для DCOM
Должен быть TCP/IP с ориентацией на подключения
8000401A - В свойствах COM+ приложения 1CV8 на серверном компьютере
на закладке Identity установлен Interactive user, но никакой
пользователь интерактивно не вошел в серверный компьютер.
8001011C - На клиентском компьютере запрещено использование DCOM.
Помогает запустить на клиентском компьютере dcomcnfg.exe
и на закладке Default Properties установить флаг
Enable distributed COM on this computer.
80070721 - Ошибка возникает при рассогласовании протоколов
аутентификации между DCOM клиентом и сервером в том случае, если для связи
между ними используется Microsoft Internet Information Services (IIS).
Возможно, для DCOM используется протокол Tunneling TCP/IP. Установите
на компьютере - сервере 1С:Предприятия и на клиентских компьютерах для
DCOM протокол Connection-oriented TCP/IP.
Иногда возникает ситуация, когда необходимо очистить базу от документов, это либо открытие нового периода с чистой базой, либо чистая копия для филиала или отдела.
Вот скрипт для частичной очистки базы, закройте программу "1С:Предприятие", ОБЯЗАТЕЛЬНО СДЕЛАЙТЕ КОПИЮ, поместите файл в рабочую папку базы и запустите на выполнение, запустите программу в монопольном режиме и удалите помеченные объекты.
Есть возможность очистить информационную базу, не удаляя при этом остатки товаров, долги и взаиморасчёты с клиентами. Для этого, прежде чем запустить скрипт удалите в нём строку "del rg*.*. Но такую очистку можно делать только в начале месяца, сразу после открытия нового периода. Обязательно проверьте получившуюся базу данных перед использованием.