Имя: Пароль:
1C
1С v8
Двойные движения рег.накоплений и <объект не найден>...
,
0 catena
 
12.03.12
19:27
УПП для КЗ на 8.1

Обнаружилась такая вот фигня.
В некоторых (слабо систематизируемых) случаях документы делают двойные движения по некоторым регистрам, при этом первая половина движений в измерениях типа документ имеет <объект не найден> (там, где должен быть записан документ-автор, это НЕ регистратор, фиг знает, для чего это...). При перепроведении эти некорректные движения пропадают.
Ситуация сложно воспроизводимая, случается только при первом проведении и не всегда, даже если копировать проблемный документ.

Выявленные закономерности:

Регистр Закупки, документ Авансовый отчет с тч Прочее.

Регистры ДенежныеСредства, СписаниеДенежныхСредств, документы ППИ с тч Услуги.


Кто-нибудь сталкивался? Причины?
Копаю проведение, подозреваю процедуру записи движений через сотню копирований таблиц движений и с ЗаполнитьЗначения() - сталкивалась уже с корявостью это функции в отношении набора движений...
1 Нуф-Нуф
 
12.03.12
19:31
ТИИ
2 Wobland
 
12.03.12
19:35
(0) >документ имеет <объект не найден>
ну явно ж к доктору. если, конечно, там где-то внутри не генерятся непонятные левые ссылки
3 catena
 
12.03.12
19:35
Исправляет, но не лечит
4 Wobland
 
12.03.12
19:52
(3)
Лишь чашка сакэ способна исправить
Две тысячи миль расстоянья.
Исправить, но не исцелить.
5 catena
 
12.03.12
19:56
Чешское сакэ льется в рот,
Ласкает чувства, но не просветляет разум,
Ждет ответа на рассвете взволнованный юзер...
6 Reset
 
12.03.12
20:00
Похожее было, с задвоением/затроением движений (рекорд, вроде, зашестерение)+иногда с некорректной ссылкой на регистратор -  в период с большим количеством проблем с производительностью и дедлоками(откатами, соотв., жертв-транзакций и пр). Оперативно исправляли поиском, перепроведением, удалением "фантомных" движений (с некорректным регистратором). Исчезло полностью после устранения проблем с блокировками.
7 Wobland
 
12.03.12
20:01
Помой свой рот,
Отринь все беды,
Пойдём искать рассвет
8 Wobland
 
12.03.12
20:01
(6) тфу на тебя ;)
9 Reset
 
12.03.12
20:02
ну извините ;p
10 catena
 
12.03.12
20:12
Рассвет после кромешной тьмы...
Мигает последняя звезда...
Да муж почему-то против :(
11 catena
 
12.03.12
20:13
(6)В смысле, управляемые блокировки?
12 Wobland
 
12.03.12
20:15
Как много общего у них
С моей женой...
Внимательно пост №6 читала?
13 catena
 
12.03.12
20:15
Кстати, регистратор садится корректно во все движения, "кривой" реквизит в таблицу для записи устанавливается везде одинаково:
ЗаполнитьЗначения(Ссылка,"ДокументЗакупки")
14 Reset
 
12.03.12
20:18
(11) В основном, да. Переписал конфу на них.
Это не значит, что у тебя то же самое. Я отвечал на вопрос "Сталкивался ли кто-то с подобным". Postgre, не мощный сервер и относительно много пользователей (до 200).
15 catena
 
12.03.12
20:18
(12)Проблема похожая, одно но
Порой воспроизводится проблема
в локальной файловой базе
с одним активным пользователем.
16 Reset
 
12.03.12
20:20
Не похоже на то.
С другой стороны, если устойчиво воспроизводится - значит решаемо
17 catena
 
12.03.12
20:21
(14)Пользователей на пике около 50, оборудование хорошее.
Я почему на код грешу.
Была ситуация, если кто разбирал проведение списания по партиям БУХ, общий модуль УправлениеЗапасамиПартионныйУчет, процедура СписаниеНаСчетБух (если не путаю ничего на память), там были добавлены движения, которые заполнялись именно через ЗаполнитьЗначения и в таблице все выглядело красиво, а вот при записи движений преобразовывалось в какие-то безумные значения субконто, которых и у счета-то нет... Исправилось после тупого поименного копирования реквизитов.
18 catena
 
12.03.12
20:23
(16)Вот закономерность устойчивого воспроизведения не могу поймать, но возникают такие документы регулярно - 2-3 документа в месяц, учитывая, что я не знаю, сколько раз остальные доки перепроводили. Повторю: проблема возникает исключительно при первичном проведении.
19 rozer76
 
12.03.12
20:42
это хорошо известный баг 8.1 при транзакционных блокировках и ранее в ут 10.3 с таким сталкивался.
20 catena
 
12.03.12
20:45
печально
21 rozer76
 
12.03.12
21:03
фото понравилось :-)
22 Amra
 
12.03.12
21:31
(21) Не, для таких тем только ню подходит))
23 catena
 
13.03.12
05:09
(22)Не надо. Ню это для "У меня тут запрос в цикле тормозит что-то", а я так, просто был свободный вечер :)
24 ptrtss
 
13.03.12
06:49
Могло из-за следующего

Документ не записан, его хотят провести

Генерится новая ссылка

Создаются движения в наборе записей Движения.БлаБлаБла

Возникает ошибка и документ не записывается, но движения с уже битой ссылкой остаются в наборе

Его проводят еще раз, и новые движения добавляются к старым с битой ссылкой

