Блокировка транзакций 1С

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

Конфликт блокировок в 1С 8.3 и его значение

Для большинства пользователей сообщение о конфликте блокировок 1С означает лишь ошибку, мешающую им выполнять свою работу. Они хотят поскорее избавиться от этой проблемы и осаждают IT-отдел жалобами на то, что «1С не работает».

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

Рис.1 Конфликт блокировок

Причины возникновения ошибок блокировки в 1С

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

Если не брать идеальные варианты, то конфликты блокировок 1С встречаются по следующим причинам:

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

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

  • Неоптимальные запросы;
  • Запрос остатков в начале действий;
  • Непонимание предназначения объектов конфигурации и их неправильное применение;
  • Избыточность заложенных в системе или дополнительно разработанных блокировок.

Как исправить конфликт блокировок в 1С 8.3

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

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

Рис.2 Перевод на ручной режим управления блокировками

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

Быстрое решение конфликта блокировок 1С

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

Для быстрого решения проблемы существуют два пути:

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

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

Выполнение большого количества операций

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

Возможно, это временная ошибка, которая перестанет возникать, когда другой пользователь завершит производить действия в системе. Если эта ошибка появляется часто, то, скорее всего, дело в другом.

Ошибка в конфигурации

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

Кроме ошибок в коде часто встречаются методически неверные решения. Например, партионный учет — он сам по себе подразумевает последовательное проведение документов. Партионный учет можно заменить на РАУЗ — этим Вы серьезно повысите производительность системы.

Как исправить эту ошибку в 1С 8.3?

В любом случае, появление ошибки «Конфликт блокировок при выполнении транзакции» говорит о необходимости инспекции системы, особенно для средних и крупных информационных систем в клиент-серверном режиме работы (MS SQL, PostgreSQL и т.д.). Если это проигнорировать на раннем этапе, возможны необратимые последствия позже, когда работа системы будет особенно важна (в период сдачи отчетности).

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

Другие статьи по 1С:

  • Администрирование
  • Программирование 1С
  • Обучение 1С

Ошибки блокировок 1С. Как исправить конфликт блокировок в 1С 8.3. Как определить уровень изоляции блокировок 1С-запросов?

Содержание
1. Ошибка 1С: “Конфликт блокировок при выполнении транзакции”. В чем причина?
2. Ошибки в 1С из-за блокировок
2.1 Пример необходимой блокировки в 1С
2.2 Пример избыточной блокировки в 1С
2.3 Как избавиться от избыточных блокировок в 1С

Ошибка 1С: “Конфликт блокировок при выполнении транзакции”. В чем причина?

Этот вопрос возник у нас на проекте по внедрению ЗУП2.5 с численностью 20000 и средним количеством одновременных пользовательских сессий 200.
На этапе опытной эксплуатации при расчете зарплаты пользователи начали интенсивно работать с документами «Начисление зарплаты сотрудникам организаций». Объем документов был порядка 2500 строк. У пользователей начали появляться сообщения «Конфликт блокировок при выполнении транзакции», и расчет приходилось запускать заново.

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

Ошибки в 1С из-за блокировок

Пример необходимой блокировки в 1С

Представим такую ситуацию – есть два документа «Начисление зарплаты сотрудникам организаций», в которых указан одинаковый налоговый период, а на закладке НДФЛ указаны одинаковые сотрудники. Рассмотрим случай, когда блокировка вообще отсутствует. Если последовательно запускать расчет этих документов, то в первом сумма НДФЛ посчитается правильно, а во втором будет равна нулю, т.к. рассчитанный и фактически начисленный НДФЛ на момент проведения второго документа будут совпадать.

Но если запустить эти документы параллельно, то они одновременно начислят НДФЛ, не подозревая о существовании друг друга, и в результате налог удвоится. Если блокировка настроена верно, то первый документ, запущенный на долю секунды раньше второго, успеет первым прочитать и заблокировать данные о фактически исчисленном налоге в регистре «НДФЛ расчеты с бюджетом» по сотруднику Пушкину А.С. Из этого запроса будет видно, что фактический налог за январь пока не начислялся и значит надо выполнить движение по регистру. Блокировка будет отпущена только после завершения записи в регистр. Второй документ, дойдя до запроса чтения фактически начисленного налога будет поставлен системой на ожидание до тех пор, пока первый документ не закончит транзакцию проведения, после чего он прочитает в запросе, что налог уже начислен и движение по регистру выполнять не надо. Это необходимая блокировка.

Конечно, этот пример притянут за уши для простоты объяснения. На самом деле логика ЗУП 2.5 такова, что для задвоения НДФЛ пользователям не нужно прикладывать особых усилий. НДФЛ рассчитывается до проведения документа, а при проведении содержимое табличной части просто заносится в регистры без всякой проверки. Пользователям между расчетом и проведением предоставляется возможность посмотреть будущий результат и при необходимости поправить руками. Конечно это большой плюс в пользу гибкости ЗУПа, но предъявляет высокие требования к профессиональному уровню расчетчиков. Поэтому вопрос предотвращения задвоения НДФЛ решается организационным путем или с помощью дополнительных проверочных отчетов. Конечно, в ЗУП2.5 есть регистры, которые рассчитываются и записываются одновременно при проведении документа, например «НДФЛ к зачету», но этот пример пришлось бы дольше объяснять ;).

Пример избыточной блокировки в 1С

А теперь представим другую ситуацию. При проведении документа выполняется запрос, который должен отобрать документы, в которых присутствует сотрудник из этого документа. Но запрос написан так, что сервер SQL вынужден находить нужные документы методом перебора. Для технических специалистов это означает, что вместо CLUSTERED INDEX SCAN выполняется TABLE SCAN, т.е. вместо сканирования таблицы индексов происходит сканирование самой таблицы. Причем в процессе перебора блокируются все записи, к которым прикоснулся запрос, даже те, в которых не присутствуют искомые сотрудники. И эта блокировка будет действовать до конца завершения проведения документа, что будет препятствовать параллельному проведению документов с другими сотрудниками. Это избыточная блокировка.

Как избавиться от избыточных блокировок в 1С

Лечение избыточных блокировок может идти двумя путями. Первый — это оптимизация запросов, выполняемых внутри транзакций и добавление необходимых табличных индексов в конфигураторе. Второй — это перевод выполнения SQL-запросов на более низкий уровень изоляции, когда при выполнении запросов записи в таблицах блокируются только на момент выполнения самого запроса, либо не блокируются вовсе. А необходимые блокировки устанавливаются средствами объекта «БлокировкаДанных» и выполняются на стороне сервера 1С.

Теперь немного теории про уровни изоляции на SQL сервере:

1. В автоматическом режиме в транзакциях используется уровень изоляции SERIALIZABLE. Этот уровень накладывает блокировки типа X (запрещает чтение и запись) до конца транзакции на все данные, которых коснулись запросы или произошла запись данных.

2. В управляемом режиме в транзакциях используется уровень изоляции ReadCommitted. Этот уровень на записанные данные также устанавливает блокировки типа X до конца транзакции. Но при выполнении запросов на данные накладывает блокировки типа S (запрещает запись и проверяет нет ли в этот момент параллельных записей), при завершении запроса блокировки снимаются не дожидаясь завершения транзакции.

3. Если база данных переведена в режим ReadCommitted SNAPSHOT, то в управляемом режиме при чтении данных не накладывается блокировка типа S, есть только блокировка типа X при записи.

Тоже самое чуть более подробно в таблице:

Обычно лечение начинают с понижения уровня изоляции, т.к. это не особо трудозатратно и дает быстрый результат. Достаточно перевести конфигурацию из «Автоматического» режима управления блокировкой данных в «Управляемый», и транзакции начнут выполняться на уровне изоляции типа ReadCommitted, вместо SERIALIZABLE или Repeatable Read.

Чтобы переключить базу данных в режим READ COMMITTED SNAPSHOT (RCSI) необходимо в «SQL Server Management Studio» в свойствах базы данных установить параметр «Is Read Committed Snapshot On» в значение «True»:

В некоторых источниках предлагают установить параметр «Allow Snapshot Isolation» в значение «True», но в этом нет необходимости, т.к. это приведет к включению другого режима изоляции SNAPSHOT, который не поддерживается платформой 1С (На момент написания статьи релиз платформы 8.3.9).

Режим управления блокировкой данных задается для неявных транзакций, которые выполняются при записи или при проведении документов, т.е. внутри предопределенных процедур типа ПриЗаписи() или ОбработкаПроведения(). Но большинство «тяжелых» вычислений в типовой конфигурации ЗУП2.5 происходит при выполнении команды «Рассчитать». При этом в модуле объекта запускается процедура РассчитатьВсе(), внутри которой неоднократно повторяется конструкция НачатьТранзакцию() …ЗафиксироватьТранзакцию(). Это явно указанные транзакции, внутри которых происходит запись и очистка регистров и выполняются запросы. Нам необходимо убедиться, что при переключении конфигурации в управляемый режим в процедуре «РассчитатьВсе()» транзакции также начинают выполняться на уровне ReadCommitted.

Для этого проведем небольшой эксперимент:

• Запустим SQL Server Profiler.

• Запустим «NEW TRACE».

• Выполним подключение к серверу SQL.

• В окне «Trace Properties» на закладке «General» выберем «Use the template» = «Blank», а на закладке «Events Selections» раскроем группу «Stored Procedures» и выберем «RPC:Complited». По кнопке «Column Filters» укажем имя базы и длительность выполнения запросов более 1.


• Кнопку RUN пока нажимать не будем, т.к. нам надо сначала запустить базу данных в режиме отладки и остановить выполнение расчета документа «Начисление зарплаты сотрудникам организаций» перед выполнением самого массивного запроса. Например, это будет команда

«Результат = Запрос.ВыполнитьПакет();» в функции «ПолучитьДанныеНДФЛПоРегистратору» в общем модуле «ПроведениеРасчетов». Здесь происходит выполнение основного запроса для расчета НДФЛ. Поставим на ней точку останова отладчика и запустим расчет в документе.

· После того как отладчик остановится, нажмем кнопку RUN в Профайлере.

· Теперь сделаем один шаг в отладчике кнопкой F11. Когда запрос будет выполнен и отладчик перейдет на следующий шаг, остановим чтение Профайлера кнопкой «Pause Selected Trace».

· Теперь найдем самый длительный запрос по колонке Duration и внимательно изучим текст запроса. Если при обращении к реальной (а не временной) таблице после слова WITH стоит SERIALIZABLE, то мы имеем дело с автоматическим режимом блокировки. Если ничего не стоит – то с управляемым.

Если в хинте запроса (Hint – это параметр после слова WITH, позволяющий влиять на план выполнения запроса) не указан уровень изоляции, то выполняется уровень изоляции, установленный по умолчанию для текущей SQL-сессии. Определить уровень изоляции, действующий по умолчанию для текущих сессий можно в «SQL Server Management Studio» с помощью команды

SELECT CASE transaction_isolation_level

WHEN 0 THEN ‘Unspecified’

WHEN 1 THEN ‘ReadUncommitted’

WHEN 2 THEN ‘ReadCommitted’

WHEN 3 THEN ‘Repeatable’

WHEN 4 THEN ‘SERIALIZABLE’

WHEN 5 THEN ‘SNAPSHOT’ END AS TRANSACTION_ISOLATION_LEVEL

FROM sys.dm_exec_sessions

В управляемом режиме для всех сессий будет указан режим ReadCommitted.

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

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

Настройка управляемых блокировок – это тема для отдельной статьи. Вкратце скажу, что программно управляемые блокировки устанавливаются с помощью объекта «БлокировкаДанных». Сами управляемые блокировки работают уже не на уровне SQL сервера, как в случае с автоматическими блокировками, а на уровне сервера 1С. Для определения необходимых и достаточных управляемых блокировок надо понимать логику программы одновременно на уровне бизнес-процессов и на уровне архитектуры таблиц СУБД.

Но на мой взгляд, для таких конфигураций, как ЗУП2.5 вообще нет смысла использовать какие-либо блокировки, лучше использовать проверочные отчеты для выявления нарушения целостности данных — на практике это самый быстрый способ расчета зарплаты. Особенно на крупных предприятиях, где точно есть сотрудники с внутренним совмещением в обособленных подразделениях, а за каждым ОП закреплен отдельный расчетчик, что и является причиной задвоения НДФЛ. Какой бы не был вышколенный персонал, сама идеология конфигурации допускает возможность задвоения НДФЛ. Поэтому лучше не мешать пользователям работать параллельно во время массированных месячных расчетов, а по завершении точечно и быстро исправить небольшой процент ошибок, чем заставлять их сидеть и нервничать в очереди из-за страха допустить хотя бы одну ошибку. В этом проекте мы использовали самописный отчет «Проверка НДФЛ», который отображал сотрудников с некорректным НДФЛ.

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

Валерий Федоров

Руководитель проектов ООО “Кодерлайн”

Часто встречающиеся ошибки 1С и общие способы их решения

В информационных базах на платформе 1С могут возникнуть множество различных ошибок:

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

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

Во-первых, стоит задать несколько уточняющих вопросов пользователю:

1) Релизы платформы/конфигурации.

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

3) Как давно возникла и при каких обстоятельствах появляется. Не воспроизводимые ошибки, которых мы ранее не встречали, мы наврядли сможем исправить.

4) Возникает ли если запустить 1с с другого компьютера/от другого пользователя? Это даст нам пищу для размышлений – сможет ли помочь очистка кэша, настройка прав, или очистка настроек пользователя.

Теперь немного о самих ошибках и том как их решать.

Общее:
Часть ошибок возникает при использовании нелицензионного ПО (windows, 1C и т.д.).

Распространенный пример – ломаная платформа. Один из патчей взламывает конкретную версию платформы, поэтому после установки новой версии платформы и попытке зайти в базу можно увидеть окно «Не обнаружено свободной лицензии».

Если Вы встретили ошибку в первый раз — возможно, кто-то уже ее встречал —

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

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

Актуальный релиз платформы — у каждой конфигурации написано, какой релиз платформы рекомендован для работы с этой конфигурацией.
Технологический журнал позволяет протоколировать все события 1С:Предприятия (или часть, используя фильтр).
Про него можно прочитать и .

!!!ВАЖНО

Перед любыми действиями с базой — сделать архивную копию!

Если база не открывается в конфигураторе — скопировать папку с базой и выполнять все операции на копии!

1) База вообще не открывается ни в пользовательском режиме, ни в конфигураторе.

  • Самое быстрое, что можно сделать — очистить временные файлы (удалить базу из списка баз и подключить заново)
    Это действие не удалит временные файлы (кэш), а создаст новую папку для временных файлов базы, удалить файлы можно:
    В Windows 7 в C:\Users\Имя_Пользователя\AppData\Roaming\1C\1Cv8x
    В Windows XP C:\Documents and Settings\Имя_Пользователя\Application Data\1C\1Cv8х
  • Также можно попытаться зайти в базу от другого пользователя.
  • Если база sql-ная то тестирование средствами sql.
  • Если ни то ни другое не помогло, то можно обновить платформу (см. под какой платформой работает релиз)
  • Если не получилось ничего из перечисленного, можно воспользоваться программкой Tool_1CD.

2) Если база при запуске уходит в дамп.

  • Отключить аппаратное ускорение видеокарты:

В Windows XP:

  1. Откройте свойства экрана. Это можно сделать через Панель управления, или просто щелкнув правой кнопкой мыши по любому месту рабочего стола, свободному от окон и значков, и выбрав пункт контекстного меню «Свойства».
  2. В открывшемся окне настройки дисплея перейдите на закладку «Параметры» и нажмите кнопку «Дополнительно».
  3. В открывшемся окне свойств видеокарты перейдите на вкладку «Диагностика».
  4. Передвиньте движок «Ускорение» в крайнюю левую позицию («нет») и нажмите «Применить» или «Ок». Аппаратное ускорение отключено. Изменения вступят в силу после перезагрузки системы.

В Windows 7:

  1. Откройте Панель управления (Пуск — Панель управления).
  2. Найдите и откройте элемент «Экран».
  3. В левой части открывшегося окна щелкните по ссылке «Настройка параметров экрана».
  4. В открывшемся окне нажмите на ссылку «Дополнительные параметры».
  5. Перейдите на вкладку «Диагностика» и нажмите кнопку «Изменить параметры».
  6. В открывшемся окне передвиньте движок в крайнее левое положение («нет») и нажмите «Ок». Если UAC включен, придется подтвердить, что изменения санкционированы пользователем. Аппаратное ускорение отключено. Изменения вступят в силу после перезагрузки системы.

В Windows 7 в некоторых случаях кнопка «Изменить параметры» будет неактивна. В этом случае отключить аппаратное ускорение невозможно, так как видеокарта и ее драйвер не поддерживают манипуляции аппаратным ускорением.

Подробнее: http://www.kakprosto.ru/kak-2210-kak-otklyuchit-apparatnoe-uskorenie#ixzz331zNZKaX

  • Если антивирус Касперский, то можно попробовать отключить самозащиту и переименовать файлы kloehk.dll и mzvkbd3.dll в папке Касперского. (Ошибка возникала на старых версиях 2011 года, но еще иногда встречается)
  • Проверить соответствие релиза платформы/конфигурации.
  • Попробовать зайти в базу с другой платформы.

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

  • Очистка временных файлов
  • Попытка зайти за другого пользователя
  • chdbfl / тестирование средствами sql
  • Тестирование и исправление ИБ:
    В конфигураторе Администрирование-Тестирование и исправление – галочки в зависимости от ситуации.
  • Выгрузка в *.dt и загрузка в «чистую» базу
  • Попробовать создать др. пользователя с полными правами и зайти от него.
  • Попробовать перенести на другой ПК и открыть там, может что-то с ПК.

4) При каком-то действии выкидывает на код в конфигуратор.

  • Для проверки стоит очистить кэш.
  • Если не помогло то скорей всего ошибка в коде — особенно актуально для нетиповых и самописных конфигураций, но встречается иногда и в типовых.

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

Если типовая, то возможно ошибка в релизе.

В любом случае стоит пробежать в отладчике и посмотреть что не так.

5) Под одним пользователем дает что-то сделать, под другим нет.

  • Настройки прав пользователей.
  • Настройки пользователя.
  • Очистка кэша.

6) С одного ПК заходит, с другого нет.

  • Проверить в проводнике видит ли базу – может к папке с базой не предоставлен общий доступ.
  • Очистка кэша.
  • Зайти под другим пользователем.

7) Я ничего не делал/делала но у меня все сломалось

  • Если смогут подсказать что именно «не делали» и когда, то можно воспользоваться
  • журналом регистрации с отборами и возможно узнать, в чем проблема.
  • Журнал регистрации можно найти в конфигураторе:
  • Администрирование – журнал регистрации.
    Либо в пользовательском режиме – расположение зависит от конфигурации.

8) Недостаточно памяти.

Был у меня случай, пришел клиент, говорит, при закрытии месяца вылетает ошибка «Недостаточно памяти». Взялся я за эту проблему. Думал, что легко, сначала добавил оперативки — ошибка. Было 2 гигабайта, стало 4, а все равно 1с-ке мало. Размер файла подкачки менял — ошибка, переустановка системы (поставил Windows 7) дало только временный результат, где-то на неделю. Перепробовал все. Спустя некоторое время решение было найдено.

Решение

На клиентском компе запустить командную строку от имени администратора, прописать там следующее:

BCDEdit /set increaseuserva xxxx — вместо хххх пишите объем виртуального адресного пространства в мегабайтах, т.е. сколько нужно памяти под работу приложений. По умолчанию 2 гига. Вообще в 32-разрядных операционных системах выделяется 4 гигабайта: 2 — на приложения и 2 на нужды самой ОС. Я выбрал 3000 (т.е. CDEdit /set increaseuserva 3000). Однако система может подглючивать. Особенно, если у вас 2 гига оперативки, как у меня. Это для ОС семейства Windows Vista, 7, Windows 2008.

Для Windows XP \ Windows 2003 пишем
/3GB /userva=xxxx (xxxx в МБ в диапазоне 2048 — 3072) в файле boot.ini, рекомендуемый максимум значений userva 2900–3030.

Ссылка на эту ошибку //expert.chistov.pro/public/147631/

9) Элементы форм налезают друг на друга и имеют неправильное расположение.

  • Очистка кэша.

10) Ошибка СУБД Внутренняя ошибка компоненты dbeng8

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

Решение: обновиться до актуального релиза на всех рабочих местах.

Если не помогло, тогда делаем следующее:

  • Тестирование и исправление
    chdbfl
  • Выгрузка в *.dt и загрузка в «чистую» базу

11) Ошибка в платформе 8.3.4.428

  • В версии 8.3.4.428 платформы «1С:Предприятие» обнаружена критичная ошибка, возникающая при реструктуризации данных. Данная ошибка локализована и будет исправлена в следующей версии платформы.

12) Конфликт блокировок при выполнении транзакции:

«Как проверить (восстановить) базу на MS SQL Server средствами сервера
Проверку логической целостности нужно выполнять штатными средствами 1С:Предприятия (Тестирование и исправление ИБ). В случае, если такую проверку не удается выполнить, следует проверить физическую целостность БД средствами MS SQL. Для проверки целостности средствами MS SQL нужно выполнить следующую команду:
Код:
DBCC CHECKDB («»,REPAIR_REBUILD)
Перед выполнением этой команды нужно базу данных перевести в режим «single user»:
Код:
sp_dboption «»,»single user»,true
В процессе работы DBCC CHECKDB могут быть обнаружены ошибки и часть может быть сразу же исправлена. Если ошибки остались, то по всей видимости их нельзя восстановить без потери некоторых данных. В этом случае нужно запустить DBCC CHECKDB с параметром REPAIR_ALLOW_DATA_LOSS (перед запуском желательно сделать копию файлов базы данных).
Код:
DBCC CHECKDB («»,REPAIR_ALLOW_DATA_LOSS)
После выполнения DBCC CHECKDB нужно не забыть вернуться в нормальный режим (выйти из режима «single user»):
Код:
sp_dboption «»,»single user»,false» (Взято с сайта http://1c-esse.buter.ru)

При режиме управления блокировкой данных в транзакции по умолчанию: Автоматический и управляемый возникают ошибки. Почему?

Согласно https://its.1c.ru/db/metod8dev#content:5839:hdoc
1) Существующая блокировка Управляемая <=> Регистр сведений Управляемый режим
Проводится документ например в управляемой транзакции.

Начинаемая транзакция будет выполнена в управляемом режиме

2) Существующая блокировка Автоматическая <=> Регистр сведений Управляемый режим

Начинаемая транзакция будет выполнена в автоматическом режиме

3) Существующая блокировка Автоматическая <=> Регистр сведений Автоматический режим

Начинаемая транзакция будет выполнена в автоматическом режиме

4) Существующая блокировка Управляемая <=> Регистр сведений Автоматический режим

Будет вызвана исключительная ситуация

Фиксирование данных в кэше идет по следующему алгоритму: объект изменения начинает транзакцию со своим типом блокировки, в работающей транзакции, срабатывает подписка на событие и фиксирует изменение в кэш уже в своей блокировке (см пункты выше). Проблема возникает только там, где стоит режим блокировок в начале транзакции «Автоматический» в объектах.
При этом обратите внимание, что вне зависимости от того, какой режим транзакций будет у регистра кэша, будет возникать проблема.
Если регистр кэша будет с автоматическим режимом, то если у объекта источника изменений режим управления транзакциями стоит Управляемый, то будет исключительная ситуация, если же регистр будет на управляемых блокировках, то если у объекта источника изменений режим управления транзакциями будет стоять Автоматический, то транзакция будет так же в автоматической блокировке и вот здесь у Вас проблемы с транзакциями. Что имеем? Без перевода объектов источников изменений в управляемый режим управления блокировками ничего, к сожалению, не решить. Подсистема здесь не играет никакой роли, все транзакции начинаются с объектов конфигурации, а значит нужно менять режим у них.
Как можно выйти из сложившейся ситуации:
1) Регистр сведений внКэшЖурналаРегистрации, должен быть на управляемых блокировках.
2) Оставить регистрацию в настройках подсистемы объектов только с управляемыми блокировками.
3) Постепенно осуществить перевод тех объектов, которые на автоматических блокировках и которые необходимо фиксировать на управляемый режим (объектов и регистров с ними связанными)
4) После перевода на управляемые блокировки включить их в регистрируемые объекты подсистемы.
Хотелось бы подчеркнуть, простыми изменениями подсистемы не обойтись, мы не можем изменить алгоритм работы платформы с блокировками, необходим перевод регистрируемых объектов на управляемые блокировки.

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

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