|
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) В модуле документа Контекст применять не нужно, там уже "всё в контексте"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |