Подготовка к 1С специалисту и правильные блокировки по регистру бухгалтерии, как #699266


#0 by NcSteel
Вот готовлюсь к сдаче экзамена на Специалиста по восьмерке. И стал вопрос как правильно блокировать регистр бухгалтерии. Зная построение индекса можно предположить , что блокировки по субконто нам ничего не даст, но во всех примерах решения вижу постоянно: Блокировка = Новый БлокировкаДанных; Подскажите и тыкните носом)
#1 by sikuda
Почему не даст? Забыл: ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; БлокировкаДанных.Заблокировать;
#2 by NcSteel
Ну Режим и Заблокировать не включил так как это и так понятно. Ну я размышляю так: Что бы найти записи которые мне следует изменить, необходимо прочитать таблицу. В таблице бухгалтерии индекс строится по Счету и набору измерений - нет субконто. Следовательно придется просмотреть (заблокировать) большой набор записей, а именно по всем видам субконто. Поэтому и вешать блокировку на вид субконто бессмысленно.
#3 by Max Street
субконто и есть измерение на счете. блокировать его нужно
#4 by NcSteel
Субконто это не измерение. Измерение это измерение, например Организация.
#5 by Господин ПЖ
на уровне субд эту блокировку видно? или она объектная
#6 by Дмитрий666
как написано в примерах так и будет правильно, кстати при сдаче спеца по 8 учтывается версия платформы? 8.2 или 8.3? что пишут в сертификат: спец по 8 или спец по 8.3?
#7 by NcSteel
Вот как раз пытаюсь ЦУПом посмотреть, но пока не выходит каменный цветок.
#8 by NcSteel
Имхо но всегда просто пишут v8.
#9 by Новиков
обрати внимание на алгоритмы наложение блокировок в типовой БП. Если аналитика известна в алгоритмах (типо тра-та-та по договору), то блокировка всегда устанавливается. Если тра-та-та по всем договорам - то нет. Как учат нас Отцы, "если можно - всегда сужайте ландшафт блокировок" (с) откуда то из УЦ :) Устанавливай, лишним не будет. Ибо если придерутся, можно всегда отбрехаться :)
#10 by NcSteel
Верить и понимать согласись это разное. Вот я и не понимаю где мы выиграем )))
#11 by МишельЛагранж
Устанавливай, лишним не будет - с какой радости блокировка одного договора не приведет к ступору оформления документов? Вся суть - в самой непродуманной системе блокировок в 1С.
#12 by neckto
Забываешь про таблицы итогов.
#13 by Новиков
в чем проблема проверить ложность своего суждения на практике?
#14 by Господин ПЖ
если дата такая же полностью - не запишется...
#15 by МишельЛагранж
на практике - это в тишине лаборатории "сертификация 1С"? спасибо, у нас своя ... практика. Типовые, так сказать, в действии...
#16 by NcSteel
Вот как раз про таблицы итогов и вспоминаю )
#17 by Reaper_1c
Для тех, кто в танке - управляемая блокировка не имеет отношения к блокировкам уровня СУБД.
#18 by NcSteel
Именно.
#19 by MrStomak
что именно? Она и к индексам отношения не имеет, зачем ты их сюда приплетаешь то? Управляемая блокировка висит в менеджере блокировок в 1с, у блокировок есть пространства, субконто - одно из пространств. В момент наложения блокировки проверяется, существует ли уже такая блокировка на данном пересечении пространств и совместима ли она с накладываемой по типу. Если попытаешься наложить две блокировки на разные субконто - пересечения пространств не будет, если без уточнения субконто - то будет соответствующее пересечение и, как следствие, ожидание.
#20 by MrStomak
Ну и в целом, размышления про индексы в регистре бухгалтерии - неверные.
#21 by NcSteel
Где можно посвятится про доступные пространства в регистрах? Я могу только наблюдать таблицы в СУБД и там мои соображения верны.
#22 by NcSteel
Как определяется сервер 1С какие записи конкретно надо заблокировать. При переборе записей вешает ли сервер 1С блокировки на соседние записи? Вообще механизм блокировок сервером 1С как то до конца не понятен
#23 by Господин ПЖ
на сервере приложений смотреть надо... блокировки субд "мелькнули" и ушли, а объектная осталась
#24 by NcSteel
Проверил.... документы с не пересекающимися данными (субконто номенклатура) не смогли провестись параллельно, вод код блокировки:
#25 by NcSteel
то есть получается блокировка по субконто не сработало? Тогда зачем ее постоянно везде тыкают....
#26 by Господин ПЖ
ну а остальное? у них насколько одинаково?
#27 by Lemkus
Таблица со значениями субконто Индекс: Регистратор + НомерСтроки + Корреспонденция
#28 by NcSteel
Счета учета и все.
#29 by MM
СУБД блокировки на запись всё равно будут жить до конца транзакции, а чтения могут даже не мелькать, а прочитать данные из слепка базы (в 8.3) если в блокировке указать субконто, то ожидания не будет на этапе чтения на сервере 1С, но может возникнуть на этапе записи в СУБД, особенно на итогах  регистра бухгалтерии. В больших транзакциях, иногда, стоит поставить управляемую блокировку на весь регистр, тогда маленькие управляемые блокировки, в оставшейся части транзакции, будут поглощены и не будут занимать ресурсы сервера 1С. Это о больших регламентных документах. кратко в СП. нет, ради этого их и придумали. Управляемые блокировки ставятся на объекты, не обязательно имеющие точный аналог в СУБД, например, субконто.
#30 by NcSteel
Вот блокировка: AccRg212.DIMS Exclusive Correspond=0 Period=[T"20140101000000":+] Splitter=0 Account=196:be8903f8498421f74f0f57e4fbb71b4c ExtDimension1=7:be9650b7c3865d5111e380d0767ff038 ExtDimension2=Undefined, AccRg212.DIMS Exclusive Correspond=1 Period=[T"20140101000000":+] Splitter=0 Account=196:a91f2c27b31cdb6c45fb46b908c6a991, AccRg212.DIMSAUX Exclusive Correspond=0 Period=[T"20140101000000":+] Splitter=0 Account=196:be8903f8498421f74f0f57e4fbb71b4c Интересно что такое DIMSAUX
#31 by MM
база точно клиент-серверная?
#32 by NcSteel
Да
#33 by Lemkus
А режим разделения итогов включен?
#34 by NcSteel
Это тут точно не причем. Сплитер я отключаю через явную упр блокировку.
#35 by NcSteel
Понаблюдал: 1. Если ставить точку останова сразу после установки упр блокировки, то второй документ параллельно спокойно проводится. 2. Если ставить точку останова после явной записи набора записей, то второй документ провестись параллельно не сможет. В чем же разница? )
#36 by MM
так запись ставит блокировки не только управляемые, но и СУБД. Раз разделение итогов не включено, то будет блокировка на таблице с остатками и оборотами счёта.
#37 by MrStomak
Про доступные пространства в регистрах можно просветиться из СП. Управляемые блокировки не ставятся на "переборах данных". Они ставятся в двух случаях - когда ты явно это делаешь, указывая пространства, и при записи объекта или набора записей, пространство определяется исходя из заполненного набора записей. Никаких "соседних записей" в понятии менеджера блокировок 1С нет, если не считать таковыми числа и даты, заданные с помощью объекта "Диапазон". Механизм упр. блокировок очень прост, все эти догадки с блокировками при обходе значений в ходе исполнения запроса и т.д. не имеют к нему никакого отношения.
#38 by Reaper_1c
Суть в том, что блокировки уровня СУБД недоступны разработчику. Они накладываются платформой так, чтобы обеспечить целостность записываемых данных. Правильная последовательность действий: 1. Установка управляемой блокировки, блокировки есть только на уровне сервера 1С, на уровне СУБД - зеленый свет. 2. Алгоритм проведения. Насколько бы он не был сложен и длителен - документы не пересекающиеся по управляемым блокировкам будут отрабатывать параллельно. 3. Запись движений в регистры. В идеале - средствами платформы, без вызова методов "Записать". В СУБД возникают на короткое время блокировки, но области блокирования в разных СУБД будут разными. Ты никак не можешь повлиять на блокировки уровня СУБД. Твоя задача - организовать проведение так, чтобы все движения накатывались в СУБД одним движением, максимально быстро. Хотя я конечно же вру. Повлиять можешь. Но это нужно будет на экзамене Эксперт по ТВКВ, а не на Специалисте.
#39 by Reaper_1c
Ты не прав. На сервере 1С точно так же есть пороги укрупнения блокировок и сам процесс укрупнения. Но это опять таки тема Эксперта по ТВКВ.
#40 by Господин ПЖ
а как записать 1 500 000 записей в РН быстро?
#41 by Господин ПЖ
все встает колом на клиенте на 10 минут и отжирает 10 Гб памяти
#42 by Reaper_1c
А хрен его знает. - Доктор, у меня что-то болит! - Купите таблетки в аптеке... - Какие?! - Какие-нибудь купите...
#43 by MrStomak
Так и не увидел - в чем я же я не прав? Где писал, что нет укрупнений? Укрупнение, которое называется эскалация, есть, но там нет таблиц, нет страниц, там есть только пространства и эскалация идёт по ним. Подчеркну - менеджер блокировок 1с знать не знает, рядом или нет данные расположены на СУБД, он определяет пересечение пространств и всё.
#44 by MrStomak
Блокировки СУБД не накладываются платформной, они накладываются СУБД в соответствии с установленным уровнем изоляции транзакций. И цель этого действия - не целостность записываемых данных, для этого есть механизм транзакций и это достигается без блокировок, а обеспечение определенной степени изолированности текущей транзакции от других транзакций.
#45 by Armando
Сильно быстрее вряд ли получится для 1,5 млн. Скорость записи еще от количества измерений зависит и сколько из них отдельно проиндексированы. А расход памяти оправдан, если эти записи, например, сначала в таблицу значений загружаются. Хз что там у тебя происходит. Попробуй использовать порционное считывание и порционную запись в РН.
#46 by ILM
параллельно пиши в фоновых задачах. Типа допроведения, кусочками.
#47 by Sammo
Если 1 регистратор - то дробить по регистраторам. Когда много регистраторов - фоновые без ожидания. Нюанс - максимальное количество фоновых заданий надо проверять для конкретного сервера - у меня при количестве более 200 фоновых заданий которые активно пишут в РН сервер начинает несколько ... подтормаживать
#48 by Lemkus
Как можно повлиять на блокировки уровня СУБД. Статистики, индексы, овощи, там рожь вот это все?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С