Имя: Пароль:
1C
1С v8
Проведение документов текущей датой влияет на остатки в прошлых датах.
0 Светлый Гений
 
01.03.19
18:48
Всем привет! Имею конфигурацию 1С 8.2 в управляемом режиме блокировок с режимом разделения итого по регистру бухгалтерии. Целый день сегодня убил на то, чтобы разобраться, почему перепроведение документов в текущей дате влияет на остатки в прошлых датах. Пока идет массовое перепроведение документов, отчетами и сверками за прошлые даты пользоваться бесполезно, так как данные в них постоянно меняются случайным образом. Если выполнять запрос в отчете в транзакции, то все ок. Но это не вариант, потому что отчетов много, все их дорабатывать очень сложный процесс, плюс некоторые из них выполняются долго и будут мешать проведению документов. Может быть кто-то сталкивался с такой проблемой и знает, что можно с этим делать?
1 Кулибин
 
01.03.19
18:49
Отсыпь...
2 RomanYS
 
01.03.19
18:51
Две базы - одна для отчетов, другая для перепроведений)
3 bodri
 
01.03.19
18:56
Конфигуратор что говорит?
4 Светлый Гений
 
01.03.19
19:00
Да, есть одно уточнение, если документы просто перепроводятся без изменения в проводках, то все ок. Проблема возникает, когда изменяются проводки. Изменения по документам загружается онлайн из другой системы.
5 Светлый Гений
 
01.03.19
19:01
(3) Ничего не говорит, выловить через отладчик не получается.
6 mistеr
 
01.03.19
19:13
(0) Конфа не типовая?
Режим совместимости?
7 Светлый Гений
 
01.03.19
19:20
(6) не типовая, без режима совместимости.
Такое ощущение, что если запрос к данным в отчете выполняется в момент, когда удален старый набор, но новый еще не записался, то остатки в отчет попадают некорректные.
8 mistеr
 
01.03.19
19:23
(7) Не должно быть так.
Релиз?
СУБД?
ТИИ?
9 RomanYS
 
01.03.19
19:24
(8) 8.2 без режима совместимости. Вроде так и было
10 mistеr
 
01.03.19
19:24
В отчете часом нет обращения к текущим итогам? Период забыли указать и т.п.
11 mistеr
 
01.03.19
19:25
(9) Как "так"? Проведение доков без транзакции что ли?
12 Светлый Гений
 
01.03.19
19:27
(8) 8.2.16.368
MS SQL Server
ТИИ пока не делал
13 lubitelxml
 
01.03.19
19:28
"почему перепроведение документов в текущей дате влияет на остатки в прошлых датах" -
1. Сделай ТиИ
2. Если первое не поможет - посмотри что в проведении написано и в подписках к документам.
14 lubitelxml
 
01.03.19
19:28
+ (13) отладчик все знает
15 Светлый Гений
 
01.03.19
19:29
(10) В отчете используется виртуальная таблица "Остатки" с указанием даты.
(11) Без транзакции это как? Как минимум не явная транзакция-то есть.
16 RomanYS
 
01.03.19
19:29
(11) Нет. Нюансы обсуждать не готов, но отчеты читали "грязные" данные. Вроде так
17 Garykom
 
гуру
01.03.19
19:38
Я как то в Розница 2 перепровел документы ПоступленияТоваров - и что бы вы думали?

Это недоразумение разработчиков заодно перепровело документы УстановкаЦен и ладно бы просто перепровело.
Так оно все цены вручную внутри них поправленные заново пересчитало и установило по правилам автоматом.
Клиент долго ругался когда обнаружил и мне было сильно стыдно.
18 mistеr
 
01.03.19
19:39
(12)

    SELECT is_read_committed_snapshot_on FROM sys.databases
     WHERE name= 'YourDatabase'
19 RomanYS
 
01.03.19
19:41
(16) хотя может и путаю, возможно проводки менялись и отчет просто ловил промежуточные данные
20 Светлый Гений
 
01.03.19
22:12
Сделаю ТИИ, отпишусь по результату. В целом понял, что такого быть не должно, буду копать дальше, если ТИИ не поможет.
(18) К сожалению, пока прав нет выполнить данный запрос.
21 Светлый Гений
 
18.03.19
11:36
В общем, сделал ТИИ, провел несколько тестов, результат следующий:
1. ТИИ ничем не помогло
2. Делаю такой тест для документа:
* формирую карточку счета - движения документа есть в отчете
* при проведении документа удаляю движения документа и делаю запись набора
* после этого сразу останавливаюсь на точке останова
* формирую карточку счета - отчет формируется, но движений документа нет в отчете
* после окончания проведения движения опять появляются в отчете

Что я делаю не так? Я так понимаю, что после удаления движений карточка счета не должна формироваться пока не закончится проведение документа.

Режим разделения итогов с регистра убрал, но это тоже не помогло.

Код процедуры проведения

Процедура ОбработкаПроведения()
    
    Для Каждого Набор Из Движения Цикл    
        Набор.Очистить();
        Набор.Записывать = Истина;
    КонецЦикла;
    
    // код, который заполняет таблицу движений
    ......
    
    Движения.РегистрБух.БлокироватьДляИзменения = Истина;
    Движения.Записать();
    
    // на этой строке ставлю точку останова
    ДобавитьПроводкиИзТаблицыВДвижения(ТаблицаДвижений, ЭтотОбъект, Отказ);

КонецПроцедуры
22 aleks_default
 
18.03.19
11:43
Движения.РегистрБух.БлокироватьДляИзменения = Истина; это не работает в режиме управляемых блокировок
23 MrStomak
 
18.03.19
11:47
(22)
Тут когда-то продавали СП:

РегистрНакопленияНаборЗаписей.<Имя регистра накопления> (AccumulationRegisterRecordSet.<Имя регистра накопления>)
БлокироватьДляИзменения (LockForUpdate)
Использование:

Чтение и запись.
Описание:

Тип: Булево.
Устанавливает режим, при котором в процессе записи набора будет установлена управляемая блокировка для всех комбинаций измерений в соответствии с записями набора записей
24 aleks_default
 
18.03.19
11:53
Свойство набора записей БлокироватьДляИзменения само по себе ничего не блокирует, оно лишь определяет, будет ли в момент записи при блокировке учитываться разделитель или нет.
25 Вафель
 
18.03.19
12:26
по идее 8.2 читает незакрытые транзакции.
Но как оно влияет на прошлые периоды?
26 Светлый Гений
 
18.03.19
12:47
Судя по всему проблема решена только в версии 8.3.5
http://downloads.v8.1c.ru/content//Platform/8_3_5_1248/1cv8upd.htm#4cc794a4-7d56-11e1-b5d1-e61f135f174b

(25) До этого я еще не докопался, но скорей всего проблема в использовании текущих итогов.
27 Garykom
 
гуру
18.03.19
12:52
(26) Кривые отчеты которые берут текущие итоги и что то от них там считают в прошлом?

Ну передайте привет разработчикам отчетов при оказии
28 Garykom
 
гуру
18.03.19
12:57
(27)+ Если правильно понимаю то это у вас некая эмуляция партионного учета сваяна для отчетов.
Когда партии рассчитывают обратным ходом от текущей даты в глубь веков.
29 DexterMorgan
 
18.03.19
13:05
(17) дилетант
30 Светлый Гений
 
18.03.19
13:06
(28) Нет, я не говорил про глубь веков. Например, проблема возникала 15.03 с ОСВ, которая формировалась за февраль 2019, хотя итоги по регистру рассчитаны до 28.02.2019.
31 Жан Пердежон
 
18.03.19
13:08
(21)
>> 2. Делаю такой тест для документа:
>> Бла-бла-бла

так и должно работать.

>> Я так понимаю, что после удаления движений карточка счета не должна формироваться пока не закончится проведение документа

Нет.
32 Светлый Гений
 
18.03.19
13:10
(31) Да, я уже это понял.
33 ptiz
 
18.03.19
13:34
(30) " хотя итоги по регистру рассчитаны до 28.02.2019." - я бы перепроверил. И итоги пересчитал.