Лечится очисткой всех наборов движений перед записью с режимом проведения (если не обмен)
25 ptrtss
 
13.03.12
06:50
А лучше - перед любой записью если не обмен
26 ptrtss
 
13.03.12
07:26
27 ptrtss
 
13.03.12
07:26
Фу блин. Щас...
28 ptrtss
 
13.03.12
07:26
29 ptrtss
 
13.03.12
07:27
Там еще регистры сведений прилагались, но там видно какая структура должна быть
30 ptrtss
 
13.03.12
07:27
Чорт! Не та тема
31 Рэйв
 
13.03.12
07:28
(0)Обмен УРБД есть?
32 catena
 
13.03.12
16:57
(31)Обмена нет

(24)Да похоже на то и похоже действительно проблема с блокировками. Сегодня шерстила журнал регистрации, картина более менее ясна. Возникает, когда новый документ проводят по ОК (т.е. запись и проведение в одном флаконе), в ЖР картина следующая:
20:56 Запись об отмене регистрации объектов доступа
20:04 Зафиксировано Добавление документа
20:04 Зафиксировано проведение документа

в документе
20:56 проводки с битыми ссылками в реквизитах Документ
20:04 нормальные проводки.

Почему-то при откате из-за блокировки чистит не все движения (например, бух. регистры чисты, те же Расчеты с контрагентами нормальны, а взаиморасчеты с контрагентами двоят).

Буду копать.
33 Господин ПЖ
 
13.03.12
17:04
(0) древний баг платформы вроде...
34 СноваЗдорова
 
13.03.12
17:05
(32) Может у юзера, который проводит документы нет прав на те документы, что в ссылки должны попасть?
35 catena
 
13.03.12
17:43
(34)Туда садится этот же самый документ :)
36 ptrtss
 
13.03.12
17:59
(32)
Откатываются только данные, которые сохранены в базе. А наборы записей это переменные, которые висят в воздухе. Они при ошибках не откатываются
37 catena
 
13.03.12
18:00
(36)Тогда почему выборочно? И только одни и те же регистры на разных документах с разным набором движений?
38 ptrtss
 
13.03.12
18:05
(37)
Потому что при проведении одних ошибка (например по блокировке) возникает, а при проведении других - нет и они сразу проводятся
39 ptrtss
 
13.03.12
18:06
Поэтому у одних в наборе записи от двух попыток провестись, а у других - от одной
40 ptrtss
 
13.03.12
18:08
Процедура ПередЗаписью()
   Если не обмен Тогда
       Для каждого Набор из Движения Цикл
           Набор.Очистить();
       КонецЦикла;
   КонецЕсли;
КонецПроцедуры


Как-то так надо
41 catena
 
13.03.12
18:10
(40)ПередЗаписью? А потом у меня при каждом Записать(РежимЗаписиДокумента.Запись) будут удаляться все движения?
42 ptrtss
 
13.03.12
18:12
А вот и надо проверять режим записи значит тогда
43 ptrtss
 
13.03.12
18:13
Бывает еще так, что документ проводят, он спотыкается и его записывают. И он записывается со своими недодвижениями. Непроведенный (!)
44 Fragster
 
гуру
13.03.12
18:15
(0) такое только для новых документов происходит? база на постгре или на мсскуле?
45 catena
 
13.03.12
18:15
(43)Бывает... Но ооочень редко. Ситуация в (0) гораздо чаще.
Завтра попробую разные варианты.
46 catena
 
13.03.12
18:16
(44)мсскл.
Да, на новых. Говорю же: когда проводят новый док по ОК - т.е. когда он еще даже не записан.
47 Fragster
 
гуру
13.03.12
18:17
(46) покури код на тему установить ссылку нового и Записать(), вызываемой уже из транзакции записи
48 Fragster
 
гуру
13.03.12
18:17
(47) ну и "провести()" :)
49 catena
 
13.03.12
18:21
(47)Угу. Про это уже подумала.

(38)Кстати, ВСЕ корректные записи имеют одинаковое время, а некорректные чуть раньше. Так что, "чистые" регистры все-таки откатываются.
50 Fragster
 
гуру
13.03.12
18:23
(49) подсказываю - запускаешь сервер в режиме дебага, открываешь док, включаешь замер производительности, нажимаешь "ок", по завершении - выключаешь замер производительности, смотришь, что откуда вызывается. если кто-то вызывает "Записать" из проведения, для того, чтобы модифицированность пропала (например) - прострели ему коленку....
51 ul_tim
 
13.03.12
18:43
PosgreSQL?
52 ul_tim
 
13.03.12
18:43
Работает в связке с PostgreSQL?
53 catena
 
14.03.12
18:31
(52)Нет.

В общем, устойчиво ситуация эмулируется программно:

ППИ = Док.Скопировать();
НачатьТранзакцию();
ППи.ПолучитьФорму().Открыть();
ППИ.Записать(РежимЗаписиДокумента.Запись);
ППИ.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Оперативный);
ОтменитьТранзакцию();
ППИ.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Оперативный);

Я так понимаю, управляемые блокировки не спасут, но риск уменьшат.

Временно решила проблему взведением флага мУдалятьДвижения даже у нового документа.
54 ptrtss
 
15.03.12
05:34
(53)
Все равно будут не проведенные документы с движениями
55 catena
 
15.03.12
17:59
(54)Да, от этого не спасет. Но это случается гораздо реже. И будет заметно в работе.
56 rozer76
 
15.03.12
21:16
конвертация на 8.2 решит проблему