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

1С:Предприятие ::

Метки: 

v7: ВремРегистры формируются для текущей фирмы? Как сформировать для указанной?

Я
   И Р
 
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 соответственно.
   Попытка1С
 
3 - 05.09.18 - 21:21
(2) может у вас там расчет какой уже есть с отбором по фирме1
   И Р
 
4 - 05.09.18 - 21:27
Более того, проверил, если убираю первое измерение то показывает не по всем фирмам, а только по той которая указана как Фирма в реализации.  
Возможно как то задаются параметры формирования этих регистров? Например вот тут:

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

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

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

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

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

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


.

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

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


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

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


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