Имя: Пароль:
1C
 
Не видно движений документа при программном добавлении в таблицу
0 Viktor1990
 
27.11.25
19:28
Добрый вечер!
На форме есть таблица мВедомости
в ней есть реквизит с типом документ
Мне нужно удалить движения по одному регистру накопления
в списке документов за определенный период
Если добавляю документ вручную в таблицу, то движения в этом документе видны (НаборЗаписей.Количество() <> 0 ), если через запрос выгружаю нужные документы в таблицу, то движения нулевые.
Что сделать, чтобы при программном добавлении в таблицу
были видны движения?
В таблицу выгружаю ссылку документа.

    Для каждого Строка Из мВедомости Цикл    
        

        МДок = Строка.Док.ПолучитьОбъект();

        //ЗарплатаКВыплате
        НаборЗаписей = РегистрыНакопления.НужныйРегистр.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Регистратор.Установить(МДок.Ссылка);
        НаборЗаписей.Прочитать();
        
        Для Индекс = -НаборЗаписей.Количество() + 1 По 0 Цикл

            НаборЗаписей.Удалить(-Индекс);
            
        КонецЦикла;
1 Волшебник
 
27.11.25
19:33
Цикл наоборот? Такого в 1С нет
Используйте Для Каждого
2 Волшебник
 
27.11.25
19:34
Лучше используйте Объект.Движения
3 Волшебник
 
27.11.25
19:35
Имейте понимание того, что документ может быть перепроведён
4 Волшебник
 
27.11.25
19:35
Бот же
5 Волшебник
 
27.11.25
19:37
НаборЗаписей.Очистить();
НаборЗаписей.Записать();

Прочитать() не нужно
6 Волшебник
 
27.11.25
19:38
Тема совершенно про другое
7 Dmitriy_76
 
27.11.25
19:39
это нейросеть сгенерировала код ?
8 Волшебник
 
27.11.25
19:40
(7) это нейросеть сгенерировала пост
9 Viktor1990
 
27.11.25
19:40
(1) Цикл работает, и отладка заходит в него, если документ добавлен вручную.
10 Dmitriy_76
 
27.11.25
19:40
(8) ура
11 Волшебник
 
27.11.25
19:41
Нулевое понимание причин и следствий.
Программирование наугад, надежда на магию
12 Волшебник
 
27.11.25
19:41
(9) Вам уже всё объяснили
13 Viktor1990
 
27.11.25
19:41
(7) нет
14 Волшебник
 
27.11.25
19:42
(13) да. Вы тупой бот
15 Волшебник
 
27.11.25
19:43
НужныйРегистр — плохое имя регистра
16 Волшебник
 
27.11.25
19:43
Фейковый программный код
17 Волшебник
 
27.11.25
19:43
Враньё про отладку
18 Волшебник
 
27.11.25
19:44
Сегодня на форуме творится ёбаный пиздец
19 Dmitriy_76
 
27.11.25
19:47
Волшебника взломали ?
20 Dmitriy_76
 
27.11.25
19:48
и кстати.. цикл от -10 до 1 прекрасно работает
21 Волшебник
 
27.11.25
19:49
(20) но тут другой
22 Волшебник
 
27.11.25
19:52
Хотя стоп, посыпаю голову пеплом, тут есть минус, не заметил с мобилы
23 Волшебник
 
27.11.25
19:50
Ну и хрен. Всё равно всё остальное неправильно
24 Волшебник
 
27.11.25
19:51
(19) Пока ещё нет. Просто привлекаю внимание общественности, раскручиваю форум в новом формате
25 Dmitriy_76
 
27.11.25
19:54
Для каждого Строка Из мВедомости Цикл    
        

        МДок = Строка.Док.ПолучитьОбъект();

        //ЗарплатаКВыплате
        Движ= МДок.Движения.НужныйРегистр;
        Движ.Записать()
                    
   КонецЦикла;
26 Волшебник
 
27.11.25
20:05
(25) это рыба, а не удочка
Плохие названия переменных
27 maxab72
 
27.11.25
20:09
"Плохие названия переменных" НужныйРегистр сократим до Нужник...
28 Viktor1990
 
27.11.25
20:11
(25) в таком коде
    Для каждого Строка Из мВедомости Цикл    
        

    МДок = Строка.Док.ПолучитьОбъект();
        

        Движ= МДок.Движения.ПрочиеРасчеты;
        Движ.Записать();
    Движ.Количество();
КонецЦикла;
отладка выдает пустые движения
Движ.Количество() = 0
почему?
29 Волшебник
 
27.11.25
20:12
(28) не парьтесь, Вы же удаляете
30 Волшебник
 
27.11.25
20:13
Запись пустого набора приведёт к удалению записей из регистра
31 DiMel_77
 
27.11.25
20:16
(0) Во первых вам не нужно читать документ (он может быть огромный, а ссылка у вас и так уже есть.

Во вторых отбор надо делать так:

           Для каждого Строка Из мВедомости Цикл

                НаборЗаписей = РегистрыНакопления.НужныйРегистр.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Регистратор.Значение = Строка.Док;    

В третьих у вас судя по коду очистка поэтому достаточно (как уже говорил Волшебник):
НаборЗаписей.Очистить();
НаборЗаписей.Записать();
32 Волшебник
 
27.11.25
20:17
(31) примени метод Установить()
33 Viktor1990
 
27.11.25
20:25
(30) Да, количество показывало 0, но в итоге записи удалились.

Всем спасибо.
34 Garykom
 
гуру
27.11.25
20:45
(31) Зачем Очистить() если Прочитать() не делали?
Чтобы грохнуть все записи РС достаточно создать набор (пустой он создается даже с отбором) и записать
Особенно если забыть про установку значений отбора...
35 Волшебник
 
27.11.25
21:03
(34) проехали
36 Волшебник
 
27.11.25
21:05
(33) осознайте свой вопрос на форуме и своё место в мире
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.