Имя: Пароль:
1C
1С v8
Макет к обработке
,
0 Shikolosa
 
11.04.19
14:17
Добрый день! Подскажите пожалуйста! Есть встроенная обработка "расчет цены" ,  на ней заполняется табличная часть (Обработки.РасчетЦены.ТабличныеЧасти.Комплект), нужно эту табличную часть вывести на печать. Не получается построить к ней запрос. Извините за элементарный вопрос, в 1С я чайник, только учусь).
1 Asmody
 
11.04.19
14:19
В запрос или в СКД?
2 Shikolosa
 
11.04.19
14:23
запрос
3 spiller26
 
11.04.19
14:27
(0) Выгружай Табличную часть в ТаблицуЗначений и параметром закидывай её в запрос.
4 Shikolosa
 
12.04.19
10:18
(3) Спасибо! Получилось.
5 seevkik
 
12.04.19
10:23
(3) Где пройти курсы телепатии?
6 Shikolosa
 
12.04.19
11:22
(5) Телепатия здесь ни при чём)) Просто знаний пока не хватает и спасибо spiller26 направил в нужное направление.
7 Shikolosa
 
12.04.19
11:23
Всё получилось в результате запроса:
НовыйЗапрос.Текст = "ВЫБРАТЬ
                        |    Таблица.Номенклатура,
                        |    Таблица.Количество,
                        |    Таблица.НомерСтроки,
                        |       Таблица.ЕдиницаИзмерения,
                        |    Таблица.Цена,
                        |       Таблица.Сумма,
                        |    Таблица.СуммаСНаценкой
                        |ПОМЕСТИТЬ ВТ
                        |ИЗ
                        |    &Таблица КАК Таблица
                          |;
                                                |/////
                        | ВЫБРАТЬ
                        |    ВТ.Номенклатура,
                        |    ВТ.Количество,
                        |    ВТ.НомерСтроки,
                        |       ВТ.ЕдиницаИзмерения,
                        |       ВТ.Цена,
                        |       ВТ.Сумма,
                        |    ВТ.СуммаСНаценкой
                        |ИЗ
                        |    ВТ КАК ВТ
                          |    СГРУППИРОВАТЬ ПО
                                            |        ВТ.Номенклатура,
                        |       ВТ.Количество,
                        |       ВТ.НомерСтроки,
                        |       ВТ.ЕдиницаИзмерения,
                        |    ВТ.Цена,
                        |       ВТ.Сумма,
                        |    ВТ.СуммаСНаценкой
                                |  УПОРЯДОЧИТЬ ПО
                                            |       ВТ.НомерСтроки
                                            |";
          НовыйЗапрос.УстановитьПараметр("Таблица", Таблица);

         Результат = НовыйЗапрос.Выполнить().Выгрузить();
8 Shikolosa
 
12.04.19
11:26
И перед этим выгрузила Табличную часть в Таблицу значений)
Таблица = ЭтотОбъект.Комплект.Выгрузить();
9 Zmich
 
12.04.19
11:35
(8). Извиняюсь за такой вопрос, а в чем отличие таблиц значений Таблица (исходной) и Результат (полученной)?
10 Shikolosa
 
12.04.19
11:55
(9)Если напрямую обратится к Таблице получается ошибка:Таблица не найдена "Таблица"
<<?>>Таблица КАК Таблица. А через параметр в запросе все красиво.
11 1Сергей
 
12.04.19
11:56
(9) свернута она
12 Zmich
 
12.04.19
12:02
(11). Не свернута, абсолютно идентичные таблицы.
13 catena
 
12.04.19
12:05
(10)Вопрос, зачем вообще запрос, который абсолютно не меняет таблицу?
14 1Сергей
 
12.04.19
12:18
там
|    СГРУППИРОВАТЬ ПО

А выборку из таблицы полученной через НовыйЗапрос.УстановитьПараметр("Таблица", Таблица); нельзя изменять. Сначала во временную поместить надо
15 catena
 
12.04.19
12:24
(14)Там сгруппировать по всем полям)))
16 catena
 
12.04.19
12:24
включая номер строки
17 Zmich
 
12.04.19
12:25
(14). Я бы еще понял, если бы там суммировались бы выражения или там надо было исключить дублирующиеся строки или что-то такое еще. Но ведь участвует номер строки, так что дубли там точно не удаляются.
18 Shikolosa
 
12.04.19
12:49
(17) Я уже писала, что чайник в 1С) Но если не сгруппировать в результате задваиваются строки. И если исключить хотя-бы одно поле, будет ошибка:Поле не входит в группу "ВТ.*" Возможно я чего-то не понимаю и запрос построила неправильно.
19 Zmich
 
12.04.19
12:57
(18). Давай так: выложи полностью свою процедуру печати, а не только текст запроса. Тогда можно будет более предметно показать, как можно было сделать это проще.
20 Shikolosa
 
12.04.19
13:02
(19)
ОбластьМакетаТаблицаСырьё = Макет.ПолучитьОбласть("ТаблицаСырьё");     
    Таблица = ЭтотОбъект.Комлект.Выгрузить();
    
    НовыйЗапрос = Новый Запрос;
    НовыйЗапрос.Текст = "ВЫБРАТЬ
                        |    Таблица.Номенклатура,
                        |    Таблица.Количество,
                        |    Таблица.НомерСтроки,
                        |       Таблица.ЕдиницаИзмерения,
                        |    Таблица.Цена,
                        |   Таблица.Сумма,
                        |    Таблица.СуммаСНаценкой
                        |ПОМЕСТИТЬ ВТ
                        |ИЗ
                        |    &Таблица КАК Таблица
                        |;
                        |/////
                        | ВЫБРАТЬ
                        |    ВТ.Номенклатура,
                        |    ВТ.Количество,
                        |    ВТ.НомерСтроки,
                        |   ВТ.ЕдиницаИзмерения,
                        |   ВТ.Цена,
                        |   ВТ.Сумма,
                        |    ВТ.СуммаСНаценкой
                        |ИЗ
                        |    ВТ КАК ВТ
                        |    СГРУППИРОВАТЬ ПО
                        |        ВТ.Номенклатура,
                        |       ВТ.Количество,
                        |       ВТ.НомерСтроки,
                        |       ВТ.ЕдиницаИзмерения,
                        |        ВТ.Цена,
                        |       ВТ.Сумма,
                        |        ВТ.СуммаСНаценкой
                        |  УПОРЯДОЧИТЬ ПО
                        |       ВТ.НомерСтроки
                        |";
          НовыйЗапрос.УстановитьПараметр("Таблица", Таблица);

        Результат = НовыйЗапрос.Выполнить().Выгрузить();

    Для Каждого  ВыборкаСтрокТовары Из Результат Цикл
        
        ОбластьМакетаТаблицаСырьё.Параметры.Номенклатура = ВыборкаСтрокТовары.Номенклатура;
        ОбластьМакетаТаблицаСырьё.Параметры.Количество = ВыборкаСтрокТовары.Количество;
        ОбластьМакетаТаблицаСырьё.Параметры.НомерСтроки = ВыборкаСтрокТовары.НомерСтроки;
        ОбластьМакетаТаблицаСырьё.Параметры.ЕдиницаИзмерения = ВыборкаСтрокТовары.ЕдиницаИзмерения;
        ОбластьМакетаТаблицаСырьё.Параметры.ЦенаСНаценкой = формат(ВыборкаСтрокТовары.СуммаСНаценкой/ВыборкаСтрокТовары.Количество, "ЧЦ=7; ЧДЦ=2");
        ОбластьМакетаТаблицаСырьё.Параметры.СуммаСНаценкой = ВыборкаСтрокТовары.СуммаСНаценкой;

    ТабДокумент.Вывести(ОбластьМакетаТаблицаСырьё);

    КонецЦикла;
21 Zmich
 
12.04.19
13:04
(20). А теперь сравни с этим:

ОбластьМакетаТаблицаСырьё = Макет.ПолучитьОбласть("ТаблицаСырьё");      
    Таблица = ЭтотОбъект.Комлект.Выгрузить();
Для Каждого  ВыборкаСтрокТовары Из Таблица Цикл
        
        ОбластьМакетаТаблицаСырьё.Параметры.Номенклатура = ВыборкаСтрокТовары.Номенклатура;
        ОбластьМакетаТаблицаСырьё.Параметры.Количество = ВыборкаСтрокТовары.Количество;
        ОбластьМакетаТаблицаСырьё.Параметры.НомерСтроки = ВыборкаСтрокТовары.НомерСтроки;
        ОбластьМакетаТаблицаСырьё.Параметры.ЕдиницаИзмерения = ВыборкаСтрокТовары.ЕдиницаИзмерения;
        ОбластьМакетаТаблицаСырьё.Параметры.ЦенаСНаценкой = формат(ВыборкаСтрокТовары.СуммаСНаценкой/ВыборкаСтрокТовары.Количество, "ЧЦ=7; ЧДЦ=2");
        ОбластьМакетаТаблицаСырьё.Параметры.СуммаСНаценкой = ВыборкаСтрокТовары.СуммаСНаценкой;

    ТабДокумент.Вывести(ОбластьМакетаТаблицаСырьё);

    КонецЦикла;
22 Shikolosa
 
12.04.19
13:10
(21) Zmich, Большое спасибо! Поняла!)
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn