Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Не получается сгруппировать данные в запросе (Бухгалтерия для Украины 8.2)          
mabuta_account Подменю пользователя
сообщение 27.06.12, 9:12
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 6
Спасибо сказали: 0 раз
Рейтинг: 0

Добрый день!

Помогите...

Конфигурация Бухгалтерия для Украины 1.2.6.5 8.2

У меня вот какая проблема есть документ (Погрузочный лист) который содержит в себе расходные накладные за период, нужно выводить в печатную форму (Маршрутно погрузочный лист) вот такой вид информации:

Цитата
Маршрут1
Контрагент1 (то есть контрагент который относиться до этого маршрута)
Номенклатура1
Номенклатура2 (номенклатура с табличной части расходной накладной которая удовлетворяет условию)
Контрагент2
Номенклатура1
Номенклатура2
Маршрут2
Контрагент1 (то есть контрагент который относиться до этого маршрута)
Номенклатура1
Номенклатура2 (номенклатура с табличной части расходной накладной которая удовлетворяет условию)
Контрагент2
Номенклатура1
Номенклатура2


Но на данный момент запрос не хочет формировать сгруппированные строки и отображает вот такое:

Цитата
Маршрут1
Контрагент1 (то есть контрагент который относиться до этого маршрута)
Номенклатура1 (номенклатура с табличной части расходной накладной которая удовлетворяет условию)
Маршрут2
Контрагент1 (то есть контрагент который относиться до этого маршрута)
Номенклатура1 (номенклатура с табличной части расходной накладной которая удовлетворяет условию)
Маршрут1
Контрагент1 (то есть контрагент который относиться до этого маршрута)
Номенклатура2 (номенклатура с табличной части расходной накладной которая удовлетворяет условию)
Маршрут2
Контрагент1 (то есть контрагент который относиться до этого маршрута)
Номенклатура2 (номенклатура с табличной части расходной накладной которая удовлетворяет условию)
Маршрут1
Контрагент2 (то есть контрагент который относиться до этого маршрута)
Номенклатура2 (номенклатура с табличной части расходной накладной которая удовлетворяет условию)


Вот сам запрос:

Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПогрузочныйЛист.Контрагент КАК Контрагент,
    |    ПогрузочныйЛист.Експедитор КАК Експедитор,
    |    РеализацияТоваровУслуг.Номенклатура КАК Номенклатура,
    |    РеализацияТоваровУслуг.Количество КАК Количество,
    |    ВЫРАЗИТЬ(РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар
    |ИЗ
    |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПогрузочныйЛист.Расходные КАК ПогрузочныйЛист
    |        ПО (ПогрузочныйЛист.ДокРасх = РеализацияТоваровУслуг.Ссылка)
    |ГДЕ
    |    ПогрузочныйЛист.Ссылка = &ТекущийДокумент
    |
    |СГРУППИРОВАТЬ ПО
    |    РеализацияТоваровУслуг.Номенклатура,
    |    ПогрузочныйЛист.Контрагент,
    |    ПогрузочныйЛист.Експедитор,
    |    РеализацияТоваровУслуг.Количество
    |АВТОУПОРЯДОЧИВАНИЕ";
    Маршруты = Запрос.Выполнить().Выбрать();
        
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_МаршрутноПогрузочныйЛист";

    Макет = ПолучитьМакет("МаршрутноПогрузочныйЛист");
    
    НомерСтроки = 0;

    Пока Маршруты.Следующий() Цикл
        
        ОбластьМакета = Макет.ПолучитьОбласть("Маршрут");
        ОбластьМакета.Параметры.Водитель = "Маршрут: " + Строка(Маршруты.Експедитор);
        ТабДокумент.Вывести(ОбластьМакета);      

        ОбластьМакета = Макет.ПолучитьОбласть("Контрагент");
        ОбластьМакета.Параметры.Контрагент = Маршруты.Контрагент;
        ТабДокумент.Вывести(ОбластьМакета);

        ОбластьМакета = Макет.ПолучитьОбласть("Строка");
                    НомерСтроки = НомерСтроки + 1;
                        ОбластьМакета.Параметры.НомерСтроки = НомерСтроки;
                    ОбластьМакета.Параметры.Товар = Маршруты.Товар;
                    ОбластьМакета.Параметры.Количество = Маршруты.Количество;
        ТабДокумент.Вывести(ОбластьМакета);

    КонецЦикла;
    Возврат ТабДокумент;


Знаю что в 1с 7.7 была такая структура как Пока Сгруппировать (1) = 1 Цикл Сгруппировать(2) = 1 Цикл.

Не ссудите строго, помогите плиз.

Очень признательный за помощь.


 ! 

Правила, п.5.
 


Сообщение отредактировал logist - 27.06.12, 9:21

Vofka Подменю пользователя
сообщение 27.06.12, 9:20
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Из вашего запроса не понятно, где поле Маршрут. А вообще на первый взгляд не должно возникать никаких сложностей: делаете группировку по Маршрут, Контрагент и Номенклатура

pablo Подменю пользователя
сообщение 27.06.12, 9:58
Сообщение #3

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 193 раз
Рейтинг: 0

полагаю, запрос должен быть таким:
"ВЫБРАТЬ
    |    ПогрузочныйЛист.Контрагент КАК Контрагент,
    |    ПогрузочныйЛист.Експедитор КАК Експедитор,
    |    РеализацияТоваровУслуг.Номенклатура КАК Номенклатура,
    |    СУММА(РеализацияТоваровУслуг.Количество) КАК Количество,
    |    ВЫРАЗИТЬ(РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар
    |ИЗ
    |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПогрузочныйЛист.Расходные КАК ПогрузочныйЛист
    |        ПО (ПогрузочныйЛист.ДокРасх = РеализацияТоваровУслуг.Ссылка)
    |ГДЕ
    |    ПогрузочныйЛист.Ссылка = &ТекущийДокумент
    |
    |СГРУППИРОВАТЬ ПО
    |    РеализацияТоваровУслуг.Номенклатура,
    |    ПогрузочныйЛист.Контрагент,
    |    ПогрузочныйЛист.Експедитор
    |АВТОУПОРЯДОЧИВАНИЕ"


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Batchir Подменю пользователя
сообщение 27.06.12, 10:31
Сообщение #4

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1443 раз
Рейтинг: 0

я б ещё итоги добавил и обход результата запроса по группировкам сделал

mister-x Подменю пользователя
сообщение 27.06.12, 12:13
Сообщение #5

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1422 раз
Рейтинг: 0

Цитата(mabuta_account @ 27.06.12, 9:12) *
Знаю что в 1с 7.7 была такая структура как Пока Сгруппировать (1) = 1 Цикл Сгруппировать(2) = 1 Цикл.

якщо бути точним
Пока Запрос.Группировка(1)=1 цикл
Пока Запрос.Группировка(2)=1 цикл
...

mabuta_account Подменю пользователя
сообщение 27.06.12, 18:18
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 6
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(mister-x @ 27.06.12, 13:13) *
якщо бути точним
Пока Запрос.Группировка(1)=1 цикл
Пока Запрос.Группировка(2)=1 цикл
...

Хорошо, я в следующий раз до оформлю

Цитата(pablo @ 27.06.12, 10:58) *
полагаю, запрос должен быть таким:
"ВЫБРАТЬ
    |    ПогрузочныйЛист.Контрагент КАК Контрагент,
    |    ПогрузочныйЛист.Експедитор КАК Експедитор,
    |    РеализацияТоваровУслуг.Номенклатура КАК Номенклатура,
    |    СУММА(РеализацияТоваровУслуг.Количество) КАК Количество,
    |    ВЫРАЗИТЬ(РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар
    |ИЗ
    |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПогрузочныйЛист.Расходные КАК ПогрузочныйЛист
    |        ПО (ПогрузочныйЛист.ДокРасх = РеализацияТоваровУслуг.Ссылка)
    |ГДЕ
    |    ПогрузочныйЛист.Ссылка = &ТекущийДокумент
    |
    |СГРУППИРОВАТЬ ПО
    |    РеализацияТоваровУслуг.Номенклатура,
    |    ПогрузочныйЛист.Контрагент,
    |    ПогрузочныйЛист.Експедитор
    |АВТОУПОРЯДОЧИВАНИЕ"


Это не подходит так как мне не нужно объединять по совпадению номенклатуры.


Спасибо всем за помощь.

Все вышло.

Вот запрос:

Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПогрузочныйЛист.Контрагент КАК Контрагент,
    |    ПогрузочныйЛист.Експедитор КАК Експедитор,
    |    РеализацияТоваровУслуг.Номенклатура КАК Номенклатура,
    |    РеализацияТоваровУслуг.Количество КАК Количество,
    |    ВЫРАЗИТЬ(РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар
    |ИЗ
    |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПогрузочныйЛист.Расходные КАК ПогрузочныйЛист
    |        ПО (ПогрузочныйЛист.ДокРасх = РеализацияТоваровУслуг.Ссылка)
    |ГДЕ
    |    ПогрузочныйЛист.Ссылка = &ТекущийДокумент
    |
    |ИТОГИ ПО
    |    Експедитор,
    |    Контрагент
    |АВТОУПОРЯДОЧИВАНИЕ";
            
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_МаршрутноПогрузочныйЛист";

    Макет = ПолучитьМакет("МаршрутноПогрузочныйЛист");
    
    КодЯзыкаПечать = "uk";
    Макет.КодЯзыкаМакета = КодЯзыкаПечать;
    
    ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
    ОбластьМакета.Параметры.Документ = "Вантажний лист № " + Строка(Номер) + " от " +  Строка(Формат(Дата,"ДФ=dd.MM.yyyy"));
    ТабДокумент.Вывести(ОбластьМакета);
    
        Выборка1 = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Експедитор");
            Пока Выборка1.следующий() цикл

                ОбластьМакета = Макет.ПолучитьОбласть("Маршрут");
                ОбластьМакета.Параметры.Водитель = "Маршрут: " + Строка(Выборка1.Експедитор);
                ТабДокумент.Вывести(ОбластьМакета);
        
        Выборка2 = Выборка1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Контрагент");
            Пока Выборка2.Следующий() цикл
            
            ОбластьМакета = Макет.ПолучитьОбласть("Контрагент");
            ОбластьМакета.Параметры.Контрагент = Выборка2.Контрагент;
            ТабДокумент.Вывести(ОбластьМакета);
            
        Выборка3 = Выборка2.Выбрать();
            Пока Выборка3.Следующий() цикл
                
            НомерСтроки = 0;
            ОбластьМакета = Макет.ПолучитьОбласть("Строка");
                    НомерСтроки = НомерСтроки + 1;
                    ОбластьМакета.Параметры.НомерСтроки = НомерСтроки;
                    ОбластьМакета.Параметры.Товар = Выборка3.Товар;
                    ОбластьМакета.Параметры.Количество = Выборка3.Количество;
            ТабДокумент.Вывести(ОбластьМакета);
          
        КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    Возврат ТабДокумент;

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.06.25, 7:37
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!