Батник на "языке 1С" для клиент серверных баз, скачивает с сайта ИТС нужное обновление, бекапит базу и обновляет. Подойдет как рабочая заготовка для собственных "обновляторов". В текущем виде все работает. Надо только занести свои переменные.
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают!
Для клиента нужно было сделать вывод объектов на карту
В статье описан процесс работы с MySQL базой из 1С через ODBC.
Первое что следует обязательно учесть это версия драйвера, для того чтобы всё корректно работало вам потребуется драйвер версии 3.51 (с драйвером 5-ой версии я пробился пол дня пытаясь хоть чего нибудь добиться, безрезультатно & поменял на предыдущую версию и всё заработало!
Для подключения используем вот такую строчку:
то касается кодировки то лучше её конечно задать, но на вставку записей в БД MySQL оно почемуто не влияет, и чтобы корректно всё отрабатывало и не выглядело кракозябриками после отработки скриптов, перед выполнением самих скриптов лучше выполнить вот такой вот скрипт «set names cp1251» в рамках соединения он правильно установит кодировку (так надёжнее).
Для работы с самой базой объявляем объект ADODB.Connection & это соединение с базой.
Для работы с данными можем объявить: ADODB.Recordset & для чтения данных, и ADODB.Command для изменения.
(ADODB.Command & не имеет метода ExecuteScalar, поэтому вместо него придётся обходиться Recordset-ом и с его помощью выбирать данные, хотя возможно я чегото не доглядел).
* проверям, что в созданном файлике /var/www/html/baza/default.vrd и нет лишних (двойных) "/" . У меня они каждый раз появлялись и каждый раз мне проще было их удалить чем вникать, где в команде я напортачил. (также стоит проверить /etc/httpd/conf/httpd.conf, база прописывается в самый конец конфига).
4) ставишь на папку права для пользователя apache: chown apache:apache /var/www/html/baza и перезагружаешь апач.
Проблема в том, что 64-битный апач не хочет работать ( нужно заменить его на 32-битный!
Порядок действий такой:
1. Нужно подкорректировать файлы репозитария, чтобы он загружал 32-битные версии: Открываем /etc/yum.repos.d/, копируете эти файлы для архива и исправляете в текущих $basearch на i686.
2. чистим кэш так: yum clean all или в папке /var/cache/yum/
3. yum install httpd.i686
4. reboot
После перезапуска
./webinst -apache22 -wsdir base -dir '/var/www/html/base/' -connStr 'Srvr=5.101.113.142;Ref=tur;' -confPath /etc/httpd/conf/httpd.conf
su postgres -c '/usr/pgsql-9.2/bin/initdb -D /opt/pgsql --locale=ru_RU.UTF-8'
Исправить путь к файлам БД, переменная PGDATA:
vim /etc/rc.d/init.d/postgresql-9.2
Включение автозапуска и запуск демона PGSQL:
chkconfig postgresql-9.2 on && service postgresql-9.2 start
Создание пользователя БД
su - postgres
cd /usr/pgsql-9.2/bin
createuser --interactive -P
Введите имя новой роли:srv1c
Введите пароль для новой роли:
Повторите его:
Должна ли новая роль иметь полномочия суперпользователя? (y - да/n - нет) y
Новая роль должна иметь право создавать базы данных? (y - да/n - нет) y
Новая роль должна иметь право создавать другие роли? (y - да/n - нет) n
Краткая справка PGSQL
-bash-4.1$ psql
Изменение роли суперпользователя сервера БД
postgres=# ALTER USER srv1c WITH NOSUPERUSER;
postgres=# ALTER USER srv1c WITH SUPERUSER;
Список БД
postgres=# \l
Удаление БД
postgres=# DROP DATABASE base01;
Установка сервера 1С
Предполагаем, что архив пакетов находится в отдельной папке, напр., /opt/inst/1c-enterprise.
cd /opt/inst/1c-enterprise
tar xzf rpm64.tar.gz
yum install *.rpm
chkconfig srv1cv83 on && service srv1cv83 start
Лицензии
Предполагаем, что у нас уже есть работающий сервер сетевых лицензий.
Пример файла
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = licsrv.your.domain
Безопасность
Отключение брандмауэра и расширений безопасности Linux - крайне вредная рекомендация. Более того, каких-то сложных настроек там нет, достаточно добавить пару разрешающих правил для входящего трафика.
vim /etc/sysconfig/iptables
#1C
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1540:1541 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1560:1591 -j ACCEPT
Теперь можно подключаться к серверу из консоли администрирования.
Описание ошибки:С сентября 2014 Яндекс.Почта, Mail.ru перешли на протокол SSL, что сделало их ещё более безопасными. Чтобы и дальше работать с письмами через 1С, Вам нужно изменить их настройки и внести доработки в код конфигураций.
Найденные решения:
Ошибка наблюдается, в частности, в случае, когда меняются настройки почты. Например мне довелось столкнуться в случае, когда ввели для почты SSL-шифрование. Если это Ваш случай, то из быстрых и простых остается только обновление до версии платформы 8.3, где поддержка этого шифрования для "ИнтернетПочтовыйПрофиль" реализована. И доработка кода типовых конфигураций для учета настроек SSL-шифрования и включения у почтового профиля.
Сопровождающие проблему ошибки:
Яндекс.Почта
адрес_почты@yandex.ru. {ОбщийМодуль.УправлениеЭлектроннойПочтой.Модуль(1065)}: Ошибка при вызове метода контекста (Подключиться): Почтовый ящик пользователя "адрес_почты@yandex.ru" на сервере "pop.yandex.ru" не найден. Ответ сервера: "[AUTH] Working without SSL/TLS encryption is not allowed. Please visit https://help.yandex.ru/mail/mail-clients/ssl.xml. sc=NXhLmqHbM4YK"
Если установлены не правильные порты, то получим ошибку:Ошибка при вызове метода контекста (Подключиться): TLS/SSL failure for smtp.mail.ru: Invalid token, probably not an SSL serverУстановите порты 465 для smtp, 995 для pop3.
При соединении с Яндексом: в логинах оставить только содержимое логина до @yandex.ru, т.е. из примера "адрес_почты" (без кавычек). Устанавливаем для pop3 и smtp SSL-шифрование. Если почта корпоративная на Яндексе, и в наименовании не используется @yandex.ru, то оставляем логин, равный наименованию почты, как есть.
Mail.ru
Не включено SSL-шифрование для учетной записи электронной почты. Ошибка при вызове метода контекста (Подключиться): Can not authenticate to POP3 server: POP3 is available only with SSL or TLS connection enabled
Если установлены не правильные порты, то получим ошибку:Ошибка при вызове метода контекста (Подключиться): TLS/SSL failure for smtp.mail.ru: Invalid token, probably not an SSL serverУстанавливаем порты 465 для smtp, 995 для pop3.
Если возникает ошибка:Ошибка при вызове метода контекста (Подключиться): Can't connect to smtp.mail.ru,495: Timed out - значит неправильно указан порт.
Если возникает ошибка:Ошибка при вызове метода контекста (Подключиться): SMTP greeting failure: 421 SMTP connection broken (reply)Порты настроены правильно, не установлено SSL-шифрование для smtp.
В паролях для почты не использовать спецсимволы, пример из опыта: в пароле к почте был символ "+", пока из пароля не убрали, соединение не происходило! Система выдавала ошибку: Ошибка при вызове метода контекста (Подключиться): Can not authenticate to SMTP server: 535 5.7.8 Error: authentication failed: Invalid user or password!
Разработчики 1С вносят фунционал в рабочие конфигурации, например: УТ 10.3.30.1 от 26.09.2014, описание обновления: В справочник "Учетные записи электронной почты" добавлены реквизиты "Использовать защищенную версию протокола SMTP" и "Использовать защищенную версию протокола POP3". При установке этих реквизитов предоставляется возможность подключаться к почтовым серверам через безопасное соединение (SSL). Реквизиты доступны при использовании версии платформы не ниже 8.3.1.
P.S.: Возможно еще использование дополнительной программы stunnel. Но мне этот вариант меньше понравился. Т.к. клиенту не хотелось зависеть от программиста каждый раз, когда появляется новая почта или рабочее место, а чтобы сразу можно было из 1С настроить, как и раньше.
ТзЕмейл.ВыбратьСтроки();
Пока ТзЕмейл.ПолучитьСтроку() = 1 Цикл
iMsg.AddAttachment(СокрЛП(ТзЕмейл.ПутьКФайлу));
//iMsg.AddAttachment("D:\1.txt");
КонецЦикла;
При попытке удалить запись из регистра сведений - получаю ошибку: она заблокирована, ошибка блокировок и т.д.
Отключил всех пользователей, перезапустил сервер, пробую удалить - опять ошибка блокировки
Путем тестов было вяснено, что проблема не в коде, а происходит это на этапе обращения платформы к SQL серверу... после долгих поисков решений, в интернете была найдена статья, которая помогла в решении данной проблемы:
Кто что блокирует, MS SQL + 1C
В повседневной работе достаточно задействовать только первый блок "/*кто кого*/". Открываем MS SQL Server Management Studio, правой на корень - "new query" - вставляем код запроса (только верхнюю часть до "Кто что блокирует", остальное - для детального анализа), выполняем запрос (вверху есть кнопочка выполнения запроса).
Выполнив запрос, запоминаем "ID виновника", быстренько идем в консоль сервера 1С, заходим в ветку "Сеансы" нашей базы. Видим все соединения с 1С-сервером, ищем там колонку "Соединение с СУБД", чтобы увидеть соединения 1С-сервера с MSSQL-сервером. В колонке будет всего несколько заполненных значений, среди них и будет "ID виновника".
Что делать если его там нет, тут 3 варианта:
1. Вернитесь в MSSQL и сделайте запрос еще несколько раз подряд, если значения меняются или таблица вообще пуста - постоянной блокировки нет, у вас (уже) все в порядке.
2. Сеанс который блокирует MSSQL находится в другой базе т.е. блокировка не в той базе (можно попробовать задействовать ветку всех сеансов в консоли 1С-сервера) - вернитесь в MSSQL и внимательно посмотрите в колонку DB в ней находится название базы.
3. Бывает что ID процесса в 1С-консоли вообще отсутствует, такое тоже бывает если у вас есть какие-то внешние программы подключенные напрямую в базу 1С, если пускаете кого-то в MSSQL напрямую, то вариант не исключен.
Не найдено ни одного сервера с размещенным сервисом serviceName = DebugService
или
Не найдено ни одного сервера с размещенным сервисом serviceName = JobService
то для исправления этой ошибки - серверу необходимо назначить функциональность:
1. Откройте Панель Администрирования серверов и перейдите в раздел Требования назначения функциональности
2. Добавите общую функциональность с типом требования Назначить
3. Примените требования
4. Все должно работать
Я указал общие требования, т.к. баз на сервере мало, нагрузки практически нет, Но требования назначения функциональности имеют более глубокий смысл:
Требование назначение функциональности определяет:
Для какого объекта требования создается требование. В качестве объекта требования могут выступать некоторые сервисы 1 кластера, клиентские соединения и произвольный объект требования. В качестве объекта требования могут выступать следующие сервисы кластера:
Блокировок объектов.
Времени.
Журналов регистрации.
Заданий.
Нумерации.
Полнотекстового поиска.
Пользовательских настроек.
Сеансовых данных.
Транзакционных блокировок.
Работы с внешними источниками данных через ODBC.
Работы с внешними источниками данных через XMLA.
Сервис лицензирования.
Сервис фонового обновления конфигурации базы1 данных.
Сервис тестирования.
Сервис внешнего управления сеансами.
Определяет тип требования. Тип требования определяет, каким образом будет выполняться использование рабочего сервера:
Не назначать - означает, что рабочий сервер, для которого создано данное требование, не будет назначен для обслуживания объекта требования, подходящего под условия, заданные в требовании.
Назначать - означает, что рабочий сервер, для которого создано данное требование, будет являться одним из кандидатов на обслуживание данного объекта требования (если рабочих серверов будет несколько).
Авто - означает, что рабочий сервер может быть использован для обслуживания объекта требования в том случае, если нет рабочего сервера с явным указанием необходимости использования.
Тип требования Авто - имеет смысл использовать тогда, когда в списке требований рабочего сервера есть требование с более широким набором условий, и необходимо иметь требование для более узкого набора условий. Например, данный сервер не может обслуживать соединения клиентских приложений для всех информационных баз, кроме одной информационной базы, для которой такое обслуживание разрешено.
Дополнительные параметры, необходимые кластеру серверов для принятия решения в ряде случаев:
Имя информационной базы. Используется для уточнения требования для формирования требований для клиентских соединений и всех сервисов кластера, которые могут выступать в качестве объекта требования, кроме сервиса лицензирования.
Дополнительные параметры. Используются для уточнения требований при размещении клиентского соединения или сервиса сеансовых данных. Дополнительный параметр проверяется на совпадение с началом соответствующего параметра объекта требования. Дополнительный параметр может принимать одно из следующих значений:
Для указания всех фоновых заданий: BackgroundJob. CommonModule .
Для указания конкретного отчета: BackgroundJob.Report.<Имя отчета;.
Для указания всех отчетов: BackgroundJob.Report.
Для указания фоновой реструктуризации: SystemBackgroundJot.
Для клиентского приложения:
1CV - толстый клиент.
1CV8CDirect- тонкий клиент в случае прямого подключения к серверу «1С:Предприятия».
Designer - конфигуратор.
COMConnectior - COM-соединение.
WebServerExtensior- соединение с информационной базой через веб-сервер: веб-клиент, тонкий клиент в случае подключения через веб-сервер, Web-сервис.
Рассмотрим, как работает кластер серверов при обработке требований.
В случае необходимости выполнить размещение объекта требования, кластер выполняет следующие действия:
1. На всех серверах, входящих в состав кластера, выполняется обработка заданных для этих серверов требований назначения функциональности. Обход серверов и требований выполняется в порядке следования этих объектов в консоли кластера.2.
2. В каждом списке требований определяется первое требование, которое удовлетворяет размещаемому объекту: по собственно объекту, информационной базе и дополнительному параметру.
3. Затем полученный список рабочих серверов сортируется по признаку типа требования так, что первыми оказываются рабочие сервера с явным указанием использования. Рабочие сервера, для которых подходящее требование содержит явный запрет на использование - исключаются из списка доступных рабочих серверов. При этом назначение выполняется следующим образом:
Есть рабочие сервера с явным указанием использования: в этом случае объект требования будет обслужен одним из этих рабочих серверов.
Нет рабочих серверов с явным указанием использования: происходит попытка использовать рабочие сервера с автоматическим указанием использования или те рабочие серверы, для которых не указано требований.
При размещении клиентского соединения, из списка доступных серверов будет выбран тот, в состав которого входит рабочий процесс с наивысшей доступной производительностью.
Клиентское приложение, инициировавшее размещение объекта требования, будет завершено аварийно в одном из следующих случаях:
Если для объекта требования список рабочих серверов оказывается пустым - нет ни одного рабочего сервера, который может обслужить объект. При этом объект требования не будет размещен и будет вызвано исключение.
Если невозможно выполнить размещение на выбранном рабочем сервер, например, если выбранный сервер вышел из строя, и нет альтернативных рабочих серверов.
Формат JSON в 1С до версии 8.3.6 не реализован, но нижет я приведу примеры функций которые можно использовать для полноценной работы JSON в 1С предыдущий версий.
JSON (JavaScript Object Notation) это текстовый формат обмена данными, широко используемый в веб-приложениях. По сравнению с XML он является более лаконичным и занимает меньше места. Кроме этого все браузеры имеют встроенные средства для работы с JSON.
Необходимость работы с этим форматом на уровне платформы обусловлена не только тем, что это «модный современный» формат, который прикладные решения 1С:Предприятия сами по себе могут использовать для интеграции со сторонними приложениями. Другая причина заключается ещё и в том, что JSON активно используется в HTTP интерфейсах. А в 1С:Предприятии как раз есть такие механизмы, в которых хочется использовать этот формат. Это REST интерфейс приложения, автоматически генерируемый платформой, и HTTP-сервисы, которые вы можете создавать самостоятельно.
В платформе с версии 8.3.6:
Потоковое чтение и запись JSON:
Объекты потоковой работы - это общие объекты ЧтениеJSON и ЗаписьJSON. Они последовательно читают JSON из файла или строки, или последовательно записывают JSON в файл или строку. Таким образом, чтение и запись JSON происходят без формирования всего документа в памяти.
В качестве иллюстрации потокового чтения JSON можно привести следующий пример:
Результат такой записи:
Сериализация примитивных типов и коллекций в JSON
Вторая группа средств работы с JSON хороша тем, что избавляет вас от рутинной работы по чтению/записи каждого отдельного значения или свойства. При чтении документы JSON отображаются в фиксированный набор типов платформы: Строка, Число, Булево, Неопределено, Массив, ФиксированныйМассив, Структура, ФиксированнаяСтруктура, Соответствие, Дата. Соответственно, в обратную сторону, композиция объектов этих типов позволяет сформировать в памяти и быстро записать в файл структуру JSON. Таким образом, чтение и запись небольшого объема JSON заранее известной структуры можно производить немногими строчками кода.
Основное назначение этих средств мы видим в обмене информацией с внешними системами, чтении конфигурационных файлов в формате JSON.
Сериализацию вы можете выполнять с помощью методов глобального контекста ПрочитатьJSON() и ЗаписатьJSON(). Они работают в связке с объектами ЧтениеJSON и ЗаписьJSON.
В качестве примера десериализации JSON можно рассмотреть чтение массива из двух объектов:
Полностью автоматизировали работу с JSON и реализовали в платформе третью группу средств. Они позволяют сериализовать в JSON прикладные типы 1С:Предприятия: ссылки, объекты, наборы записей и вообще любые типы, для которых поддерживается XDTO сериализация. Конечно же, мы обеспечили и обратную операцию - десериализацию. Зачем это нужно!?
Прежде всего, и в основном, XDTO сериализацию в JSON мы рекомендуем использовать при обмене данными между двумя прикладными решениями 1С:Предприятия. По сравнению с XML формат JSON более компактный, сериализация/десериализация в/из JSON выполняется быстрее. Кроме этого мы предприняли дополнительные меры для того, чтобы сократить объём передаваемых данных.
Кроме обмена между приложениями 1С:Предприятия этот механизм можно использовать и для обмена с внешними системами, готовыми принимать типы данных 1С:Предприятия. Например, XDTO сериализацию в JSON можно использовать для организации собственного HTTP интерфейса прикладного решения. Сервис на платформе 1С:Предприятия будет формировать ответ в памяти в виде строки JSON. А затем передавать её при помощи объекта HTTPСервисОтвет. Реализованный нами механизм сериализации полностью соответствует стандарту JSON. Поэтому внешняя система не должна испытывать каких-либо трудностей с десериализацией.
Использование XDTO сериализации в JSON для других задач видится нам маловероятным. Потому что если внешняя система не готова работать с прикладными типами 1С:Предприятия, то зачем их ей передавать? А если предполагается обмениваться только примитивными типами и коллекциями, то для этой задачи хорошо подходят методы ПрочитатьJSON() и ЗаписатьJSON(). Подробнее здесь
Недавно, мой постоянный клиент решил проводить маркетинговые исследования по изменению цен на товары у конкурентов... и эти данные захотел использовать в 1С в связке с его прайс-листом + куча отчетов с графиками и процентным отклонением от цен основного конкурента
В результате этого, была написана обработка собирающая данные со страниц разных сайтов. Из целей конфиденциальности - сайты раскрывать не буду...
Вид обработки загрузки данных с сайта в 1С
Ниже код загрузки данных со страницы сайта, смысл такой :
в функция передается адрес страницы сайта
полученный текст страницы обрабатывается, удаляются теги
из полученного текста формируется ТЗ с данными
По названию ищется поставщик из вспомогательного справочника Справочники.Pr_Поставщики.НайтиПоНаименованию(, если нет - создается
на выходе ТЗ с данными
В коде используется вспомогательная функция ПолучитьМассивИзСтрокиСРазделителем
Конечно, перед тем как мы начали это делать - прошерстили интернет и нашли несколько решений , вот они:
Что же делать и как это победить, и так по порядку:
Клиенты очень медленно работают с серверной версией 1С
Кроме медленной работы 1С, так же наблюдается медленная работа с сетевыми файлами. Проблема встречается при обычной работе и при RDP
для решения этого, после каждой установки Семерки или 2008-го сервера всегда запускаю
netsh int tcp set global autotuning=disabled
netsh int tcp set global autotuninglevel=disabled
netsh int tcp set global rss=disabled chimney=disabled
и сеть работает без проблем
иногда оптимальным является:
netsh interface tcp set global autotuning= HighlyRestricted
вот как выглядит установка
Далее посмотрите настройки брандмауэра Windows
Настроить брандмауэр Антивируса или Windows
Как настроить брандмауэр Антивируса или Windows для работы сервера 1С (связка из Сервера 1С: Предприятие и MS SQL 2008, например).
Добавьте правила:
Если сервер SQL принимает подключения на стандартный порт TCP 1433, то разрешаем его.
Если порт SQL динамический, то необходимо разрешить подключения к приложению %ProgramFiles%\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn\sqlservr.exe.
Сервер 1С работает на портах 1541, кластер 1540 и диапазоне 1560-1591. По совершенно мистическим причинам иногда такой список открытых портов все равно не позволяет выполнять подключения к серверу. Чтобы заработало наверняка, разрешите диапазон 1540-1591.
Настройка производительности Сервера / Компьютера
Для того чтобы компьютер работал с максимальной производительностью - нужно настроить его на это:
1. Настройки BIOS
В BIOS сервера отключаем все настройки по экономии электропитания процессора.
Если есть «C1E» & обязательно ОТКЛЮЧАЕМ!!
Для некоторых не очень параллельных задач также рекомендуется выключить гипертрейдинг в биосе
В некоторых случаях (особенно для HP!) надо зайти в BIOS сервера, и ВЫКЛЮЧИТЬ там пункты, в названии которых есть EIST, Intel SpeedStep и C1E.
Взамен надо там же найти пункты, связанные с процессором, в названии которых есть Turbo Boost, и ВКЛЮЧИТЬ их.
Если в биосе есть общее указание режима энергосбережения & включить его в режим максимальной производительности (он ещё может называться «агрессивный»)
2. Настройки схемы в операционной системе - Высокая производительность
Скачайте утилиту PowerSchemeEd.7z , распакуйте с помощь 7zip и запустите PowerSchemeEd.exe
Выберите раздел Управление питанием процессора и выставите параметры 01. Порог при питании от сети 30% и отключите 27. Переопределение ядра... как на картинке.
3. На серверах 1С и MS SQL Server использование антивирусов (даже сам факт инсталяции без включения) будет приводить к снижению производительности в виде периодических массовых замедлений и подвисаний интерфейса.
4. Совмещение ролей сервера 1С и сервера MS SQL Server дает большую производительность, особенно если использовать протокол обмена данных напрямую через память «Shared Memory».
Очень многие не недооценивают важность настройки сервера, когда роли сервера 1С и сервера СУБД совмещены на одном физическом компьютере.
Убедиться, что к примеру используется протокол Shared Memory можно следующим образом:
Обратите внимание, что в версиях платформы некоторые релизы «переключались» на протокол «именнованых каналов».
Для работы 1С Предприятие в режиме Shared Memory с SQL Server 2012 должен быть установлен NativeClient от SQL Server 2008 (backward compatibility connectivity components из дистрибутива SQL Server 2012 или отдельный пакет)
5. Отключение ненужных служб Виндовс
Одним из самых действенных способов ускорения компьютера является отключение неиспользуемых (ненужных) служб операционной системы. У ОС Windows по умолчанию включено огромное количество служб, на работу которых требуется большое количество ресурсов системы. Многие из них можно отключить без потери функциональности и снижения безопасности системы.
Какие службы можно отключить для оптимизации Windows:
Авто настройка WWAN – в том случае, если у Вас нет CDMA или GSM модулей, эту службу можно безболезненно отключить
Адаптивная регулировка яркости – эта служба регулирует яркость экрана при наличии датчика освещенности, если такой датчик отсутствует – отключаем.
Брандмауэр Windows – предназначен для защиты компьютера. Рекомендуется пользоваться сторонними приложениями для этих целей (например, Comodo, KIS, DrWEB и т.п.).
Защитник Windows – отключаем, совершенно ненужная служба!
Служба помощника по совместимости программ (Program Compatibility Assistant) – эту службу можно отключить, только в случае несовместимости программ нужно будет вручную устанавливать параметры, что бывает не так уж часто.
Служба автоматического обнаружения веб-прокси WinHTTP – можно отключать.
Служба политики диагностики (Diagnostic Policy Service) – практически не нужна.
Смарт-карта – если Вы не пользуетесь такими картами, то отключаем.
Удаленный реестр (Remote Registry) – обязательно отключаем в целях безопасности.
Центр обеспечения безопасности (Security Center) – напоминает о различных событиях вроде отсутствия антивируса, устаревших обновлениях и т.п. – отключаем, если не хотите их видеть.
Список, конечно, получился не особо емким, на самом деле служб, которые можно отключить, намного больше. Кроме того, среди стандартных служб появятся дополнительные службы сторонних программ, которые установлены на Вашем ПК, их также можно отключить.
Кэширование записей на дисках в Windows
Кэшированием записей на устройстве хранения называется использование высокоскоростной энергозависимой памяти для накопления команд записи, отправляемых на устройства хранения данных, и их кэширования до тех пор, пока их не обработает более медленный носитель (либо физические диски, либо недорогая флэш-память). Для большинства устройств, использующих кэширование записей, требуется непрерывная подача электропитания.
Для управления кэшированием записей на диске откройте Панель управления - Диспетчер устройств.
В разделе Дисковые устройства дважды щелкните нужный диск.
Разработчики в управляемых приложениях применили новый механизм настройки прав доступа, о которых и пойдет речь.
Будут перечислены все те грабли, которые собрал автор, чтобы вы о них знали.
Наверняка, уже все знают, что из себя представляет новая система, поэтому предистория вкрадце:
Как было раньше( в обычном приложении):
Есть документ. Есть Роли - ПолныеПрава, ДокументНетДоступа, ДокументТолькоЧтение, ДокументЧтениеИРедактирование. В конфигураторе(аналогичный механизм в реж предприятия) вы выставляете пользователям эти роли и у них появляются соответствующие права доступа на документ. Все просто и скучно и даже зевать хочется.
С введением управляемого приложения разработчики решили усложнить(читается как расширить) настройки прав доступа.
Теперь:
Вводная та же. Чтобы дать пользователю какие-то права на документ - сначала вам необходимо создать элемент справочника Профили групп доступа. Это некий агрегирующий(суммирующий значения) объект, который объединяет роли в группы ролей. Теоритически таких профилей можно создать сколько угодно много с различным набором ролей( N*(n-1), где N - количество ролей), но на практике количество профилей определяется количеством должностных обязанностей пользователей в организации и их гораздо меньше, чем ролей.
Чтобы "привязать" эти профили к пользователям - нужно создать элементы справочника ГруппыДоступа. В типовых они создаются автоматически, когда вы отмечаете галочками профили для пользователя. Этот справочник соединяет профиль и пользователя(или нескольких пользователей).
При записи этого элемента справочника система автоматически добавляет роли (из профиля) в роли пользователя. Поэтому не стоит напрямую редактировать роли в конфигураторе, как раньше - при редактировании прав в Предприятии все роли в конфигураторе будут обновлены на роли из профилей пользователя. Кроме того, будет наблюдаться явное противоречение между набором профилей с ролями и ролями, установленными в конфигураторе.
Как хранятся роли в Профиле групп доступа, спросите вы. Ведь роли - это объекты МД, это не ссылочные типы. Отвечаю - для этого(и не только) разработчики создали служебный справочник ИдентификаторыОбъектовМетаданных, в котором хранится( в иерархии!) имена, синонимы, значения пустых ссылок всех объектов МД. Если вы хотите создать Профиль программно и добавить в него роль, то код примерно будет таким:
Но если мы добавили новую роль в конфигурации, то как она попадет в справочник? Хороший вопрос. У справочника ИдентификаторыОбъектовМетаданных есть метод, позволяющий обновлять его данные. это:
Процедуру следует запускать каждый раз, когда вы вносите изменения в метаданные, особенно когда изменяете роли, объекты, связанные с новыми ролями.
Отлично. Роль добавили, идентификаторы обновили.
Но обратная связь не работает - вы в режиме предприятия назначили пользователю профиль( с созданием группы доступа), а роль у пользователя в конфигураторе не добавилась! Что делать?
За синхронизацию ролей/профилей отвечает константа ПараметрыРаботыПользователей. Если роли не обновляются в конфигураторе, следует обновить её значение:
Хорошо, скажите вы. А как быть, если я хочу создать группы доступа программно? Да не вопрос. Единственное ограничение - не допускаются дубли связок Профиль-Пользоваль в группах доступа. Примерный код будет таким:
После выполнения этого кода, если все, что нужно обновлено - типовая конфигурация добавит пользователю роли.
Раз уж пошли по программному пути, вот код, который добавляет пользователя в справочник Пользователи и ПользователяИБ в ПользователиИнформационнойБазы:
Если вы добавляете не программно, то добавлять нужно из режима Предприятия - тогда пользовательИБ у вас сам создатся.
И если раньше, в обычном приложении, достаточно будет добавить польз в конфигураторе - и при заходе в Предприятие, этот польз сам создавался в спр Пользователи, то с управляемым приложением такой фокус не прокатит - система не даст зайти под пользователемИБ, которого нет в справочнике Пользователи.