|
Задваиваются проводки при выборе из регистра бухгалтерии ДвиженияССубконто | ☑ | ||
---|---|---|---|---|
0
wisekat
28.01.14
✎
11:18
|
Есть такой запрос в СКД:
ВЫБРАТЬ ХозрасчетныйДвиженияССубконто.Период, ХозрасчетныйДвиженияССубконто.СчетДт, ХозрасчетныйДвиженияССубконто.СчетКт, ХозрасчетныйДвиженияССубконто.СубконтоКт1, ХозрасчетныйДвиженияССубконто.СубконтоКт1.Код, ХозрасчетныйДвиженияССубконто.Организация, ХозрасчетныйДвиженияССубконто.Сумма, СчетаБухгалтерскогоУчетаОССрезПоследних.СчетУчета ИЗ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&ДатаНач, &ДатаКон, , , ) КАК ХозрасчетныйДвиженияССубконто ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СчетаБухгалтерскогоУчетаОС.СрезПоследних КАК СчетаБухгалтерскогоУчетаОССрезПоследних ПО ХозрасчетныйДвиженияССубконто.СубконтоКт1 = СчетаБухгалтерскогоУчетаОССрезПоследних.ОсновноеСредство ГДЕ ХозрасчетныйДвиженияССубконто.СчетДт В(&ВыбСчетаЗатрат) И ХозрасчетныйДвиженияССубконто.СчетКт В(&ВыбСчетаИзноса) И ХозрасчетныйДвиженияССубконто.Организация = &ВыбОрганизация И ХозрасчетныйДвиженияССубконто.Активность Обнаружилось, что некоторые проводки в нашем отчёте задваиваются. Что это может быть? |
|||
1
zak555
28.01.14
✎
11:21
|
параметры виртуальной таблицы не любишь ?
|
|||
2
wisekat
28.01.14
✎
11:43
|
(1) Это по поводу фильтров на счета?
|
|||
3
wisekat
28.01.14
✎
11:45
|
(1) Вроде там не работали правильно отборы. У нас ВыбСчетаЗатрат и ВыбСчетаИзноса - это списки счетов. Но на самом деле они не списки, а ТаблицыЗначений - иначе 1С не отбирает правильно по списку оператором "В". Формируются так:
СпСчетаИзноса = Новый ТаблицаЗначений; СпСчетаИзноса.Колонки.Добавить("СчетИзноса"); НоваяСтрока = СпСчетаИзноса.Добавить(); НоваяСтрока.СчетИзноса = ПланыСчетов.Хозрасчетный.НайтиПоКоду("131"); НоваяСтрока = СпСчетаИзноса.Добавить(); НоваяСтрока.СчетИзноса = ПланыСчетов.Хозрасчетный.НайтиПоКоду("1321"); СпСчетаЗатрат = Новый ТаблицаЗначений; СпСчетаЗатрат.Колонки.Добавить("СчетЗатрат"); НоваяСтрока = СпСчетаЗатрат.Добавить(); НоваяСтрока.СчетЗатрат = ПланыСчетов.Хозрасчетный.НайтиПоКоду("231"); НоваяСтрока = СпСчетаЗатрат.Добавить(); НоваяСтрока.СчетЗатрат = ПланыСчетов.Хозрасчетный.НайтиПоКоду("232"); НоваяСтрока = СпСчетаЗатрат.Добавить(); НоваяСтрока.СчетЗатрат = ПланыСчетов.Хозрасчетный.НайтиПоКоду("233"); НоваяСтрока = СпСчетаЗатрат.Добавить(); НоваяСтрока.СчетЗатрат = ПланыСчетов.Хозрасчетный.НайтиПоКоду("91"); НоваяСтрока = СпСчетаЗатрат.Добавить(); НоваяСтрока.СчетЗатрат = ПланыСчетов.Хозрасчетный.НайтиПоКоду("92"); НоваяСтрока = СпСчетаЗатрат.Добавить(); НоваяСтрока.СчетЗатрат = ПланыСчетов.Хозрасчетный.НайтиПоКоду("949"); |
|||
4
Maxus43
28.01.14
✎
11:45
|
(2) да.. Ну и отгадай что будет если в документе 2 строки например.
По простому - вытащи ещё регистратор, и погляди в док у которого "задвоено" |
|||
5
Maxus43
28.01.14
✎
11:46
|
>>иначе 1С не отбирает правильно по списку оператором "В"
врёшь же, всё 1с нормально отбирает. Массив счетов передавай в запрос в параметр |
|||
6
wisekat
28.01.14
✎
11:46
|
т.е. надо отобрать 12 корреспонденций 131-231, 131-232, ..., 1321-949
Я бы и сам рад использовать параметры вирт. таблицы если бы оно сработало как надо - и должно было быть гораздо быстрее как я понимаю. |
|||
7
wisekat
28.01.14
✎
11:47
|
(5) Сейчас проверю через массив, но помню что напрямую в запросе массив не работал.
|
|||
8
wisekat
28.01.14
✎
11:48
|
Насчёт задвоения сам разобрался - в регистре было две записи по одному ОС. Протупил, думал, что там только по одной записи к каждому ОС.
Запрос вот такой должен был быть: ВЫБРАТЬ ХозрасчетныйДвиженияССубконто.Период, ХозрасчетныйДвиженияССубконто.СчетДт, ХозрасчетныйДвиженияССубконто.СчетКт, ХозрасчетныйДвиженияССубконто.СубконтоКт1, ХозрасчетныйДвиженияССубконто.СубконтоКт1.Код, ХозрасчетныйДвиженияССубконто.Организация, ХозрасчетныйДвиженияССубконто.Сумма, СчетаБухгалтерскогоУчетаОССрезПоследних.СчетУчета ИЗ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&ДатаНач, &ДатаКон, , , ) КАК ХозрасчетныйДвиженияССубконто ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СчетаБухгалтерскогоУчетаОС.СрезПоследних КАК СчетаБухгалтерскогоУчетаОССрезПоследних ПО ХозрасчетныйДвиженияССубконто.СубконтоКт1 = СчетаБухгалтерскогоУчетаОССрезПоследних.ОсновноеСредство И ХозрасчетныйДвиженияССубконто.Организация = СчетаБухгалтерскогоУчетаОССрезПоследних.Организация ГДЕ ХозрасчетныйДвиженияССубконто.СчетДт В(&ВыбСчетаЗатрат) И ХозрасчетныйДвиженияССубконто.СчетКт В(&ВыбСчетаИзноса) И ХозрасчетныйДвиженияССубконто.Организация = &ВыбОрганизация И ХозрасчетныйДвиженияССубконто.Активность |
|||
9
wisekat
28.01.14
✎
11:49
|
(8) т.е. дополнительно по Организации в регистре надо было фильтровать
|
|||
10
wisekat
28.01.14
✎
14:35
|
(5) Попробовал. Массивы в параметрах виртуальной таблицы работают. Причём работают раз в 100 быстрее наверное :).
Запрос теперь выглядит так: ВЫБРАТЬ ХозрасчетныйДвиженияССубконто.Период, ХозрасчетныйДвиженияССубконто.СчетДт, ХозрасчетныйДвиженияССубконто.СчетКт, ХозрасчетныйДвиженияССубконто.СубконтоКт1, ХозрасчетныйДвиженияССубконто.СубконтоКт1.Код, ХозрасчетныйДвиженияССубконто.Организация, ХозрасчетныйДвиженияССубконто.Сумма, СчетаБухгалтерскогоУчетаОССрезПоследних.СчетУчета ИЗ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто( &ДатаНач, &ДатаКон, СчетКт В (&СпСчетаИзноса) И СчетДт В (&СпСчетаЗатрат) И Организация = &ВыбОрганизация, , ) КАК ХозрасчетныйДвиженияССубконто ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СчетаБухгалтерскогоУчетаОС.СрезПоследних КАК СчетаБухгалтерскогоУчетаОССрезПоследних ПО ХозрасчетныйДвиженияССубконто.СубконтоКт1 = СчетаБухгалтерскогоУчетаОССрезПоследних.ОсновноеСредство И ХозрасчетныйДвиженияССубконто.Организация = СчетаБухгалтерскогоУчетаОССрезПоследних.Организация ГДЕ СчетаБухгалтерскогоУчетаОССрезПоследних.Организация = &ВыбОрганизация И ХозрасчетныйДвиженияССубконто.Активность Я так понимаю, по счетам построены внутренние индексы, которые позволяют платформе оптимизировать запрос. А вот перенос Организации в параметры виртуальной таблицы ускорения не даёт - или это ускорение уже просто незаметно. Насколько я знаю, для измерения регистра надо свойство Индексировать устанавливать для построения соответствующего индекса, которые платформа может использовать? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |