|
Соединение в запросе | ☑ | ||
---|---|---|---|---|
0
Csar
13.11.13
✎
17:59
|
Всем привет. Подскажите как соединить две таблицы регистра бухгалтерии в запросе по Субконто3, при условии, что Субконто3 не у всех счетов имеется?
Примерный пример :) ВЫБРАТЬ
При запуске обработки прогоняются различные счета, но у некоторых недоступно Субконто3 и запрос отваливается на соединении. |
|||
1
Конфигуратор1с
13.11.13
✎
18:01
|
(0) эм, а зачем соединять те счета по которым нет третьего субконто?
|
|||
2
Csar
13.11.13
✎
18:03
|
(1) необходим прогнать многие счета. А как же соединить при этом по выборочным счетам? Мне всего для одного субсчета нужжно соединение
|
|||
3
Конфигуратор1с
13.11.13
✎
18:03
|
(2) ну так отобрать только те счета по которым есть субконто3 ?
|
|||
4
Csar
13.11.13
✎
18:04
|
(1) в (0) представлен мягко говоря сильно упрощенный код запроса, а так он с вирт. таблицами и не очень читабельный
|
|||
5
Конфигуратор1с
13.11.13
✎
18:04
|
Просто если у него нет субконто то оно в результирующую таблицу не попадет. смысл по нему данные отбирать?
|
|||
6
Csar
13.11.13
✎
18:04
|
(3) Но для всего запроса необходимо прогнать и по тем счетам, где нет Субконто3.
|
|||
7
Csar
13.11.13
✎
18:06
|
(5) да, там есть еще и ЕСТЬNULL(,0). Если нет Субконто, то надо подставлять ноль
|
|||
8
Конфигуратор1с
13.11.13
✎
18:06
|
(6) ну так во временную таблицу и заполнить если Субконто3 нет тогда поставить туда пустое значение и соединять не виртуальную таблицу а временную
|
|||
9
Конфигуратор1с
13.11.13
✎
18:06
|
(7) соединяй не с виртуальной таблицей а с временной
|
|||
10
Csar
13.11.13
✎
18:08
|
(5) т.е. запрос разбить на два? В первом прогонять только те счета, где есть Субконто3, а во втором - все остальное и потом объединять результаты? Вроде это как то не очень)
|
|||
11
Csar
13.11.13
✎
18:10
|
Забыл сказать, что СуммаНДСпо6002счету - это Вирт. Таблица
|
|||
12
viktor_vv
13.11.13
✎
18:12
|
А в параметре ВидыСубконто у тебя что ?
|
|||
13
Csar
13.11.13
✎
18:12
|
(9) Спасибо за мысль. Я правильно ее понял в (10)?
|
|||
14
Конфигуратор1с
13.11.13
✎
18:37
|
(13) типа того)
|
|||
15
Csar
13.11.13
✎
18:40
|
ВЫБРАТЬ
ОстатокПо63Счету.Субконто1, ОстатокПо63Счету.Субконто2, ОстатокПо63Счету.СуммаОстатокКт ПОМЕСТИТЬ ОстатокПо63счету ИЗ РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет = &Счет63, , ) КАК ОстатокПо63Счету ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СУММА(СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СуммаНДС) КАК СуммаНДС, СписаниеСРасчетногоСчетаРасшифровкаПлатежа.Ссылка.Ссылка ПОМЕСТИТЬ СуммаНДСпо6002счету ИЗ Документ.СписаниеСРасчетногоСчета.РасшифровкаПлатежа КАК СписаниеСРасчетногоСчетаРасшифровкаПлатежа ГДЕ СписаниеСРасчетногоСчетаРасшифровкаПлатежа.Ссылка В (ВЫБРАТЬ ХозрасчетныйОстатки.Субконто3 КАК Субконто3 ИЗ РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет = &Счет6002, , Организация = &Организация) КАК ХозрасчетныйОстатки) СГРУППИРОВАТЬ ПО СписаниеСРасчетногоСчетаРасшифровкаПлатежа.Ссылка.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ХозрасчетныйОстатки.Субконто1 КАК Контрагент, ХозрасчетныйОстатки.Счет КАК Счет, СУММА(ВЫБОР КОГДА ХозрасчетныйОстатки.Счет.Вид = &Активный ИЛИ ХозрасчетныйОстатки.СуммаОстатокДт > 0 ТОГДА ВЫБОР КОГДА &Счет63 В (ХозрасчетныйОстатки.Счет) ТОГДА ХозрасчетныйОстатки.СуммаОстатокДт - ЕСТЬNULL(ОстатокПо63счету.СуммаОстатокКт, 0) ИНАЧЕ ВЫБОР КОГДА ХозрасчетныйОстатки.Счет = &Счет6002 ТОГДА ХозрасчетныйОстатки.СуммаОстатокДт - СуммаНДСпо6002счету.СуммаНДС ИНАЧЕ ХозрасчетныйОстатки.СуммаОстатокДт КОНЕЦ КОНЕЦ ИНАЧЕ ХозрасчетныйОстатки.СуммаОстатокКт КОНЕЦ) КАК Всего, ВЫБОР КОГДА ХозрасчетныйОстатки.Счет.Вид = &Активный ИЛИ ХозрасчетныйОстатки.СуммаОстатокДт > 0 ТОГДА &Дебиторская ИНАЧЕ &Кредиторская КОНЕЦ КАК ВидЗадолженности, СУММА(ЕСТЬNULL(ОстатокПо63счету.СуммаОстатокКт, 0)) КАК СуммаОстатокКт, ЕСТЬNULL(СуммаНДСпо6002счету.СуммаНДС, 0) КАК СуммаНДС ИЗ РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет В (&МассивСчетов), &ВидыСубконто, Организация = &Организация) КАК ХозрасчетныйОстатки ЛЕВОЕ СОЕДИНЕНИЕ ОстатокПо63счету КАК ОстатокПо63счету ПО ХозрасчетныйОстатки.Субконто1 = ОстатокПо63счету.Субконто1 И ХозрасчетныйОстатки.Субконто2 = ОстатокПо63счету.Субконто2 ЛЕВОЕ СОЕДИНЕНИЕ СуммаНДСпо6002счету КАК СуммаНДСпо6002счету ПО ХозрасчетныйОстатки.Субконто3 = СуммаНДСпо6002счету.Ссылка ГДЕ (&ВидЗадолженности = НЕОПРЕДЕЛЕНО ИЛИ ВЫБОР КОГДА ХозрасчетныйОстатки.Счет.Вид = &Активный ИЛИ ХозрасчетныйОстатки.СуммаОстатокДт > 0 ТОГДА &Дебиторская ИНАЧЕ &Кредиторская КОНЕЦ = &ВидЗадолженности) И ВЫБОР КОГДА ХозрасчетныйОстатки.Счет.Вид = &Активный ИЛИ ХозрасчетныйОстатки.СуммаОстатокДт > 0 ТОГДА ХозрасчетныйОстатки.СуммаОстатокДт - ЕСТЬNULL(ОстатокПо63счету.СуммаОстатокКт, 0) ИНАЧЕ ХозрасчетныйОстатки.СуммаОстатокКт КОНЕЦ <> 0 СГРУППИРОВАТЬ ПО ХозрасчетныйОстатки.Субконто1, ХозрасчетныйОстатки.Счет, ВЫБОР КОГДА ХозрасчетныйОстатки.Счет.Вид = &Активный ИЛИ ХозрасчетныйОстатки.СуммаОстатокДт > 0 ТОГДА &Дебиторская ИНАЧЕ &Кредиторская КОНЕЦ, СуммаНДСпо6002счету.СуммаНДС УПОРЯДОЧИТЬ ПО ХозрасчетныйОстатки.Счет.Порядок, ХозрасчетныйОстатки.Субконто1.Наименование ; //////////////////////////////////////////////////////////////////////////////// УНИЧТОЖИТЬ ОстатокПо63счету |
|||
16
rphosts
13.11.13
✎
18:56
|
(15) зачем уничтожать, если по выполнении запроса все временные и так будут уничтожены?
|
|||
17
viktor_vv
13.11.13
✎
19:02
|
Чето мне имхается тебе надо было просто в ВидСубконто, если это массив видов, третий вид субконто поднять на вторую позицию и соединять в первоначальном
ПО ХозрасчетныйОстатки.Субконто2 = СуммаНДСпо6002счету.Ссылка |
|||
18
Csar
13.11.13
✎
19:25
|
(17) так не получится, т.к. все счета - счета расчетов с контрагентами. А там второе субконто - договор. Интересует счет 60.02 - только для него нужно вычитать НДС. У этого счета третье субконто как раз документ расчетов.
|
|||
19
viktor_vv
13.11.13
✎
19:33
|
(18) Просто в итоговом запросе нигде не увидел использование Договора в Выбрать или в условиях, поэтому вполне возможно в ВидСубконто передать только два вида (Контаргент и ДокументРасчетов) и соединение и ЕстьNull .
Параметр Вид субконто в ВТ используется еще и для упорядочивания видов субконто. |
|||
20
Csar
13.11.13
✎
23:54
|
(19) не совсем тебя понял. ВидСубконто используется в параметрах вирт. таблицы РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет В (&МассивСчетов), &ВидыСубконто, Организация = &Организация) КАК ХозрасчетныйОстатки.
|
|||
21
viktor_vv
14.11.13
✎
00:32
|
(20) Не, это я неправ был.
|
|||
22
Csar
14.11.13
✎
09:04
|
Видимо единственный вариант это разбить один пробег по счетам на два пробега - один только по 6002, к которому надо привязать еще одно поле из другой таблицы по Субконто3, и второй пробег по остальным счетам.
|
|||
23
Csar
14.11.13
✎
10:54
|
Я упростил запрос до следующего:
ВЫБРАТЬ
Делаю запрос только по счету 60.02. И все равно вылазит ошибка, что не найдено Субконто3. Я проверил - в предопредененных значениях счета 60.02 Субконто3 нету, а по факту там сидит документ расчетов. |
|||
24
hhhh
14.11.13
✎
11:00
|
(23) &ВидыСубконто проверьте
|
|||
25
Csar
14.11.13
✎
11:02
|
(24) В яблочко! Я уже весь мозг сломал! Спасибо большое!
|
|||
26
Csar
14.11.13
✎
11:02
|
+ (25) и я только что понял предыдущие посты касательно ВидовСубконто! Спасибо огромное!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |