Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

ВыполнитьПриход() и ВыполнитьРасход() по одному и тому же регистру

ВыполнитьПриход() и ВыполнитьРасход() по одному и тому же регистру
Я
   Slon747
 
12.02.18 - 12:57
При проведении документа нужно делать как приход, так и расход.
Делаю так:

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

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

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

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

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

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

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

(4) Да

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

и

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

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

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

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

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

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

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

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