Имя: Пароль:
1C
1С v8
v8: соединение 3 табличных частей
,
0 antiteror91
 
08.04.13
18:18
у меня в документе 3 табличные части. Мне их нужно объединить. Я их объединил с помощью команды "объединить". но объединение очень долго длится..... как оптимизировать этот процесс??
1 Волшебник
 
08.04.13
18:18
используй ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
2 Dionis Sergeevich
 
08.04.13
18:18
А как ты их объекдинил? По каким признакам?
3 Defender aka LINN
 
08.04.13
18:20
(2) У объединения есть признаки?
(0) С чего ты взял, что это "объединение долго длится"?
4 antiteror91
 
08.04.13
18:21
(3) две записи в документе объединяет минуту.....
5 Dionis Sergeevich
 
08.04.13
18:21
(3) точно, пора в отпуск
(0) код в студию
6 antiteror91
 
08.04.13
18:22
(5)ВЫБРАТЬ
   "Товары" КАК ТабЧасть,
   СУММА(ВЫБОР
           КОГДА АвансовыйОтчет.Ссылка.ВалютаДокумента = &ВалютаРеглУчета
               ТОГДА АвансовыйОтчет.Сумма
           ИНАЧЕ ВЫБОР
                   КОГДА АвансовыйОтчет.Ссылка.СуммаВключаетНДС = ИСТИНА
                       ТОГДА АвансовыйОтчет.Сумма
                   ИНАЧЕ АвансовыйОтчет.Сумма + АвансовыйОтчет.СуммаНДС
               КОНЕЦ * (АвансовыйОтчет.Ссылка.КурсДокумента / АвансовыйОтчет.Ссылка.КратностьДокумента)
       КОНЕЦ) КАК ПоОтчету,
   СУММА(ВЫБОР
           КОГДА АвансовыйОтчет.Ссылка.ВалютаДокумента = &ВалютаРеглУчета
               ТОГДА 0
           ИНАЧЕ ВЫБОР
                   КОГДА АвансовыйОтчет.Ссылка.СуммаВключаетНДС = ИСТИНА
                       ТОГДА АвансовыйОтчет.Сумма
                   ИНАЧЕ АвансовыйОтчет.Сумма + АвансовыйОтчет.СуммаНДС
               КОНЕЦ
       КОНЕЦ) КАК ПоОтчетуВВалюте,
   СУММА(ВЫБОР
           КОГДА АвансовыйОтчет.Ссылка.ВалютаДокумента = &ВалютаРеглУчета
               ТОГДА АвансовыйОтчет.СуммаНДС
           ИНАЧЕ 0
       КОНЕЦ) КАК СуммаНДС,
   АвансовыйОтчет.СчетУчетаБУ.Код КАК СчетЗатрат,
   АвансовыйОтчет.СчетУчетаНДС КАК СчетНДС,
   0 КАК СуммаПНПоОплате
ИЗ
   Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчет
ГДЕ
   АвансовыйОтчет.Ссылка = &ТекущийДокумент

СГРУППИРОВАТЬ ПО
   АвансовыйОтчет.СчетУчетаБУ.Код,
   АвансовыйОтчет.СчетУчетаНДС

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   "Оплата",
   СУММА(АвансовыйОтчет.Сумма),
   СУММА(ВЫБОР
           КОГДА АвансовыйОтчет.Ссылка.ВалютаДокумента = &ВалютаРеглУчета
               ТОГДА 0
           ИНАЧЕ АвансовыйОтчет.СуммаВзаиморасчетов
       КОНЕЦ),
   СУММА(0),
   ВЫБОР
       КОГДА НЕ ХозрасчетныйДвиженияССубконто.СчетДт ЕСТЬ NULL
           ТОГДА ХозрасчетныйДвиженияССубконто.СчетДт
       КОГДА АвансовыйОтчет.ДоговорКонтрагента.ВедениеВзаиморасчетов = ЗНАЧЕНИЕ(Перечисление.ВедениеВзаиморасчетовПоДоговорам.ПоРасчетнымДокументам)
           ТОГДА ВЫБОР
                   КОГДА АвансовыйОтчет.СчетУчетаРасчетовСКонтрагентом = &ПустойСчет
                       ТОГДА ""
                   ИНАЧЕ АвансовыйОтчет.СчетУчетаРасчетовСКонтрагентом.Код
               КОНЕЦ
       ИНАЧЕ ВЫБОР
               КОГДА АвансовыйОтчет.СчетУчетаРасчетовПоАвансам = &ПустойСчет
                   ТОГДА ""
               ИНАЧЕ АвансовыйОтчет.СчетУчетаРасчетовПоАвансам.Код
           КОНЕЦ
   КОНЕЦ,
   АвансовыйОтчет.НомерСтроки,
   СУММА(АвансовыйОтчет.СуммаПН)
ИЗ
   Документ.АвансовыйОтчет.ОплатаПоставщикам КАК АвансовыйОтчет
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ХозрасчетныйДвиженияССубконто
       ПО АвансовыйОтчет.Ссылка = ХозрасчетныйДвиженияССубконто.Регистратор
           И АвансовыйОтчет.Контрагент = ХозрасчетныйДвиженияССубконто.СубконтоДт1
           И АвансовыйОтчет.ДоговорКонтрагента = ХозрасчетныйДвиженияССубконто.СубконтоДт2
           И (ХозрасчетныйДвиженияССубконто.Содержание = "Поступление денежных средств")
ГДЕ
   АвансовыйОтчет.Ссылка = &ТекущийДокумент

СГРУППИРОВАТЬ ПО
   ВЫБОР
       КОГДА НЕ ХозрасчетныйДвиженияССубконто.СчетДт ЕСТЬ NULL
           ТОГДА ХозрасчетныйДвиженияССубконто.СчетДт
       КОГДА АвансовыйОтчет.ДоговорКонтрагента.ВедениеВзаиморасчетов = ЗНАЧЕНИЕ(Перечисление.ВедениеВзаиморасчетовПоДоговорам.ПоРасчетнымДокументам)
           ТОГДА ВЫБОР
                   КОГДА АвансовыйОтчет.СчетУчетаРасчетовСКонтрагентом = &ПустойСчет
                       ТОГДА ""
                   ИНАЧЕ АвансовыйОтчет.СчетУчетаРасчетовСКонтрагентом.Код
               КОНЕЦ
       ИНАЧЕ ВЫБОР
               КОГДА АвансовыйОтчет.СчетУчетаРасчетовПоАвансам = &ПустойСчет
                   ТОГДА ""
               ИНАЧЕ АвансовыйОтчет.СчетУчетаРасчетовПоАвансам.Код
           КОНЕЦ
   КОНЕЦ,
   АвансовыйОтчет.НомерСтроки

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   "Прочее",
   СУММА(ВЫБОР
           КОГДА АвансовыйОтчет.Ссылка.ВалютаДокумента = &ВалютаРеглУчета
               ТОГДА АвансовыйОтчет.Сумма
           ИНАЧЕ ВЫБОР
                   КОГДА АвансовыйОтчет.Ссылка.СуммаВключаетНДС = ИСТИНА
                       ТОГДА АвансовыйОтчет.Сумма
                   ИНАЧЕ АвансовыйОтчет.Сумма + АвансовыйОтчет.СуммаНДС
               КОНЕЦ * (АвансовыйОтчет.Ссылка.КурсДокумента / АвансовыйОтчет.Ссылка.КратностьДокумента)
       КОНЕЦ),
   СУММА(ВЫБОР
           КОГДА АвансовыйОтчет.Ссылка.ВалютаДокумента = &ВалютаРеглУчета
               ТОГДА 0
           ИНАЧЕ ВЫБОР
                   КОГДА АвансовыйОтчет.Ссылка.СуммаВключаетНДС = ИСТИНА
                       ТОГДА АвансовыйОтчет.Сумма
                   ИНАЧЕ АвансовыйОтчет.Сумма + АвансовыйОтчет.СуммаНДС
               КОНЕЦ
       КОНЕЦ),
   СУММА(ВЫБОР
           КОГДА АвансовыйОтчет.Ссылка.ВалютаДокумента = &ВалютаРеглУчета
               ТОГДА АвансовыйОтчет.СуммаНДС
           ИНАЧЕ 0
       КОНЕЦ),
   АвансовыйОтчет.СчетЗатрат.Код,
   АвансовыйОтчет.СчетУчетаНДС,
   0
ИЗ
   Документ.АвансовыйОтчет.Прочее КАК АвансовыйОтчет
ГДЕ
   АвансовыйОтчет.Ссылка = &ТекущийДокумент

СГРУППИРОВАТЬ ПО
   АвансовыйОтчет.СчетЗатрат.Код,
   АвансовыйОтчет.СчетУчетаНДС
7 Defender aka LINN
 
08.04.13
18:23
(4) Запрос кажи
8 Defender aka LINN
 
08.04.13
18:24

ИЗ
   Документ.АвансовыйОтчет.ОплатаПоставщикам КАК АвансовыйОтчет
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ХозрасчетныйДвиженияССубконто
       ПО АвансовыйОтчет.Ссылка = ХозрасчетныйДвиженияССубконто.Регистратор
           И АвансовыйОтчет.Контрагент = ХозрасчетныйДвиженияССубконто.СубконтоДт1
           И АвансовыйОтчет.ДоговорКонтрагента = ХозрасчетныйДвиженияССубконто.СубконтоДт2
           И (ХозрасчетныйДвиженияССубконто.Содержание = "Поступление денежных средств")

Объединение тормозит, ага...
9 zladenuw
 
08.04.13
18:25
(8) гы гы
10 Dionis Sergeevich
 
08.04.13
18:26
Весь регистр бухгалтерии берешь? Добавляй параметры виртуальной таблицы
11 antiteror91
 
08.04.13
18:26
(8) ну и куда его деть.......
12 Dionis Sergeevich
 
08.04.13
18:29
(11) Начало и конец периода установи. Дату своего регистратора.
13 Мимохожий Однако
 
08.04.13
18:36
В заголовке Соединение ТЧ. В ветки Объединение. Что-то в консерватории...
14 Зойч
 
08.04.13
18:37
(12) не так
15 Dionis Sergeevich
 
08.04.13
18:41
(14) ну хорошо, условие по регистратору. Так более правильней, но суть то не меняет
16 antiteror91
 
08.04.13
18:49
(15) что-то условие по регестратору не очень ускорило((((
17 Mickeleangelo
 
08.04.13
18:50
+ Надо "ОБЪЕДИНИТЬ ВСЕ"
18 Зойч
 
08.04.13
18:51
(16) не верю
19 Dionis Sergeevich
 
08.04.13
18:52
(16) Условие третьим параметром виртуальной таблицы поставь а не левое соединение(выбор из где)
20 antiteror91
 
08.04.13
19:02
(19) о спасибо) круто)
21 Волшебник
 
08.04.13
19:47
таблица РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто
очень тормозная