Имя: Пароль:
1C
1C 7.7
v7: ВыгрузитьИтоги() не видит движения документов одного вида.
0 serg_m_v
 
14.09.11
18:16
Доброго времени суток.
Есть два участка кода:
Код №1:

ВремРег = СоздатьОбъект("Регистры");
Рег = ВремРег.ВзаиморасчетыПокупателей;
Если Выбран() = 1 Тогда
   Рег.ВременныйРасчет(1);
   ВремРег.РассчитатьРегистрыНа(СформироватьПозициюДокумента(ТекущийДокумент()));
КонецЕсли;

Рег.УстановитьЗначениеФильтра("Фирма",спФирмы,2);
Рег.УстановитьЗначениеФильтра("Контрагент",Контрагент,2);
Рег.УстановитьЗначениеФильтра("Договор",спДоговора,2);

тбДолги = 0;
Рег.ВыгрузитьИтоги(тбДолги,1,1);


И код №2:

Рег = СоздатьОбъект("Регистр.ВзаиморасчетыПокупателей");
тбДолги = 0;
Рег.УстановитьЗначениеФильтра("Фирма",спФирмы,2);
Рег.УстановитьЗначениеФильтра("Контрагент",Контрагент,2);
Рег.УстановитьЗначениеФильтра("КредДокумент", Значение, 1);
Рег.УстановитьЗначениеФильтра("Договор",спДоговора,2);

Рег.ВыгрузитьИтоги(тбДолги,1,1);

Если документ находится в самом конце временной оси, то данные в тбДолги, по идее, должны быть одинаковые. Но в первом случае выгружаются данные без учета движений одного вида документа. Если же данные вытаскивать запросом, то все нормально... Да и в отчетах движения документа видно, соответственно ошибка в коде :-(.
1 vip03
 
15.09.11
11:25
РасчитатьРегистрыНа() - расчитывает НА документ, т.е. на момент времени ДО проведения документа.
Отсюда движения этого документа учитываться не будут.
Если использовать РасчитатьРегистрыПО() - движения документа будут учтены
2 serg_m_v
 
15.09.11
11:42
Это я прекрасно понимаю. Но документы, движения которых не учитываются, проведены много раньше. Мне эти движения нужно увидеть из другого документа.
К примеру:
Есть документ "Перезачет", который делает движение по регистру взаиморасчетов и закрывает долг клиента по счету. И есть ПКО, которое проводится на следующий день и в котором формируется таблица долгов по документам и в этой таблице (тбДолги, которая) и указано, что долг по счету никуда не делся, хотя он был закрыт перезачетом.
3 Джинн
 
15.09.11
11:46
Не совсем понятно о чем речь. Можно в нормальных терминах сформулировать?

В итогах нет никаких движений. Они сводные. На то они и итоги.
Итоги считаются неверно или что?

И в коде 2 на один фильтр больше.
4 serg_m_v
 
15.09.11
11:50
(3) Во втором коде получаем итоги с фильтром по определенному документу, а в первом - все итоги по контрагенту.

А по поводу итогов... Был долг по документу 1000 тугриков, сделали ПКО на 300 тугриков, сделали Перезачет на 700 тугриков итого в сводном остатке по документу долг должен быть 0, а он видит долг в 700, будто и не было перезачета.
5 Джинн
 
15.09.11
11:54
(4) В движениях регистра это можно описать?

Для примера:
Начальный остаток
Фирма - Рога и копыта
Контрагент - Вася Пупкин
Договор - Договор на поставку какой-то хрени
КредДокумент - Накладная 1
Долг - -1000 тугриков

Оплата:
Фирма - Рога и копыта
Контрагент - Вася Пупкин
Договор - Договор на поставку какой-то хрени
КредДокумент - Накладная 1
Долг - +300 тугриков

"Перезачет":
?
6 serg_m_v
 
15.09.11
12:00
Перезачет делает два движения:

1:
Фирма        - Рога и копыта
Контрагент   - Вася Пупкин
Договор      - Договор на поставку какой-то хрени
КредДокумент - Накладная 1
Долг         - +700 тугриков

2:
Фирма        - Рога и копыта
Контрагент   - Вася Пупкин
Договор      - Договор на поставку какой-то хрени
КредДокумент - Накладная 2
Долг         - -700 тугриков

То есть аналогично ПКО плюс закидывает этот долг на другой документ.

А в результате в таблице итогов получаем
Фирма        - Рога и копыта
Контрагент   - Вася Пупкин
Договор      - Договор на поставку какой-то хрени
КредДокумент - Накладная 1
Долг         - -700 (а вот тут должно быть 0).
7 Джинн
 
15.09.11
12:24
(6) Тогда смотри внимательнее, где промахнулся в движениях.

Кстати у тебя в 0 еще и на разные моменты времени итоги. В первом случае на документ, во втором на ТА.
8 serg_m_v
 
15.09.11
12:31
(7) Правильно. Во втором случае получается итог для одного документа при указании этого документа в строке в новом ПКО. А там, где на документ - это заполнение/перезаполнение табличной части по кнопке "Заполнить". Во втором случае все правильно. Интересно, что если вытаскивать данные запросом, то все правильно получается, но, в таком случае, итоги на дату, а не на документ. И в отчетах все нормально, все движения видно. Хрень какая-то :-(. Тестирование базы не помогает, перепроведение не помогает...
Я вот думаю уже пересоздать документ в целях перезаписи таблиц в SQL. Вряд ли поможет, но...
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн