"Внутренние" блокировки в 1С

В предыдущей статье по "гибким" блокировкам, я пожалуй, не сделал акцент на то ,что блокировки в контексте 1С бываю двух видов. Первый вид - это блокировки данных на уровне SQL Servera. Второй вид - это блокировки объектов 1С (клиентских форм). Хочу исправить свою ошибку и остановиться на описании второго вида блокировок подробнее.

Материал сайта www.softpoint.ru/

В предыдущей статье по "гибким" блокировкам, я пожалуй, не сделал акцент на то ,что блокировки в контексте 1С бываю двух видов. Первый вид - это блокировки данных на уровне SQL Servera. Второй вид - это блокировки объектов 1С (клиентских форм). Хочу исправить свою ошибку и остановиться на описании второго вида блокировок подробнее.

Владимир Сердюк

Для чего вообще 1С реализовала внутренний механизм блокировок ? Ну во-первых для того, чтобы не решать вопрос разрешения конфликтов отображения и записи данных из разных экранных форм одного и того же объекта. То есть предполагается, что если пользователь открыл расходную накладную №5, то никто другой не сможет открыть экранную форму этой накладной, пока он ее не закроет. На попытку открыть документ выведется на экран сообщение «Запись заблокирована». Аналогичные по смыслу сообщения будут выводиться в обработках при попытках изменить объект данных, который заблокирован.Это кстати многие не учитывают в своих обработках.

Давайте теперь попытаемся понять, как устроен механизм «внутренней» блокировки 1С. Ну во-первых, при каждом открытии формы документа создается, если он еще не существует, временный файл 1sjourn.$lk. Размер этого файла всегда 0 и казалось бы в нем вряд ли может быть заложена информация по блокировкам. На самом деле это заблуждение. 1С используя функцию LockFile блокирует конкретный байт в фале указывая тем самым, что тот или иной документ заблокирован. Номер байта соответствует Row-Id(первичный ключ) данного документа. Перед открытием формы или исполнением метода объекта 1С пытается заблокировать байт. Если попытка проходит, то он остается заблокированным до завершения операции, если же нет - то выдается соответствующее сообщение.

Вот простейший пример на Delphi отображения заблокированных объектов в 1С.

procedure TForm1.Button1Click(Sender: TObject);
var

i : integer;
begin
h:=FileOpen('d:ПроверкаКонфликтов1sjourn.$lk',fmOpenRead+fmShareDenyNone);
showmessage(inttostr(h));
for i:=0 to 10000 do
if LockFile(h,i,0,1,0) then
begin
UnlockFile(h,i,0,1,0);
end
else
begin
Memo1.Lines.Add(IntToStr(i)+' - Locked');
end;
FileClose(h);
end;
Для того чтобы понять, какой у документа номер и вид для этого достаточно выполнить простейший select. SELECT IDDOCDEF AS ТипДокумента, IDDOC AS ВнутреннийИдентификатор, DOCNO AS НомерДокумента
FROM _1SJOURN
WHERE (ROW_ID = @i)

Где @i это номер байта полученный вышеописанной процедурой.

Для справочников это будет файл не 1sjourn.$lk а scXXX.$lk где ХХХ – внутренний идентификатор объекта метаданных.

Также нужно отметить, что блокировку установить или снять в пределах своей сессии можно с помощью метода Блокировать(). Значение, которое возвращает этот метод собственно и указывает на то, заблокирован он или нет. Нужно отметить, что пример приведенный на Delphi, гораздо производительней, т.к. в этом случае не нужно открывать выборку данных и проверять каждый элемент на блокировку, а достаточно лишь взять заведомо заблокированные байты и сопоставить их объектам данных в 1С.

Возникает вопрос: а можно ли снимать блокировки не из своей сессии, и что произойдет, например, если мы попытаемся удалить файл 1sjourn? Сразу нужно отметить, что просто так удалить нам его не удастся, если он задействован хотя бы в одном сеансе 1С. Даже если мы возьмем и удалим все хэндлы на него и затем удалим его, то и в этом случае нас постигнет неудача т.к. в этом случае при обращении ко всем документа будет появляться надпись «запись заблокирована». Косвенные причины этого понятны, неудача в LockFile(h,i,0,1,0) ,а в данном случае хэндл теряется, 1С интерпретируется как блокировка объекта. И даже если мы создадим заново этот файл, то блокировок не будет только у тех клиентов, которые загрузили 1С после создания файла. Скорее всего, это происходит потому, что 1С хранит в локальной переменной информацию об открытии файла. Если он уже открывался, то 1С не пытается за нового его открыть и получить новый хендл. Однако принципиальная возможность создания такого менеджера управления блокировками существует(возможно, он уже и написан).

