Имя: Пароль:
1C
1С v8
ВыполнитьПриход() и ВыполнитьРасход() по одному и тому же регистру
, ,
0 Slon747
 
12.02.18
12:57
При проведении документа нужно делать как приход, так и расход.
Делаю так:

    ТаблицаПриходов = Запрос.Выполнить().Выгрузить();    
    НаборДвижений = Движения.НакопленныеБонусы;
    ТаблицаДвижений = НаборДвижений.Выгрузить();

    ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПриходов, ТаблицаДвижений);
    
    НаборДвижений.мПериод            = Дата;
    НаборДвижений.мТаблицаДвижений   = ТаблицаДвижений;    
    НаборДвижений.ВыполнитьПриход();

После этого делаю расход.
Всё то же самое (кроме самих данных), только НаборДвижений.ВыполнитьРасход();

В результате, В расходе оказываются строки, которые должны быть только в приходе. Что не так?

P.S. У документа "Запись движений при проведении" - "Записывать модифицированные"
1 Defender aka LINN
 
12.02.18
14:27
(0) А чистить таблицу - не царское дело?
2 Slon747
 
12.02.18
14:51
(1) Между приходом и и расходом делал ТаблицаДвижений.Очистить()

Не помогает.
3 hhhh
 
12.02.18
14:56
(2) ну, процедуру ВыполнитьРасход() в студию.
4 Малыш Джон
 
12.02.18
14:59
(2) а таблица расходов как определяется? тоже =Запрос.Выполнить.Выгрузить()?
5 lodger
 
12.02.18
15:03
(0) ВыполнитьПриход и ВыполнитьРасход это такие процедуры, они есть в вашем модуле набора записей.
как там внутри описано так и работает. 146% что они предназначены отразить только приход или только расход. т.е. для "делать как приход, так и расход." - надо своё колхозить.
6 Slon747
 
12.02.18
15:06
(3) ОбщегоНазначения.ВыполнитьДвижениеПоРегистру(ЭтотОбъект, ВидДвиженияНакопления.Расход);

Далее в ВыполнитьДвижениеПоРегистру() код из типовой, подобной УТ10.

(4) Да

(5) Но я же их выполняю по очереди. Отдельно они работают правильно. А последовательно - задваиваются движения.
7 Малыш Джон
 
12.02.18
15:08
(6) а запрос между

ТаблицаПриходов = Запрос.Выполнить().Выгрузить();

и

ТаблицаРасходов = Запрос.Выполнить().Выгрузить();

как-то меняется?
8 lodger
 
12.02.18
15:13
(6) а после ОбщегоНазначения.ВыполнитьДвижениеПоРегистру(ЭтотОбъект, ВидДвиженияНакопления.Расход);
что написано?
ЭтотОбъект.Движения.Загрузить(чето)?
9 Slon747
 
12.02.18
15:16
(7) Ну да. Разные данные в двух ТЗ.

(6) Только это:
Процедура ВыполнитьРасход() Экспорт
    
    ОбщегоНазначения.ВыполнитьДвижениеПоРегистру(ЭтотОбъект, ВидДвиженияНакопления.Расход);
    
КонецПроцедуры
10 lodger
 
12.02.18
15:21
(9) ну так не используй ВыполнитьРасход и ВыполнитьПриход если не хочешь читать как они работают. напиши свой велосипед.
11 Slon747
 
12.02.18
15:22
(10) Придется так и сделать.
Просто не первый раз с этим сталкиваюсь, думал, ответ на поверхности.
12 lodger
 
12.02.18
15:25
(11) ответ на поверхности, в общем модуле ОбщегоНазначения процедуру звать ВыполнитьДвижениеПоРегистру()
13 cw014
 
12.02.18
15:28
(2) А НаборДвижений.мТаблицаДвижений.Очистить() делал?
14 Slon747
 
12.02.18
15:37
(13) Делал. Всё также, в движения Расход добавляются записи из таблицы прихода.
15 hhhh
 
12.02.18
15:39
(14) ну делай так

   ТаблицаПриходовИРасходов = Запрос.Выполнить().Выгрузить();    
    НаборДвижений = Движения.НакопленныеБонусы;
    ТаблицаДвижений = НаборДвижений.Выгрузить();

    ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПриходовИРасходов, ТаблицаДвижений);
    
    НаборДвижений.мПериод            = Дата;
    НаборДвижений.мТаблицаДвижений   = ТаблицаДвижений;
16 Малыш Джон
 
12.02.18
15:45
(14) вообще, по хорошему, у процедур ВыполнитьРасход() и ВыполнитьПриход() должен быть параметр Замещать(который по умолчанию Истина)

в твоей конфе точно такого нет?
17 Slon747
 
12.02.18
15:52
(15) Что это будет? Все строки ТЗ уйдут в приход?

(16) Ни у ВыполнитьПриход() ни у ВыполнитьДвижениеПоРегистру() такого нет.
18 Малыш Джон
 
12.02.18
15:55
(17) Ну в общем, где-то у тебя есть строка .Записать();
(например ЭтотОбъект.Записать();)

так вот, в первый раз должно быть ЭтотОбъект.Записать(), а второй - ЭтотОбъект.Записать(Ложь)
19 Малыш Джон
 
12.02.18
15:57
+ (18) или ищи как существующий код использовать таким образом,
или ручками записывай наборы
20 Slon747
 
12.02.18
16:14
Сделал по-старинке, вручную добавляя строки в движения