Куперс

Бухучет и анализ

Блокировки 1С

Вопрос:

Блокировка установки соединений с информационной базой в 1С. Как правильно установить и в случае ошибочного ввода времени и дата блокировки соединений снять таковую?

Ответ:

Блокировка установки соединений с информационной базой подразумевает как завершение работы всех активных пользователей (включая того, кто устанавливает блокировку), так и невозможность соединения с ИБ в течении заданного периода для пользователей.

Инициируется блокировка соединений в режиме 1С:Предприятия. Данная обработка может запускаться через меню Операции → Обработки при установленном полном интерфейсе. Также в прикладных решениях чаще всего можно выйти на данную функцию через меню Сервис:

— для 1С:Бухгалтерии 8 это Сервис → Управление пользователями и доступом → Завершение работы пользователей;

— для 1С:Зарплаты 8 это Сервис → Служебные → Блокировка установки соединений с информационной базой.

Обход установленной блокировки соединений:

1). Для входа в обход блокировки используется параметр командной строки /UC <код доступа> (например password1c). При это следует учесть, что если код доступа содержит пробелы, то его необходимо заключить в кавычки. /UC <код доступа> — позволяет выполнить установку соединения с информационной базой, на которую была установлена блокировка. Примерно выйдет следующее:

«C:\Program Files (x86)\1cv82\8.2.17.143\bin\1cv8.exe” ENTERPRISE /F D:\1c\base\ZUP_Demo /UC password1c

2). Но что делать, если пароль забыт или не был установлен? В качестве варианта снятия блокировки соединений можно всего лишь изменить системную дату компьютера (сдвинуть вперед) и зайдя в информационную базу установить новое время и дату, а затем вернуть системные значения на актуальные.

При многопользовательском режиме работы в 1С блокировки данных являются необходимым механизмом. Именно они защищают от ситуаций, похожих на одновременную продажу двумя менеджерами одного и того же товара разным клиентам. В платформе 1С предусмотрено два вида блокировок – управляемый и автоматический. Первый из режимов блокировок в 1С является оптимальным для высоконагруженных систем с большим количеством пользователей. Рассмотрим его подробнее.

Особенности управляемого режима блокировок

В отличие от автоматического, управляемый режим позволяет системе 1С использовать собственный менеджер блокировок и применять менее жесткие правила СУБД. То есть встроенный механизм позволяет учитывать бизнес-логику приложения и более плавно и точно устанавливает ограничения на чтение и запись данных. Смена режима блокировок может дать существенный прирост производительности и позволит сократить количество ошибок блокировок транзакции. Происходит это за счет дополнительной проверки менеджером блокировок на соответствие ограничениям, установленным внутри системы перед тем, как передать запрос СУБД.

Существенный минус заключается в том, что разработчику приходиться самостоятельно контролировать непротиворечивость данных при их вводе и обработке. Вполне вероятно, что после включения режима управляемых блокировок придется написать немало проверок, чтобы достичь прежнего уровня безопасности. Несмотря на это, многие компании предпочитают перейти на управляемый режим, если возможности это позволяют.

При разработке программных проверок и ограничений важно помнить про особенность управляемых блокировок – любая из них держится до конца транзакции. Из этого следует, что программистам надо устанавливать блокировку ближе к концу транзакции, чтобы вероятность ожидания была минимальна. Если вам нужно сделать расчеты и записать их результат, то наложение блокировки правильнее прописать после расчетов.

Еще одной распространенной проблемой блокировок в 1С является импорт документов. Многие разработчики используют достаточно простое решение – при загрузке не проводить документы, а только создавать. А после, с помощью простого механизма, провести все загруженные данные в многопоточном режиме по ключевым характеристикам – номенклатуре, партнерам или складам.

Алгоритм перехода на управляемые блокировки 1С выглядит просто, но неквалифицированный администратор 1С может совершить ошибки, исправить которые будет сложно. Чаще всего бывают проблемы с избыточным или недостаточным уровнем блокировок. В первом случае будут возникать проблемы с быстродействием системы, вплоть до аварийных остановок кластера серверов. Недостаточные блокировки опасны ошибками в учете при одновременной работе пользователей.

Переключение в управляемый режим

Несмотря на то, что ниже будет представлен полный алгоритм перехода на режим управляемых блокировок, выполнять его должен опытный специалист. Если не понимать принципов работы механизма блокировок в 1С и СУБД, то вряд ли получится правильно написать ограничения. Но это относиться к сложным конфигурациям. Для простых конфигураций начинающие разработчики могут успешно закончить процесс переключения режима и набраться опыта:

  • В первую очередь нужно изменить режим управления блокировкой данных для конфигурации. Для этого в конфигураторе откройте дерево конфигурации и в свойствах корневого элемента в разделе «Совместимость» измените режим. Выберите пункт «Автоматический и управляемый», чтобы не возникало ошибок до того, как все объекты будут переведены на новый режим;

Рис.1 Выберите пункт «Автоматический и управляемый»

  • Теперь настает очередь документов. Ведь именно с их помощью мы регистрируем все события, которые нужно контролировать. Начинать перевод на управляемые блокировки 1С нужно с самых загруженных документов. На вкладке «Прочее» указываем режим блокировок «Управляемый»;
  • Находим все регистры, связанные с уже обработанным документом и переводим их в управляемый режим по аналогичному документам методу;
  • Следующий этап включает в себя поиск и изменение всех транзакций с измененными объектами. Сюда входят и явные изменения, включающие ключевые слова «НачатьТранзакцию()», так и все обработчики документов и регистров, включающие транзакции;

НачатьТранзакцию() Для Каждого ДокументНаУдаление ИЗ СпискаДокументов Цикл ОбъектДокумента = ДокументНаУдаление.ПолучитьОбъект(); Попытка ОбъектДокумента.УстановитьПометкуУдаления(Истина); Исключение Отказ = Истина; ОтменитьТранзакцию(); Сообщить(«Не удалось удалить документ » + ОбъектДокумента); Прервать; КонецПопытки; КонецЦикла; ЗафиксироватьТранзакцию();

  • Исключить оператор языка запросов «ДЛЯ ИЗМЕНЕНИЯ». Заменить его можно объектом «БлокировкаДанных» с необходимостью изменить запрос и алгоритм его вызова и обработки.

Последние два этапа являются наиболее сложными и требующими квалификации от разработчика, но именно они являются гарантами поддержания рабочего состояния учета в системе.

Ошибка запрета начала сеанса возникает в файловой и клиент-серверных вариантах информационных баз 1С.

Когда такое сообщение возникает?

Вообще данный механизм предназначен для блокировки входа пользователя в базу на время регламентных работ/

Администратор системы может установить такую блокировку.

Механизм автообновления, выполнения резервного копирования также устанавливает блокировку на время обновления и снимает после его окончания. Иногда обратно он ее не снимает.

Как установить такую блокировку в файловой базе?

В управляемой форме — версия 3.0 Бухгалтерии предприятия, Управление небольшой фирмой или Управление торговлей 11.2

Зайти в меню Администрирование в подраздел «Поддержка и обслуживание», а там нажать на ссылку «Блокировка работы пользователей»

В открывшемся диалоге доступно:

  • Указание сообщения пользователям
  • Установить интервал блокировки
  • Указать код для запуска в обход

После этого система в течении 1-5 минут отключит пользователей от системы.

В клиент-серверной базе

Блокировку можно установить или снять из консоли сервера 1С

  • Пуск\1C Предприятие 8 (x86-64)\ Дополнительно\Администрирование серверов 1С Предприятия
  • В 1CV8 Servers (x86-64)\Central 1C Enterprise 8.3 Server
  • Выбираем наш сервер \Кластеры \Локальный кластер\

Становимся на базу данных – нажимаем правой кнопкой мыши и выбираем «Свойства»:

Устанавливаем флажок «Блокировка начала сеансов включена»

При входе у пользователей будет возникать вот такое сообщение:

1С сама запустится:

  • когда закончится период
  • при снятии блокировки

Как войти в такую базу в момент ее блокировки?

Для того чтобы зайти необходимо запустить 1С с ключем /UC и указать секретный код

Например вот так (я указал этот ключ «Секретный» поэтому его и ввожу):

Варианты альтернативного входа

Если забыли код или забыли внести окончание периода

    • Попробовать запуск с пустым кодом «/UC»
    • Сменить дату на ПК. Например на год назад/код вперед, ели войдет снять блокировку и вернуть время назад
    • Удалить файл 1Cv8.cdn в каталоге базы. Он содержит информацию по блокировке:
  • Для клиент-серверной базы: зайти в свойства базы и снять блокировку там

Случается, что при работе с программой 1С возникает подобная ошибка — ошибка блокировки данных:

Рис.1 Распространенная ошибка

Чаще всего данное предупреждение конфигуратора возникает при выгрузке информационной базы или при обновлении конфигурации 1С. Для того чтобы исправить сложившуюся ситуацию и запустить работу конфигурации, в первую очередь необходимо выяснить причины ошибки исключительной блокировки информационной базы. Это может быть одна из следующих причин:

  • Пользователи не вышли из системы 1С

Для начала необходимо посмотреть все активные сеансы пользователей. Активных пользователей можно посмотреть в конфигураторе 1С так: нажать кнопку Администрирование, затем выбрать Активные пользователи. И попросить их выйти из системы. Также информацию о блокирующих сеансах обычно можно получить из самого окна с ошибкой.

  • У пользователя запущена база 1С, но не введен пароль

В таком случае у пользователя остается висеть подобное окно:

Рис.2 У пользователя запущена база 1С, но не введен пароль

Сеанс такого пользователя найти сложнее, так как он не отображается в окошке Активные пользователи. Более того, информация об ошибке не содержит какой-либо полезной информации:

Рис.3 Информация об ошибки

Такого рода ошибка характерна для файловых информационных баз. Необходимо найти подобные процессы с помощью диспетчера задач, и, используя его же, принудительно их завершить.

  • Зависшие сеансы

Все пользователи вышли, а сообщение об ошибке остается прежним, значит, скорее всего, есть зависшие сеансы. Для таких зависших сеансов требуется принудительное завершение. Это рекомендуется делать аккуратно, прибегая к этому методу только тогда, когда не получаются все остальные.

Способы завершения зависших сеансов в файловом варианте

  • С помощью Диспетчера задач. При завершении сеансов информация у пользователей, работающих в системе, может не сохраниться, и важные данные могут быть потеряны. Завершить сеансы данным способом можно так: вызвать диспетчер задач (Ctrl+Alt+Delete), затем нажать снять задачу, затем завершить процесс. Процессы 1С называются 1cv8.exe или 1cv8c.exe.

Рис.4 Диспетчер задач

  • Перезагрузить сервер, на котором установлена файловая система 1С

Способы завершения зависших сеансов в клиент-серверном варианте

В первую очередь, необходимо попробовать удалить сеансы через консоль администрирования серверов, найдя в ней нужную базу и зайдя в меню Сеансы*.

  • Выделить нужные зависшие сеансы и удалить их через пункт контекстного меню;

Рис.5 Меню Сеансы

*Если в меню Сеансы нет сеансов, их стоит поискать в меню Соединения. И попробовать аналогично удалить.

  • Если не удалось удалить сеансы, используя консоль, то необходимо перезапустить службу Агент сервера 1С:Предприятия 8.3.
  • Если все предыдущие способы не решили проблему и зависшие сеансы так и остались на своих местах, то в качестве крайней меры необходимо перезагрузить сервер.

Зависшие фоновые задания в клиент-серверном варианте

В клиент-серверном варианте частым источником возникновения ошибки исключительной блокировки информационной базы являются повисшие фоновые задания.

Неприятной особенностью этого явления также является и то, что зачастую их очень тяжело удалить. Обычно эти задания можно увидеть в консоли администрирования на вкладке Соединения, но при попытке их удаления они появляются вновь.

Чтобы их удалить можно попробовать следующие способы:

  • Удалить их несколько раз подряд и проверить, не появляются ли они вновь.
  • В свойствах базы установить флаг Блокировка регламентных заданий включена, и после этого еще раз попробовать удалить зависшее задание.

Рис.6 Блокировка регламентных заданий включена

Таким образом, при возникновении такой проблемы, как ошибка исключительной блокировки информационной базы, главным шагом становится выяснение причины возникновения проблемы, поскольку выбор способа ее устранения, в частности, среди описанных в данной статье, зависят от этого. То есть не стоит торопиться перегружать сервер сразу же, для начала надо попробовать решить проблему более «гуманным» образом.

Добавить комментарий

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

Наверх