Вход | Регистрация
    1  2  3  4  5   
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Не удаляются движения документа

v7: Не удаляются движения документа
Я
   LisaAlisa
 
07.09.20 - 18:09
Привет!
При установке пометки на удаление или при отмене проведения документа движения в регистре не очищаются. При этом флаг "Автоматическое удаление движений" стоит.
Из-за чего так может быть?
   Ёпрст
 
1 - 07.09.20 - 18:14
(0) в 7.7 такого быть не может. И галка на этот процесс никак не влияет.
Поэтому, одна из черепашек врёт
   LisaAlisa
 
2 - 07.09.20 - 18:19
к сожалению, может
   Ёпрст
 
3 - 07.09.20 - 18:23
(2) ну показывай, как и чем ты это видишь
   LisaAlisa
 
4 - 07.09.20 - 18:24
   LisaAlisa
 
5 - 07.09.20 - 18:24
   Ёпрст
 
6 - 07.09.20 - 18:26
(4,5) очень крупно, можно поменьше картинку ?
   Ёпрст
 
7 - 07.09.20 - 18:27
И.. че это за самодельный просмоторщик движений ?
   LisaAlisa
 
8 - 07.09.20 - 18:27
не получается что-то с картинкой...
Главное Меню Действия/Движения документа
   LisaAlisa
 
9 - 07.09.20 - 18:27
   Ёпрст
 
10 - 07.09.20 - 18:28
ты ПКМ на документе в журнале то нажми и выведи что там в Движения документа ?
   Ёпрст
 
11 - 07.09.20 - 18:29
   LisaAlisa
 
12 - 07.09.20 - 18:29
по ПКМ Движения недоступны, а через главное меню их можно просмотреть. И в SQL их видно
   LisaAlisa
 
13 - 07.09.20 - 18:30
   LisaAlisa
 
14 - 07.09.20 - 18:30
вот здесь видно, что документ НЕ проведен, но движения ЕСТЬ
   Ёпрст
 
15 - 07.09.20 - 18:31
(12) Гы.. значит кто-то шаловливыми ручками поправил поле closed в табличке _1sjourn
   LisaAlisa
 
16 - 07.09.20 - 18:31
из-за этого при попытке провести этот документ, база отваливается с ошибкой SQL, что запись в таблице регистра неуникальна
   Ёпрст
 
17 - 07.09.20 - 18:31
Проведи и распроведи до
   Ёпрст
 
18 - 07.09.20 - 18:31
(16) ;)))))))))))))))))))))))))))))))))))))
   LisaAlisa
 
19 - 07.09.20 - 18:32
что ДО?
   LisaAlisa
 
20 - 07.09.20 - 18:33
Эта фигня возникает на некоторых документах, при проведении программа спрашивает "Провести задним числом или изменить время документа?". И при любом ответе возникает *опа
   LisaAlisa
 
21 - 07.09.20 - 18:34
не, не при любом, а при "Изменить время документа"
   Ёпрст
 
22 - 07.09.20 - 18:42
Короче, или через QA, или обработкой очисти записи во всех Ra*, там, где closed у документа = 0, потом, обработкой пересчитай итоги.
Профит
   Ёпрст
 
23 - 07.09.20 - 18:44
Запрос тип того будет :
    Для ном = 1 по Метаданные.Регистр() Цикл
            Рег = Метаданные.Регистр(ном);
            Состояние("движуха регистра "+Рег.Идентификатор);
            Сообщить("движуха регистра "+Рег.Идентификатор,"i");
                ТекстЗапроса ="
                |DELETE
                |FROM $Регистр."+Рег.Идентификатор+"
                |WHERE iddoc in (select Жур.iddoc from _1sjourn Жур where closed=0)";
            Запрос.ВыполнитьСкалярный(ТекстЗапроса);
     КонецЦикла

Если есть еще бух операции и проводки, то и там грохнуть
   Ёпрст
 
24 - 07.09.20 - 18:46
+23 для скуля так

Closed & 1 <> 1
   Ёпрст
 
25 - 07.09.20 - 18:48
если че, 

ЗагрузитьВнешнююКомпоненту("1cpp.dll");
Запрос = СоздатьОбъект("ODBCRecordset");
   Ёпрст
 
26 - 07.09.20 - 18:48
Занимайся
   LisaAlisa
 
27 - 08.09.20 - 09:22
Очистить движения в SQL получается. Но не могу понять, ПОЧЕМУ так происходит и как этого избежать.
Перенесла ТА на месяц вперед, документы стали нормально проводиться и распроводиться, движения удаляются. Если же снова дата документа = ТА, то при оперативном проведении движения записываются, но документ в журнале выглядит как непроведенный и система его распознает как непроведенный.
   Ёпрст
 
28 - 08.09.20 - 09:26
(27) Ошибки же есть при этом при проведении ?
Всё проведение дока идёт в одной транзакции. Не должно быть там зависших движений при невозможности апдейта _1sjourn
   Ёпрст
 
29 - 08.09.20 - 09:27
И.. случем проведение не переписано на прямые запросы ?
   Ёпрст
 
30 - 08.09.20 - 09:27
Там можно что угодно написать
 
 Рекламное место пустует
   LisaAlisa
 
31 - 08.09.20 - 09:30
нет, при проведении прямые запросы не исползовали
   LisaAlisa
 
32 - 08.09.20 - 09:33
Еще такая тема.
Если у документа вручную изменить дату и провести - ОК.
Но если у этого же документа попытаться программно изменить дату, то выводится ошибка:
Ошибка обновления записи
При изменении прочих реквизитов документ сохраняется успешно
   LisaAlisa
 
33 - 08.09.20 - 09:33
ВыбДокумент.Записать();
{E:\...\...}: Ошибка обновления записи
   Mikeware
 
34 - 08.09.20 - 09:34
(33) а что  вместо многоточий?
   LisaAlisa
 
35 - 08.09.20 - 09:35
адрес обработки
   Ёпрст
 
36 - 08.09.20 - 09:35
(32) каким образом ты программно дату меняешь ? В 7.7 штатно можно менять дату только у НЕ проведенного документа
   LisaAlisa
 
37 - 08.09.20 - 09:36
(36)
        ВыбДокумент.СнятьПометкуУдаления();
        ВыбДокумент.Провести();
        ВыбДокумент.СделатьНеПроведенным();
        Попытка
            ВыбДокумент.Записать();
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;

Здесь документ записывается успешно

Далее
        ВыбДокумент.ДатаДок = ДатаКорр;
            ВыбДокумент.Записать();
Здесь валится
   ДенисЧ
 
38 - 08.09.20 - 09:38
(37) Медленно (по слогам не буду, извини). Проведённому документу менять дату нельзя. Его распровести надо. Поменять дату. Потом провести.
   LisaAlisa
 
39 - 08.09.20 - 09:39
ВыбДокумент.СделатьНеПроведенным();

так вот же он распроводится
   ДенисЧ
 
40 - 08.09.20 - 09:40
Не раскрыта тема, что происходит тут
"Здесь документ записывается успешно

Далее"
   Ёпрст
 
41 - 08.09.20 - 09:40
(39)

а вот это нахрена ?

>>>
        ВыбДокумент.Провести();
        ВыбДокумент.СделатьНеПроведенным();
   ДенисЧ
 
42 - 08.09.20 - 09:43
(41) Ну как тебе сказать... Для стимуляции роста волос на ладонях )))
   LisaAlisa
 
43 - 08.09.20 - 09:45
это я уже издеваюсь над документом, проверяю)
в кач эксперимента мне нужно убедиться, что он проводится. Можно этого и не делать
   LisaAlisa
 
44 - 08.09.20 - 09:45
суть от этого не меняется. Документ НЕ записывается даже непроведенный
   Ёпрст
 
45 - 08.09.20 - 09:46
(44) чей-та ? Какую ошибку выдаёт при записи?
   LisaAlisa
 
46 - 08.09.20 - 09:48
(45) ВыбДокумент.Записать();
{E:\...\...}: Ошибка обновления записи
   Mikeware
 
47 - 08.09.20 - 09:53
(46) перед строкой 45- Сообщить(""+ВыбДок.Проведен() )
   LisaAlisa
 
48 - 08.09.20 - 10:19
(47) сделала
0
ВыбДокумент.Записать();
{E:\...}: Ошибка обновления записи
   LisaAlisa
 
49 - 08.09.20 - 10:19
НЕ проведен документ
   Ёпрст
 
50 - 08.09.20 - 10:22
(49) В транзакции всё это лепишь ?
Покажи скриншот ошибки
   Ёпрст
 
51 - 08.09.20 - 10:23
ВыбДокумент... случаем, не переменная формы у тебя ?
   LisaAlisa
 
52 - 08.09.20 - 11:13
(50) https://postimg.cc/FfDPpVkP

(51) ВЫбДокумент получаю через НайтиДокумент()
ВыбДокумент.НайтиДокумент(тз.Ссылка);
   LisaAlisa
 
53 - 08.09.20 - 11:13
тз - таблица собирается прямым запросом
   Ёпрст
 
54 - 08.09.20 - 11:22
(53) твой НайтиДокумент(...) что возвращает хоть ? 1 ?
   Ёпрст
 
55 - 08.09.20 - 11:23
А так, проверь базу на ошибки.
Что iddoc в _1sjourn соответствует шапке дока и тч дока..
   Ёпрст
 
56 - 08.09.20 - 11:24
и.. датуДок гришь меняешь, на пустую ? :)
   Ёпрст
 
57 - 08.09.20 - 11:25
И проверь, нет ли пустых дат в _1sjourn. это те которые в скуле ..17530101 которая
   Ёпрст
 
58 - 08.09.20 - 11:26
+ проверить мд на битость и соответствует ли он словарику и базе
   Ёпрст
 
59 - 08.09.20 - 11:26
В пофигураторе, полный синтаксис контроль проходит хоть ?
   uno-group
 
60 - 08.09.20 - 11:37
А где ты это делаешь. Это случаем не открытый в текущий момент документ выбдок?
 
 Рекламное место пустует
   uno-group
 
61 - 08.09.20 - 11:40
И ранее ты его не заблокировала случайно. В УРБД не помню, вроде был флаг на изменение документа только в в центре или месте создания.
   LisaAlisa
 
62 - 08.09.20 - 11:42
(60) нет, не открытый, не заблокирован никем
   LisaAlisa
 
63 - 08.09.20 - 11:43
(54) 1
(56) нет, проверяла в отладчике
   LisaAlisa
 
64 - 08.09.20 - 11:44
(56) ДатуДок меняю на значение реквизита этого же документа, реквизит с типом Дата, заполнен
   uno-group
 
65 - 08.09.20 - 11:49
(62) Сообщить(ВыбДокумент.Блокировка()) Перед записать что сообщает. Запусти эту обработку в монопольном режиме.
   Mikeware
 
66 - 08.09.20 - 11:51
(61) нет такого в урбд
(0) выложи куда-нибудь свою обработку на посмотреть
   uno-group
 
67 - 08.09.20 - 11:52
И что в процедуре ПриЗаписи() в документе есть, может там собака зарыта?
   Mikeware
 
68 - 08.09.20 - 11:54
(67) в клюшках ПриЗаписи отрабатывает только при интерактивной записи.
ну, или в перехватчике
   Ёпрст
 
69 - 08.09.20 - 12:06
И еще, эти документы, хоть в журнае открываются ? Форма дока показывается ?
   uno-group
 
70 - 08.09.20 - 12:16
На фотке 5 строками выше как по мне два удаленных документа с точно такими же номерами. контроль уникальность номеров отключена что ли или база глюкнула
   LisaAlisa
 
71 - 08.09.20 - 12:36
(70) контроль уникальности отключен
   LisaAlisa
 
72 - 08.09.20 - 12:36
(69) открываются и даже проводятся
   LisaAlisa
 
73 - 08.09.20 - 12:36
(67) интерактивно документ записываться
   HawkEye
 
74 - 08.09.20 - 12:36
чё тут? опять попытки угадать ошибку в не показаном коде? )))

(0) движения у не проведенного документа - очищаются, все остальное - это твоя интерпретация...
   LisaAlisa
 
75 - 08.09.20 - 12:39
   LisaAlisa
 
76 - 08.09.20 - 12:40
(74) я уже делала скрин, где показала, что НЕТ. Очищаем движения в итоге только напрямую в SQL
   HawkEye
 
77 - 08.09.20 - 12:42
(76) "по ПКМ Движения недоступны" )))
   LisaAlisa
 
78 - 08.09.20 - 12:58
(77) а в главном меню через Действия/Движения документа?
   Mikeware
 
79 - 08.09.20 - 13:06
Анахрена такие телодвижения:

        ВыбДокумент.СделатьНеПроведенным();
        Попытка
            ВыбДокумент.Записать();

и
        ВыбДокумент.Удалить(0);
        ВыбДокумент.Записать();
?
   Ёпрст
 
80 - 08.09.20 - 13:09
(78) оно аналогично ПКМ-Движения документа.
Если только там не своя обработка для просмотра движений регистра
И там тоже будет залочено, если документ не проведен
   HawkEye
 
81 - 08.09.20 - 13:10
(78) кто же тебя знает, на каком ты документе споцизионирована в этот момент...

в клюшках все до ужаса просто...

есть ОбработкаПроведения, есть ОбработкаУдаленияПроведения пока нет текстов этих процедур, весь разговор - безсмысленен...
   LisaAlisa
 
82 - 08.09.20 - 13:16
(79) так я разными способами пыталась предварительно очистить движения. Это уже изврат, согласна, но это эксперименты. Что с ними, что без них не рабоатет
   Ёпрст
 
83 - 08.09.20 - 13:17
на вот, тест на вшивость, а то тебе веры нет

    Процедура Сформировать()
        Запрос = СоздатьОбъект("ODBCRecordset");
        ТекстЗапроса = "
        |select *  
        |from $Регистр.Отгрузка (nolock) 
        |where iddoc in (select Жур.iddoc from _1sjourn  Жур where Жур.closed&1 <> 1)
        |";
        тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
        тз.ВыбратьСтроку();
    КонецПроцедуры



В ТЗ, есть че ?
   Mikeware
 
84 - 08.09.20 - 13:54
(83) не было  бы - в цикл бы не зашло
   Ёпрст
 
85 - 08.09.20 - 14:29
(84) ... ээ..в какой цикл ? В ёё коде ?
   Ёпрст
 
86 - 08.09.20 - 14:29
пусть картинку покажет сперва :)
   Mikeware
 
87 - 08.09.20 - 14:40
(85) ага
   Ёпрст
 
88 - 08.09.20 - 14:42
(87) ну..она нигде не написала что туда заходит и сообщает что есть движуха :)
   Mikeware
 
89 - 08.09.20 - 14:45
(88)     тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
    
    ВыбДокумент = СоздатьОбъект("Документ");
    тз.ВыбратьСтроки();
    Пока тз.ПолучитьСтроку() = 1 Цикл
        ВыбДокумент.НайтиДокумент(тз.Ссылка);
        
        ВыбДокумент.СнятьПометкуУдаления();
        ВыбДокумент.Провести();
        ВыбДокумент.СделатьНеПроведенным();
        
        Попытка
            ВыбДокумент.Записать();
        Исключение
   trad
 
90 - 08.09.20 - 14:48
(75) к сабжу не имеет отношения, но тут
Рег.ВыбратьДвиженияДокумента(ВыбДокумент);
надо так
Рег.ВыбратьДвиженияДокумента(ВыбДокумент.ТекущийДокумент());
ну или
Рег.ВыбратьДвиженияДокумента(тз.Ссылка);
   LisaAlisa
 
91 - 08.09.20 - 14:51
Пока не могу предоставить пример, потому что вчера вычистили все такие движения:
(22) Короче, или через QA, или обработкой очисти записи во всех Ra*, там, где closed у документа = 0
новых косячных еще не сгенерировала, т.к. после переноса точки актуальности на более позднюю дату, косяков с движениями не стало
   Злопчинский
 
92 - 08.09.20 - 15:01
трэш и угар какой-то в обработке.
еще и прямой запрос прилепили непонятно зачем, чорным можно обойтись.
.
ну и для начала - ввиду того что мудрячат что-то с прямыми запрсоами - проверить есть ли у непроведенных доков движения. почитстить их для непроведенных. а потом делать все по порядку с ДатаКорр и ДатаДок.
.
главное - не митуситься...
   trad
 
93 - 08.09.20 - 15:06
(92) зачем писать чорный, если всегда можно прямой - это же проще
   Злопчинский
 
94 - 08.09.20 - 15:10
(93) ну, мы уже видим что получилось при "проще".. видимо такими "проще" и покурочили базу вусмерть...
   trad
 
95 - 08.09.20 - 15:12
(94) нет, не это причина проблемы
   trad
 
96 - 08.09.20 - 15:13
(95) да, даже если бы и прямой запрос был причиной, то это повод разобраться, а не отказываться от прямых (из соображений кабы чего не вышло)
   Mikeware
 
97 - 08.09.20 - 15:21
(94) ну, во-первых, сдуру можно и шарик от подшипника разбить...
во-вторых, если используешь нормальные запросы - пишешь сразу на них, не задумываясь об извращенных черных. И плевать, что это не освящено БГНом.
в третьих, прямой запрос к проблемам никаким боком.
   Злопчинский
 
98 - 08.09.20 - 15:24
ВыбДокумент.Записать();
{E:\...\...}: Ошибка обновления записи
- вот мне мутно это все. ни разу такого не встречал...
   HawkEye
 
99 - 08.09.20 - 15:26
(90) это 7.7, какая .Ссылка )))
   Mikeware
 
100 - 08.09.20 - 15:27
(99) ну называет она ид дока ссылкой.
я вон и в клюшках писал "регистратор" и "ссылка"
  1  2  3  4  5   

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.