Перевод конфигурации на управляемые блокировки

Работы по переводу конфигурации на управляемые блокировки.

Основные причины перехода на управляемые блокировки:

Стоимость работ:

Типовая конфигурация или с минимум изменений Наличие нетиповых добавленных регистров накопления > 5 шт. Самописная конфигурация
Цена, руб. * 80 000 ₽ 134 400 ₽ 199 500 ₽
Шаблон договора Шаблон договора Шаблон договора

Суть управляемых блокировок

При работе в автоматическом режиме управления блокировкой 1С:Предприятие устанавливает высокую степень изоляции данных в транзакции на уровне СУБД. Это позволяет полностью исключить возможность получения не целостных или некорректных данных без каких-либо специальных усилий со стороны прикладных разработчиков.

Это удобный и правильный подход при небольшом количестве активных пользователей. Цена простоты разработки — некоторое количество избыточных блокировки на уровне СУБД. Эти блокировки связанны как с особенностями реализации механизмов блокировок в самой СУБД, так и с тем, что СУБД не может учитывать (и не учитывает) физический смысл и структуру объектов метаданных 1С:Предприятия.

При работе с высокой конкуренцией за ресурсы (большое количество пользователей) в какой-то момент влияние избыточности блокировок становиться заметным с точки зрения производительности при параллельном режиме.

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

1С:Предприятияе поддерживает два способа контроля блокировок

После перевода конфигурации в управляемый режим в платформе активизуруется дополнительный функционал «менеджера блокировок» и контроль за целостностью данных осуществляется теперь не на стороне СУБД, а на стороне сервера 1С. Это увеличивает нагрузку на железо сервера 1С (нужны быстрее процессоры и больше памяти), и фактически вносит даже небольшое замедление (несколько процентов), однако куда существенней улучшает ситуацию с блокировками (меньше блокировок за счет блокировок на объект, а не на комбинацию таблиц, меньше область блокирования и в некоторых случаях меньше время жизни блокировок на чтение, т.е. не до конца транзакции). За счет этого общая параллельность улучшается.

Много мебели - перевод на управляемые блокировки

Новые конфигурации фирмы 1С реализованы сразу в управляемом режиме.

 

  • Вопрос: Можно ли сначала сделать аудит, а потом перевод на УБ?

Ответ: Можно, аудит послужит дополнительным обоснованием целесообразности перевода на управляемые блокировки а также оценить вклад автоматических блокировок в общее замедление и нужны ли дополнительные усилия кроме перевода.

 

  • Вопрос: Для перевода на УБ, какой именно нужно предоставить доступ — RDP, TeamViewer ? Или можно вам выслать файл-конфигурации?
Ответ: Мы стараемся не ограничивать одной конкретной технологией удаленного доступа, годится любая технология удаленного доступа. Если для Вас не имеет значения, то практичней RDP. 
Мы можем выполнить оптимизацию по высланному файлу конфигурации, но тогда не сможем отладить некоторые реальные данные и Вам придется внимательней тестировать. Если мы выполняем оптимизацию на копии базы, то мы можем тщательней протестировать, прежде чем передадим Вам результат работы.

 

  • Вопрос: У нас 10-ть штатных программистов, которые каждый день что-то изменяют в конфе. Используется общее хранилище конфигурации». Как будет организовано взаимодействие при переводе на УБ ? Или всех программистов нужно отправлять в отпуск?

Ответ: Как правило наши изменения делаются в течении пары дней. Остальное время приходится на тестирование внесенных изменений, в том числе с точки зрения требуемой логики определяемой бизнесом а не техническими соображениями. Мы можем внести изменения в отдельный файл конфигурации cf , а затем Ваш программист внесет в хранилище. В отпуск ни кого отправлять не придется. В других вариантах взаимодействия надо просто договорится какие объекты планируют захватить Ваши разработчики, чтобы мы выстроили план работ, удобный обеим сторонам. Как правило целиком конфигурацию захватить Вашим разработчикам не требуется, либо отдадите на день нам «руль».

 

  • Вопрос: Для всех ли объектов метаданных будет произведен перевод на управляемые блокировки?

Ответ: Конфигурацию будет полностью работать в управляемом режиме блокировок. Подробности вы можете прочитать в книге 1С:Эксперта по технологическим вопросам». Изд. 2. Серия «1С:Библиотека специалиста по внедрению». Филиппов Е.В. и статье ИТС https://its.1c.ru/db/metod8dev#content:5839:hdoc

 

  • Вопрос: Как вы поймете в каком случае нужно включать блокировку, а в каком нет? (не хочется получить ошибки в учёте).

Ответ: С точки зрения работы пользователей конфигурация свое поведение изменить не должна. Есть очевидные для программиста вещи по наложению блокировок, в том числе оперируя понятиями «избыточных» и «необходимых» блокировок. Необходимые блокировки программист оставляет. Избыточные старается убрать. Примеры устранения избыточных блокировк изложены в статье ИТС https://its.1c.ru/db/metod8dev/content/5841/hdoc. Другим объектом внимания является констуркция в запроса «ДЛЯ ИЗМЕНЕНИЯ». Если в варианте кода с автоматическими блокировками использовался запрос с флагом «ДЛЯ ИЗМЕНЕНИЯ», и этот запрос выполнялся в транзакции с дальнейшим контролем остатков по полученным в результате выполнения запроса данным — для всех затрагиваемых наборов измерений должна быть явно создана управляемая блокировка.
Если запрос с флагом «ДЛЯ ИЗМЕНЕНИЯ» использовался вне рамок транзакции и без дальнейшего контроля остатков (например, чтобы избежать ошибок «грязных чтений», они же dirty reads), то дополнительные изменения в данном случае не требуются, в режиме управляемых блокировок ошибок «грязных чтений» и так не будет.
Кроме того, если при контроле остатков у программиста возникает вопрос, а нужно ли бизнесу здесь блокировать остатки, то он задаст этот вопрос Вам. Например если вы торгуете в минус, то в отдельных случаях блокировку можно не накладывать. Если же важнее порядок в базе, а не продажа товара, даже если он не оформлен, то в этом случае надо накладывать блокировку.
После передачи Вам кода ваша сторона тестирует ключевые операции и только после этого применяет в продуктив.
Все наши правки кода обязательно комментируются единообразно, чтобы можно было единым поиском по конфигурации быстро найти все затронутые модули и все правки в них.
После этого на тестовой базе с обновлённой конфигурацией контролируется корректность работы механизма управляемых блокировок. Например, один сеанс открывается из отладчика, и у контролируемого документа в конце модуля обработки проведения ставится точка останова, запускается проведение некоего тестового документа, которое должно остановиться на точке останова.
Параллельно открывается второй сеанс, в котором запускается проведение копии этого же документа, в итоге документ во втором сеансе не должен провестись с ошибкой вида «Ошибка при вызове метода контекста (Записать): Конфликт блокировок при выполнении транзакции:
Превышено максимальное время ожидания предоставления блокировки». Эта ошибка как раз говорит о том, что работает механизм управляемых блокировок, не дающий одновременно провести разные транзакции по регистру с одинаковыми значениями измерений, например нельзя одновременно провести две продажи одному контрагенту из-за блокировки на взаиморасчётах, или нельзя одновременно продать одну и ту же товарную позицию с одного склада разным контрагентам из-за блокировки на остатках товаров. Но разные транзакции с разными наборами должны проводиться успешно (то есть, условно, продажа товара А контрагенту Б в одном сеансе, и продажа товара В контрагенту Г в другом сеансе должны одновременно успешно выполняться).
При этом могут быть выявлены другие ошибки, связанные с неоптимальностями кода используемой конфигурации, например из-за особенностей структуры данных или состава индексов или неоптимальности выполняемых в транзакции запросов может оказаться так, что одновременно нельзя продавать разные товары с одного склада, или принимать денежные средства в одну кассу. Такие ошибки напрямую к выполняемым работам не относятся, по каждой такой проблеме может потребоваться дополнительный анализ в рамках отдельных работ.
Обращаем внимание, что перевод конфигурации на управляемые блокировки не является работой по устранению всех проблем с блокировками. Это именно включения режима управляемых блокировок. Может так оказаться в редких случаях что какие то блокировки, мешающие работе останутся. Для решения подобных проблем проводится аудит, и по его завершению предоставляется коммерческое предложение на оптимизацию.
Также обращаем внимание, что например в УТ 10.3 используется алгоритм партионного учета, движения по партиям списываются сразу. Нельзя одновременно сделать движения по партиям в двух документах одновременно. Это не ошибка кода, а особенность алгоритма работы партионного учета. При переводе конфигурации на управляемые блокировки и версионирование, при работе с партиями пользователи смогут их читать (каждый будет работать со своей версией). Однако вопросы записи партий могут потребовать отдельных работ.

 

  • Вопрос: Сколько по факту обычно занимает процесс перевода? Можно ли уложиться быстрее чем за количество дней, указанных в договоре?

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

 
 

Еще отзывы о переводе конфигурации на управляемые блокировки:
http://www.gilev.ru/avilon/
http://www.gilev.ru/alina/
http://www.gilev.ru/vodovoz/
http://www.gilev.ru/grandtoys/
 http://www.gilev.ru/7flowers/
http://www.gilev.ru/rusklimat/
http://www.gilev.ru/shkurenko/
http://www.gilev.ru/asmarket/
http://www.gilev.ru/rimera/
http://www.gilev.ru/nelt/
http://www.gilev.ru/bars2/
http://www.gilev.ru/happylook/

Скачать типовой договор по переводу конфигурации на управляемые блокировки.