|
Фича с транзакцией и строкой табличной части.
| ☑ |
0
ptiz
04.09.12
✎
13:15
|
Вот простейший код:
СтрокаТЧ = ДокСсылка.Товары[0];
Сообщить("индекс строки Ссылки до транзакции = " + ДокСсылка.Товары.Индекс(СтрокаТЧ));
НачатьТранзакцию();
Сообщить("индекс строки Ссылки в транзакции = " + ДокСсылка.Товары.Индекс(СтрокаТЧ));
Результат:
индекс строки Ссылки до транзакции = 0
индекс строки Ссылки в транзакции = -1
А если использовать ДокументОбъект, то результат одинаков.
Что за фича?
|
|
1
Reset
04.09.12
✎
13:18
|
СтрокаТЧ = ДокСсылка.Товары[0];
Сообщить("индекс строки Ссылки до транзакции = " + ДокСсылка.Товары.Индекс(СтрокаТЧ));
Так делать, вообще говоря, некорректно.
В первой и второй строке - объекты разные
|
|
2
ptiz
04.09.12
✎
13:21
|
(1) Чем ДокСсылка отличается от ДокСсылка?
|
|
3
Reset
04.09.12
✎
13:22
|
(2) Ты начни с того, чем объек отличается от ссылки и что делает происходит при обращении через точку
|
|
4
Reset
04.09.12
✎
13:24
|
Можно предположить, что в первом случае изза кеширования объекта строка нашлась, а во втором случае начало транзакции форсировало повтороное чтение объекта. Но не понимаю, зачем задаваться поведением системы на заведомо некорректных примерах?
|
|
5
ptiz
04.09.12
✎
13:26
|
(3) Где ты видешь ОБЪЕКТ?
|
|
6
Reset
04.09.12
✎
13:29
|
(5) Твой уровень мне понятен. Я оставлю объяснение основ моем более терпеливым коллегам.
|
|
7
ptiz
04.09.12
✎
13:42
|
Понял наводку.
Если ДокСсылка.Товары запихнуть в переменную, то транзакция не влияет.
"Начало транзакции форсировало повтороное чтение объекта" - похоже.
Получается, он все кэшированные данные сбрасывает? Надо проверить.
|
|
8
Reset
04.09.12
✎
13:51
|
(7) Я вообще не люблю что-либо через точку от ссылки читать, на самом деле. Предпочитаю явно ПолучитьОбъект() в переменную и ее использовать, либо запросом.
Извини за резкость :\
День тяжелый
|
|
9
ptiz
04.09.12
✎
13:56
|
Проверил.
При появлении новой транзакции идет повторное обращение к базе при чтении реквизитов ссылок.
Где-нибудь можно использовать.
Но т.к. не встречал этого в документации, не факт, что такое поведение будет всегда.
|
|
10
ssh2006
04.09.12
✎
14:02
|
Вообще это логично, накладывается блокировка
|
|
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший