Автор Тема: Блокировки и режим разделения итогов регистров  (Прочитано 38175 раз)

0 Пользователей и 1 Гость просматривают эту тему.

sv_mikh

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Михайлов Сергей Валерианович
Блокировки и режим разделения итогов регистров
« Ответ #15 : Апрель 19, 2012, 10:44:43 am »
Quote (nodalt)
Дело конечно ваше. Я не убеждаю - вдруг окажется всё это неправдой, я же не разработчик платформы
 Моя цель - узнать истину. Мы приводим аргументы, вы - свои, я - свои. Помоему я привел достаточно примеров и аргументов, кроме того это отрывок кода из лекций преподавателя Учебного центра 1С. Кому как не им верить?

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

nodalt

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Копейкин Дмитрий Николаевич
Блокировки и режим разделения итогов регистров
« Ответ #16 : Апрель 19, 2012, 10:49:03 am »
Основная проблема в том, что нет единого достоверного информационного ресурса.
 Бывает, что со временем решения пересматриваются и преподносятся по другому даже одним и тем же специалистом.
 
Quote (sv_mikh)
За время подготовки с таким вариантом очистки движений я столкнулся впервые

 Да я сам всегда подругому решал. Так тоже никогда не делал smile Это и обидно, что не знаешь как правильно в конечном счете.


crabzzy

  • Новичок
  • *
  • Сообщений: 6
  • ФИО: Alexander
Блокировки и режим разделения итогов регистров
« Ответ #17 : Апрель 19, 2012, 12:00:54 pm »
nodalt, sv_mikh,
 Ура!!! Я, кажется, нашёл.

 http://partners.v8.1c.ru/forum/thread.jsp?id=724841#739246

 В примере, прилагаемом к новой книге по 8.2, описывается новая конструкция на стр. 320:

 Движения.ТоварныеЗапасы.БлокироватьДляИзменения = Истина;

 Аналогично ли это полной блокировке пространства имен блокировки "РегистрНакопления.ТоварныеЗапасы"? Если нет, то в чем отличие?
 Ответить«« Действия

 Re: Нужно пояснение по свойству набора записей БлокироватьДляИзменения    30.09.2009 22:02 Нуралиев Сергей (1С, Москва)
 725084
 Это свойство обеспечивает блокировку в пространстве регистра по тем комбинациям измерений, которые записываются в наборе записей.

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

 Это применяется в методике, когда проверка остатков выполняется после записи движений. Тогда мы сначала записываем движения с установкой БлокироватьДляИзменения, а потом проверяем остатки запросом.

 Можно посмотреть в демо-конфигурации в документе РасходТовара.

 ========

 Re: Нужно пояснение по свойству набора записей БлокироватьДляИзменения    12.11.2009 21:35 Нуралиев Сергей (1С, Москва)
 2,0 739246
 Логика такая (случая для управляемого режима блокировок и включенного
 в метаданных и в ИБ разделителях итогов):

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

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

 То есть:
 - разделитель итогов обеспечивает отсутствие необходимости
 блокировки при записи наборов
 - а свойство БлокироватьДляИзменения заменяет явный вызов блокировки из языка,
 если заблокировать нужно именно все комбинации, которые есть
 в наборе записей

 Добавлено (19.04.2012, 11:57)
 ---------------------------------------------
 то есть имхо не нужно писать
 ...БлокироватьДляИзменения = Истина;
 перед записью пустого набора

 Добавлено (19.04.2012, 12:00)
 ---------------------------------------------
 Несколько ссылок на kb.1c.ru:

 Типичные причины неоптимальной работы запросов и методы оптимизации:
 http://kb.1c.ru/articleView.jsp?id=44#vtable_join

 Типичные причины избыточных блокировок и методы оптимизации:
 http://kb.1c.ru/articleView.jsp?id=45

 Блокировки данных в 1С:Предприятии 8
 Автор: Белоусов Павел (Альтер Лого, Москва)
 http://kb.1c.ru/articleView.jsp?id=30
« Последнее редактирование: Апрель 19, 2012, 12:01:38 pm от Alexander »

sv_mikh

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Михайлов Сергей Валерианович
Блокировки и режим разделения итогов регистров
« Ответ #18 : Апрель 19, 2012, 12:09:40 pm »
Quote (crabzzy)
то есть имхо не нужно писать
 ...БлокироватьДляИзменения = Истина;
 перед записью пустого набора

 Вроде как с этого и начали. Комбинация Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина; Движения.ОстаткиНоменклатуры.Записть() бессмыслена?

crabzzy

  • Новичок
  • *
  • Сообщений: 6
  • ФИО: Alexander
Блокировки и режим разделения итогов регистров
« Ответ #19 : Апрель 19, 2012, 12:24:02 pm »
sv_mikh
 ну вроде да, установление флажка бессмысленно,

 а пустой набор, да, может быть, надо писать (если в задаче требуется)
 ну это я для тех, кто заглянет, написал
« Последнее редактирование: Апрель 19, 2012, 12:24:18 pm от Alexander »

Gyd

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Блокировки и режим разделения итогов регистров
« Ответ #20 : Апрель 19, 2012, 01:03:51 pm »
В общем понятно, что ничего не понятно smile ладно, скоро выясним.

nodalt

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Копейкин Дмитрий Николаевич
Блокировки и режим разделения итогов регистров
« Ответ #21 : Апрель 19, 2012, 02:28:25 pm »
crabzzy, спасибо за информацию, и всё что вы написали это верно, и всё это используется (в своих конкретных случаях - своя блокировка).
 Тем не менее, как быть в ситуации описанной мною, точнее моим аппонентом в сообщении №9? Я думаю, что изначальный код правильный. Нам же надо как-то блокировать итоги по "старым" записям документа в момент перепроведения, чтобы регистр не ушёл в минус.
 В общем Gyd, будь добр, проясни эту ситуацию, будем очень признательны smile
« Последнее редактирование: Апрель 19, 2012, 02:30:43 pm от Копейкин Дмитрий Николаевич »

crabzzy

  • Новичок
  • *
  • Сообщений: 6
  • ФИО: Alexander
Блокировки и режим разделения итогов регистров
« Ответ #22 : Апрель 19, 2012, 02:33:38 pm »
nodalt
 я думаю, пока транзакция (проведение) не закончится,
 таблица итогов не будет пересчитана, в смысле любые параллельные транзакции обращаясь к итогам, не увидят тех ресурсов, которые освободились при записи пустого набора данных (того стула свободного не увидят они). Поэтому можно не блокировать на пустой набор записей (ведь измерений там нет и управляемая блокировка наложена не будет), то есть мне кажется, оппонент на другом форуме (не partners.v8.1c.ru, случайно?) не прав.
« Последнее редактирование: Апрель 19, 2012, 02:33:56 pm от Alexander »

nodalt

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Копейкин Дмитрий Николаевич
Блокировки и режим разделения итогов регистров
« Ответ #23 : Апрель 19, 2012, 03:10:30 pm »
Quote (crabzzy)
таблица итогов не будет пересчитана, в смысле любые параллельные транзакции обращаясь к итогам, не увидят тех ресурсов

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

crabzzy

  • Новичок
  • *
  • Сообщений: 6
  • ФИО: Alexander
Блокировки и режим разделения итогов регистров
« Ответ #24 : Апрель 19, 2012, 05:14:40 pm »
мне кажется, если данные были в базе до начала транзакции, то их видно всем транзакциям, даже параллельным,

 поэтому если было 10 гвоздей и начали их продавать две транзакции почти одновременно, то мы ставим упр.блокировку (или БлокироватьДляИзменения = Истина, если есть что-то в наборе данных Движения.<>), чтобы одна из них не выполняла свои действия, и "забила" на 10 гвоздей, т.к. первая транзакция ещё не закончила работу с ними

 а если допустим было 0 гвоздей до начала обоих транзакций (проведений), то первая транзакция решила продать вместо гвоздей гайки и поставила блокировку на гайки, и очистила движения по гвоздям и продолжила работу, а вторая транзакция так и видит 0 гвоздей и ничего сделать с ними не может, то есть пока первая транзакция не закончится успешно или не успешно, если успешно, то увидит сколько-то гвоздей, которые ошибочно были проданы вместо гаек
« Последнее редактирование: Апрель 19, 2012, 05:15:35 pm от Alexander »

sv_mikh

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Михайлов Сергей Валерианович
Блокировки и режим разделения итогов регистров
« Ответ #25 : Апрель 19, 2012, 05:17:24 pm »
Quote (crabzzy)
мне кажется, если данные были в базе до начала транзакции, то их видно всем транзакциям, даже параллельным,

 поэтому если было 10 гвоздей и начали их продавать две транзакции почти одновременно, то мы ставим упр.блокировку (или БлокироватьДляИзменения = Истина, если есть что-то в наборе данных Движения.<>), чтобы одна из них не выполняла свои действия, и "забила" на 10 гвоздей, т.к. первая транзакция ещё не закончила работу с ними

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


 В УЦ3 у Дмитрия Гончарова есть курс по всем этим делам... Тут "мне кажется" не поможет. Нужно из первоисточников узнавать.

crabzzy

  • Новичок
  • *
  • Сообщений: 6
  • ФИО: Alexander
Блокировки и режим разделения итогов регистров
« Ответ #26 : Апрель 20, 2012, 12:31:51 pm »
новая ссылка по обсуждению

 http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=593686

sv_mikh

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Михайлов Сергей Валерианович
Блокировки и режим разделения итогов регистров
« Ответ #27 : Апрель 20, 2012, 12:54:52 pm »
Quote (crabzzy)
новая ссылка по обсуждению

 http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=593686

 Нда... Процесс познания неостановим... Все ли мы знаем? Это знает только Сергей Нуралиев.

nodalt

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Копейкин Дмитрий Николаевич
Блокировки и режим разделения итогов регистров
« Ответ #28 : Апрель 20, 2012, 03:51:33 pm »
crabzzy, раскопали мою переписку ))) Это вы продолжили тему в той ветке?
« Последнее редактирование: Апрель 20, 2012, 03:52:04 pm от Копейкин Дмитрий Николаевич »

old_guest

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Гость
Блокировки и режим разделения итогов регистров
« Ответ #29 : Апрель 23, 2012, 05:04:24 pm »
На сдаче экзамена оба экзаменатора за этот флаг драли. Если в регистре стоит разделение итогов - при очистки движений нужно флаг возводить в ИСТИНА. До экзамена такой же ответ получил от Гилёва ( но без объяснений) =(((. Белоусов объяснял так же, как nodalt .

 Как всё это выглядит технически - НЕПОНЯТНО! wacko Надо смоделировать ситуацию.