Имя: Пароль:
1C
1С v8
Выборка из регистра бухгалтерии
,
0 Kurbash
 
02.07.14
10:35
Всем привет. Такая интересная задачка: делаю выборку из регистра бухгалтерии по 10-ке

ВЫБРАТЬ
    |    ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
    |    ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОстаткиИОбороты.Счет),
    |    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
    |    ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОстаткиИОбороты.Субконто1),
    |    ХозрасчетныйОстаткиИОбороты.Регистратор,
    |    ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОстаткиИОбороты.Регистратор),
    |    ХозрасчетныйОстаткиИОбороты.Субконто1.Код,
    |    ХозрасчетныйОстаткиИОбороты.Субконто2,
    |    ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОстаткиИОбороты.Субконто2),
    |    ХозрасчетныйОстаткиИОбороты.Субконто1.БазоваяЕдиницаИзмерения,
    |    ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОстаткиИОбороты.Субконто1.БазоваяЕдиницаИзмерения),
    |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт) КАК СуммаНачальныйОстатокДт,
    |    СУММА(ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстатокДт КАК ЧИСЛО(10, 3))) КАК КоличествоНачальныйОстатокДт,
    |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт) КАК СуммаОборотДт,
    |    СУММА(ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт КАК ЧИСЛО(10, 3))) КАК КоличествоОборотДт,
    |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК СуммаОборотКт,
    |    СУММА(ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт КАК ЧИСЛО(10, 3))) КАК КоличествоОборотКт,
    |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт) КАК СуммаКонечныйОстатокДт,
    |    СУММА(ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт КАК ЧИСЛО(10, 3))) КАК КоличествоКонечныйОстатокДт
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаС, &ДатаПо, Регистратор, , Счет В ИЕРАРХИИ (&Счетик), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
    |
    |СГРУППИРОВАТЬ ПО
    |    ХозрасчетныйОстаткиИОбороты.Счет,
    |    ХозрасчетныйОстаткиИОбороты.Субконто1,
    |    ХозрасчетныйОстаткиИОбороты.Регистратор,
    |    ХозрасчетныйОстаткиИОбороты.Субконто1.Код,
    |    ХозрасчетныйОстаткиИОбороты.Субконто2,
    |    ХозрасчетныйОстаткиИОбороты.Субконто1.БазоваяЕдиницаИзмерения
    |
    |УПОРЯДОЧИТЬ ПО
    |    Счет,
    |    Субконто1
    |ИТОГИ
    |    СУММА(СуммаНачальныйОстатокДт),
    |    СУММА(КоличествоНачальныйОстатокДт),
    |    СУММА(СуммаОборотДт),
    |    СУММА(КоличествоОборотДт),
    |    СУММА(СуммаОборотКт),
    |    СУММА(КоличествоОборотКт),
    |    СУММА(СуммаКонечныйОстатокДт),
    |    СУММА(КоличествоКонечныйОстатокДт)
    |ПО
    |    ОБЩИЕ,
    |    Счет,
    |    Субконто1

все нормально, все выбирается, но возникла задача-не нужно чтобы в выборку не попадали внутренние движения, т.е чтобы в проводке Дт не равнялся Кт. Как можно сделать?
1 mikecool
 
02.07.14
10:36
добавить условие
2 Maxus43
 
02.07.14
10:36
НЕ КорСчет В ИЕРАРХИИ (&Счетик)
3 Alex S D
 
02.07.14
10:37
есть такая таблица ..оборотыДТКТ
4 Kurbash
 
02.07.14
10:38
(3)-нет, из нее не пойдет, остаток нужен на начало и конец периода
5 Kurbash
 
02.07.14
10:40
(2)-нет такого поля КорСчет
6 Maxus43
 
02.07.14
10:43
(4) а остаток то нужен правильный? или не учитывающий внутренние?
7 Maxus43
 
02.07.14
10:43
Соединять таблицу Остатков и Оборотов (с условием на кор счет)
8 Kurbash
 
02.07.14
10:46
(6)не учитывающий внутренние
9 Maxus43
 
02.07.14
10:48
(8) эти данные не храняться в остатках, тебе придётся строить их на основании таблиц оборотов с начала времён
10 Kurbash
 
02.07.14
10:51
блин...с моим примером значит не получится?
11 Maxus43
 
02.07.14
10:51
поидее 3 запроса должно быть.
1. на период с начала до ДатаНачала - так остаток начальный получишь
2. обороты с ДатаНачала по ДатаОкончания
3. на период с начала времён по ДатаОкончания - конечный остаток, ну иили сумма первого запросча и оборотов второго конечно
12 Maxus43
 
02.07.14
10:52
(10) а как ты себе это представляешь? Остатку пофиг на корреспонденцию, в результате которой он получен
13 Kurbash
 
02.07.14
10:56
черт...ладно буду пробывать
14 hhhh
 
02.07.14
10:57
(10) есть ведь там корсчет, чего вы гоните?
15 Maxus43
 
02.07.14
10:57
(14) ему нужен Остаток ещё, а там естественно нет, и не хранятся в таблицах эти данные просто физически
16 Kurbash
 
02.07.14
11:01
(14)-где?
17 hhhh
 
02.07.14
11:02
(15) зачем ему остаток? если СчетДт = СчетКт, то остаток на этом счете не изменится.
18 Maxus43
 
02.07.14
11:05
(17) это кстати да, чото я затупил.
По субконто порвёт остаток только, общий остаток будет правильный. Не совсем то, что надо автору имхо
А в ОстаткиИОбороты - нет корсчета
19 Kurbash
 
02.07.14
11:09
и че делать?
20 hhhh
 
02.07.14
11:11
(16) да, перепутал, это в таблице Обороты
21 Kurbash
 
02.07.14
11:13
с оборотов выбирать придется? а остатки?
22 hhhh
 
02.07.14
11:14
(21) остатки = 0, Дт делаешь и кредит на ту же сумму. Остаток не изменится.
23 Maxus43
 
02.07.14
11:14
остатки можно и из остатков, но, по субконто будет остаток с учетом внутренних перемещений, общий остаток счета будет правильный
24 Kurbash
 
02.07.14
11:18
(22)нет, но остатки то как выводить?
25 Maxus43
 
02.07.14
11:24
(24) тебе надо видет на каком складе сколько реально осталось? тогда остатки будет вобще правильные, но в оборотах не будет показано, что валенки на этот склад пришли с другого склада
26 Kurbash
 
02.07.14
11:26
(25)так мне обороты как раз такие и не нужны-получается что счетДт=Кт
27 Kurbash
 
02.07.14
11:27
5. ДВИЖЕНИЕ ПО ПРИХОДУ И РАСХОДУ ДОЛЖНО БЫТЬ БЕЗ ВНУТРЕННИХ ПЕРЕМЕЩЕНИЙ. Т.е. в отчете должны быть учтены следующие бухгалтерские проводки:

- по Д. счетов - в корреспонденции с К. счетов прихода со стороны (например, покупка, оприходование излишков при инвентаризации, выпуск из производства);

- по К. счетов - в корреспонденции с Д. счетов по списанию затрат (например, счета видов производства);

Как правило, внутренние перемещения (обороты) по позиции описываются следующими документами движения:

- Расчет себестоимости;

- ГТД по импорту;

- Перемещение товаров и др.
28 Maxus43
 
02.07.14
11:34
(27) ну дак действуй.
Соединяй таблицу Остатков с таблицей Оборотв с фильтром, соединяй по счетам и субконто
29 Kurbash
 
02.07.14
13:32
делаю так:

ВЫБРАТЬ
    |    ХозрасчетныйОбороты.Счет,
    |    ХозрасчетныйОбороты.Субконто1,
    |    ХозрасчетныйОбороты.Субконто2,
    |    ХозрасчетныйОбороты.КоличествоКорОборотДт,
    |    ХозрасчетныйОбороты.СуммаОборотДт,
    |    ХозрасчетныйОбороты.КоличествоКорОборотКт,
    |    ХозрасчетныйОбороты.СуммаОборотКт,
    |    ХозрасчетныйОбороты.Регистратор,
    |    NULL КАК КоличествоОстатокДт,
    |    NULL КАК СуммаОстатокДт,
    |    NULL КАК КоличествоОстатокКт,
    |    NULL КАК СуммаОстатокКт
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаС, &ДатаПо, Регистратор, , , , , ) КАК ХозрасчетныйОбороты
    |ГДЕ
    |    ХозрасчетныйОбороты.Счет = ХозрасчетныйОбороты.КорСчет
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ХозрасчетныйОстатки.Счет,
    |    ХозрасчетныйОстатки.Субконто1,
    |    ХозрасчетныйОстатки.Субконто2,
    |    NULL,
    |    NULL,
    |    NULL,
    |    NULL,
    |    NULL,
    |    ХозрасчетныйОстатки.КоличествоОстатокДт,
    |    ХозрасчетныйОстатки.СуммаОстатокДт,
    |    ХозрасчетныйОстатки.КоличествоОстатокКт,
    |    ХозрасчетныйОстатки.СуммаОстатокКт
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаПо, , , ) КАК ХозрасчетныйОстатки

как их связать?
30 Kurbash
 
02.07.14
13:52
апну
31 Kurbash
 
02.07.14
14:19
пока только так додумался:

ВЫБРАТЬ
                  |    ХозрасчетныйОбороты.Счет,
                  |    ХозрасчетныйОбороты.Субконто1,
                  |    ХозрасчетныйОбороты.Субконто2,
                  |    ВЫРАЗИТЬ(ХозрасчетныйОбороты.КоличествоКорОборотДт КАК ЧИСЛО(10, 3)) КАК КоличествоОборотДт,
                  |    ХозрасчетныйОбороты.СуммаОборотДт,
                  |    ВЫРАЗИТЬ(ХозрасчетныйОбороты.КоличествоКорОборотКт КАК ЧИСЛО(10, 3)) КАК КоличествоОборотКт,
                  |    ХозрасчетныйОбороты.СуммаОборотКт,
                  |    ХозрасчетныйОбороты.Регистратор,
                  |    ВложенныйЗапрос.Поле1,
                  |    ВложенныйЗапрос.СуммаОстатокДт,
                  |    ВложенныйЗапрос.Поле2,
                  |    ВложенныйЗапрос.СуммаОстатокКт
                  |ИЗ
                  |    РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаС, &ДатаПо, Регистратор, , , , , ) КАК ХозрасчетныйОбороты
                  |        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                  |            ХозрасчетныйОстатки.Счет КАК Счет,
                  |            ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
                  |            ХозрасчетныйОстатки.Субконто2 КАК Субконто2,
                  |            ВЫРАЗИТЬ(ХозрасчетныйОстатки.КоличествоОстатокДт КАК ЧИСЛО(10, 3)) КАК Поле1,
                  |            ХозрасчетныйОстатки.СуммаОстатокДт КАК СуммаОстатокДт,
                  |            ВЫРАЗИТЬ(ХозрасчетныйОстатки.КоличествоОстатокДт КАК ЧИСЛО(10, 3)) КАК Поле2,
                  |            ХозрасчетныйОстатки.СуммаОстатокКт КАК СуммаОстатокКт
                  |        ИЗ
                  |            РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаПо, , , ) КАК ХозрасчетныйОстатки) КАК ВложенныйЗапрос
                  |        ПО ХозрасчетныйОбороты.Счет = ВложенныйЗапрос.Счет
                  |            И ХозрасчетныйОбороты.Субконто1 = ВложенныйЗапрос.Субконто1
                  |            И ХозрасчетныйОбороты.Субконто2 = ВложенныйЗапрос.Субконто2
                  |ГДЕ
                  |    ХозрасчетныйОбороты.Счет = ХозрасчетныйОбороты.КорСчет
Закон Брукера: Даже маленькая практика стоит большой теории.