8.х помогите с запросом

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Александр 1906, 2 ноя 2015.

  1. TopicStarter Overlay
    Александр 1906
    Offline

    Александр 1906 Опытный в 1С

    Регистрация:
    25 июн 2015
    Сообщения:
    351
    Симпатии:
    3
    Баллы:
    29
    как можно попасть в конструктор запроса если текст запроса представлен вот в таком виде
    Код:
    ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                           |    ЦС_Извещение.Номер,
                           |    ЦС_Извещение.Дата,
                           |    ЦС_Извещение.Учреждение.НаименованиеПолное КАК пНаименованиеОрганизации,
                           |    ЦС_Извещение.Учреждение.КодОКПО КАК пКодОКПО,
                           |    ПРЕДСТАВЛЕНИЕ(ЦС_Извещение.Учреждение.КодПоППП) КАК пКодГлавы,
                           |    ВЫБОР
                           |        КОГДА ЦС_Извещение.Получатель.НаименованиеПолное = """"
                           |            ТОГДА ЦС_Извещение.Получатель.Наименование
                           |        ИНАЧЕ ЦС_Извещение.Получатель.НаименованиеПолное
                           |    КОНЕЦ КАК пНаименованиеПолучателя,
                           |    ЦС_Извещение.Получатель.КодОКПО КАК пКодОКПОПолучатель,
                           |    ПРЕДСТАВЛЕНИЕ(ХарактеристикиКонтрагентов.ЗначениеХарактеристики) КАК пКодГлавыПолучатель,
                           |    ЦС_Извещение.Учреждение КАК УчреждениеСсылка,
                           |    ЦС_Извещение.Получатель КАК ПолучательСсылка,
                           |    ЦС_Извещение.Учреждение.КПП КАК КПП,
                           |    ЦС_Извещение.Получатель.КПП КАК КПППолучатель,
                           |    ЦС_Извещение.Получатель.ИНН КАК ИННПолучатель,
                           |    ЦС_Извещение.Учреждение.ИНН КАК ИНН
                           |ИЗ
                           |    Документ.ЦС_Извещение КАК ЦС_Извещение
                           |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ХарактеристикиКонтрагентов КАК ХарактеристикиКонтрагентов
                           |        ПО ЦС_Извещение.Получатель = ХарактеристикиКонтрагентов.Контрагент
                           |ГДЕ
                           |    ЦС_Извещение.Ссылка = &Ссылка
                           |    И (ХарактеристикиКонтрагентов.Контрагент = &Получатель
                           |            ИЛИ ХарактеристикиКонтрагентов.Контрагент ЕСТЬ NULL )
                           |;
                           |
                           |////////////////////////////////////////////////////////////////////////////////";
                          
            Запрос.УстановитьПараметр("Счет30404", ПолучитьЛокальнуюПеременную("Счет30404"));
            Запрос.УстановитьПараметр("Счет40120", ПолучитьЛокальнуюПеременную("Счет40120"));
            Запрос.УстановитьПараметр("МассивКОСГУ", ПолучитьЛокальнуюПеременную("МассивКОСГУ241_251"));
            Запрос.УстановитьПараметр("Учреждение", СсылкаНаОбъект.Учреждение);
            Запрос.УстановитьПараметр("Баланс", СсылкаНаОбъект.Баланс);
            Запрос.УстановитьПараметр("Получатель", СсылкаНаОбъект.Получатель);
           
            ТекстЗапроса = ТекстЗапроса + "
                        |ВЫБРАТЬ РАЗРЕШЕННЫЕ
                        |    ВложенныйЗапрос.пСодержание,
                        |    ВложенныйЗапрос.КВД,
                        |    ВложенныйЗапрос.КБКСчетДебета,
                        |    ВложенныйЗапрос.СчетДебета,
                        |    ВложенныйЗапрос.КОСГУСчетДебета,
                        |    ВложенныйЗапрос.КБКСчетКредита,
                        |    ВложенныйЗапрос.СчетКредита,
                        |    ВложенныйЗапрос.КОСГУСчетКредита,
                        |    ВложенныйЗапрос.пОС,
                        |    СУММА(ВложенныйЗапрос.пСумма) КАК пСумма
                        |ИЗ (";
                       
            Для Каждого ТекСтрокаТЧ Из ТаблицаТЧ Цикл
                ИндексСтроки = ТаблицаТЧ.Индекс(ТекСтрокаТЧ);
                ТекДокументПередачи = ТекСтрокаТЧ.ДокументПередачи;
                Запрос.УстановитьПараметр("ТекДокумент" + ИндексСтроки, ТекДокументПередачи);
                Разрешенные = "";       
                Если ИндексСтроки > 0 Тогда
                    ТекстЗапроса = ТекстЗапроса + "
                            |ОБЪЕДИНИТЬ ВСЕ";
                КонецЕсли;   
               
                Запрос.УстановитьПараметр("ДатаНачала" + ИндексСтроки, НачалоДня(ТекСтрокаТЧ.ДатаПередачи));
                Запрос.УстановитьПараметр("ДатаОкончания" + ИндексСтроки, КонецДня(ТекСтрокаТЧ.ДатаПередачи));
               
                ТипДокументаПередачи = ТипЗнч(ТекСтрокаТЧ.ДокументПередачи);
                ЕСли ТипДокументаПередачи = Тип("ДокументСсылка.МЗ_СписаниеЗабаланс")
                    ИЛИ ТипДокументаПередачи = Тип("ДокументСсылка.БСО_Списание")
                    ИЛИ ТипДокументаПередачи = Тип("ДокументСсылка.ОС_АрендаСписание")
                    ИЛИ ТипДокументаПередачи = Тип("ДокументСсылка.ОСвОперУчетеСписание") Тогда
                    ТекстЗапроса = ТекстЗапроса + "
                                |ВЫБРАТЬ
                                |    ВЫБОР
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 2) = ""01""
                                |            ТОГДА ""Передача ОС, находящихся в пользовании""
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 2) = ""02""
                                |            ТОГДА ""Передача НФА, находящихся на ответственном хранении""
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 2) = ""03""
                                |            ТОГДА ""Передача БСО""
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 2) = ""07""
                                |            ТОГДА ""Передача наград, призов, кубков, ценных подарков, сувениров""
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 2) = ""08""
                                |            ТОГДА ""Передача путевок неоплаченных""
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 2) = ""09""
                                |            ТОГДА ""Передача запчастей к транспортным средствам""
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 2) = ""12""
                                |            ТОГДА ""Передача спецоборудования, находящегося в научных подразделениях""
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 2) = ""13""
                                |            ТОГДА ""Передача экспериментальных устройств""
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 2) = ""22""
                                |            ТОГДА ""Передача НФА, полученного в рамках централизованного снабжения""
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 2) = ""23""
                                |            ТОГДА ""Передача периодических изданий""
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 2) = ""21""
                                |            ТОГДА ""Передача ОС, находящихся в оперативном учете""
                                |        ИНАЧЕ ""Прочая передача с забалансовых счетов""
                                |    КОНЕЦ КАК пСодержание,
                                |    ЕПСБУОборотыДтКт.КВД КАК КВД,
                                |    """" КАК КБКСчетДебета,
                                |    """" КАК СчетДебета,
                                |    """" КАК КОСГУСчетДебета,
                                |    """" КАК КБКСчетКредита,
                                |    ЕПСБУОборотыДтКт.СчетКт КАК СчетКредита,
                                |    """" КАК КОСГУСчетКредита,
                                |    """" КАК пОС,
                                |    ЕПСБУОборотыДтКт.СуммаОборот КАК пСумма
                                |ИЗ
                                |    РегистрБухгалтерии.ЕПСБУ.ОборотыДтКт(&ДатаНачала" + ИндексСтроки + ", &ДатаОкончания" + ИндексСтроки + ", Запись, , , , , Учреждение = &Учреждение И Баланс = &Баланс) КАК ЕПСБУОборотыДтКт
                                |ГДЕ
                                |    ЕПСБУОборотыДтКт.Регистратор = &ТекДокумент" + ИндексСтроки;
                Иначе   
                    ТекстЗапроса = ТекстЗапроса + "
                                |ВЫБРАТЬ
                                |    ВЫБОР
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетДт.Код, 1, 3) = ""101"" ИЛИ ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетДт.Код, 1, 3) = ""102""
                                |            ИЛИ ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 3) = ""101"" ИЛИ ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 3) = ""102""
                                |            ТОГДА ""Передача ОС, НМА""
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетДт.Код, 1, 3) = ""108""
                                |            ИЛИ ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 3) = ""108""
                                |            ТОГДА ""Передача имущества казны""
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетДт.Код, 1, 3) = ""104""
                                |            ИЛИ ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 3) = ""104""
                                |            ТОГДА ""Передача амортизации""
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетДт.Код, 1, 3) = ""105""
                                |            ИЛИ ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 3) = ""105""
                                |            ТОГДА ""Передача материалов""
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетДт.Код, 1, 3) = ""106""
                                |            ИЛИ ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 3) = ""106""
                                |            ТОГДА ""Передача вложений""
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетДт.Код, 1, 3) = ""103""
                                |            ИЛИ ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 3) = ""103""
                                |            ТОГДА ""Передача НПА""
                                |        КОГДА ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетДт.Код, 1, 3) = ""201"" ИЛИ ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетДт.Код, 1, 6) = ""304.05""
                                |            ИЛИ ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 3) = ""201"" ИЛИ ПОДСТРОКА(ЕПСБУОборотыДтКт.СчетКт.Код, 1, 6) = ""304.05""
                                |            ТОГДА ""Передача денежных средств""
                                |        ИНАЧЕ ""Прочая передача""
                                |    КОНЕЦ КАК пСодержание,
                                |    ЕПСБУОборотыДтКт.КВД КАК КВД,
                                |    ЕПСБУОборотыДтКт.КБКДт КАК КБКСчетДебета,
                                |    ЕПСБУОборотыДтКт.СчетДт КАК СчетДебета,
                                |    ЕПСБУОборотыДтКт.СубконтоДт1 КАК КОСГУСчетДебета,
                                |    ЕПСБУОборотыДтКт.КБККт КАК КБКСчетКредита,
                                |    ЕПСБУОборотыДтКт.СчетКт КАК СчетКредита,
                                |    ЕПСБУОборотыДтКт.СубконтоКт1 КАК КОСГУСчетКредита,
                                |    ЕПСБУОборотыДтКт.СубконтоКт2 КАК пОС,
                                |    ЕПСБУОборотыДтКт.СуммаОборот КАК пСумма
                                |ИЗ
                                |    РегистрБухгалтерии.ЕПСБУ.ОборотыДтКт(&ДатаНачала" + ИндексСтроки + ", &ДатаОкончания" + ИндексСтроки + ", Запись, , , , , Учреждение = &Учреждение И Баланс = &Баланс) КАК ЕПСБУОборотыДтКт
                                |ГДЕ
                                |    ЕПСБУОборотыДтКт.Регистратор = &ТекДокумент" + ИндексСтроки + "
                                |    И (ЕПСБУОборотыДтКт.СчетДт В ИЕРАРХИИ (&Счет30404)
                                |            ИЛИ ЕПСБУОборотыДтКт.СчетКт В ИЕРАРХИИ (&Счет30404)
                                |            ИЛИ ((ЕПСБУОборотыДтКт.СчетДт В ИЕРАРХИИ (&Счет40120) И ЕПСБУОборотыДтКт.СубконтоДт1 В (&МассивКОСГУ)) ИЛИ (ЕПСБУОборотыДтКт.СчетКт В ИЕРАРХИИ (&Счет40120) И ЕПСБУОборотыДтКт.СубконтоКт1 В (&МассивКОСГУ))))";
                КонецЕсли;           
            КонецЦикла;                  
                              
            ТекстЗапроса = ТекстЗапроса + ") КАК ВложенныйЗапрос
                                    |СГРУППИРОВАТЬ ПО
                                    |    ВложенныйЗапрос.пСодержание,
                                    |    ВложенныйЗапрос.КВД,
                                    |    ВложенныйЗапрос.КБКСчетДебета,
                                    |    ВложенныйЗапрос.СчетДебета,
                                    |    ВложенныйЗапрос.КОСГУСчетДебета,
                                    |    ВложенныйЗапрос.КБКСчетКредита,
                                    |    ВложенныйЗапрос.СчетКредита,
                                    |    ВложенныйЗапрос.КОСГУСчетКредита,
                                    |    ВложенныйЗапрос.пОс
                                    |;
                                    |
                                    |////////////////////////////////////////////////////////////////////////////////
                                    |ВЫБРАТЬ РАЗРЕШЕННЫЕ
                                    |    ЦС_ИзвещениеСоставПриложения.ВидПриложения,
                                    |    ЦС_ИзвещениеСоставПриложения.НомерДокумента,
                                    |    ЦС_ИзвещениеСоставПриложения.ДатаДокумента
                                    |ИЗ
                                    |    Документ.ЦС_Извещение.СоставПриложения КАК ЦС_ИзвещениеСоставПриложения
                                    |ГДЕ
                                    |    ЦС_ИзвещениеСоставПриложения.Ссылка = &Ссылка";
  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Да Вы в отладчике в конце всего порставьте точку остановки зайдите в текст запроса. скопируйте егокуда нить потом открывайте
  3. TopicStarter Overlay
    Александр 1906
    Offline

    Александр 1906 Опытный в 1С

    Регистрация:
    25 июн 2015
    Сообщения:
    351
    Симпатии:
    3
    Баллы:
    29
    т.е нужно последовательно скопировать только текст запроса?
  4. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    У Вас в конце или еще где будет Запрос.Выполнить() вот у запроса посмотрите текс и его уже анализиуйте
  5. TopicStarter Overlay
    Александр 1906
    Offline

    Александр 1906 Опытный в 1С

    Регистрация:
    25 июн 2015
    Сообщения:
    351
    Симпатии:
    3
    Баллы:
    29
    я вас немного не понимаю , обычно я просто выделяю текст запроса и через ПКМ открываю конструктор, а здесь в тело запроса вставлен код,
    в конце запроса вот это
    Код:
    Запрос.Текст = ТекстЗапроса;
            МассивРезультатов = Запрос.ВыполнитьПакет();
           
            СтруктураДанных.Вставить("Заголовок", МассивРезультатов[0].Выгрузить()[0]);
            СтруктураДанных.Вставить("Таблица", МассивРезультатов[1].Выгрузить());
            СтруктураДанных.Вставить("Приложение", МассивРезультатов[2].Выгрузить());
    
  6. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Господи. Вам поэтапно сказали что нужно сделать.
    Найдите у себя в коде строку
    Код:
    МассивРезультатов = Запрос.ВыполнитьПакет();
    Поставьте на ней точку останова.
    Запустите режим отладки.
    Спровоцируйте программу на то, чтобы этот код выполнился.
    Управлению перейдет отладчику.
    Нажмите Shift+F9. Откроется окно вычисления выражения.
    Пропишите в верхней строчке Запрос.Текст и нажмите Enter.
    Затем нажмите F2. На экране появится текст вашего запроса.
    КОНСТРУКТОРОМ ОТКРЫТЬ ЕГО НЕЛЬЗЯ.
  7. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Этот текст потом копируете, создаете пустрой отчет или любуюю обработку открывпаете модуль вставляете и можете конструктором открыть
  8. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Наоборот. :)
    Сначала открываете конструктор, а потом уже можно вставить текст. Переноса строк в виде "|" не будет же.
  9. TopicStarter Overlay
    Александр 1906
    Offline

    Александр 1906 Опытный в 1С

    Регистрация:
    25 июн 2015
    Сообщения:
    351
    Симпатии:
    3
    Баллы:
    29
    все я разобрался спс
    --- Объединение сообщений, 2 ноя 2015 ---
    еще вопрос в этом выражении
    Код:
     МассивРезультатов = Запрос.ВыполнитьПакет();
    СтруктураДанных.Вставить("Таблица", МассивРезультатов[1].Выгрузить());
    
    в таблицу помещается результат выполнения второго пакета?
  10. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Да.Там будет ТЗ
  11. TopicStarter Overlay
    Александр 1906
    Offline

    Александр 1906 Опытный в 1С

    Регистрация:
    25 июн 2015
    Сообщения:
    351
    Симпатии:
    3
    Баллы:
    29
    а скажите в консоле запросов можно как то сделать запрос по конкретному документу, просто я сделал он в результат подтянул все данные из существующих документов
  12. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    ну парамеир в запрос добавьте и установите
  13. TopicStarter Overlay
    Александр 1906
    Offline

    Александр 1906 Опытный в 1С

    Регистрация:
    25 июн 2015
    Сообщения:
    351
    Симпатии:
    3
    Баллы:
    29
    ни пойму как это сделать в консоле
  14. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Конструкция языка запросов ГДЕ Вам знакома?

Поделиться этой страницей