|
|
|
|
#1 |
|
Участник
|
А попробуйте вместо reread сделать
select _common where _common.recid == _common.recId;
__________________
Sergey Nefedov |
|
|
|
|
#2 |
|
Участник
|
Цитата:
Потом я создал локальную common и написал так. X++: select common where common.TableId == _common.TableId && common.RecId == _common.RecId; |
|
|
|
|
#3 |
|
Участник
|
Ну надежды на то что сработает условие _common.recid == _common.recId нет и не может быть. Это как масло масленое. А то что common нужно инициализировать (типизировать) перед использованием в принципе логично. Иначе система не будет знать к какой таблице делать запрос и дополнительно условие по TableId здесь не спасает (в SQL нет такого понятия как запрос сразу ко всем таблицам).
Не понятно почему не сработал reread |
|
|
|
| За это сообщение автора поблагодарили: SRF (2). | |
|
|
#4 |
|
Участник
|
Цитата:
X++: recId = _common.recid; select forupdate _common where _common.recid == recId; И по сути это тоже самое что и _common.reread(). Интересно сработает? Последний раз редактировалось S.Kuskov; 02.09.2021 в 12:36. |
|
|
|
|
#5 |
|
Участник
|
Цитата:
После этого решил проверить: X++: _common.reread() Зашел на другой терминал, начал выполнять - не сработало. Вернулся на первоначальный терминал и теперь и там не работает. Потом решил проверить это: Цитата:
После этого я снова решил проверить: X++: _common.reread() Последний раз редактировалось oleggy; 03.09.2021 в 09:24. |
|
|
|
|
#6 |
|
Участник
|
Я понял из за чего ошибка генерируется у меня.
Данный код отрабатывает корректно: X++: ttsBegin; select forupdate _common where _common.recid == _common.recid; _common.(_fieldId) = _value; _common.doUpdate(); ttsCommit; X++: ttsBegin; _common.selectForUpdate(true); _common.reread(); _common.(_fieldId) = _value; _common.doUpdate(); ttsCommit; Если я в коде убираю _common.reread(), т.е. хочу сгененрировать ошибку: X++: ttsBegin; _common.selectForUpdate(true); //_common.reread(); // <-- убираю _common.(_fieldId) = _value; _common.doUpdate(); ttsCommit; X++: ttsBegin; _common.selectForUpdate(true); _common.reread(); // <-- возвращаю _common.(_fieldId) = _value; _common.doUpdate(); ttsCommit; Помогает снова обойти эту ошибку изменение кода на: X++: ttsBegin; select forupdate _common where _common.recid == _common.recid; _common.(_fieldId) = _value; _common.doUpdate(); ttsCommit; Последний раз редактировалось oleggy; 03.09.2021 в 09:40. |
|
|
|
|
#7 |
|
Участник
|
Условие where _common.recid == _common.recid равносильно условию where true или что тоже самое отсутствию условия. Если у вас в таблице (APMParameters) одна запись то она и выберется и вы не почувствуете разницы. На таблицах с несколькими записями такой запрос вернёт вам первую попавшуюся запись, а не обязательно ту с которой вы работали.
|
|
|
|
|
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|