Имя: Пароль:
1C
1С v8
Вопрос по Запросу
0 Explorer1c
 
29.01.15
15:54
Всем привет! Делаю отчетик
и в цикле формирую текст запроса. потом его выполняю
на выходе получется текст, что ниже, но почему- то он пишет "Невозможно выполнить, ошибка субд, вложений может быть не больше 10" о чем речь? :)

Вот мой безобидный запрос

ВЫБРАТЬ
    ВложенныйЗапрос.Счет КАК Счет,
    ВложенныйЗапрос.Счет.Код КАК СчетКод,
    СУММА(ВложенныйЗапрос.ОборотДТ) КАК ОборотДТ,
    СУММА(ВложенныйЗапрос.ОборотКТ) КАК ОборотКТ,
    ВложенныйЗапрос.СвойствоСубконто КАК СвойствоСубконто
ИЗ
    (ВЫБРАТЬ
        ГруппировкаОборотов.Счет КАК Счет,
        СУММА(ГруппировкаОборотов.ВалютнаяОборотДт) КАК ВалютнаяОборотДт,
        СУММА(ГруппировкаОборотов.ОборотДТ) КАК ОборотДТ,
        СУММА(ГруппировкаОборотов.ВалютнаяОборотКт) КАК ВалютнаяОборотКт,
        СУММА(ГруппировкаОборотов.ОборотКТ) КАК ОборотКТ,
        ВЫБОР
            КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов1310)
                    И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений85)
                ТОГДА "Сырье и материалы"
            ИНАЧЕ ВЫБОР
                    КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов1310)
                            И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений86)
                        ТОГДА "Сырье"
                    ИНАЧЕ ВЫБОР
                            КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов1310)
                                    И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений87)
                                ТОГДА "Материалы"
                            ИНАЧЕ ВЫБОР
                                    КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов1310)
                                            И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений88)
                                        ТОГДА "Топливо"
                                    ИНАЧЕ ВЫБОР
                                            КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов1310)
                                                    И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений90)
                                                ТОГДА "Запасные части"
                                            ИНАЧЕ ВЫБОР
                                                    КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов1310)
                                                            И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений93)
                                                        ТОГДА "Прочие сырье и материалы"
                                                    ИНАЧЕ ВЫБОР
                                                            КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов2410)
                                                                    И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений209)
                                                                ТОГДА "Основные средства"
                                                            ИНАЧЕ ВЫБОР
                                                                    КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов2410)
                                                                            И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений210)
                                                                        ТОГДА "Земля"
                                                                    ИНАЧЕ ВЫБОР
                                                                            КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов2410)
                                                                                    И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений211)
                                                                                ТОГДА "Здания и ссоружения"
                                                                            ИНАЧЕ ВЫБОР
                                                                                    КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов2410)
                                                                                            И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений212)
                                                                                        ТОГДА "Машины и оборудование"
                                                                                    ИНАЧЕ ВЫБОР
                                                                                            КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов2410)
                                                                                                    И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений213)
                                                                                                ТОГДА "Передаточные устройства"
                                                                                            ИНАЧЕ ВЫБОР
                                                                                                    КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов2410)
                                                                                                            И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений214)
                                                                                                        ТОГДА "Транспортные средства"
                                                                                                    ИНАЧЕ ВЫБОР
                                                                                                            КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов2410)
                                                                                                                    И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений215)
                                                                                                                ТОГДА "Компьютерные, периферийные устройства и оборудование по обработке данных"
                                                                                                            ИНАЧЕ ВЫБОР
                                                                                                                    КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов2410)
                                                                                                                            И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений216)
                                                                                                                        ТОГДА "Прочие основные средства"
                                                                                                                    ИНАЧЕ "ПрочиеПоля"
                                                                                                                КОНЕЦ
                                                                                                        КОНЕЦ
                                                                                                КОНЕЦ
                                                                                        КОНЕЦ
                                                                                КОНЕЦ
                                                                        КОНЕЦ
                                                                КОНЕЦ
                                                        КОНЕЦ
                                                КОНЕЦ
                                        КОНЕЦ
                                КОНЕЦ
                        КОНЕЦ
                КОНЕЦ
        КОНЕЦ КАК СвойствоСубконто
    ИЗ
        (ВЫБРАТЬ
            ТиповойОборотыДт.СчетДт КАК Счет,
            ТиповойОборотыДт.ВалютнаяСуммаОборотДт КАК ВалютнаяОборотДт,
            ТиповойОборотыДт.СуммаОборот КАК ОборотДТ,
            0 КАК ВалютнаяОборотКт,
            0 КАК ОборотКТ,
            ВЫБОР
                КОГДА ТиповойОборотыДт.СчетДт В (&Группа13)
                    ТОГДА ТиповойОборотыДт.СубконтоДт1.ВидНоменклатуры
                ИНАЧЕ ВЫБОР
                        КОГДА ТиповойОборотыДт.СчетДт В (&Группа24)
                            ТОГДА ТиповойОборотыДт.СубконтоДт1.ГруппаОС
                        ИНАЧЕ ВЫБОР
                                КОГДА ТиповойОборотыДт.СчетДт В (&Группа27)
                                    ТОГДА ТиповойОборотыДт.СубконтоДт1.ВидНМА
                                ИНАЧЕ ТиповойОборотыДт.СубконтоДт1
                            КОНЕЦ
                    КОНЕЦ
            КОНЕЦ КАК СвойствоСубконто
        ИЗ
            РегистрБухгалтерии.Типовой.ОборотыДтКт(&НачПериода, &КонПериода, , СчетДТ В (&НужныеСчетаДТ), , СчетКт В (&ИсключаемыйСчетКТ), , Организация В (&СписокОрганизаций)) КАК ТиповойОборотыДт
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            ТиповойОборотыКт.СчетКт,
            0,
            0,
            ТиповойОборотыКт.ВалютнаяСуммаОборотКт,
            ТиповойОборотыКт.СуммаОборот,
            ВЫБОР
                КОГДА ТиповойОборотыКт.СчетКт В (&Группа13)
                    ТОГДА ТиповойОборотыКт.СубконтоКт1.ВидНоменклатуры
                ИНАЧЕ ВЫБОР
                        КОГДА ТиповойОборотыКт.СчетКт В (&Группа24)
                            ТОГДА ТиповойОборотыКт.СубконтоКт1.ГруппаОС
                        ИНАЧЕ ВЫБОР
                                КОГДА ТиповойОборотыКт.СчетКт В (&Группа27)
                                    ТОГДА ТиповойОборотыКт.СубконтоКт1.ВидНМА
                                ИНАЧЕ ТиповойОборотыКт.СубконтоКт1
                            КОНЕЦ
                    КОНЕЦ
            КОНЕЦ
        ИЗ
            РегистрБухгалтерии.Типовой.ОборотыДтКт(&НачПериода, &КонПериода, , СчетДТ В (&ИсключаемыйСчетДт), , СчетКТ В (&НужныеСчетаКТ), , Организация В (&СписокОрганизаций)) КАК ТиповойОборотыКт) КАК ГруппировкаОборотов
    
    СГРУППИРОВАТЬ ПО
        ГруппировкаОборотов.Счет,
        ГруппировкаОборотов.СвойствоСубконто,
        ВЫБОР
            КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов1310)
                    И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений85)
                ТОГДА "Сырье и материалы"
            ИНАЧЕ ВЫБОР
                    КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов1310)
                            И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений86)
                        ТОГДА "Сырье"
                    ИНАЧЕ ВЫБОР
                            КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов1310)
                                    И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений87)
                                ТОГДА "Материалы"
                            ИНАЧЕ ВЫБОР
                                    КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов1310)
                                            И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений88)
                                        ТОГДА "Топливо"
                                    ИНАЧЕ ВЫБОР
                                            КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов1310)
                                                    И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений90)
                                                ТОГДА "Запасные части"
                                            ИНАЧЕ ВЫБОР
                                                    КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов1310)
                                                            И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений93)
                                                        ТОГДА "Прочие сырье и материалы"
                                                    ИНАЧЕ ВЫБОР
                                                            КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов2410)
                                                                    И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений209)
                                                                ТОГДА "Основные средства"
                                                            ИНАЧЕ ВЫБОР
                                                                    КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов2410)
                                                                            И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений210)
                                                                        ТОГДА "Земля"
                                                                    ИНАЧЕ ВЫБОР
                                                                            КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов2410)
                                                                                    И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений211)
                                                                                ТОГДА "Здания и ссоружения"
                                                                            ИНАЧЕ ВЫБОР
                                                                                    КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов2410)
                                                                                            И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений212)
                                                                                        ТОГДА "Машины и оборудование"
                                                                                    ИНАЧЕ ВЫБОР
                                                                                            КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов2410)
                                                                                                    И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений213)
                                                                                                ТОГДА "Передаточные устройства"
                                                                                            ИНАЧЕ ВЫБОР
                                                                                                    КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов2410)
                                                                                                            И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений214)
                                                                                                        ТОГДА "Транспортные средства"
                                                                                                    ИНАЧЕ ВЫБОР
                                                                                                            КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов2410)
                                                                                                                    И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений215)
                                                                                                                ТОГДА "Компьютерные,
