Кросс отчет

1. user631997_seirosso1 15.03.17 23:38 Сейчас в теме +1 $m
Добрый День! Подскажите делаю внешний отчет, немного запутался не могу сообразить как сделать обход Контрагентов в документах!

Для Каждого СтрТов ИЗ Выборка.Товары Цикл
		ОбластьШапка = Макет.ПолучитьОбласть("Шапка|Колонка");
		ОбластьШапка.Параметры.Номенклатура = СтрТов.Номенклатура;
		ТабДок.Присоединить(ОбластьШапка);
		
	КонецЦикла;
		
КонецЦикла;
	  
	Пока Выборка.Следующий() Цикл---------вот в этом цикле не могу обойти контрагентов для вывода в отчет!
		  
	   ОбластьСтрока = Макет.ПолучитьОбласть("Строка|Начало");
	   ОбластьСтрока.Параметры.Контрагент = Выборка.Контрагент;
	   ТабДок.Вывести(ОбластьСтрока);
	   
   КонецЦикла;
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
24. ditp 91 22.03.17 10:26 Сейчас в теме
(1) см. вложение
Прикрепленные файлы:
ВнешнийОтчет1.erf
2. user631997_seirosso1 17.03.17 17:02 Сейчас в теме
Я так понимаю никто не умеет делать кросс отчет
3. user631997_seirosso1 17.03.17 17:09 Сейчас в теме
А вообще кто нибудь может помочь мне в написании кросс отчета, он небольшой за старт мани?
4. user631997_seirosso1 17.03.17 17:10 Сейчас в теме
Кто нибудь вообще умеет писать отчеты без СКД или только на СКД?
5. starik-2005 3033 17.03.17 17:12 Сейчас в теме
Тихо сам с собою (с)
Сделай на СКД и не мучайся. Номенклатуру в колонки, контрагентов в строки, результаты в ресурс.
6. user631997_seirosso1 18.03.17 23:56 Сейчас в теме
Добрый день! Кто нибудь знает каким путем можно вывести Параметр Количество, т е Контрагент Номенклатура, Номенклатура
Контрагент Количество Количество
Контрагент Количество Количество
Номенклатуру и Контрагента вывел, а вот количество правильно не могу вывести, то пишу ТабДок присоединить и он мне присоед сбоку как и номенклатуру, то если написать ТабДок вывести, то тогда мне количество выводится под Контрагентом.?
7. comptr 30 19.03.17 01:31 Сейчас в теме
(6) эм, так и не понятно, что именно надо. Сбоку не нужно, снизу не нужно. А где нужно?
Если нужно вида
К | Н | Кол
к1 | Н1 | 10
к2 | Н2 | 15

То выводишь по строчкам: сначала шапку, потом строчка за строчкой
выводишь контрагента, присоединяешь номенклатуру, присоедишяешь количество
повторить пока не надоест.
Т.е. смысл в том, что если не извращаться с позиционирование по ячейкам, то выводить надо построчно, каждый раз обходя все колонки.
8. user631997_seirosso1 19.03.17 14:36 Сейчас в теме
Спасибо что ответили, мне нужно вывести таким образом: Контрагент Товар1,Товар2,Товар3 итд.
Контрагент Кол-во, Кол-во, Кол-во
Контрагент Кол-во, Кол-во, Кол-во
Контрагент Кол-во, Кол-во, Кол-во

а у меня почему то получается при обходе параметра Кол во при ТабДок.Присоединить, вот так

Контрагент Товар1,Товар2,Товар3
Контрагент
Контрагент
Контрагент Кол-во, Кол-во, Кол-во----почему то Кол-во выводится
только в последнюю строку, а если написать ТабДок.Вывести, то тогда получается, вот так

Контрагент Товар1,Товар2,Товар3
Контрагент
Контрагент
Контрагент
Кол-во
Кол-во
Кол-во
Посмотрите пожалуйста во вложении мой отчет. чтобы вам было более понятно
Прикрепленные файлы:
ДинамическийОтчет.erf
9. comptr 30 19.03.17 18:56 Сейчас в теме
(8) Ну так наверное стоит сесть и подумать, что в каком порядке нужно выводить. И как тогда должны быть устроены циклы. Какой цикл куда вложен. Сейчас там, мягко говоря, бардак. Как с логикой, так и с производительностью.
1. Сначала выводится в одну строку (т.к. "присоединить") список всех товаров из всех реализаций за период. Т.е. номенклатура в строке явно будет повторяться.
2. Затем все контрагенты из этих же реализаций выводятся, каждый в новую строку, так как "Вывести".
3. Затем опять берутся все реализации, и "Количество" из товаров выводится в новую строку, так как "Вывести".
Определись с тем, что тебе нужно, получи все данные запросом, потом выводи.
Либо СКД, там тупо мышкой всё натыкать можно. В чём причина отказа от СКД? Если это тестовое задание на работу, то, боюсь, на работу ещё рано.
10. user631997_seirosso1 19.03.17 19:13 Сейчас в теме
Я хочу сперва вывести Шапку(Контрагент и Номенклатура), потом вывожу Всех контрагентов(строка)--это у меня все выводится,а Кол-во. никак не получается, подскажите как можно вывести кол -во?
11. user631997_seirosso1 19.03.17 19:38 Сейчас в теме
У меня почему то Кол-во, Выводится под Контрагентами. хотя должна выводится напротив, вы можете мне что нибудь посоветовать как это сделать? Без СКД очень вас прошу!
12. user631997_seirosso1 19.03.17 19:43 Сейчас в теме
Я пишу

Для Каждого СтрКол ИЗ ВыборкаКол.Товары Цикл
ОбластьСтрока = Макет.ПолучитьОбласть("Строка|Колонка");
ОбластьСтрока.Параметры.Количество = СтрКол.Количество;
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
а он мне выводит почему то под Контрагентом как будто я написал вместо(Строка|Колонка),(Строка|Начало) что то не въеду?
23. Jen1978 19 21.03.17 17:15 Сейчас в теме
(12) чтобы сбоку выводило надо использовать команду "присоединить" а у вас в коде "вывести" поэтому строчка появляется под контрагентом
13. user631997_seirosso1 19.03.17 19:51 Сейчас в теме
Хотя я кажись понял в чем причина, сейчас попробую!!!!!!!!!!
14. user631997_seirosso1 19.03.17 20:50 Сейчас в теме
Да все получилось вы были правы я совсем не то делал!!!
15. user631997_seirosso1 19.03.17 23:15 Сейчас в теме
Не могу разобраться с циклами, немного оптимизировал, но результата нужного нет. Подскажите пожалуйста в коде по циклу, буду рад любому совету!

Выборка = Документы.РеализацияТоваровУслуг.Выбрать(ПериодНачало,ПериодКонец);
	
		
	Пока Выборка.Следующий() Цикл
		Если Выборка.Проведен = Ложь Тогда
			 Продолжить;
		 КонецЕсли;	 
	
			Для Каждого СтрТов ИЗ Выборка.Товары Цикл
		ОбластьШапка = Макет.ПолучитьОбласть("Шапка|Колонка");
		ОбластьШапка.Параметры.Номенклатура = СтрТов.Номенклатура;
		ТабДок.Присоединить(ОбластьШапка);
		
	      КонецЦикла;
	//КонецЦикла;
	   
	   ОбластьСтрока = Макет.ПолучитьОбласть("Строка|Начало");
	   ОбластьСтрока.Параметры.Контрагент = Выборка.Контрагент;
	   ТабДок.Вывести(ОбластьСтрока);
	      		  
    	Для Каждого СтрКол ИЗ Выборка.Товары Цикл
    	ОбластьСтрока = Макет.ПолучитьОбласть("Строка|Колонка");
    	ОбластьСтрока.Параметры.Количество = СтрКол.Количество;
    	ТабДок.Присоединить(ОбластьСтрока);
    	КонецЦикла;
КонецЦикла;
 	
	Возврат ТабДок;
Показать
16. user631997_seirosso1 19.03.17 23:26 Сейчас в теме
Получается следующее : Контрагент Товар1
Контрагент Кол-во Товар2
Контрагент Кол-во Товар3
Контрагент Кол-во Товар4 разные варианты пробовал, т е менял циклы и соответственно все по разному меняется, но не так как надо! Подскажите пожалуйста по циклу, не пойму пока никак как правильно его сделать!
17. 32ops 191 20.03.17 08:45 Сейчас в теме
1) ВЫВЕСТИ "Шапка|Начало"
2) В цикле по товарам ПРИСОЕДЕНИТЬ "Шапка|Колонка"
3) Цикл по выборке (здесь должен начаться цикл Пока Выборка.Следующий())
3.а) ВЫВЕСТИ "Строка|Начало"
3.б) В цикле по товарам ПРИСОЕДЕНИТЬ "Строка|Колонка"
18. user631997_seirosso1 20.03.17 18:52 Сейчас в теме
Пожалуйста помогите мне вывести правильно отчет или пожалуйста просто расставьте правильно циклы, я уже всяко разно пробовал и подпишите по позможности комментарии возле кода что и для чего.Во вложении есть рисунок как должно получиться и часть кода, чтобы не писать с нуля, отчет должен быть без СКД. За вознаграждение 1$(стартмани)
Прикрепленные файлы:
ДинамическийОтчет.erf
19. user631997_seirosso1 20.03.17 23:34 Сейчас в теме
Если не понятно пишите , с удовольствием отвечу на все вопросы!
20. starik-2005 3033 21.03.17 10:11 Сейчас в теме
(19)
Если не понятно пишите
Да всем пофиг, собсно. Задача решается элементарно на СКД. Если нужно решить не на СКД, то это говорит о том, что задача практической пользы не несет и нужна для проверки квалификации.

Отсюда как бы идет отсыл к школьной программе:
Цикл 1 для строк
Цикл 2 для колонок
Исходные данные при таком подходе должны быть в виде таблиц со строками для каждого контрагента, номенклатуры, месяца и ресурса. Номенклатуры в таблице должны быть или все, или придется проверять и выводить отдельно пустые колонки для каждой пропущенной позиции.

В итоге для полностью заполненной таблицы нужно вывести первую строку - шапку - для каждого уникального элемента номенклатуры. Таблица должна быть отсортирована по "Контрагент, Номенклатура".
Дальше для каждой строки выводим контрагента (для итератора, равного "1"), после чего прикрепляем к нему элемент для каждой номенклатуры с ресурсом (просто следующая строка таблицы). Ну и счетчик на количество номенклатуры, по окончании которого рвем внутренний цикл брейком..
21. user631997_seirosso1 21.03.17 14:39 Сейчас в теме
(20)Спасибо что ответили, надеюсь у меня с вашей помощью все получится!
25. user631997_seirosso1 26.03.17 17:00 Сейчас в теме
(20)До меня трудно немного доходит правильно ли я понял сперва я вывожу шапку, т е контрагент к нему присоединяю шапку номенклатуру и все это я делаю во вложенном цикле. Потом опять пишу

Выборка = Документы.РеализацияТоваровУслуг.Выбрать(ПериодНачало,ПериодКонец);

После этого вывожу контрагентов и к ним прикрепляю количество?
22. Jen1978 19 21.03.17 17:13 Сейчас в теме
в каком порядке вложенность хотите в таком и циклы вкладывайте внутрь циклов
26. user631997_seirosso1 26.03.17 19:52 Сейчас в теме
Скажем так у меня получается вывести шапку контрагент и номенклатуру, а вот строка контрагент не понятно там надо как то цикл сделать не пойму как для того чтобы потом вывести количество!
27. user631997_seirosso1 26.03.17 19:59 Сейчас в теме
Пока Выборка.Следующий() Цикл
        Если Выборка.Проведен = Ложь Тогда
             Продолжить;
         КонецЕсли;     
    
            Для Каждого СтрТов ИЗ Выборка.Товары Цикл
        ОбластьШапка = Макет.ПолучитьОбласть("Шапка|Колонка");
        ОбластьШапка.Параметры.Номенклатура = СтрТов.Номенклатура;
        ТабДок.Присоединить(ОбластьШапка);
        
          КонецЦикла;
    //КонецЦикла;
       
       ОбластьСтрока = Макет.ПолучитьОбласть("Строка|Начало");----------не могу понять как в цикле вывести Контрагента?
       ОбластьСтрока.Параметры.Контрагент = Выборка.Контрагент;
       ТабДок.Вывести(ОбластьСтрока);
                    
        Для Каждого СтрКол ИЗ Выборка.Товары Цикл
        ОбластьСтрока = Макет.ПолучитьОбласть("Строка|Колонка");
        ОбластьСтрока.Параметры.Количество = СтрКол.Количество;
        ТабДок.Присоединить(ОбластьСтрока);
        КонецЦикла;
Показать
28. user631997_seirosso1 26.03.17 20:12 Сейчас в теме
Интересно что когда пишу вывести мне контрагента и присоединяю к контрагенту количество, количество выводится, но выводится друг под другом а не под товаром к которому соответствует, кто нибудь может мне написать проверку для вывода количества ну чтоб оно выводилось под нужным товаром а не просто друг под другом!
29. user631997_seirosso1 26.03.17 20:22 Сейчас в теме
Если кто- то что- то может мне подсказать то во вложении можетке посмотреть!Пожалуйста в моем коде может кто-нибудь сделать исправление, хотя бы комментариями напротив, ну очень надо!
Прикрепленные файлы:
ДинамическийОтчет.erf
30. igel9780 171 27.03.17 08:57 Сейчас в теме
Писатели, блин. Вы давайте сначала почитаете что-нибудь. Литературу какую-нибудь. А потом писать начинайте.
Прикрепленные файлы:
ДинамическийОтчет.erf
31. user631997_seirosso1 28.03.17 23:15 Сейчас в теме
Спасибо за совет Павел, сейчас буду разбираться как его делать! Я этот отчет делал через документ, потому что меня попросили не пользоваться запросом, хотят научить делать отчет без запроса, чтобы я имел предстпвление что и откуда берется! И с запросом у меня не примут задание. но вы в принципе много интересных действий мне показали, так что спасибо, буду дальше разбираться! А так если без запроса делать, то это надо все таки выборкой делать или Выборкой по регистру?
32. igel9780 171 29.03.17 10:15 Сейчас в теме
Правильнее делать выборкой по регистру. Это парадигма работы 1С. Документ при проведении раскладывается по плоским таблицам. И отчеты должны работать с плоскими таблицами, а не с документами.
Полученные данные в любом случае необходимо свернуть до измерений отчета. Можете создать таблицу значений, заполнить её из документов в объектной модели, ну и свернуть, так же как сворачиваются измерения строк и столбцов.

Я сомневаюсь, что есть какой-нибудь смысл научиться делать отчёты без запроса. Потому как запросом всегда работает быстрее, и в реальной жизни выборки по объектной модели используют очень редко.
33. user631997_seirosso1 28.04.17 17:08 Сейчас в теме
А вы бы не смогли написать мне кросс отчет, объектной модели рублей за 500? И если можно напротив кода написать комментарии. т е что и для чего.
34. igel9780 171 26.05.17 07:08 Сейчас в теме
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)