Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Каждый цикл удалять строку ТЧ, которая не участвовала в проведении.

Каждый цикл удалять строку ТЧ, которая не участвовала в проведении.
Я
   Guerro
 
07.06.19 - 09:03
Задача в том, что выгружается весь список данных по определенным условиям(так нужно для инфографики). Но при проведении нужно удалять те, которые не подошли под условия.

<code>
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    
    ПовторныйШК="";
    
    Для каждого СтрТЧ из ТабличнаяЧасть1 Цикл
        
        РезультатЗапроса=РегистрыНакопления.Потолки.Остатки(,Новый Структура("Код",СтрТЧ.Код));
        Движения.Потолки.Записывать=Истина;
        
        Если РезультатЗапроса.Количество()=2 Тогда
            
            Если ПовторныйШК<>СтрТЧ.Код тогда
                Для каждого РЗ Из РезультатЗапроса Цикл
                    Если РЗ.ЦенаИзделия<0 Тогда
                        Движение=Движения.Потолки.ДобавитьПриход();
                        ...
                    Иначе
                        Движение=Движения.Потолки.ДобавитьРасход();
                        ...
                    КонецЕсли;
                КонецЦикла;
                ПовторныйШК=СтрТЧ.Код;
            КонецЕсли;
            
        ИначеЕсли РезультатЗапроса.Количество()=1 тогда
            РЗ=РезультатЗапроса[0];
            РезультатЗапросаСостоянияПотолков=РегистрыНакопления.СостояниеПотолков.Остатки(,Новый Структура("Код",СтрТЧ.Код));
            
            Если РезультатЗапросаСостоянияПотолков.Количество()=0 тогда
                Если РЗ.ЦенаИзделия<0 Тогда
                    Движение=Движения.Потолки.ДобавитьПриход();
                    ...
                Иначе
                    Движение=Движения.Потолки.ДобавитьРасход();
                    ...
                КонецЕсли;
            КонецЕсли;
            
        ИначеЕсли РезультатЗапроса.Количество()>0 тогда
            
            Для Каждого РЗ из РезультатЗапроса цикл
                Если РЗ.ЦенаИзделия<0 Тогда
                    Движение=Движения.Потолки.ДобавитьПриход();
                    ...
                Иначе
                    Движение=Движения.Потолки.ДобавитьРасход();
                    ...
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
        
    КонецЦикла;
КонецПроцедуры
</code>
 
 
   Guerro
 
1 - 07.06.19 - 09:04
Подскажите, как код адекватно вставлять?
   mistеr
 
2 - 07.06.19 - 09:08
(0) Откуда удалять? Где список? Ничего не понятно.
   Фрэнки
 
3 - 07.06.19 - 09:10
Только удалять строки из ТЧ надо не в Обработке проведения, а в ПередЗаписью
- ловить в ПередЗаписью режим записи, какой нужен, чтоб отличать простую запись документа от записи с проведением и чистить ТЧ от лишних строк.

Тогда строки в ТЧ будут соответствовать строкам в движениях. А сейчас соответствия нет.

Ну и если все-таки формируются движения с пропусками ли добавлениями лишних записей (лишних относительно состава строк в ТЧ), то обычно формируют ТаблицуДвижений, которую затем загружают в движения.
   vicof
 
4 - 07.06.19 - 09:11
(0) Запросы в цикле это плохо.
Для каждого из регистров сделай по запросу. И их результаты перебирай и записывай в регистры.
   vicof
 
5 - 07.06.19 - 09:12
Плюс непонятно при чем тут инфографика. В тексте ни одного упоминания про нее.
   Guerro
 
6 - 07.06.19 - 09:12
   Guerro
 
7 - 07.06.19 - 09:14
(4) Согласен, просто сделан "на коленке"
   vicof
 
8 - 07.06.19 - 09:14
Удалять при проведении ничего не нужно, нужно формировать выборку данных таким образом, чтобы не пришлось ничего удалять, а только перебрать полученные данные построчно.
   Фрэнки
 
9 - 07.06.19 - 09:15
(4) да у него хоть и указан цикл, но количество строк явно равно 2 :-)
Только когда количество строк в запросе 1 - только тогда обращается с другим запросом.
   ДенисЧ
 
10 - 07.06.19 - 09:17
   vicof
 
11 - 07.06.19 - 09:17
(7) Не "на коленке", а "через жопу".
(9) Ну это ж тоже гкод, я пытаюсь направить светлый разум на понимание того, что он пишет.
   mistеr
 
12 - 07.06.19 - 09:18
(3) Удалять строки в ПередЗаписью  тоже плохо. Все изменения данных в доке должны быть явными. По кнопке, например.
   Guerro
 
13 - 07.06.19 - 09:20
В итоге пришли к тому, что стоит выгружать уже отбором. Чтобы не было надобности чистить перед записью. и к тому, что (11) дохера возомнил о своем опыте и все остальные должны писать как он, даже с меньшим опытом
   vicof
 
14 - 07.06.19 - 09:23
(13) Да, служи мне, подлый студентишка!!!
Чо за наезды? Хрен я теперь тебя буду направлять на понимание того, что ты пишешь.
   Smile 8D
 
15 - 07.06.19 - 09:36
(13) Да, все должны стремиться к тому, чтобы писать корректный и оптимальный код. Малый опыт должен являться не оправданием писать "криво", а стимулом стремиться к лучшему, прислушиваться к более опытным коллегам и переписывать "кривой" код.
Т.е. правильная позиция - прислушиваться и задавать уточняющие вопросы (если уж кто-то решил потратить свое время и поделиться с вами опытом бесплатно), а не вставать в позу и хамить от того что вам не понравилась форма подачи информации.
   Guerro
 
16 - 07.06.19 - 10:58
(15) (14) Я готов прислушаться к советам а читать в свой адрес "через жопу", не собираюсь. за советы спасибо.
   catena
 
17 - 07.06.19 - 11:10
(16)Это интернет, детка, тут могут и послать.
Выражение относилось не в ваш адрес, а в адрес кода. Пожалуйста, относитесь вежливо к людям, которые абсолютно бесплатно и очень оперативно дают вам советы.

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