Имя: Пароль:
1C
1C 7.7
v7: ВремРегистры формируются для текущей фирмы? Как сформировать для указанной?
0 И Р
 
05.09.18
20:59
Здравствуйте! Ситуация в следующем, пытаюсь совместить расчёт дебиторской задолженности при реализации объединяя баланс контрагента по двум фирмам.

"
    ВремРегистры                     = СоздатьОбъект("Регистры");
    ВремЗаявки                      = ВремРегистры.Заявки;
    ВремЗаказыЗаявки                = ВремРегистры.ЗаказыЗаявки;
    ВремОстаткиТМЦ                  = ВремРегистры.ОстаткиТМЦ;
    ВремРезервыТМЦ                  = ВремРегистры.РезервыТМЦ;
    ВремПартииНаличие                 = ВремРегистры.ПартииНаличие;
    ВремПокупатели                     = ВремРегистры.Покупатели;"


"
    спрФирмы = СоздатьОбъект("Справочник.Фирмы");
    Если спрФирмы.НайтиПоКоду("007") = 1 Тогда
        Фирма1  = спрФирмы.ТекущийЭлемент();
        Сообщить (Фирма1);
    КонецЕсли;
    Если спрФирмы.НайтиПоКоду("09") = 1 Тогда
        Фирма2  = спрФирмы.ТекущийЭлемент();  
        Сообщить (Фирма2);
    КонецЕсли;
"

"
    ТекущийДолг1 = ВремПокупатели.СводныйОстаток(Фирма1,,,,,"СуммаВал");
    ТекущийДолг2 = ВремПокупатели.СводныйОстаток(Фирма2,,,,,"СуммаВал");
"
Проблема заключается в том, что  при попытке вывести значений
ТекущийДолг1 и ТекущийДолг2   выводится правильно только та фирма, которая указана в реализации как Фирма, т.е. создаётся ощущение что регистры рассчитываются не для всех фирм, а только для той, которая указана в реализации.

Вопрос: Как указать чтобы ВремПокупатели  имели данные хотябы о 2-х фирмах одновременно?
1 Попытка1С
 
05.09.18
21:04
первое измерение не заполняй в СводныйОстаток, будет по всем фирмам.
2 И Р
 
05.09.18
21:07
(1) Тут понимаете в чём дело, допустим в реализации указано в качестве фирмы:
Фирма1

ТекущийДолг1 покажет реальную дебиторку по Фирма1
ТекущийДолг2 ничего не покажет! Хотя по идее должен показать реальную дебиторку по Фирма2

А мне нужно бы, чтобы вне завистимости от того какая фирма указана в реализации  ТекущийДолг1 и ТекущийДолг2 показывали реальные дебиторки по Фирма1 и Фирма2 соответственно.
3 Попытка1С
 
05.09.18
21:21
(2) может у вас там расчет какой уже есть с отбором по фирме1
4 И Р
 
05.09.18
21:27
Более того, проверил, если убираю первое измерение то показывает не по всем фирмам, а только по той которая указана как Фирма в реализации.  
Возможно как то задаются параметры формирования этих регистров? Например вот тут:

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

    СписокПараметров=СоздатьОбъект("СписокЗначений");
    
    СписокПараметров.ДобавитьЗначение(ТекущийДокумент(),"ТекДок");
    СписокПараметров.ДобавитьЗначение(Склад,        "Склад");
    СписокПараметров.ДобавитьЗначение(Фирма,        "Фирма");
    СписокПараметров.ДобавитьЗначение(ФирмаДляОстатковТМЦ,"ФирмаДляОстатковТМЦ");
    СписокПараметров.ДобавитьЗначение(Контрагент,    "Контрагент");
    СписокПараметров.ДобавитьЗначение(Договор,        "Договор");  
    
    // Сформируем список статусов партий
    СтатусПартии = СоздатьОбъект("СписокЗначений");
    СписокПараметров.ДобавитьЗначение(КодОперации,    "КодОперации");
    
    ВремРегистры                     = СоздатьОбъект("Регистры");
5 hhhh
 
05.09.18
21:30
(4) ну вот ты указал

    ФирмаДляОстатковТМЦ = глФирмаДляОстатковТМЦ(Фирма);

убери это
6 И Р
 
05.09.18
23:07
(5) Учитывая что дальше по типовому решению значения временных регистров используются решил не создавать проблем и сформировать ВремРегистры2 по второй фирме, однако столкнулся с проблемой:

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


.

Не могу понять почему ВремПокупатели2  показывают долги всех  контрагентов перед Фирма2 что не так я указал в параметрах формирования регистра?  Может быть Контрагент.ОсновнойДоговор содержит Основной Договор с 1-й фирмой(основной, которая указана в документе)?
7 big
 
06.09.18
04:47
Есть в глобальном модуле в ТиС такая функция глФильтрДолгов, она то как раз и фильтрует остатки в разрезе фирмы (списка фирм) и договора (договоров) контрагента.  В примере из (6) она вызывается или нет?
8 И Р
 
06.09.18
09:10
(7) В коде модуля встречается такая строка:

    Если КодОперации=Перечисление.КодыОпераций.Продажа Тогда
        глФильтрДолгов   (Контекст, Договор,     СписокПараметров,     ВремПокупатели                 );    
    КонецЕсли;
9 HawkEye
 
06.09.18
09:14
(0) т.е. тебя не смущает, что ты на один и тот-же объект (регистр) пытаешься натянуть в один фильтр - две фирмы?
10 uno-group
 
06.09.18
10:39
Где то есть
ВремПокупатели.УстановитьФильтр("Фирма",ВыбФирма)или наподобие. а тебе нужно туда засунуть список фирм.
А лучше сделать еще свой регистр и на него свои фильтры накладывать.
  ВремПокупатели2 = ВремРегистры.Покупатели;
11 И Р
 
06.09.18
23:37
Если 0 = Контекст.ИтогиАктуальны() Тогда
            ВремПокупатели2.ВременныйРасчет();
        КонецЕсли;      


Выдаёт ошибку:
Если 0 = <<?>>Контекст.ИтогиАктуальны() Тогда
{Документ.Реализация.Модуль Документа(98)}: Ожидается логическое выражение

Разве это не логическое выражение?
12 big
 
07.09.18
04:56
(11) В модуле документа Контекст применять не нужно, там уже "всё в контексте"