Имя: Пароль:
1C
1С v8
v8: Блокировка изменения реквизитов при самостоятельном поиске объекта в ПоляПоиска. КД2
0 simol
 
23.08.13
11:51
Нашел интересную ситуацию в КД2.

Есть ПКО в котором
1. Установлен флаг "Не замещать существующие ...."
2. В одно из полей поиска (в моем случае Наименование) при сохранении пишется не истинное значение реквизита, а в ПКС в обработчике ПриВыгрузке нужное для меня значение
3. В обработчике ПКО ПоляПоиска по переданному значению из п.2 сделан нужный мне поиск объекта.

Проблема:
Все работает, но при этом в базе приемнике значение реквизита заменяется значением из п.2 не смотря на п.1

Решение: В ПКС нужно поставить галку "Не замещать значение свойства....". Хоть и кажется, что п.1 достаточно.
1 simol
 
23.08.13
11:58
К сожалению выяснилось что проблема шире.
Это касается не только реквизитов поиска но и всех реквизитов.

То есть если вы в ПКО используете самостоятельный поиск объекта в ПоляПоиска, то несмотря на п.1 нужно во всех ПКС поставить "Не замещать значение свойства...."
2 Naumov
 
23.08.13
12:05
Версия обработки обмена последняя? В старых релизах была ошибка, которую долго не признавали, но потом пофиксили.
3 simol
 
23.08.13
12:19
(2) последняя на сегодня 2.1.8.1
4 Naumov
 
23.08.13
12:21
тогда флаг "не заменять существующие" не может не срабатывать.
5 simol
 
23.08.13
12:23
(4)тоже так думал, но факт опробован руками. И чтобы другие не наступили на эти грабли описал ситуацию и хочу продублировать в 1С
6 simol
 
23.08.13
12:25
(4)При чтении свойства в коде смотрят атрибут "НеЗамещать" узла XML не у объекта в целом, а у свойства. Затем изменяют свойство, устанавливают флаг фальсифицированности, а потом уже все равно что у объекта установлено "НеЗамещать"
7 simol
 
23.08.13
12:26
фальсифицированности=модифицированности объекта
8 Naumov
 
23.08.13
12:29
Ну можно дополнительно в обработчиках событий проверить на записанность объекта и отказаться, если он уже существует.
В событии При загрузке или после загрузки, например.