Имя: Пароль:
1C
 
Найдите мне ошибку в запросе?
0 Мисти
 
13.05.15
17:57
1. Пришить 67% (2)
2. Оторвать 33% (1)
Всего мнений: 3

Писала не я! Суть в том, что в таблице (в отладчике в запроснике смотрела)ВТ_ВыборкаБезНДС данные верные, а в итоге - 1 сумма попадает - там в одном поступлении совпадает сумма и договор, если сумму изменить (стоб они разные были), то в выборку попадает всё. Не вижу я такого места, чтоб по сумме что-то склеивалось!
1 Мисти
 
13.05.15
17:57
ВЫБРАТЬ
    ХозрасчетныйОборотыДтКт.Регистратор КАК Документ,
    ХозрасчетныйОборотыДтКт.СубконтоКт1 КАК Контрагент,
    ХозрасчетныйОборотыДтКт.СубконтоКт2 КАК Договор,
    ХозрасчетныйОборотыДтКт.Регистратор.НомерВходящегоДокумента КАК НомерДокумента,
    ХозрасчетныйОборотыДтКт.Регистратор.ДатаВходящегоДокумента КАК ДатаДокумента,
    ХозрасчетныйОборотыДтКт.СуммаОборот КАК Сумма,
    ВЫРАЗИТЬ(ХозрасчетныйОборотыДтКт.Регистратор.НазначениеПлатежа КАК СТРОКА(1000)) КАК НазначениеПлатежа,
    ХозрасчетныйОборотыДтКт.СубконтоКт3
ПОМЕСТИТЬ ВТ_ВыборкаПоДокументам
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
            &НачалоПериода,
            &КонецПериода,
            Регистратор,
            СчетДт = &Счет51,
            ,
            СчетКт = &Счет6204
                ИЛИ СчетКт = &ДопСчет,
            ,
            ) КАК ХозрасчетныйОборотыДтКт
ГДЕ
    ХозрасчетныйОборотыДтКт.Регистратор ССЫЛКА Документ.ПоступлениеНаРасчетныйСчет
    И ХозрасчетныйОборотыДтКт.Регистратор.Организация = &Организация

ОБЪЕДИНИТЬ ВСЕ

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

ОБЪЕДИНИТЬ ВСЕ

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    АР_ЗаключениеДоговораАренды.Ссылка КАК Регистратор,
    АР_ЗаключениеДоговораАренды.Дата КАК Период,
    АР_ЗаключениеДоговораАренды.ДоговорКонтрагента КАК Договор,
    АР_ЗаключениеДоговораАренды.Собственник,
    ВТ_ВыборкаПоДокументам.Документ.Дата КАК ДатаСреза
ПОМЕСТИТЬ ВТ_ДокументыЗаключения
ИЗ
    ВТ_ВыборкаПоДокументам КАК ВТ_ВыборкаПоДокументам
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АР_ЗаключениеДоговораАренды КАК АР_ЗаключениеДоговораАренды
        ПО ВТ_ВыборкаПоДокументам.Договор = АР_ЗаключениеДоговораАренды.ДоговорКонтрагента
ГДЕ
    АР_ЗаключениеДоговораАренды.Проведен

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ РАЗЛИЧНЫЕ
    АР_ДополнительноеСоглашение.Ссылка,
    АР_ДополнительноеСоглашение.Дата,
    АР_ДополнительноеСоглашение.ДоговорКонтрагента,
    АР_ДополнительноеСоглашение.Собственник,
    ВТ_ВыборкаПоДокументам.Документ.Дата
ИЗ
    ВТ_ВыборкаПоДокументам КАК ВТ_ВыборкаПоДокументам
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АР_ДополнительноеСоглашение КАК АР_ДополнительноеСоглашение
        ПО ВТ_ВыборкаПоДокументам.Договор = АР_ДополнительноеСоглашение.ДоговорКонтрагента
ГДЕ
    АР_ДополнительноеСоглашение.Проведен
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    МАКСИМУМ(ВТ_ДокументыЗаключенияОграничение.Период) КАК Период1,
    ВТ_ДокументыЗаключенияОграничение.Договор
ПОМЕСТИТЬ ВТ_ОпределениеСобственникаМаксимумПоПериоду
ИЗ
    ВТ_ДокументыЗаключения КАК ВТ_ДокументыЗаключенияОграничение
ГДЕ
    ВТ_ДокументыЗаключенияОграничение.Период <= ВТ_ДокументыЗаключенияОграничение.ДатаСреза

СГРУППИРОВАТЬ ПО
    ВТ_ДокументыЗаключенияОграничение.Договор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ДокументыЗаключения.Договор,
    ВТ_ДокументыЗаключения.Собственник
ПОМЕСТИТЬ ВТ_Собственники
ИЗ
    ВТ_ДокументыЗаключения КАК ВТ_ДокументыЗаключения
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ОпределениеСобственникаМаксимумПоПериоду КАК ВТ_ОпределениеСобственникаМаксимумПоПериоду
        ПО ВТ_ДокументыЗаключения.Договор = ВТ_ОпределениеСобственникаМаксимумПоПериоду.Договор
            И ВТ_ДокументыЗаключения.Период = ВТ_ОпределениеСобственникаМаксимумПоПериоду.Период1

СГРУППИРОВАТЬ ПО
    ВТ_ДокументыЗаключения.Договор,
    ВТ_ДокументыЗаключения.Собственник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ВыборкаПоДокументам.Документ,
    ВТ_ВыборкаПоДокументам.Контрагент,
    ВТ_ВыборкаПоДокументам.Договор,
    ВТ_ВыборкаПоДокументам.НомерДокумента,
    ВТ_ВыборкаПоДокументам.ДатаДокумента,
    ВТ_ВыборкаПоДокументам.Сумма,
    ВТ_ВыборкаПоДокументам.НазначениеПлатежа
ПОМЕСТИТЬ ВТ_ВыборкаБезНДС
ИЗ
    ВТ_ВыборкаПоДокументам КАК ВТ_ВыборкаПоДокументам
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Собственники КАК ВТ_Собственники
        ПО ВТ_ВыборкаПоДокументам.Договор = ВТ_Собственники.Договор
ГДЕ
    ВТ_Собственники.Собственник = &Собственник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ВыборкаБезНДС.Документ,
    ПоступлениеНаРасчетныйСчетРасшифровкаПлатежа.СтавкаНДС
ПОМЕСТИТЬ ВТ_СтавкиНДС
ИЗ
    ВТ_ВыборкаБезНДС КАК ВТ_ВыборкаБезНДС
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеНаРасчетныйСчет.РасшифровкаПлатежа КАК ПоступлениеНаРасчетныйСчетРасшифровкаПлатежа
        ПО ВТ_ВыборкаБезНДС.Документ = ПоступлениеНаРасчетныйСчетРасшифровкаПлатежа.Ссылка

СГРУППИРОВАТЬ ПО
    ПоступлениеНаРасчетныйСчетРасшифровкаПлатежа.СтавкаНДС,
    ВТ_ВыборкаБезНДС.Документ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВТ_ВыборкаБезНДС.Документ,
    ПриходныйКассовыйОрдерРасшифровкаПлатежа.СтавкаНДС
ИЗ
    ВТ_ВыборкаБезНДС КАК ВТ_ВыборкаБезНДС
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа
        ПО ВТ_ВыборкаБезНДС.Документ = ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка

СГРУППИРОВАТЬ ПО
    ВТ_ВыборкаБезНДС.Документ,
    ПриходныйКассовыйОрдерРасшифровкаПлатежа.СтавкаНДС

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВТ_ВыборкаБезНДС.Документ,
    КорректировкаДолгаСуммыДолга.СтавкаНДС
ИЗ
    ВТ_ВыборкаБезНДС КАК ВТ_ВыборкаБезНДС
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.КорректировкаДолга.СуммыДолга КАК КорректировкаДолгаСуммыДолга
        ПО ВТ_ВыборкаБезНДС.Документ = КорректировкаДолгаСуммыДолга.Ссылка

СГРУППИРОВАТЬ ПО
    ВТ_ВыборкаБезНДС.Документ,
    КорректировкаДолгаСуммыДолга.СтавкаНДС
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_СтавкиНДС.Документ,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_СтавкиНДС.СтавкаНДС) КАК СтавкаНДС
ПОМЕСТИТЬ ВТ_СтавкиНДСБезДублей
ИЗ
    ВТ_СтавкиНДС КАК ВТ_СтавкиНДС

СГРУППИРОВАТЬ ПО
    ВТ_СтавкиНДС.Документ

ИМЕЮЩИЕ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_СтавкиНДС.СтавкаНДС) = 1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ВыборкаБезНДС.Документ,
    ВТ_ВыборкаБезНДС.Контрагент,
    ВТ_ВыборкаБезНДС.Договор,
    ВТ_ВыборкаБезНДС.НомерДокумента,
    ВТ_ВыборкаБезНДС.ДатаДокумента,
    ВТ_ВыборкаБезНДС.Сумма,
    ВТ_СтавкиНДС.СтавкаНДС,
    ВТ_ВыборкаБезНДС.НазначениеПлатежа
ИЗ
    ВТ_ВыборкаБезНДС КАК ВТ_ВыборкаБезНДС
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СтавкиНДС КАК ВТ_СтавкиНДС
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_СтавкиНДСБезДублей КАК ВТ_СтавкиНДСБезДублей
            ПО ВТ_СтавкиНДС.Документ = ВТ_СтавкиНДСБезДублей.Документ
        ПО ВТ_ВыборкаБезНДС.Документ = ВТ_СтавкиНДС.Документ

СГРУППИРОВАТЬ ПО
    ВТ_СтавкиНДС.СтавкаНДС,
    ВТ_ВыборкаБезНДС.Документ,
    ВТ_ВыборкаБезНДС.Контрагент,
    ВТ_ВыборкаБезНДС.Договор,
    ВТ_ВыборкаБезНДС.НомерДокумента,
    ВТ_ВыборкаБезНДС.ДатаДокумента,
    ВТ_ВыборкаБезНДС.Сумма,
    ВТ_ВыборкаБезНДС.НазначениеПлатежа

УПОРЯДОЧИТЬ ПО
    ВТ_ВыборкаБезНДС.ДатаДокумента
2 mistеr
 
13.05.15
18:02
Купите мне Феррари.
3 mistеr
 
13.05.15
18:03
Плачу не я!
4 Мисти
 
13.05.15
18:03
Знаю, есть специалисты, которые прекрасно просто глазами видят такую ошибку.
5 mistеr
 
13.05.15
18:05
СГРУППИРОВАТЬ ПО
    ...
    ВТ_ВыборкаБезНДС.Сумма,
6 Мисти
 
13.05.15
18:09
А тогда сложилось бы, наверное?
Ну а куда ее сунуть? Просто убрать нельзя!
7 Мисти
 
13.05.15
18:12
Если по ней суммировать, то складываются даже разные суммы, а мне нужно, чтоб все были отдельно.
8 mistеr
 
13.05.15
18:18
(6) Сложилось бы, если бы была СУММА()

Куда сунуть, я не знаю. Я не понимаю общего смысла запроса.
9 Мисти
 
13.05.15
18:23
ВТ_ВыборкаБезНДС - там всё, что нужно, кроме ставки НДС. Ставка НДС как-то хитро прицепляется в конце, для этого даже специальный регистр разработчики заводили. Иногда она всё равно цепляется криво и в это время теряется одинаковая сумма.
Если б я понимала досконально смысл запроса, я бы сама придумала, как поправить.
10 Мисти
 
13.05.15
19:05
В запросе сначала находятся все строки (11 штук в примере), потом при объединении с результатом запроса по ставкам НДС (8 штук по числу документов "поступ. на р/с" в примере) - теряются строки с одинаковыми суммами.
Почему??
11 lera01
 
13.05.15
19:16
Сгруппировались же!
12 Drac0
 
13.05.15
19:19
(10) Эту группировку можно заменить на РАЗЛИЧНЫЕ. Именно различные строки она и отбирает.
13 GROOVY
 
13.05.15
19:29
За "Регистратор.Чтото" без типизации надо яйца отрывать.
14 XLife
 
13.05.15
20:05
(13) в данном случае надо пришить))
15 wertyu
 
13.05.15
20:08
(14) надо бы голосовалку )
16 GROOVY
 
13.05.15
20:11
Да и за обращение к регистраторам в виртуальных таблицах, я бы тоже задумался о членовредительстве автора.
17 wertyu
 
13.05.15
20:20
(16) а разве в бухии нет регистров НДС, чтобы по ним такие запросы можно было сделать?
18 RomanYS
 
13.05.15
20:22
(16) а как иначе получить субконто и регистратор в одном запросе? или (16) к данному конкретному случаю относится
19 GROOVY
 
13.05.15
20:29
(18)  Есть движения с субконто.
20 Мисти
 
13.05.15
20:34
Это не мой запрос! И я не хочу его сильно менять, всё работает уже год, всё находится, кроме вот этого странного случая.
(19) А как тогда в запросе посмотреть регистратор?
21 Мисти
 
13.05.15
20:35
Так как выкинуть сумму из группировки?
Или не в этом дело?
22 Мисти
 
13.05.15
20:36
Если суммы поставить в суммируемое поле "количество различных" - так тем более одинаковые суммы склеятся, разве нет?
23 Мисти
 
13.05.15
20:42
Короче, уберу я эту историю со ставками НДС, всё равно она неправильно работает - если ставки разные, то вообще никакие не выдает.
24 wertyu
 
13.05.15
20:46
(23)

ВЫБРАТЬ
    ВТ_СтавкиНДС.Документ,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_СтавкиНДС.СтавкаНДС) КАК СтавкаНДС
ПОМЕСТИТЬ ВТ_СтавкиНДСБезДублей
ИЗ
    ВТ_СтавкиНДС КАК ВТ_СтавкиНДС

СГРУППИРОВАТЬ ПО
    ВТ_СтавкиНДС.Документ

ИМЕЮЩИЕ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_СтавкиНДС.СтавкаНДС) = 1
;


бестолковая штука, которая получает список документов, у которых в ТЧ только один вид ставки НДС
25 Мисти
 
13.05.15
20:50
(24) Ага.
26 RomanYS
 
13.05.15
20:50
(19) так она тоже виртуальная, и ИМХО потормознее будет
27 GROOVY
 
13.05.15
20:53
(26)  Так там одно соединение, по трем полям, а как ОборотыДтКт считаются?

(20) Если нужен регистратор  - значит регистр спроектирован не верно.
28 wertyu
 
13.05.15
20:56
(25) и надо сразу ограничить по последнему собственнику, т.е. выборку по регистру бухии надо делать после получения доков по собственнику
29 AlexITGround
 
13.05.15
20:56
Здесь только один возможный вариант.

Пришить
30 Мисти
 
13.05.15
20:59
(28) Ну и фик с ним.
(27) А как иначе найти документ, который сделал движение?
31 wertyu
 
13.05.15
21:01
(30).1 там надо просто местами создание ВТ
32 GROOVY
 
13.05.15
21:01
(30)  Я понимаю, что вы работаете с типовыми, и понимаю с чем приходится сталкиваться, но если нужно отловить оборот в разрезе регистратора, то должен быть регистр, где есть соответствующий разрез.
33 wertyu
 
13.05.15
21:01
+(31) поменять
34 Torquader
 
13.05.15
21:02
Мне кажется, что сначала с позором пришить, потом с ещё большим позором оторвать.
Может быть, после этого автор будет сам писать запросы, а не задавать глупые вопросы.
35 AlexITGround
 
13.05.15
21:08
(34)
"Мы все учились понемногу,
Чему-нибудь и как-нибудь,
Так воспитаньем, слава Богу,
У нас немудрено блеснуть." (с)
36 Torquader
 
13.05.15
21:09
(0) Чудо!
Убери группировку в последнем запросе и посмотри, что получается. Просто, если две одинаковые записи по всем полям, то группировка от них оставляет только одну.
37 Мисти
 
13.05.15
21:10
(33) Я не поняла! Как надо сделать? И решатся обе проблемы?
Пока я решила эту ерунду со ставками ндс выкинуть и искать их без запроса.
(34) Ну ничего себе! Они миллион заплатили за всю эту красоту, а я теперь всё буду переделывать? Нет уж, я по краешку...
38 Мисти
 
13.05.15
21:11
(36) А я не могу убрать группировку - мне кажется, я тогда вообще ничего не получу.
39 zak555
 
13.05.15
21:14
нахрена вот это :

ГДЕ
    ХозрасчетныйОборотыДтКт.Регистратор ССЫЛКА Документ.ПоступлениеНаРасчетныйСчет


?????????????????????????
а как же бух операции ?
40 Мисти
 
13.05.15
21:15
Бух. операций нет. Есть строго 3 вида документов, все они перечислены.
41 zak555
 
13.05.15
21:16
(40) неправильная логика -- в бп можно любую операцию описать с помощью бух справки
42 Torquader
 
13.05.15
21:16
(40) Чудо!
Давай рассказывай, что мы хотим получить этим запросом.
43 Мисти
 
13.05.15
21:19
(42) Убрала группировку всю - и всё получилось! Я помню, я с тобой дружила! Спасибо!!
44 zak555
 
13.05.15
21:21
как я понял нужно отобрать доки,которые делают проводки

Дт 51/50 Кт Счет6204/ДопСчет -- это один запрос
и
Дт Счет67609 Кт Счет6204 -- это другой запрос

их объединяем и всё достаём, что нужно
45 zak555
 
13.05.15
21:21
все где убрать к чёрту
46 Мисти
 
13.05.15
21:21
А почему нельзя было из группировки убрать только сумму?
По существу я уже писала - сначала выбираются все платежи, потом все собственники, потом таблицы объединяются - получаются платежи по собственникам, а потом к этой таблице пытаются приклепать ставки НДС, благо они обычно в 1 документе одинаковые. Если разные - не работает.
47 zak555
 
13.05.15
21:24
(46) надеюсь ты в курсе, что одна оплата может быть произведена по нескольким договора/докамРасчётам ?
48 Мисти
 
13.05.15
21:27
У нас - только по 1 договору, а документов расчета - да, может быть несколько.
49 Мисти
 
13.05.15
21:29
Не надо мне ничего пришивать-отрывать, хочу уже внуков и на пенсию.

Пришить
50 Мисти
 
13.05.15
21:30
Ого! А я думала, это не работает!

Оторвать
51 Torquader
 
13.05.15
21:42
(49) (50) Как я и говорил!