1 Психотерапевта Вызыва
 
29.01.15
15:55
(0) перевод с русского на русский хочешь получить?
2 Ненавижу 1С
 
гуру
29.01.15
15:56
вместо вложенных ВЫБОР КОГДА ТОГДА ИНАЧЕ
делай еще одну ветку КОГДА
3 iceman2112
 
29.01.15
15:56
(0) а тебя ничего не смущает?
4 iceman2112
 
29.01.15
15:57
недомедитировал))
5 Кир Пластелинин
 
29.01.15
16:01
едрить колотить тут "выбор когда"...
6 Бертыш
 
29.01.15
16:10
(0) Ну у тебя блин и стиль какой-то не стильный. Лучше что то в духе
ВЫБРАТЬ ВЫБОР КОГДА &А=1 ТОГДА "Один" КОГДА &А=2 ТОГДА "Два" ИНАЧЕ "ВСЁ КАПЕЦ" КОНЕЦ

То есть без лишних вложенностей "ИНАЧЕ"
7 IШаман
 
29.01.15
16:10
Только  у одного меня возникает желание отрубить руки кодера при виде динамически формируемых текстов запросов?
8 Бертыш
 
29.01.15
16:15
(7) С х... ли? Я так такими запросами решал задачи которые иначе запаришься решать. Это задачи тип универсальной работы со всеми видами документов например.
9 Бертыш
 
29.01.15
16:16
Пока ты переберёшь все виды документов в какой-нибудь УПП то устанешь и что нибудь напортачишь, а так в цикле по метаданным всё ОК.
10 IШаман
 
29.01.15
16:18
(8) Знаешь сколько людей мне это говорило? Когда я и мпоказывал некоторые вещи реализованные на СКД + построители как то они начинали понимать о чем я говорю.
11 IШаман
 
29.01.15
16:19
(9) По метаданным да, но такие задачи крайне редко возникают. При нормальной архитектуре дапнные получаем из регистров а не из документов.
12 Бертыш
 
29.01.15
16:21
(11) Когда тебе надо обработать документы. Например перенумеровать все или ко всем добавить префикс с целью слияния баз. Сильно поможет тебе то что у тебя есть все данные в регистрах?
13 IШаман
 
29.01.15
16:22
(12) Такое очень редко бывает
14 Ненавижу 1С
 
гуру
29.01.15
16:24
вся структура есть

КОГДА ГруппировкаОборотов.Счет.Код В (&СчетДляОборотов1310)
                    И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений85)
                ТОГДА "Сырье и материалы"

что бы сделал я?
1. создал бы справочник и выводил бы не строки, а элементы справочника
2. создал бы один (или два, по обстоятельствам) регистра сведений соответствия счетов и "свойств субконто" этому справочнику

в запросе соединяем и никаких вам ВЫБОР КОГДА ТОГДА
15 Бертыш
 
29.01.15
16:26
(13) Универсальные печатные формы http://infostart.ru/public/15061/
16 Бертыш
 
29.01.15
16:27
(0) ОСВ шку типа пишешь? Я вот тоже хотел под восьмерку ОСВ сделать нормальную, но сломался.
17 IШаман
 
29.01.15
16:28
(15) Это типа офигеть какое сложное решение?
Опять же я сказал допускаю только когда нужен проход по метаданным.
18 IШаман
 
29.01.15
16:34
(16) А чем существующая ненормальная?
19 Бертыш
 
29.01.15
16:36
ОСВ по счету у 1С не вполне доделаная на мой взгляд, а всякие СКД кстати не предоставляют достаточных возможностей по её доделки в нужную мне сторону.
20 Бертыш
 
29.01.15
16:38
(17) Вопрос то не о сложности, а о генерации запросов на лету.
+19 Единственный вариант который для её доделки я видел это генерировать XML файл со схемой СКД на лету и его подгружать на лету же с диска, но было лень разбираться
21 Бертыш
 
29.01.15
16:40
Дело в том что я большой сторонник так называемого метапрограммирования и наверное поэтому я бурно реагирую на противников метапрограммирования.
22 Крошка Ру
 
29.01.15
17:19
(21) Кстати, тема интересная. Надо бы ветку, что ль, создать..
23 Бертыш
 
29.01.15
17:21
(22) Да я всё статью хочу написать
24 IШаман
 
29.01.15
17:24
(19) В чем ее недоделанность?
25 IШаман
 
29.01.15
17:27
И при чем здесь метапрограммирование? Когда я вижу куски кода которые заменяют текст запроса на другой, вместо того чтобы нормально прописать эти условия в запросах, я не вижу тут никакой свзяи с метапрограммированием, но вижу четко что автор амнокодил как мог не задумываясь не о чем.
26 ktvladimir
 
29.01.15
17:32
лопни мои глаза... и как это читать)))
27 Бубка Гоп
 
29.01.15
17:38
(0) прям не запрос а американские горки какие то
28 Бертыш
 
29.01.15
17:52
(24) Давайте я Вам расскажу последовательно как возникло понимание её недоделанности.
Началось с того что бухгалтер заказчик захотела нашей доработки осв по счётам учета основных средств. Конфигурацию разрабатывало другое подразделение, а от нас только требовался отчёт. Надо было что бы в осв выводились аднные по тем позициям по которым у неких объектов ос в неком регистре сведений определённое поле имеет определённое значение. То есть получилось что надо настроить отбор в регистре бухгалтерии по данным отбора из регистра сведений, то есть грубо говоря наложить отбор на один регистр по данным другого регистра. Задачу то я сделал,но задумался очень сильно в процессе её решения о том что хорошо бы если бы возможно было это решить несколько иначе и для любого произвольного счёта. Ближайшая подходящая сущность для этой задачи это были характеристики в СКД. То есть если бы возможно было бы подсунуть так запрос что бы выходная выборка из регистра сведений можно было бы расширить перечень реквизитов и их значений доступных для отбора по основному регистру в СКД, то это могло бы сильно упростить жизнь, но в итоге я упёрся в то что механизм характеристик СКД не подразумевает произвольного запроса на входе. Максимум что возможно с этим сделать так это подсунуть запрос который адресуется к ПВХ и всё. Может я конечно чего не знаю про механизм характеристик СКД, но был зело опечален. Потом единственное в чём я видел основу для реализации это генерация схем СКД как файлов XML с последующей загрузкой схемы из файла. При чём генерация и загрузка схемы должна осуществляться в момент выбора пользователем конечного счета который его интересует. В принципе можно генерировать схемы при обновлении конфигурации и хранить их где-то в составе конфигурации актуализируя после обновления, но боюсь и это если и получиться то будет весьма трудоёмко в написании.
29 Explorer1c
 
29.01.15
17:53
(14) Дело в том что есть шаблон, в котором прописаны строки, я настраиваю соответствие этим строкам. они могут совершенно неадекватно называться

И ГруппировкаОборотов.СвойствоСубконто В (&СписокЗначений85)
ТОГДА "Сырье и материалы

Тут я настраиваю соответствие значений субконто для этой строки
30 Explorer1c
 
29.01.15
17:54
(6) спасибо! Завтра утром попробую, седни фильму посмотрю)
31 Ненавижу 1С
 
гуру
29.01.15
20:13
(30) я тебе это еще в (2) написал
32 Ненавижу 1С
 
гуру
29.01.15
20:14
.(29)и чего?
33 EvgeniuXP
 
29.01.15
21:50
(17) метаданные обойди в скд выкинь
34 H A D G E H O G s
 
29.01.15
21:59
Кэш планов запроса плачет гровавыми слезами, когда работает с поделками от @Бертыша , Explorer1c
35 Explorer1c
 
31.01.15
21:50
(34) У планов запроса есть кэш? Где почитать об этом?)
36 H A D G E H O G s
 
31.01.15
21:53
37 H A D G E H O G s
 
31.01.15
21:55
даже лучше вот, применительно к dbe ms sql
https://technet.microsoft.com/ru-ru/library/ms181055(v=sql.105).aspx
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс