Имя: Пароль:
1C
1С v8
Косяк при проведении отчета о розничных продажах?
0 maker92
 
01.11.20
14:08
Здравствуйте.
Есть КА 2.4.10.89, версия 1с 8.3.16.1148, тонкий клиент.
Есть проведенные отчеты о розничных продажах, в движениях которых задвоены строки Если повторно перепроводить документ, то ничего не меняется, но если отменить и провести заново, тогда количество строк в движениях уменьшиться в 2 раза.
Вот код, выполняющийся при проведении (общий модуль ПроведениеСерверУТ):

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

        Если НаборЗаписей.Количество() > 0 Тогда // здесь всегда возвращается 0
            НаборЗаписей.Очистить();
        КонецЕсли;

    КонецЦикла;

Может кто знает, косяк это или так и должно быть.
Заранее спасибо.
1 Злопчинский
 
01.11.20
15:18
Вопрос поставлен криво и мутно.
ну задвоены строки и задвоены. Результат при этом - правильный или нет? если правильный - то не пофиг?
Если количество строк в движениях уменьшилось в два раза, это тоже ни о чем не говорит. может в каждой строке - удвоенное количество. и результат не изменился.
.
2 Cthulhu
 
01.11.20
15:28
смахивает на задвоенный вызов в рамках одной транзакции.
судя по тому, как оно себя ведет при перепроведении и распроведении-проведении... можно попробовать в самом начале процедуры проведения именно этого документа - без условий тупо очищать движения.
3 maker92
 
01.11.20
15:35
(2) Ну я в процедуре, которую в заголовке указал, попробовал принудительно очищать набор записей. В таком случае движения в регистре становятся как после проведения непроведенного документа. Я так понимаю, что если не очищать движения, то он просто дописывает в регистр новые записи к старым, т. о. получается задвоение.
4 maker92
 
01.11.20
15:39
Я не могу понять, вообще допустимо такое поведение. Вроде как при перепроведении движения должны полностью перезаписываться. Не должно же быть так, что он часть движений или все оставляет, а к ним еще дописывает, или смотрит, какие записи есть в регистре и дописывает недостающие. Эта как то неправильно получается, не должно же такого быть.
5 Cthulhu
 
01.11.20
15:50
(4): такое может быть правильным и необходимым.
6 Chameleon1980
 
01.11.20
17:15
{4}см. очищать движения
7 Михаил Козлов
 
01.11.20
22:41
Используем КА 2. Время от времени (нечасто) возникают неверные движения по регистрам накопления или по РБ. Как правило, после отмены проведения и проведении все встает (очень редко - нет).
Причину не поймали. На горячую линию не обращались.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший