Имя: Пароль:
1C
1С v8
Проблема с выводом данных на печать
, ,
0 S-Sheriff
 
02.10.19
10:06
Всем привет! Использую 1С:Предприятие 8.3 (8.3.13.1690)
конфа - Бухгалтерия для Казахстана, редакция 3.0, разработка для Казахстана: «1С-Рейтинг» (3.0.31.2)
Сделал в расширении изменение на документ Требование-накладная.
Теперь в печатную форму пытаюсь вывести вес вагонов через запятую, но вот если в табличной части документа Отгрузка вагонов повторяется вес, то в печатной форме он почему -то выходит только как будто там всего одна позиция, хотя там их 3 вагона, но с одинаковым весом.
С другими документами где вес у вагонов разный, всё нормально при печати.
Функция ПолучитьВесВагонов(ДокСсылка)

МассивНомеров="";    
    
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |    ОтгрузкаВагоновВагоны.Тоннаж КАК Тоннаж
               |ИЗ
               |    Документ.ЦЗС_ОтгрузкаВагонов.Вагоны КАК ОтгрузкаВагоновВагоны
               |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЦЗС_ОтгрузкаВагонов КАК ОтгрузкаВагонов
               |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ТребованиеНакладная.ЦЗС_ДокументыОтгрузкиВагонами КАК ТребованиеНакладнаяЦЗС_ДокументыОтгрузкиВагонами
               |                ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТребованиеНакладная КАК ТребованиеНакладная
               |                ПО ТребованиеНакладнаяЦЗС_ДокументыОтгрузкиВагонами.Ссылка = ТребованиеНакладная.Ссылка
               |            ПО (ТребованиеНакладнаяЦЗС_ДокументыОтгрузкиВагонами.СсылкаНаДокумент = ОтгрузкаВагонов.Ссылка)
               |        ПО ОтгрузкаВагоновВагоны.Ссылка = ОтгрузкаВагонов.Ссылка
               |ГДЕ
               |    ТребованиеНакладная.Ссылка = &Ссылка
               |
               |СГРУППИРОВАТЬ ПО
               |    ОтгрузкаВагоновВагоны.Тоннаж";

Запрос.УстановитьПараметр("Ссылка", ДокСсылка);

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Сч=0;
Всего=0;
Если Выборка.Количество()>0 Тогда
Всего=Выборка.Количество();

Сч =1;    
Пока Выборка.Следующий() Цикл
    
   Если Всего<>Сч Тогда
     Сч=Сч+1;    
      МассивНомеров=МассивНомеров+" "+Выборка.Тоннаж+",";
   Иначе
     МассивНомеров=МассивНомеров+" "+Выборка.Тоннаж;
   КонецЕсли;

КонецЦикла;

КонецЕсли;

Возврат МассивНомеров;

КонецФункции // ПолучитьВесВагонов()
1 vicof
 
02.10.19
10:09
СГРУППИРОВАТЬ ПО
НомерСтроки
2 vicof
 
02.10.19
10:11
И убрать все соединения
3 vicof
 
02.10.19
10:11
А, не, не убирать, но чото сильно много их
4 vicof
 
02.10.19
10:12
Ну короче, весь запрос переписать
5 S-Sheriff
 
02.10.19
10:19
СГРУППИРОВАТЬ ПО
НомерСтроки
получилось)

Ещё момент, как их можно в столбец сделать?
Чтоб не в строку были данные, а в столбец
6 S-Sheriff
 
02.10.19
10:22
мне надо ещё итого посчитать по этому весу
7 vicof
 
02.10.19
10:30
Какие данные?
8 S-Sheriff
 
02.10.19
10:32
Вес вагонов :  66, 66, 66    
У меня сейчас в печатной форме выходит так
А хотелось бы в столбец
66
66
66
И по итогу, посчитать их общий вес, типа
Итого - 198
Ну как -то так)
9 S-Sheriff
 
02.10.19
10:33
Тоннаж так скажем
10 ДенисЧ
 
02.10.19
10:34
Если ты группируешь по одинаковому значению, тогда почему у тебя должно получиться несколько строчек?
11 S-Sheriff
 
02.10.19
10:37
Если ты группируешь по одинаковому значению, тогда почему у тебя должно получиться несколько строчек?
Хорошо, тогда как надо группировать, чтоб сделать эти данные в столбец и посчитать итог?
12 ДенисЧ
 
02.10.19
10:41
(11) Отсюда не видно, что там у тебя, кроме аццкого )) тоннажа есть.
13 S-Sheriff
 
02.10.19
10:59
(12) Я хз как тут картинку запихать)
14 S-Sheriff
 
02.10.19
11:17
Блин, как объяснить ещё:)
№ вагонов   :  24381170, 24551459, 52034261                    
Вес вагонов :  66, 66, 66                    

Эти данные в печатной форме выводятся, НО, они в строчку все
Как их каждую строку сделать в столбец, чтоб номер вагона, соответствовал весу вагона
Ну и по итогу, общий все в конце
15 ДенисЧ
 
02.10.19
11:33
(14) ну вот и группируй по номерам вагонов, а не по тоннажу...
16 S-Sheriff
 
02.10.19
11:37
(15) так я и спрашиваю, как это сделать?
Область.Параметры.НомерВагона = " № вагонов : " + ПолучитьНомераВагонов(Шапка.Ссылка);
        Область.Параметры.ВесВагона = " № вагонов : " + ПолучитьВесВагонов(Шапка.Ссылка);

Функция ПолучитьНомераВагонов(ДокСсылка)

МассивНомеров="";    
    
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |    ОтгрузкаВагоновВагоны.Вагон.Наименование КАК НомерВагона
               |ИЗ
               |    Документ.ЦЗС_ОтгрузкаВагонов.Вагоны КАК ОтгрузкаВагоновВагоны
               |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЦЗС_ОтгрузкаВагонов КАК ОтгрузкаВагонов
               |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ТребованиеНакладная.ЦЗС_ДокументыОтгрузкиВагонами КАК ТребованиеНакладнаяЦЗС_ДокументыОтгрузкиВагонами
               |                ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТребованиеНакладная КАК ТребованиеНакладная
               |                ПО ТребованиеНакладнаяЦЗС_ДокументыОтгрузкиВагонами.Ссылка = ТребованиеНакладная.Ссылка
               |            ПО (ТребованиеНакладнаяЦЗС_ДокументыОтгрузкиВагонами.СсылкаНаДокумент = ОтгрузкаВагонов.Ссылка)
               |        ПО ОтгрузкаВагоновВагоны.Ссылка = ОтгрузкаВагонов.Ссылка
               |ГДЕ
               |    ТребованиеНакладная.Ссылка = &Ссылка
               |
               |СГРУППИРОВАТЬ ПО
               |    ОтгрузкаВагоновВагоны.Вагон.Наименование";

Запрос.УстановитьПараметр("Ссылка", ДокСсылка);

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Сч=0;
Всего=0;
Если Выборка.Количество()>0 Тогда
Всего=Выборка.Количество();

Сч =1;    
Пока Выборка.Следующий() Цикл
    
   Если Всего<>Сч Тогда
     Сч=Сч+1;    
      МассивНомеров=МассивНомеров+" "+Выборка.НомерВагона+",";
   Иначе
     МассивНомеров=МассивНомеров+" "+Выборка.НомерВагона;
   КонецЕсли;

КонецЦикла;

КонецЕсли;

Возврат МассивНомеров;

КонецФункции // ПолучитьНомераВагонов()

Функция ПолучитьВесВагонов(ДокСсылка)

МассивНомеров="";    
    
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 10
               |    ОтгрузкаВагоновВагоны.Тоннаж КАК Тоннаж
               |ИЗ
               |    Документ.ЦЗС_ОтгрузкаВагонов.Вагоны КАК ОтгрузкаВагоновВагоны
               |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЦЗС_ОтгрузкаВагонов КАК ОтгрузкаВагонов
               |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ТребованиеНакладная.ЦЗС_ДокументыОтгрузкиВагонами КАК ТребованиеНакладнаяЦЗС_ДокументыОтгрузкиВагонами
               |                ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТребованиеНакладная КАК ТребованиеНакладная
               |                ПО ТребованиеНакладнаяЦЗС_ДокументыОтгрузкиВагонами.Ссылка = ТребованиеНакладная.Ссылка
               |            ПО (ТребованиеНакладнаяЦЗС_ДокументыОтгрузкиВагонами.СсылкаНаДокумент = ОтгрузкаВагонов.Ссылка)
               |        ПО ОтгрузкаВагоновВагоны.Ссылка = ОтгрузкаВагонов.Ссылка
               |ГДЕ
               |    ТребованиеНакладная.Ссылка = &Ссылка
               |
               |СГРУППИРОВАТЬ ПО
               |    ОтгрузкаВагоновВагоны.НомерСтроки,
               |    ОтгрузкаВагоновВагоны.Тоннаж";

Запрос.УстановитьПараметр("Ссылка", ДокСсылка);

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Сч=0;
Всего=0;
Если Выборка.Количество()>0 Тогда
Всего=Выборка.Количество();

Сч =1;    
Пока Выборка.Следующий() Цикл
    
   Если Всего<>Сч Тогда
     Сч=Сч+1;    
      МассивНомеров=МассивНомеров+" "+Выборка.Тоннаж+",";
   Иначе
     МассивНомеров=МассивНомеров+" "+Выборка.Тоннаж;
   КонецЕсли;

КонецЦикла;

КонецЕсли;

Возврат МассивНомеров;

КонецФункции // ПолучитьВесВагонов()


Вот так сделано у меня в коде
17 S-Sheriff
 
02.10.19
14:29
по итогу, никто не может подсказать как это мне реализовать?
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший