|
SOS. Не сохраняются значения в справочнике | ☑ | ||
---|---|---|---|---|
0
Palant
04.07.14
✎
10:59
|
Пжл. помогите или хотя бы подскажите в какую сторону копать.
1С:8.2. Режим Управляемое приложение. Клиент-сервер. Есть справочник «Корреспонденты», порядка 100 000 записей. Примерно в 100 из них при сохранение изменений не каких ошибок не выводит, но измененные реквизиты не обновляются. Пример: открываю элемент справочника -> добавляю в наименование «1» -> сохраняю -> закрываю -> открываю заново, изменений нет. Пробовал программно, та же история. Ошибок нет, но и нет результата. Проходился отладчиком, до конца записи (процедура ПриЗаписи) все в порядке (значения новые), но результата нет. Проводил тестирование и исправление (штатными средствами конфигуратора), база очень большая по времени проводилось около суток, но результата нет. Пробовал добавлять реквизит в элемент метаданных, применять и удалять этот реквизит – не помогло (пару лет назад было похожие на другом справочнике, решилось именно так). Выгрузку/загрузку базы провести не могу, база более 100 Гб, не поддерживается такая выгрузка/загрузка. В сам SQL Server особо не лазил (открыл таблицу, где хранятся корреспонденты, посмотрел эти записи, вроде в порядке и закрыл), т.к. не разбираюсь в администрирование SQL Server. Но если есть идеи, то найду специалистов. Прим.: Сам справочник «Корреспонденты» довольно корявый и большой (около 50 реквизитов и 15 табличных частей). |
|||
1
sirsp
04.07.14
✎
11:20
|
+(0) Забыл написать: Смотрел в коде, проблем в обработчиках нет, в подписках на событие тоже etc
|
|||
2
StanLee
04.07.14
✎
11:22
|
жми кнопу "Записать", спасает постоянно, сам пользуюсь
|
|||
3
Palant
04.07.14
✎
11:52
|
Подписка на событие "ПриЗаписи" отрабатывает уже со старыми значениями.
|
|||
4
Mitriy
04.07.14
✎
12:11
|
я бы начал с очистки кеша...
|
|||
5
censored
04.07.14
✎
12:11
|
(3) ну коли в обработчике "Перед записью" объекта все нормально, а в подписке "При записи" - уже нет, то теперь нужно найти обработчик или подписку, в которой собственно и происходит изменение между этими событиями :)
|
|||
6
Palant
04.07.14
✎
13:00
|
(4) КЕШ чистили, сервер 1С и SQL перезапускали.
(5) Проверил еще раз, в подписке "При записи" - все в порядке. Т.е. есть в базе есть уже ссылка с правильным наименованием, но потом она исчезает. |
|||
7
программистище
04.07.14
✎
13:03
|
случайно не стоит галочка автоматического сохранения значений в полях формы
|
|||
8
Sorm
04.07.14
✎
13:07
|
Чудеса... Рекомендовал бы посмотреть профайлером.
|
|||
9
Palant
04.07.14
✎
13:07
|
Все думаю и все больше не понимаю. В подписке "При Записи" мало того, что "Источник" с правильным "новым" наименованием. Так еще специально проверил, что Справочники.Корреспонденты.НайтиПоКоду() выводит правильное наименование. Но потом это исчезает. Такое впечатление, что транзакция еще не завершена и она потом отменяется. Кто знает когда заканчивается транзакция при записи справочника?
|
|||
10
Deon
04.07.14
✎
13:14
|
(9) Ты уверен, что значения скидываются в начальные после записи, а, например, не при последующем открытии формы элемента?
|
|||
11
Palant
04.07.14
✎
13:24
|
(10) Да. Специально проверял без открытия формы элемента с помощью Справочники.Корреспонденты.НайтиПоКоду() + обратил внимание, что внизу появляется стандартное "состояние" с информацией "Изменено: ...", так вот там "старое" наименование.
|
|||
12
Palant
04.07.14
✎
13:32
|
В процедуре формы ПослеЗаписи, уже не правильное "старое" наименование. Где то "затирание" происходит раньше.
|
|||
13
Chum
04.07.14
✎
13:52
|
(12) синхронизации нет ни с чем?
На скуле в таблицах данных тоже меняются, а потом откатываются? |
|||
14
Enders
04.07.14
✎
13:54
|
(12) Возможно подписки на события?
|
|||
15
Кир Пластелинин
04.07.14
✎
13:57
|
(12) подписок на события нет ли случаем?
|
|||
16
Palant
04.07.14
✎
14:10
|
Синхронизации в данный справочник нет (есть, что мы выгружаем данные в другую SQL базу, но этот тут не причем).
Подписки на события есть (ПриЗаписи), но там не чего в данный справочник не пишем. В любом случае процедура ПриЗаписи в модуле объекта отрабатывает ТОЛЬКО один раз (проверял отладчиком). На скуле проверю, когда меняются данные (если они меняются) позже (доступ у сис. админа). |
|||
17
Enders
04.07.14
✎
14:16
|
(16) А с чего ПриЗаписи должна два раза отрабатывать?)
Она и должна 1 раз отрабатывать. Ну если явно не написать Объект.Записать(); Объект то ещё не записан, так что меняйте данные как хотите ;) |
|||
18
samozvanec
04.07.14
✎
14:17
|
(16) замер производительности включи. он покажет все что выполнялось
|
|||
19
Palant
04.07.14
✎
15:35
|
Ура! Нашел причину.
При записи справочника Корреспондента идет запись в CRM часть (привет ребятам из Рарус) в части регистра номеров телефонов, который в свою очередь вызывает свое событие при записи. В этом событие ПриЗаписи написано: Попытка НаборЗаписей.Записать(); Исключение; КонецПопытки; //авторская орфография сохранена Так вот, это Исключение почему то действует не только на свое действие, но и отменяет ВСЕ предыдущие, в том числе системные транзакции и в результате элемент справочника Корреспондента не записывается с правильными данными. Знаю, что в принципе Попытка/Исключение должно работать иначе и распространяться только на данное вложение, но факт остается фактом. Всем спасибо. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |