Имя: Пароль:
1C
1C 7.7
v7: Пропадают документы из базы.
,
0 trdm
 
04.03.16
14:38
В багтрекер упал инцидент под номером 0004305:
Пропадают документы из базы (РКО!!!)

Содержание:
Пользователем "...... .......", был создан документ РКО за номером С000000143, через 1-2 минуты документ исчез из базы. После повторного создания документ был распечатан, и снова исчез. Созданный в третий раз документ, при попытке провести выдал сообщение (см. скриншот)
Необходимо исключить подобные инценденты в дальнейшем.
................................
Грешу на SQL-сервер, на незакрытую транзакцию.
База соответственно SQL. Логи запросов в тот момент не велись.
Куда копать? Прямые запросы используются, РБД нет.
1 Тюря
 
04.03.16
14:43
в журнале регистрации есть записи?
2 trdm
 
04.03.16
14:44
(1) да. есть записи о не существующих сейчас уже документах.
3 Mikeware
 
04.03.16
14:45
(0) веды не помогают? :-)
в журнале регистрации  запись о событиях со спорными доками есть? посмотри в джорнале по этим идам - они есть?
4 Mikeware
 
04.03.16
14:45
и да, на скриншоте - что?
5 mehfk
 
04.03.16
14:46
Модель восстановления у этой БД на MS SQL какая?
6 Mikeware
 
04.03.16
14:46
(5) а причем?
не в одной же транзакции..
7 trdm
 
04.03.16
14:48
(5) есть возможность в логе посмотреть запросы? Чем?
8 Тюря
 
04.03.16
14:49
(2) по журнале регистрации ссылка на документ есть?
9 Mikeware
 
04.03.16
14:50
(7) нет, там данные. но в фулл - можно прокатить до момента, и увидеть, есть док или нет.
если он есть - значит, транзакция фиксировалась, а после док как-то удален.
10 trdm
 
04.03.16
14:50
(8) Есть. Но она ни куда не ведет.
11 Mikeware
 
04.03.16
14:51
(10) есть "дырка" в нумерации идов в джорнал?
выведи все дырки, посмотри по логам сервера что происходило в те моменты времени
12 Тюря
 
04.03.16
14:52
(10) в журнале две строки ,
в одной строка в другой ссылка
нажми два раза на второй строке
13 Тюря
 
04.03.16
14:53
проверил по обеим строка открывается документ
14 Тюря
 
04.03.16
14:54
если есть ссылка с видом, номером и датой, то документ имеется в базе
15 Mikeware
 
04.03.16
14:55
(14) не факт.
16 Mikeware
 
04.03.16
14:56
ТС, похоже, вместо ответов ушел в нирвану...
17 trdm
 
04.03.16
14:57
Любопытная картинка в журнале по этому документу:

Событие: Документ записан
Объект: Складской ордер C000039767
Представление объекта: РКО (торг.) C000000144 03.03.2016 13:38:41
18 Mikeware
 
04.03.16
14:57
(17) это уже смешнее....
кто-то занял его ид
19 Mikeware
 
04.03.16
14:58
блин, ведь только недавно натыкался на тему с такой фигней...
20 trdm
 
04.03.16
14:59
Короче как только эта бодяга началась, выгнал всех, перезапустил скуль сервер.
21 trdm
 
04.03.16
14:59
Бодяга прекратилась.
Больше такой фигни не было.
22 Mikeware
 
04.03.16
15:00
(21) а что на скриншоте-то?
23 trdm
 
04.03.16
15:04
(22) Ошибки падающие в табло.
Похоже по данным это документ одного вида, а ID от другого.
И в даных каша абсолютная.
НО, идентифицирует себя в 1с так: глПредставлениеДокумента(Контекст) = "РКО (торг.) № C000002011 от 03.03.16"
24 trdm
 
04.03.16
15:06
На битом документе в отладчике (при попытке открытии его формы):
глПредставлениеДокумента(Контекст) = "РКО (торг.) № C000002011 от 03.03.16"
текущийДокумент() = Счет на оплату  C000002011 (03.03.16)
25 trdm
 
04.03.16
15:07
Функция глПредставлениеДокумента(Конт, Знач ТипКратко = "", псВремя = 0, псТУ = 0, псСокрНаим = 0) Экспорт
    ЗначВозврата = "<<не выбран документ>>";
    Если ПустоеЗначение(Конт) = 0 Тогда
        Если ТипКратко <> "" Тогда    
            ЗначВозврата = "N " + Строка(Конт.НомерДок) + " от " + Формат(Конт.ДатаДок,"ДДММГГ") +" г.";
        Иначе
            ЗначВозврата = глДокументВОтчете(Конт,1,1,псСокрНаим);
            //ЗначВозврата = Конт.ПредставлениеВида() + " N " + Строка(Конт.НомерДок) + " от " + Формат(Конт.ДатаДок,"ДДММГГ") +" г.";
        КонецЕсли;
    Иначе
        Попытка
            Если ТипКратко <> "" Тогда    
                ЗначВозврата = "N " + Строка(Конт.НомерДок) + " от " + Формат(Конт.ДатаДок,"ДДММГГ") +" г.";
            Иначе
                ЗначВозврата = глДокументВОтчете(Конт,1,1,псСокрНаим);
            КонецЕсли;
        Исключение
        КонецПопытки;
    КонецЕсли;
    Попытка
        Если Конт.выбран() = 1 Тогда
            Если псВремя <> 0 Тогда
                ЗначВозврата = ЗначВозврата + " (вр: " + Конт.получитьВремя()+")";
            КонецЕсли;
        КонецЕсли;
        Если псТУ <> 0 Тогда
            ЗначВозврата = ЗначВозврата + " (ту: " + глТипУчетаСтрокой(Конт.типУчета)+")";
        КонецЕсли;
    Исключение
    КонецПопытки;
    Если СокрЛП(ЗначВозврата) = "№   от" Тогда
        ЗначВозврата = "";
    КонецЕсли;
    Возврат ЗначВозврата;
КонецФункции // глПредставлениеДокумента()
26 Mikeware
 
04.03.16
15:08
(24) ну что ты как маленький. найди _строчку_ в файле ЖР, по этой строчке из числа сделай ИД, и найди в 1сджорнал, что там за док реально
27 trdm
 
04.03.16
15:10
Я понимаю, что надо прибить в таблицах кассовых этот ID.
Мне важнее другое, понять откуда ноги растут и как это разрулить.
28 Mikeware
 
04.03.16
15:11
похоже, что 1) два дока получили один и тот же ид. 2)в джорнал в иддокдеф вписался последний деф. В какой-то из таблиц доков есть лишние данные
29 Mikeware
 
04.03.16
15:12
(27) хранимку с 1сднлок не убирал?
30 IvaneS
 
04.03.16
15:14
(0) Завелась у вас "крыса", нужно выявлять, иначе и другие  документы могут пропадать. Видать это только начало.:))
31 trdm
 
04.03.16
15:16
(29) Нет.
32 Mikeware
 
04.03.16
15:35
у меня аналогичный случай был один или два раза. Был в часы наибольших нагрузок (клиент-банк + открытие-закрытие + массовый сброс заявок с мобильных + планирование). и как раз на кассовых доках.
33 Mikeware
 
04.03.16
15:46
34 Z1
 
06.03.16
10:48
(0) скорее всего проблема во вложенных транзакциях
и произошедшим по каким либо причинам откате во внутренней
транзакции и неправильной обработкой ситуации во внешней транзакции.

Также это может осложняться если Вы при этом еще сами  создаете документы при помощи t-sql или например
в модуле проведения создаете документы.
35 trdm
 
06.03.16
14:32
(34) > скорее всего проблема во вложенных транзакциях
Вероятно.

> Также это может осложняться если Вы при этом еще сами  создаете документы при помощи t-sql или например
в модуле проведения создаете документы.

Такого нет.
36 Z1
 
08.03.16
08:53
(0) Проверь "неправильный" iddoc
содержится в двух таблицах шапок документов (dh...)
Складской ордер    РКО
или только в одной из них

я предполагаю что  в двух.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн