Имя: Пароль:
1C
1С v8
Вопрос профессионал по техвопросам
,
0 Kashey
 
02.12.18
19:45
Какой вариант верный на ваш взгляд?

9.8 Выберите верное утверждение:
1. Чтение через объектную модель всегда приводит к наложению управляемой блокировки
2. Чтение наборов записей регистров через объектную модель приводит к наложению управляемой блокировки
3. Чтение через объектную модель всегда приводит к наложению объектной блокировки
4. Получение прикладного объекта через ПолучитьОбъект() всегда происходит с использованием объектной блокировки
5. Верны варианты 2 и 4
6. Верны все варианты
1 H A D G E H O G s
 
02.12.18
19:47
На экзамене расскажут
2 Kashey
 
02.12.18
19:48
(1) Дык проф это и есть допуск к экзамену, разве нет?
3 H A D G E H O G s
 
02.12.18
19:50
(2) Аааа, проф, счаст все поменялось.
Госпади, уже 4 года прошло, как сдавал.
4 Kashey
 
02.12.18
19:53
(3) Насчёт варианта 2 уверен. Но в некоторых источниках пишут что ответ 5. Т.ч. сомневаюсь в варианте номер 4
5 rphosts
 
02.12.18
20:01
Как говорит один из преподавателей УЦ№1: есть ответ правильный, а есть ответ лучший.

Если конфигурация работает в режиме автоматических блокировок, то никаких управляемых там быть не должно.
С другой стороны, скорее всего проверку теста будет делать программа на основе тго что в неё заложили... если заложили с ошибками - правильным для неё будет не тот ответ что реально правильный.
6 Kashey
 
02.12.18
20:05
(5) Из контекста я понял что речь про упр. блокировки, про автоматические нигде не упоминается...
А вот насчет объектных блокировок непонятно.
7 xXeNoNx
 
02.12.18
20:08
Я за ответ N5
8 Kashey
 
02.12.18
20:32
(7) А почему?

Я насколько понял, объектные блокировки - это про интерактивное изменение объектов. В коде есть метод объекта Заблокировать(). Т.ч. не думаю что ПолучитьОбъект() ставит объектную блокировку.
9 Kashey
 
02.12.18
20:34
(3) Часто приходится использовать экспертные навыки в работе? Насколько вообще полезно на твой взгляд получение Эксперта?
10 hhhh
 
02.12.18
22:35
(9) ну сертификат дает какие-то преимущества при приеме на работу, например, во франч. В остальном, абсолютно бесполезная бумажка.
11 H A D G E H O G s
 
02.12.18
22:39
(9) Нет навыков эксперта.
Ну, в том смысле, что вся эта подготовка тебе никак не поможет, если ты регулярно не сталкиваешься с большими данными.
Большие данные прям суко, прямым в печень дают тебе знать, где ты не прав, не досмотрел, ступил.
Эксперт лишь приоткрывает некоторые грани.

Но вот конкретно твой вопрос - он бесполезен, я ни разу с ним не сталкивался.
12 H A D G E H O G s
 
02.12.18
22:40
И, я, Эксперт, не знаю ответа на него. И даже не буду запускать тесты, чтобы узнать.
13 Kashey
 
02.12.18
23:12
(10) Ну так-то сам серт понятно - бумажка. Насчёт знаний, полученных в процессе подготовки - тут другое немного. Хотя, если практики нет, всё забывается очень быстро.
14 hhhh
 
03.12.18
01:26
(13) лучше прямо к утру выбросить эту фигню из головы. Поэтому лучше после сдачи экзамена нажраться как следует, чтобы все эти "знания" сразу выветрились.
15 Tonik992
 
03.12.18
01:48
(14) Посмеялся сначала от души.. А потом почему-то грустновато стало
16 Конструктор1С
 
03.12.18
04:14
Думаю 5.
17 rphosts
 
03.12.18
17:30
(6) если речь про упр. режим - 5. разумеется (т.е и 2 и 4)
18 Фрэнки
 
03.12.18
17:42
то, что варианты 2 и 4 верные - это без сомнения.

А относительно варианта 1 и 3 просто нет уточнения, для каких именно объектов нужно смотреть. Поэтому может возникнуть, может и не возникнуть. Сказано, что ВСЕГДА, но нет, НЕ всегда. Объекты бывают разные.
19 Fragster
 
гуру
03.12.18
17:46
в разных релизах ответы разные
20 Fragster
 
гуру
03.12.18
17:50
например с некоторых пор можно получить ошибку "Нарушение целостности чтения объекта базы данных из-за параллельного изменения объекта другим сеансом" при получении реквизита через точку. Раньше объект с табличными частями читался в транзакции, а теперь нет, и он может измениться в другом сеансе между тем, как прочитана шапка и таб. часть.
21 Fragster
 
гуру
03.12.18
17:51
возможно правильный ответ в последней платформе - 2
22 Fragster
 
гуру
03.12.18
17:51
но это не точно
23 Kashey
 
03.12.18
18:55
(17),(18) Не могли бы пояснить про вариант 4 поподробнее? Не смог найти инфу про наложение объектной блокировки именно в контексте ПолучитьОбъект(). Насколько понимаю, речь идёт про оптимистическую объектную блокировку. Там идёт сравнение версий данных при записи. Я правильно понял?
24 NeoVision
 
03.12.18
19:48
в тесте правильный ответ 5
25 Фрэнки
 
03.12.18
19:59
если пытаться выразить свою уверенность в ответе 4 на основе такого описания
https://its.1c.ru/db/metod8dev#content:5839:hdoc

Объектная блокировка при ПолучитьОбъект() возникает всегда. Другое дело, что в зависимости от того, в каком режиме конфигурация, эта объектная будет раскрываться в разделяемую управляемую или разделяемую автоматическую :-)
26 Kashey
 
03.12.18
20:24
(25) Статью читал, конечно. В общем вывод сделал такой - если мы считали объект в память, то никакой объектной блокировки на него не накладывается непосредственно. И только при записи механизмы платформы выполняют проверку различия версий, что и реализует оптимистическую объектную блокировку. Могу ошибаться.
По поводу управляемого или автоматического режима -  в этом случае разницы нет. ПолучитьОбъект() будет накладывать shared блокировку СУБД в обоих случаях.
27 Конструктор1С
 
04.12.18
05:42
(26) как это не накладывается? Открываешь документ, который раньше открыл другой пользователь, и при попытке изменить любой реквизит вываливается сообщение
"Не удалось заблокировать запись. Действие (изменение, удаление или блокировка записи) не выполнено."

если данные были изменены и сохранены другим пользователем, то выдаст сообщение
"Операция не может быть выполнена из за несоответствия версии или отсутствия записи в базе данных"

В первом случае срабатывает пессимистическая объектная блокировка, во втором случае оптимистическая
28 Kashey
 
04.12.18
12:45
(27) В обработке помещаю в переменную значение через СпрОбъект = ФизЛицо.ПолучитьОбъект() ставлю точку останова. В параллельном сеансе изменяю и сохраняю реквизит этого же справочника. Новые данные записываются без вопросов. И только потом, когда в обработке продолжаю выполнение СпрОбъект.Записать() в этот момент происходит ругань. В принципе, про что и писал в (26). Сам факт чтения объекта ничего не блокирует, проверка выполняется только при записи.
29 Вафель
 
04.12.18
12:47
объектная блокировка и управляемая - это 2 большие разницы
30 rs_trade
 
04.12.18
12:48
(20) я так и не осилил смысл чтения в транзакции.
31 Kashey
 
04.12.18
12:50
(29) А я и не спорю. Вот с этим пытаюсь разобраться:

4. Получение прикладного объекта через ПолучитьОбъект() всегда происходит с использованием объектной блокировки
32 rs_trade
 
04.12.18
12:50
+(30) типа что-бы в рид коммитед читал? но зачем тогда транзакция. это же можно менять уровнем изоляции.
33 Kashey
 
04.12.18
12:54
(32) Внутри транзакции с S блокировки можно переключиться на X, но другая транзакция сможет только прочесть, а не изменить прочитанные первой транзакцией данные. ИМХО
34 Вафель
 
04.12.18
12:55
35 Вафель
 
04.12.18
12:55
36 rs_trade
 
04.12.18
12:56
(3) Чтение через объектную модель всегда приводит к наложению объектной блокировки

ну шаред блокировка вроде всегда присутствует. вопрос что она снимается сразу после чтения данных.
37 Вафель
 
04.12.18
12:56
получается что 4 не верен, а значит 5 и 6 не верно
38 Вафель
 
04.12.18
12:57
(36) шаред блокировка - это НЕ объектная блокировка
39 Kashey
 
04.12.18
12:58
(36) Да, всё верно в (38). Речь идёт про объектные блокировки, а не транзакционные
40 Kashey
 
04.12.18
13:03
(37) Получается верный ответ 2?
41 rs_trade
 
04.12.18
13:03
угу. развели блин зоопарк блокировок. объектные, управляемые, транзакционные.
42 el-gamberro
 
04.12.18
13:04
Тут только вариант 4 можно считать верным. Остальное шлак какой-то.
В случае 4 при записи объекта будет проверяться версия объекта. Если версия не подойдет, то будет отказ. Это оптимистичная объектная блокировка.
Для объектных блокировок нужно использовать метод Заблокировать(). Ни в одном из вариантов об это не говорится.
43 Вафель
 
04.12.18
13:08
(40) но 1 и 2 - это же одно и тоже
44 rs_trade
 
04.12.18
13:09
(42) а 3 вариант? вроде тоже по смыслу подходит.
45 el-gamberro
 
04.12.18
13:17
(44) Так регистры тоже можно читать через такую модель. Но ведь версии записей наборов не ведутся. :)
46 el-gamberro
 
04.12.18
13:19
(43) Нет чтение данных регистра не ведет к управляемой блокировке регистра
47 rs_trade
 
04.12.18
13:19
(45) да это же просто обертка для сокращения кода. регистры это не объектные данные. вопрос как по мне так с подвохом.

4 вариант.
48 Kashey
 
04.12.18
14:44
(43) Вариант 1 неверный.
Платформа НЕ устанавливает блокировок при чтении в объектной технике констант, справочников, документов. А устанавливает при чтении наборов записей регистров в объектной технике.
Это если верить Филлипову (2-е изд.)
49 Конструктор1С
 
04.12.18
16:14
(28) первая блокировка срабатывает, когда один пользователь открыл документ, затем второй открывает и пытается его отредактировать
Программист всегда исправляет последнюю ошибку.