Имя: Пароль:
1C
1С v8
Торг-29 в разрезе организаций
,
0 first_may
 
10.07.14
11:28
Добрый день.
Собственно вопрос в том, как сделать Торг-29 в разрезе организаций?

В типовом отчете данные берутся из РегистрНакопления.ТоварыВРознице.ОстаткиИОбороты(&Дата1, &Дата2, Регистратор, , Склад = &Склад) КАК ОстаткиТоваров
где нет ни слова об организации, а бухгалтерия хотела бы видеть данные отдельно по двум орагнизациям.
1 Dr_DelProg
 
10.07.14
11:29
А конфигурация какая?
2 acsent
 
10.07.14
11:29
Нельзя делать 1 склад под разные организации
3 first_may
 
10.07.14
11:30
(1) забыл написать, извиняюсь. Все это в
Комплексная автоматизация, редакция 1.1 (1.1.48.1) .
4 first_may
 
10.07.14
11:31
(2) то есть для каждой организации делать свой склад?
5 Dr_DelProg
 
10.07.14
11:33
ТОРГ-29 это в РТиУ?
6 first_may
 
10.07.14
11:34
(5) ТОРГ-29 в Комплексная автоматизация
7 Dr_DelProg
 
10.07.14
11:35
Это понятно. Документ какой :) Или это отчёт... Просто я в этой конфе редко работаю.
8 Dr_DelProg
 
10.07.14
11:37
Нашёл. Отчёт значит.
9 first_may
 
10.07.14
11:37
(7) это отчет ТоварныйОтчетТОРГ29... формируется на основе запроса:

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

СГРУППИРОВАТЬ ПО
    ОстаткиТоваров.Регистратор,
    ОстаткиТоваров.Период,
    ОстаткиТоваров.Регистратор.Номер,
    ОстаткиТоваров.Регистратор.Организация

УПОРЯДОЧИТЬ ПО
    ОстаткиТоваров.Период
10 first_may
 
10.07.14
11:37
(8) я попробовал, если занести второй склад, то все нормально будет
11 first_may
 
10.07.14
11:38
а вот если один склад?
12 Dr_DelProg
 
10.07.14
11:38
Я так понимаю, подсказка в этой строке запроса:
ОстаткиТоваров.Регистратор.Организация

Просто я что-то сомневаюсь что бухгалтерия захочет перелопатить базу для разделения складов.
13 first_may
 
10.07.14
11:41
"бухгалтерия захочет перелопатить базу для разделения складов" - это точно, перевыбирать склады и снова проводить документы... навряд ли... вот и хотелось бы...
14 Dr_DelProg
 
10.07.14
11:41
Если я правильно понял, то отчёт должен группироваться по организациям, следовательно:
1. Добавляем ИТОГИ ПО ОстаткиТоваров.Регистратор.Организация в запрос (возможно, придётся остальную часть запроса поместить во вложенный запрос для этого)
2. Допиливаем печатную форму под вывод организаций.
3. Проверяем, чтобы отбор по организациям не мешался, когда организация не выбрана.
15 first_may
 
10.07.14
11:46
(14) вот как раз не понятно, как этот запрос повернуть :(.
16 acsent
 
10.07.14
11:49
Остатки по организациям нужны?
17 first_may
 
10.07.14
11:49
(16) да
18 first_may
 
10.07.14
12:11
За период получается отфильтровать, добавив условие
ИЗ
    РегистрНакопления.ТоварыВРознице.ОстаткиИОбороты(&Дата1, &Дата2, Регистратор, , Склад = &Склад) КАК ОстаткиТоваров
ГДЕ
    ОстаткиТоваров.Регистратор.Организация = &Организация

и на конец посчитать сумму. А вот на начало, как с этой суммой быть? Что можно придумать?
19 ДенисЧ
 
10.07.14
12:15
(18) От начала времён до начальной даты посчитать конечный остаток.
А проще - послать бухов в путешествие...
20 Dr_DelProg
 
10.07.14
12:17
В отчёте есть отбор по организации (по кр.мере в версии 1.1.20) - как он начальный остаток считает, если организация выбрана? Каким-то подобным макаром надо и здесь посчитать.
21 Dr_DelProg
 
10.07.14
12:20
Ещё вариант - брать остаток на начало из другого регистра, например ТоварыОрганизаций, если он по складам ведётся, и если розничные склады туда попадают (в этом я не уверен).

Если это не прокатит, и задача стоит геморроя - то нужно добавлять-таки измерение "организация" в регистр ТоварыВРознице и допиливать движения документов по нему. Только нужно быть готовым к тому, что ещё надо будет как-то остатки по организациям выровнять в этом регистре после этого.
22 first_may
 
10.07.14
12:21
(20) "В отчёте есть отбор по организации (по кр.мере в версии 1.1.20) " - в каком отчете?
23 Dr_DelProg
 
10.07.14
12:22
ТоварныйОтчетТОРГ29
24 first_may
 
10.07.14
12:52
Вроде получилось все сделать запросом. Если кому надо, то вот:

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ОстаткиТоваров.Регистратор.Организация КАК Организация,
    ОстаткиТоваров.Регистратор КАК Док,
    ОстаткиТоваров.Период КАК ДатаДок,
    ОстаткиТоваров.Регистратор.Номер КАК НомерДок,
    ОстатокНаНачало.НачОст КАК НачОст,
    ОстатокНаКонец.НачОст КАК КонОст,
    ВЫБОР
        КОГДА ОстаткиТоваров.СуммаПродажнаяПриход - ОстаткиТоваров.СуммаПродажнаяРасход > 0
            ТОГДА ОстаткиТоваров.СуммаПродажнаяПриход - ОстаткиТоваров.СуммаПродажнаяРасход
        ИНАЧЕ 0
    КОНЕЦ КАК Приход,
    ВЫБОР
        КОГДА ОстаткиТоваров.СуммаПродажнаяРасход - ОстаткиТоваров.СуммаПродажнаяПриход > 0
            ТОГДА ОстаткиТоваров.СуммаПродажнаяРасход - ОстаткиТоваров.СуммаПродажнаяПриход
        ИНАЧЕ 0
    КОНЕЦ КАК Расход
ИЗ
    РегистрНакопления.ТоварыВРознице.ОстаткиИОбороты(&Дата1, &Дата2, Регистратор, , Склад = &Склад) КАК ОстаткиТоваров,
    ОстатокНаНачало КАК ОстатокНаНачало,
    ОстатокНаКонец КАК ОстатокНаКонец
ГДЕ
    ОстаткиТоваров.Регистратор.Организация = &Организация

УПОРЯДОЧИТЬ ПО
    ОстаткиТоваров.Период