Имя: Пароль:
1C
1C 7.7
v7: Слетает точка актуальности при программном проведении документов
0 Dolphinbet
 
05.03.15
19:04
Слетает точка актуальности при программном проведении документов. Документы проводятся со сдвигом точки актуальности, предварительно устанавливается текущее время. Как бороться?...
1 Злопчинский
 
05.03.15
19:34
Меню-Сервис-Параметры-Закладка "Оперативный учет"
2 Dolphinbet
 
05.03.15
19:42
(1) Так там для новых документов настройки? А у меня документы не новые
3 Остап Сулейманович
 
05.03.15
19:47
(0) У метода Провести() есть параметры. У ДенисаЧ можно купить СП и там почитать.
4 Dolphinbet
 
05.03.15
19:49
(3)ну да, я делаю Провести(1)....
5 Остап Сулейманович
 
05.03.15
19:53
(4) И что?
В моем СП : "1 - проводить непроведенный документ реальным временем (со сдвигом ТА)". Ровно так как описано в (0). Зачем с этим бороться?
6 Dolphinbet
 
05.03.15
19:54
(5) Бороться не с этим, а с тем что при этом слетает точка актуальности...
7 Остап Сулейманович
 
05.03.15
19:59
(6) Давай по буквам. Как должно быть.
Случай 1. Дата документа меньше или равна ПолучитьДатуТА().
Случай 2. Дата документа больше ПолучитьДатуТА()

Как должно быть в каждом случае?
8 Злопчинский
 
05.03.15
20:02
(6) куда она слетает? - назад? это врядли..вперед - ну так это штатное поведение программы
или все таки не ТА а ГП?
9 Злопчинский
 
05.03.15
20:03
Смотреть в коде наштрямканое ручками ПроводитьПослеТА()...?
10 Злопчинский
 
05.03.15
20:05
(7) должно быть три случая, бо во втором случае есть специфика

Случай 1. Дата документа меньше ПолучитьДатуТА().
Случай 2. Дата документа равна ПолучитьДатуТА().
Случай 3. Дата документа больше ПолучитьДатуТА()
11 Dolphinbet
 
05.03.15
20:44
(6) не всегда, но довольно часто. Из-за многопользовательского режима работы походу
12 Dolphinbet
 
05.03.15
20:44
(8) назад на 01.01.2015
13 Dolphinbet
 
05.03.15
20:52
(10) ПолучитьДатуТА() - это дата, но тут важно еще и время. Дата документа везде равна ПолучитьДатуТА() и равна ТекущаяДата()
14 Dolphinbet
 
05.03.15
20:54
(13) а вот что делать со временем документа непонятно.. Ставлю сейчас ТекущееВремя()
15 Dolphinbet
 
05.03.15
20:57
(14) думаю в этом как раз косяк и заключается, так как теоретически возможна ситуация, когда время этого документа окажется меньше времени последнего проведенного документа на котором стоит ТА. Это как предположение
16 Dolphinbet
 
05.03.15
21:01
Может попробовать делать это в явной транзакции?
17 Злопчинский
 
05.03.15
21:40
Ты хочешь сказать, что у тебя НАЗАД слетает ТА...???? - это вообщем-то не секундное дело... если слетает на 01.01.2015 ТОЧКА АКТУАЛЬНОСТИ - это вообщем-то  пересчет регистров весьма ощутимый будет... что-то там у тебя не то вкоде. смотри что наштрямкано руками. что наштрямканов в загрузках всяких, может бвть УРБД подмешивает...?
18 Dolphinbet
 
06.03.15
13:26
(17) как раз вопрос в том что не так)
19 varelchik
 
06.03.15
14:17
(18)вы точно уверены что это ТА а не ГП?
Сдается мне что у вас Граница Последовательности слетает а не Точка актуальности.
Сделайте скриншот.
20 varelchik
 
06.03.15
14:18
правда есть еще одна хрень.
Называется УстановитьТА()
Но опять же в разделенном режиме оно не работает.
21 Dolphinbet
 
06.03.15
14:56
(19) Да, точно. Так как я ее восстанавливаю каждый раз, пересчетом итогов
22 varelchik
 
06.03.15
15:28
(21)А вы определитесь кто ее туда сносит.
Если база распределенная вот тута уже проблема.
23 Dolphinbet
 
06.03.15
15:29
(22) Нет, не распределенная, обычная складская база.
24 Ёпрст
 
06.03.15
15:30
ГП слетает ?
Так и она должна там быть
25 Dolphinbet
 
06.03.15
15:31
(24) Нет, ТА
26 varelchik
 
06.03.15
15:31
+(22) и восстанавливать ГП надо с помощью восстановления последовательности, а не тупым перепроведением документов.
1.Есть штатный механизм восстановления(только монопольно).
2.Я у себя сделал обработку для восстановления (разделенный режим).
По ночам стартует агент и запускает восстановление.
Так что к началу закрытия месяца у меня граница находиться почти у текущей даты.
27 varelchik
 
06.03.15
15:32
(25) сам же (21) подтвердил что ГП.
ТА не может быть меньше текущий даты или последнего проведенного документа.
28 Dolphinbet
 
06.03.15
15:33
(27) подтвердил, что слетает ТА а не ГП :)
29 varelchik
 
06.03.15
15:36
У меня что-то типа было с откатом ТА назад, но опять таки на один единственный документ.
Но это в среде УРБД.Когда идет обмен и пользователь пытается провести документ.
Так что в модуле проведения проверяю не открыт ли в момент проведения Конфигуратор (что говорит о том что идет обмен).
Посему то что я описал выше уже 2 года как перестало появляться.
Так что не надо доказывать что это слетает ТА.
30 varelchik
 
06.03.15
15:37
Скриншот выложи.
31 Dolphinbet
 
06.03.15
15:37
(30) как слетит - выложу)
32 varelchik
 
06.03.15
15:37
+(30)  А так это без предметный тряп.
33 varelchik
 
06.03.15
15:39
И желательно с открытым Общим журналом.
После слета у тебе все проведенные документы должны быть с зелеными галками.
34 Dolphinbet
 
06.03.15
15:39
(33 да, так и есть)
35 varelchik
 
06.03.15
15:39
+(33)Или я неправ?
36 varelchik
 
06.03.15
15:40
(34)Тогда ищи того придурка что сноси.
В журнале регистрации есть об этом информация.
37 Dolphinbet
 
06.03.15
15:41
(36) Это моя кнопка сносит, по которой проводятся документы
38 Dolphinbet
 
06.03.15
15:44
ДокПеремещение = НайтиПеремещение(ДокЗаявка);
    
    //Если ПустоеЗначение(ДокПеремещение)=0 Тогда
    Если ДокПеремещение<>"" Тогда
        Если ДокПеремещение.ДатаДок<>ТекущаяДата() тогда
            ДокПеремещение.ДатаДок = ТекущаяДата();
            ТекВремя = ТекущееВремя(чч,мм,сс);
            ДокПеремещение.УстановитьВремя(чч,мм,сс);
            
            глСообщить("Точка актуальности перед записью перемещения внутрискладского "  + ПолучитьТА(),,,ДокПеремещение);
            ДокПеремещение.Записать();
            глСообщить("Точка актуальности после записи перемещения внутрискладского "  + ПолучитьТА(),,,ДокПеремещение);
        Иначе
            ТекВремя = ТекущееВремя(чч,мм,сс);
            ДокПеремещение.УстановитьВремя(чч,мм,сс);
            глСообщить("Точка актуальности перед записью перемещения внутрискладского "  + ПолучитьТА(),,,ДокПеремещение);
            ДокПеремещение.Записать();
            глСообщить("Точка актуальности после записи перемещения внутрискладского "  + ПолучитьТА(),,,ДокПеремещение);
        КонецЕсли;
        //ДокПеремещение.АвтоВремяКонецДня();
        //ДокПеремещение.АвтоВремяТекущее();
        глСообщить("Точка актуальности перед проведением перемещения внутрискладского "  + ПолучитьТА(),,,ДокПеремещение);
        Если ДокПеремещение.Провести(1) <>  1 тогда
            глСообщить("Точка актуальности после неудачного проведения перемещения внутрискладского "  + ПолучитьТА(),,,ДокПеремещение);
            Сообщить("Не удалось провести "+ДокПеремещение.ТекущийДокумент(),"!");
            Возврат;
        КонецеСли;
        глСообщить("Точка актуальности после проведения перемещения внутрискладского "  + ПолучитьТА(),,,ДокПеремещение);
    КонецЕсли;
39 Dolphinbet
 
06.03.15
15:45
Вот код, что здесь не так?
40 Ёпрст
 
06.03.15
15:57
(39) Этот код не может двинуть ТА назад
41 Dolphinbet
 
06.03.15
15:58
(40) а вот может :)
42 Ёпрст
 
06.03.15
15:58
+ Этот код не может двинуть ТА вперёд, если дата дока<> дате ТА
43 Ёпрст
 
06.03.15
15:58
(41) ваши доказательства ?
44 Ёпрст
 
06.03.15
16:00
тем более, в режиме 1 в методе Провести - он только не проведенный док сможет толкнуть вперёд, но никак не назад.
45 varelchik
 
06.03.15
16:01
(42)Согласен на все 100.
Щоб снести ТА назад надо использовать как минимум УстановитьТАна() или УстановитьТАпо()
Иначе только в монопольном и установка ТА.
Или же прямым вмешательством в 1ssystem
46 Ёпрст
 
06.03.15
16:02
+45 ну или уриб может ТА сдвинуть еще
47 Остап Сулейманович
 
06.03.15
16:04
(45) Банальное Операции->Проведение документов именно так себя и ведет, если при "Групповой обработке" возникает рантайм ошибка. И тогда ТА останавливается на последнем проведенном документе.
48 varelchik
 
06.03.15
16:08
(47)опять же это в монопольном режиме.
Не спорю.
Но на сколько тута описано это делается в разделенном режиме.
49 Ёпрст
 
06.03.15
16:09
(47) и ?
Мы сейчас за код говорим, а не о штатной возможности, подвинуть ТА куда угодно интерактивно в монопольном режиме.
50 varelchik
 
06.03.15
16:10
+(46) ну типа да.
Опять же вперед но никак не назад.
Ну если в ПБ ктось не здвинул монопольно назад.(гы)руки бы ему оторвал.
51 Остап Сулейманович
 
06.03.15
16:11
(49) Вы то может и да... А вот ТС фиг знает о чем. Это я так ... телепатирую.
52 Остап Сулейманович
 
06.03.15
16:12
+ (51) Поскольку из кода ТА можно двинуть только вперед. За исключением УстановитьТА.
53 Dolphinbet
 
06.03.15
16:13
И вот опять слетела :(
54 Ёпрст
 
06.03.15
16:14
(53) не верю.
55 Остап Сулейманович
 
06.03.15
16:15
(53) Колись : где была до "слетела" и куда встала после.
56 Dolphinbet
 
06.03.15
16:16
как скриншот сюда вставить?)
57 Остап Сулейманович
 
06.03.15
16:16
(56) Да ты просто дату и время напиши. До и после.
58 Ёпрст
 
06.03.15
16:17
59 Dolphinbet
 
06.03.15
16:17
вы же не верите на слово)
60 Dolphinbet
 
06.03.15
16:19
61 Dolphinbet
 
06.03.15
16:22
ТА слетает, если этот код выполняется одновременно 2 пользователями.
62 Ёпрст
 
06.03.15
16:22
(60) И ?
06.03.2015 <>01.01.2015
Где там слёт то говоришь ?
63 Dolphinbet
 
06.03.15
16:23
(62) Из скриншота видно что ТА слетела на 01.01.2015
64 Dolphinbet
 
06.03.15
16:24
Вы че там уже праздник отмечаете что ли?)
65 DJ Anthon
 
06.03.15
16:25
(64) я тоже не вижу
66 Ёпрст
 
06.03.15
16:26
(63) в табло написано - 06.03.2015
67 DJ Anthon
 
06.03.15
16:27
(66) извините, оффтоп можно? только что заморочился с одной проблемкой, надо проводить из одного документа два других. сделал известным способом через открытьформумодально, но проводятся все документы, кроме тех, которые находятся в день, в котором стоит точка актуальности. если день совпадает с ТА, 1С говорит, что существуют более поздние проведенные документы. перед проведением выравниваю время документов на одно.

как такие проводить? пока что сделал через ожидание, работает вроде, документы мелкие.
68 Dolphinbet
 
06.03.15
16:28
(66) смотрите в строке состояния
69 Ёпрст
 
06.03.15
16:29
(68) ищи того, кто 1ssystem ручонками правит (прямым запросм, например)
70 DJ Anthon
 
06.03.15
16:30
(68) а, у меня браузер обрезает низ )
71 Dolphinbet
 
06.03.15
16:31
(69) кто это может делать?
72 Ёпрст
 
06.03.15
16:31
база файловая ?
73 Dolphinbet
 
06.03.15
16:31
(72) скульная
74 Ёпрст
 
06.03.15
16:32
смотри, какие обращения и когда были у таблички _1SSYSTEM
75 Dolphinbet
 
06.03.15
16:32
(70) В журнале я тоже вывожу ТА перед проведением и после проведения дока, видно что до проведения она 06.03.2015 а после пустая
76 Ёпрст
 
06.03.15
16:34
+ Ищи в базе документы с пустой датой
77 Ёпрст
 
06.03.15
16:34
Если такой док провести - та полетит на него
78 Ёпрст
 
06.03.15
16:35
(75) воткни туда проверку на дату дока (ты ж её вроде как меняешь)
79 Злопчинский
 
06.03.15
16:35
Подсказка: ПустойНомерГТД
Для неимпортных товаров указывай тупо ГТД, которая номер ГТД = три прочерка, страна происхождения три прочерка. и все.
80 Ёпрст
 
06.03.15
16:36
(79) Кто здесь ?!
81 Dolphinbet
 
06.03.15
16:37
(78) ну вроде в журнале видно, что дата у проводимого документа не пустая. Я все вывожу в журнал.
82 Ёпрст
 
06.03.15
16:38
(81) как бэ видно, что там пустая дата :)
83 Dolphinbet
 
06.03.15
16:39
это уже после того как ТА слетела. До проведения дата не пустая...
84 Ёпрст
 
06.03.15
16:40
проверь _1sjourn на наличие пустых дат (01.01.1753)
85 Злопчинский
 
06.03.15
16:41
однозначно криво написанный код, возможно с прямым вмешательством в системную таблицу. или же чтото с урбд
86 Злопчинский
 
06.03.15
16:41
(80) Ай эм
87 Dolphinbet
 
06.03.15
16:41
(85) код можно посмотреть выше. Что в нем кривого?
88 Ёпрст
 
06.03.15
16:43
ну и..реиндекс базы, обновление статистики, на крайнея чекдб не помешает
89 Ёпрст
 
06.03.15
16:45
ну и это запусти
90 Ёпрст
 
06.03.15
16:45
91 Злопчинский
 
06.03.15
16:45
(87) хз чьто там в глСообщить и что там в внутрискладском перемещении - нам оотсюда не видно все ваши процессы
92 Ёпрст
 
06.03.15
16:46
А так, надо профайлером ловить, в какой момент идет обращение к 1ссистем и че за запрос был
93 Ёпрст
 
06.03.15
16:50
По ЖР видно, что  проводишь с пустой датой.. у тебя же там 2 проведения подряд
94 Dolphinbet
 
06.03.15
18:16
Мне кажется Вы глубоко копаете. Все просто я устанавливаю время документа равным текущему времени и провожу со сдвигом ТА. То есть после проведения ТА будет на документе. При этом если параллельно запущен такой же алгоритм то запросто может оказаться, будет проведенный документ после даты текущего проводимого документа. То есть пользователю показывается окошко с вопросом что существуют долее поздние проведенные документы. Первый вопрос как убрать это окно?
95 Злопчинский
 
06.03.15
18:33
(94) ты не хочешь слушать и копать
"То есть пользователю показывается окошко с вопросом что существуют долее поздние проведенные документы." - это коно вываливается в том случае, если ТА уже "сломано" - то есть ТА стоит на какой-то точке времени\документе - а после ТА существует куча проведенных документов.
.
то есть в этот момент та у тебя уже сломана.
.
сдвиг ТА назад связан всегда с ресурсоемкой операцией отката/пересчета текущих итогов на начало месяца - у тебя на 01.01.15 - это не происходит мгновенно. это как правило длительный процесс если он выполняется штатно - ну по крайней мере с десяток секунд.

так как ты не жалуешься на задержки при проведении и таком слете та - это возможно значит что что-то где-то дописанов ручную в обход платформы 9в 1ссистемз например где указана точка та). или ты не всю инфу даешь.