При использовании материалов данной статьи обязательна ссылка на информационный ресурс и автора статьи.

Начать дискуссию

Экономика России

Набиуллина: ключевая ставка 16% может держаться до конца года

Сейчас Центробанк не видит устойчивой дезинфляции, при которой возможен пересмотр ключевой ставки. Спрос все еще опережает возможности производства.

Курсы повышения
квалификации

20
Официальное удостоверение с занесением в госреестр Рособрнадзора

Беременная сотрудница может отказаться от работы и продолжить получать зарплату. 🤰«Ночной бухгалтер» № 1673

Для работодателя беременные сотрудницы представляют довольно проблемную часть персонала. Их почти невозможно уволить и нужно все время балансировать на грани соблюдения интересов сотрудницы и своих собственных. Это удается не всегда.

Иллюстрация: Вера Ревина/Клерк.ру
НДФЛ

Минфин не готов освободить от налога дивиденды на ИИС

Инвесторы будут платить НДФЛ с дивидендов, которые они получили от акций на индивидуальном инвестиционном счете.

Лучшие спикеры, новый каждый день
Банки

ЦБ повысит надбавки по необеспеченным потребительским кредитам

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

Банки

Сбер переведет заблокированные активы на отдельное юрлицо

До 31 декабря 2024 года подсанкционные банки имеют право перевести заблокированные активы и обязательства перед иностранными кредиторами на новую компанию.

Общество

Министр труда: в регионах злоупотребляют материнским капиталом

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

Опытом делятся эксперты-практики, без воды
Законопроекты

В России могут ввести программу «Сельскохозяйственный гектар»

Зампредседателя Госдумы Ирина Яровая предложила сформировать специальную программу «Сельскохозяйственный гектар».

CRM

👩‍💻Популярные CRM для бухгалтерского аутсорсинга. Опрос

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

2
Банки

Суд начал принудительную ликвидацию банка «Стрела»

В ходе ликвидации вкладчики и кредиторы получат свои средства. Процедуру будет проводить Агентство по страхованию вкладов.

Я руководитель, который никогда не уйдет от микроменеджмента, плохо это или хорошо. Интервью с Мариной Снеговской

Издатель «Клерка» Марина Снеговская рассказала о работе редакции, о том, чем не может пожертвовать «Клерк» и причем тут вечная гонка.

Я руководитель, который никогда не уйдет от микроменеджмента, плохо это или хорошо. Интервью с Мариной Снеговской
12

У ИП личные и предпринимательские налоги идут на одном ЕНС

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

Обзоры новостей

⚡️ Итоги дня: жительница Великобритании приютила 74 детей, уборку улиц доверят роботам, а в Крым пришли дожди с песком

Подготовили обзор главных событий дня — 26 апреля 2024 года. Все самое интересное, что писали и обсуждали в сети, в одной подборке.

Миникурсы, текстовые и видеоинструкции для бухгалтеров
Экспорт

Росфинмониторинг: экспортеры не нарушают указ о продаже валютной выручки

Крупнейшие экспортеры выполняют требования властей в полном объеме и продают выручку по внешнеторговым контрактам на территории РФ.

Фейковых приложений банков стало на 25% больше

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

Налоговикам можно задавать вопросы только про свои налоговые дела, но не про чужие

Абы кому ФНС не дает разъяснения по налогам.

Страховые взносы

Хочу научиться инвестировать в бизнес. Топ–16 площадок и телеграм–каналов для обучения

Финансовое образование (хотя бы на базовом уровне) — это один из первых шагов, которые стоит сделать перед тем, как вкладывать куда-либо деньги. На каких площадках и телеграм-каналах можно научиться инвестировать в бизнес?

Иллюстрация: создано с помощью ИИ OpenAI © Вера Ревина/Клерк.ру
Законопроекты

Губернаторам хотят разрешить продлевать майские праздники

В Госдуме хотят разрешить местным властям давать больше выходных в майские праздники. Но только если большинство жителей поддержит перенос выходных с новогодних праздников.

Менеджмент

Применение метода Критического Пути в управлении проектами

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

Применение метода Критического Пути в управлении проектами
Уведомления о КИК

Физлицам до 2 мая нужно сдать уведомления о КИК

Если не представить уведомление о контролируемой иностранной компании, придется заплатить штраф в размере 500 000 рублей.

Интересные материалы

Как ваши интернет-бухгалтерии уменьшают налог на взносы? Опрос

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