Вывести в макет данные из запроса

1. user1008893 10.07.20 09:03 Сейчас в теме
Есть запрос, в одном пакете получаю поставщиков по номенклатуре и наименования номенклатуры поставщиков, а в другом пакете потребности номенклатуры. Потребности выводятся и все хорошо,но надо присоединять столбцы с поставщиками,т.е. нужно узнать максимальное количество поставщиков по каждой номенклатуре. Подскажите пожалуйста,как правильно выводить,желательно с примерами.
ВЫБРАТЬ
	НоменклатураПоставщиков.Номенклатура КАК Номенклатура,
	НоменклатураПоставщиков.ВариантИсполнения КАК ВариантИсполнения,
	НоменклатураПоставщиков.Поставщик КАК Поставщик,
	НоменклатураПоставщиков.НоменклатураПоставщика КАК НоменклатураПоставщика,
	НоменклатураПоставщиков.ВариантИсполненияПоставщика КАК ВариантИсполненияПоставщика
ИЗ
	РегистрСведений.НоменклатураПоставщиков КАК НоменклатураПоставщиков
ИТОГИ ПО
	ВариантИсполнения,
	НоменклатураПоставщика,
	ВариантИсполненияПоставщика,
	Номенклатура
;
Показать
Прикрепленные файлы:
+
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. wertep 23 10.07.20 09:34 Сейчас в теме
(1)В таком виде по моему в таком виде это будет не читабельно для пользователя и геморойно для программиста. Просто представьте что найдется десяток или больше поставщиков. Выводите в одной ячейке в многострочный сразу
Поставщик1 - НоменклатураПоставщика1
Поставщик2 - НоменклатураПоставщика2

В расшифровке ячейки можно реализовать более удобный для переходов вид.

Как такое реализовать на СКД есть тут.
+
3. user1008893 10.07.20 09:37 Сейчас в теме
(2)Нет,нужно получить вид как на картинке, выводим максимум 3-х поставщиков и у меня не скд
+
4. user750322 10.07.20 10:34 Сейчас в теме
Команда присоединить позволяет работать с ячейками на макете, то есть вы получаете (область ячейки|область макета) и идентифицируете ее по номеру связывая по номенклатуре, вот здесь смотрите пример https://forum.mista.ru/topic.php?id=529453
+
5. user1008893 10.07.20 10:46 Сейчас в теме
(4) у меня два запроса,и я не могу понять,как запустить сразу 2 цикла и находить именно ту строку в которой эта номенклатура ,а хатем уже присоединять
+
6. oleg-x 26 10.07.20 10:47 Сейчас в теме
(5) Выгрузите второй запрос (с номенклатурой поставщика) в таблицу и делайте поиск по этой таблице при выводе строки.
user1008893; +1
7. user1008893 10.07.20 10:48 Сейчас в теме
8. oleg-x 26 10.07.20 10:52 Сейчас в теме +0.5 $m
ТаблицаСНомПоставщика = ЗапросНомПоставщика.Выполнить().Выгрузить();

Пока Выборка.Следующий() Цикл //Основной запрос
    Отбор = Новый Структура("Номенклатура",Выборка.Номенклатура);
    МассивПоставщиков = ТаблицаСНомПоставщика.НайтиСтроки(Отбор); //Находим в таблице всех поставщиков по номенклатуре.
    Для каждого стр из МассивПоставщиков Цикл
         //стр.Поставщик
    КонецЦикла;
КонецЦикла:
Показать
user1008893; +1
9. user1008893 10.07.20 11:09 Сейчас в теме +0.5 $m
(8) Метод объекта не обнаружен (Выполнить)
ТаблНомПост = РезультатЗапросаПост.Выполнить().Выгрузить();
+
10. Nadushka74 5 10.07.20 11:11 Сейчас в теме
(9)
РезультатЗапросаПост
у вас то запрос есть с таким именем? вам ведь пример указали
+
11. user1008893 10.07.20 11:13 Сейчас в теме
(10)уже разобрались с этим
+
12. oleg-x 26 10.07.20 11:15 Сейчас в теме
(10) Не правильная конструкция. если присмотреться.
У них было ТаблНомПост = РезультатЗапросаПост.Выполнить().Выгрузить();
А надо было ТаблНомПост = Запрос.Выполнить().Выгрузить();
user1008893; +1
13. user1008893 10.07.20 11:23 Сейчас в теме
(12)
Зависает ,где то зацикливает
Процедура ВывестиГруппировку(ВхМакет, ВхЗапрВыб, ВхТипГр, ВхНомГр, ВхТаблГр, ВхУровень, ВхТаблДок, ВхТаблПакетныйЗаказПоставщику = Неопределено)
	
	РезультатыЗапросаПост = ПолучитьДанные();
	РезультатЗапросаПост = РезультатыЗапросаПост[2];
   ТаблНомПост = РезультатЗапросаПост.Выгрузить();
	
	_ДнейВМесяце = 30;
	
	Если ВхУровень >= 5 Тогда // максимум 5 уровней (0-4) 
		Возврат;
	КонецЕсли;	
	
	_ИмяСекции                  = ?(ВхТипГр = "Строки", "Гр" + ВхУровень, "ГрИтоги");
	_ИмяГр                      = ВхТаблГр[ВхНомГр].ИмяИзмерения;
	_ВыводитьИтогиПоГруппировке = ВхТаблГр[ВхНомГр].ВыводитьИтоги;
	_ТипИзмерения               = ВхТаблГр[ВхНомГр].ТипИзмерения;
	
	Пока ВхЗапрВыб.Следующий() Цикл
		
		// "_ИмяСекции|Начало"
		Если ВхТипГр = "Итоги" Тогда 
			
			Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Начало");
			ВхТаблДок.Вывести(Область, ВхУровень);
			
		Иначе	
			
			_ЗначениеГр = ВхЗапрВыб[_ИмяГр]; // значение группировки по имени
			
			Если ВхНомГр = (ВхТаблГр.Количество() - 1) И _ИмяГр = "ВариантИсполнения" Тогда // последняя группировка ("ВариантИсполнения")
				Если глПустоеЗначение(_ЗначениеГр) Тогда
					Продолжить;	
				КонецЕсли; 	
			КонецЕсли;
            			
			Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Начало");
			Если ТипЗнч(_ЗначениеГр) = Тип("СправочникСсылка.Номенклатура") Тогда
				Если _ЗначениеГр.ЭтоГруппа Тогда
					Область.Параметры.ЗначениеГрСтр = ВРЕГ(глНоменклатураСтр(_ЗначениеГр));
				Иначе
					
					Если мИспользоватьАртикулы Тогда
						Область.Параметры.Артикул 	= _ЗначениеГр.Артикул;
					КонецЕсли;
					
					Область.Параметры.ЗначениеГрСтр = глНоменклатураСтр(_ЗначениеГр, Ложь) + ", " +  _ЗначениеГр[ИспользуемыеЕдиницыИзмерения];
					
					// для номенклатуры (элементов -> итоги будем выводить при условии, что тип измерения выбран как "Иерархия")
					Если _ТипИзмерения = ТипИзмеренияПостроителяОтчета.Иерархия Тогда
						_ВыводитьИтогиПоГруппировке = Истина;
					КонецЕсли;
					
				КонецЕсли;
			Иначе
				
				Если мИспользоватьАртикулы 
					И ТипЗнч(_ЗначениеГр) = Тип("СправочникСсылка.ВариантыИсполнения") Тогда 
					
					Область.Параметры.Артикул 	= _ЗначениеГр.Артикул;
					
				КонецЕсли;
				
				Область.Параметры.ЗначениеГрСтр = _ЗначениеГр;
				
			КонецЕсли; 
			Область.Параметры.Расшифровка   = _ЗначениеГр;
			ВхТаблДок.Вывести(Область, ВхУровень);
		КонецЕсли;	
						
		// "_ИмяСекции|ВертикальныйРазделитель"
		Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|ВертикальныйРазделитель1");
		ВхТаблДок.Присоединить(Область);
		
		Если _ИмяГр = "Номенклатура" или _ИмяГр = "ВариантИсполнения" тогда
		Отбор=Новый Структура("Номенклатура",ВхЗапрВыб.Номенклатура);
		МассивПост=ТаблНомПост.НайтиСтроки(Отбор);
		Для Каждого стр из МассивПост цикл
			
			Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");
			
			Если _ИмяГр = "Номенклатура" И НЕ ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения
				 Тогда
				Область.Параметры.ЗначениеГрСтрПостав 	= стр.НоменклатураПоставщика; 
			иначе Если  _ИмяГр = "ВариантИсполнения" тогда
				Область.Параметры.ЗначениеГрСтрПостав 	= стр.ВариантИсполненияПоставщика;
				КонецЕсли;
			КонецЕсли;
			
			ВхТаблДок.Присоединить(Область);
		КонецЦикла;	
		КонецЕсли;
Показать
+
14. oleg-x 26 10.07.20 11:31 Сейчас в теме
(13) Попробуйте запустить отчет в режиме замер производительности. Там где больше обращений и будет зацикливание.
Просто по коду не понятно где.
Вам нужно было выводить максимум 3 поставщика, но по коду этого нет и теоретически может быть больше и возможно последующий код зацикливается.
Так же можно в разных местах выставить счетчики. Если счетчик превысит 10000 значений там и зацикливание (выдать сообщение).
Просто по выборке по определению не может быть зацикливания. И таблица ограничена количеством строк.
user1008893; +1
15. user1008893 10.07.20 11:54 Сейчас в теме
(14) ааа,я поняла, короче есть номенклатура Без ВИ, а есть С ВИ
и по ней тоже надо делать отбор

СтруктураОтбора = Новый Структура("Номенклатура,ВариантИсполнения", ВхЗапрВыб.Номенклатура, ВхЗапрВыб.ВариантИсполнения);
МассивПост=ТаблНомПост.НайтиСтроки(Отбор);


Хотела так,но выходит ошибка Ошибка при вызове метода контекста (НайтиСтроки)
МассивПост=ТаблНомПост.НайтиСтроки(Отбор);
по причине:
Несоответствие типов (параметр номер '1')
+
16. oleg-x 26 10.07.20 12:04 Сейчас в теме
(15) Посмотрите, есть ли в таблице такая колонка "ВариантИсполнения", возможно по другому называется.
Посмотреть можно также в самом запросе на соответствующей вкладке.
+
17. user1008893 10.07.20 12:07 Сейчас в теме
(16)есть,так же и называется
+
18. oleg-x 26 10.07.20 12:08 Сейчас в теме
(17) Во
СтруктураОтбора = Новый Структура("Номенклатура,ВариантИсполнения", ВхЗапрВыб.Номенклатура, ВхЗапрВыб.ВариантИсполнения);
МассивПост=ТаблНомПост.НайтиСтроки(Отбор);

Создаете СтруктуруОтбора, а подставляете просто отбор.
user1008893; +1
19. user1008893 10.07.20 12:23 Сейчас в теме
(18)Да,да Спасибо
Смотрите,а как сейчас объяснить,что он должен если несколько поставщиков для одной номенклатуры присоединять справа,шапку то у меня цепляет,а остальное нет
Прикрепленные файлы:
+
20. oleg-x 26 10.07.20 12:33 Сейчас в теме
(19) Не совсем понятно что имеется ввиду, если как в начале. Всегда выводите трех поставщиков (можно проверить максимум, но это уже следующий этап).
И всегда присоединяйте три значения, если значения два (определяется счетчиком), то выводите пустые яйчеки.
user1008893; +1
21. user1008893 10.07.20 12:50 Сейчас в теме
(20)
Счетчик=ТаблНомПост[3].Поставщик;
	пока Счетчик<>0 Цикл	
		Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");
		
		Если _ИмяГр = "Номенклатура" тогда
			Отбор=Новый Структура("Номенклатура",ВхЗапрВыб.Номенклатура);
			МассивПост=ТаблНомПост.НайтиСтроки(Отбор);
			Для Каждого стр из МассивПост цикл
				
				//Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");
				
				Если _ИмяГр = "Номенклатура" И НЕ ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения
					Тогда
					Область.Параметры.ЗначениеГрСтрПостав 	= стр.НоменклатураПоставщика; 
				
				КонецЕсли;
				
			КонецЦикла;	
		КонецЕсли;
		
		Если _ИмяГр = "ВариантИсполнения" тогда
			СтруктураОтбора = Новый Структура("Номенклатура,ВариантИсполнения", ВхЗапрВыб.Номенклатура, ВхЗапрВыб.ВариантИсполнения);
			МассивПост=ТаблНомПост.НайтиСтроки(СтруктураОтбора);
			Для Каждого стр из МассивПост цикл
				
				//Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");
				
				Если  _ИмяГр = "ВариантИсполнения" тогда
					Область.Параметры.ЗначениеГрСтрПостав 	= стр.ВариантИсполненияПоставщика;
				КонецЕсли;
								
				//ВхТаблДок.Присоединить(Область);
			КонецЦикла;	
		КонецЕсли;
		ВхТаблДок.Присоединить(Область);
		Счетчик=Счетчик-1;
		КонецЦикла;
Показать

Все добавляет 3 ,но данные только одного поставщика везде
+
22. oleg-x 26 10.07.20 13:04 Сейчас в теме
Все логично, значение в при обходе массива присваивается, а присоединения нету.
+
23. user1008893 10.07.20 13:06 Сейчас в теме
(22)Вот так имеете ввиду?
Счетчик=ТаблНомПост[3].Поставщик;
	пока Счетчик<>0 Цикл	
		Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");
		
		Если _ИмяГр = "Номенклатура" тогда
			Отбор=Новый Структура("Номенклатура",ВхЗапрВыб.Номенклатура);
			МассивПост=ТаблНомПост.НайтиСтроки(Отбор);
			Для Каждого стр из МассивПост цикл
				
				//Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");
				
				Если _ИмяГр = "Номенклатура" И НЕ ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения
					Тогда
					Область.Параметры.ЗначениеГрСтрПостав 	= стр.НоменклатураПоставщика; 
				     ВхТаблДок.Присоединить(Область);
				КонецЕсли;
				
			КонецЦикла;	
		КонецЕсли;
		
		Если  _ИмяГр = "Номенклатура" или _ИмяГр = "ВариантИсполнения" тогда
			СтруктураОтбора = Новый Структура("Номенклатура,ВариантИсполнения", ВхЗапрВыб.Номенклатура, ВхЗапрВыб.ВариантИсполнения);
			МассивПост=ТаблНомПост.НайтиСтроки(СтруктураОтбора);
			Для Каждого стр из МассивПост цикл
				
				//Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");
				Если _ИмяГр = "Номенклатура"					Тогда
					Область.Параметры.ЗначениеГрСтрПостав 	= стр.НоменклатураПоставщика; 
				    ВхТаблДок.Присоединить(Область);
				КонецЕсли;
				Если  _ИмяГр = "ВариантИсполнения" тогда
					Область.Параметры.ЗначениеГрСтрПостав 	= стр.ВариантИсполненияПоставщика;
					ВхТаблДок.Присоединить(Область);
				КонецЕсли;
								
				//ВхТаблДок.Присоединить(Область);
			КонецЦикла;	
		КонецЕсли;
		ВхТаблДок.Присоединить(Область);
		Счетчик=Счетчик-1;
		КонецЦикла;
Показать
+
24. oleg-x 26 10.07.20 13:07 Сейчас в теме
25. user1008893 10.07.20 13:09 Сейчас в теме
(24)так,очень много столбцов выводится.
+
26. oleg-x 26 10.07.20 13:09 Сейчас в теме
(25) Так надо сделать счетчик и как только значения будет равно трем (или какое надо), прерывать цикл обхода массива.
user1008893; +1
27. user1008893 10.07.20 13:11 Сейчас в теме
(26)Вот же
Счетчик=ТаблНомПост[3].Поставщик;
пока Счетчик<>0 Цикл
+
28. oleg-x 26 10.07.20 13:17 Сейчас в теме
А надо
Сч = 1;
Для Каждого стр из МассивПост цикл
				
				//Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");
				
				Если _ИмяГр = "Номенклатура" И НЕ ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения
					Тогда
					Область.Параметры.ЗначениеГрСтрПостав 	= стр.НоменклатураПоставщика; 
				     ВхТаблДок.Присоединить(Область);
                                     Сч = Сч + 1;
				КонецЕсли;
				Если Сч = 3 Тогда
                                      Прервать;
                                КонецЕсли;
			КонецЦикла;	
Показать

Так как вывод яйчеек идет здесь, иначе не было бы столько колонок.
user1008893; +1
29. user1008893 10.07.20 13:28 Сейчас в теме
(28)
	Счетчик=ТаблНомПост[3].Поставщик;
	пока Счетчик<>0 Цикл	
		Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");
		
		Если _ИмяГр = "ОснПоставщик" тогда
			СтруктураОтбора = Новый Структура("Номенклатура,ВариантИсполнения", ВхЗапрВыб.Номенклатура, ВхЗапрВыб.ВариантИсполнения);

			МассивПост=ТаблНомПост.НайтиСтроки(СтруктураОтбора);
			Сч=1;
			Для Каждого стр из МассивПост цикл
				
				//Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");
				
				Если _ИмяГр = "ОснПоставщик" Тогда
					Область.Параметры.ЗначениеГрСтрПостав 	= стр.Поставщик; 
				     ВхТаблДок.Присоединить(Область); 
					 Сч=Сч+1;
				КонецЕсли;
				Если Сч = 3 Тогда
					Прервать;
				КонецЕсли;

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

				КонецЕсли;
				 Если Сч1 = 3 Тогда
					Прервать;
				КонецЕсли;

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


Вот так? Ерунда выходит,вообще не выходят данные,только шапка выходит
+
30. oleg-x 26 10.07.20 13:38 Сейчас в теме
(29) Надо пересмотреть общую картину вывода. Я не совсем понимаю что у вас делается, а анализировать куски кода очень проблематично. А весь код, это надо время.
+
31. user1008893 10.07.20 13:50 Сейчас в теме
(30)Сейчас вот такой код и в итоге получается вот так.
Счетчик=ТаблНомПост[3].Поставщик;
	пока Счетчик<>0 Цикл	
		Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");
		
		Если _ИмяГр = "ОснПоставщик" тогда
			СтруктураОтбора = Новый Структура("Номенклатура,ВариантИсполнения", ВхЗапрВыб.Номенклатура, ВхЗапрВыб.ВариантИсполнения);

			МассивПост=ТаблНомПост.НайтиСтроки(СтруктураОтбора);
			Сч=1;
			Для Каждого стр из МассивПост цикл
				
				//Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");
				
				Если _ИмяГр = "ОснПоставщик" Тогда
					Область.Параметры.ЗначениеГрСтрПостав 	= стр.Поставщик; 
				     ВхТаблДок.Присоединить(Область); 
					 Сч=Сч+1;
				КонецЕсли;
				Если Сч = 3 Тогда
					Прервать;
				КонецЕсли;

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

				КонецЕсли;
				 Если Сч1 = 3 Тогда
					Прервать;
				КонецЕсли;

			КонецЦикла;
			  //  ВхТаблДок.Присоединить(Область);
		КонецЕсли;
		
		Если  _ИмяГр = "Номенклатура" или _ИмяГр = "ВариантИсполнения" тогда
			СтруктураОтбора = Новый Структура("Номенклатура,ВариантИсполнения", ВхЗапрВыб.Номенклатура, ВхЗапрВыб.ВариантИсполнения);
			МассивПост=ТаблНомПост.НайтиСтроки(СтруктураОтбора);
			Сч2=1;
			Для Каждого стр из МассивПост цикл
				
				//Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");
				Если _ИмяГр = "Номенклатура"					Тогда
					Область.Параметры.ЗначениеГрСтрПостав 	= стр.НоменклатураПоставщика; 
				    ВхТаблДок.Присоединить(Область); 
					 Сч2=Сч2+1
				Иначе Если
				 _ИмяГр = "ВариантИсполнения" тогда
					Область.Параметры.ЗначениеГрСтрПостав 	= стр.ВариантИсполненияПоставщика;
					  ВхТаблДок.Присоединить(Область); 
					 Сч2=Сч2+1
				 КонецЕсли;
				   КонецЕсли;
				 Если Сч2 = 3 Тогда
					Прервать;
				КонецЕсли;
				
				//ВхТаблДок.Присоединить(Область);
			КонецЦикла;	
			//ВхТаблДок.Присоединить(Область);
		КонецЕсли;
		//ВхТаблДок.Присоединить(Область);
		Счетчик=Счетчик-1;
		КонецЦикла;
Показать
Прикрепленные файлы:
+
32. gelotus 10.07.20 14:03 Сейчас в теме
Я бы не показывал каждого поставщика в отдельной колонке, а сделал бы одну колонку "поставщики" и в ресурсах для этой колонки записал бы формулу СоединитьСтроки("Поставщик"). Тогда в колонке будет выводится список поставщиков через запятую.
+
33. user1008893 10.07.20 14:04 Сейчас в теме
(32)Вот именно надо отдельно
+
39. wertep 23 10.07.20 15:36 Сейчас в теме
(33)Раз количество поставщиков ограничено 3, проще сразу в макете сделать три колонки чтоб не разъезжалось и заполнять их по наличию.
И цикл использовать
Для Счетчик = 1 По 3 Цикл
КонецЦикла

Или так
Для Счетчик = 0 По Макс(2, МассивПост.Количество() - 1) Цикл
КонецЦикла

И по Счетчик получать в какую колонку какой элемент массива выводить.
+
40. user1008893 10.07.20 15:38 Сейчас в теме
(39)Может быть и 2 поставщика(Например,когда будет отбор по одной номенклатуре) всего,и нужно выводить только 2 колонки
+
41. wertep 23 10.07.20 15:42 Сейчас в теме
(40)А если для одной номенклатуры 1, для другой 2, для третьей 3, весь отчет будет разнокалиберный?
+
42. user1008893 10.07.20 15:42 Сейчас в теме
(41)нет,будет 3 , выбирается по максимальному количеству поставщиков для номенклатуры
+
34. gelotus 10.07.20 15:00 Сейчас в теме
Тогда нужно писать примерно такой запрос. В консоли не проверял, могут быть ошибки) и колонку "номер поставщика" выводить в колонки таблицы


ВЫБРАТЬ
НоменклатураПоставщиков.Номенклатура КАК Номенклатура,
НоменклатураПоставщиков.ВариантИсполнения КАК ВариантИсполнения,
НоменклатураПоставщиков.Поставщик КАК Поставщик,
Количество(различные НоменклатураПоставщиков2.Поставщик) как НомерПоставщика
Поместить НомераПоставщиков
ИЗ
РегистрСведений.НоменклатураПоставщиков КАК НоменклатураПоставщиков
Левое соединение РегистрСведений.НоменклатураПоставщиков КАК НоменклатураПоставщиков2
по НоменклатураПоставщиков.Номенклатура = НоменклатураПоставщиков2.Номенклатура
И НоменклатураПоставщиков.ВариантИсполнения = НоменклатураПоставщиков2.ВариантИсполнения
И НоменклатураПоставщиков.Поставщик<=НоменклатураПоставщиков2.Поставщик
Сгруппировать по

НоменклатураПоставщиков.Номенклатура ,
НоменклатураПоставщиков.ВариантИсполнения ,
НоменклатураПоставщиков.Поставщик

;
ВЫБРАТЬ
НоменклатураПоставщиков.Номенклатура КАК Номенклатура,
НоменклатураПоставщиков.ВариантИсполнения КАК ВариантИсполнения,
НоменклатураПоставщиков.Поставщик КАК Поставщик,
НомераПоставщиков.НомерПоставщика,
НоменклатураПоставщиков.НоменклатураПоставщика КАК НоменклатураПоставщика,
НоменклатураПоставщиков.ВариантИсполненияПоставщика КАК ВариантИсполненияПоставщика

ИЗ
РегистрСведений.НоменклатураПоставщиков КАК НоменклатураПоставщиков
Левое Соединение НомераПоставщиков Как НомераПоставщиков
По
НоменклатураПоставщиков.Номенклатура = НомераПоставщиков.Номенклатура
И НоменклатураПоставщиков.ВариантИсполнения = НомераПоставщиков.ВариантИсполнения
И НоменклатураПоставщиков.Поставщик = НомераПоставщиков.Поставщик
ИТОГИ ПО
ВариантИсполнения,
НомерПоставщика,
НоменклатураПоставщика,
ВариантИсполненияПоставщика,
Номенклатура
;
+
35. user1008893 10.07.20 15:04 Сейчас в теме
(34)а зачем? и так колонки же можно присоединять
+
36. gelotus 10.07.20 15:27 Сейчас в теме
Ну да верно, прото это нужно для СКД. Если без СКД Тогда можно и через присоединить.
+
37. user1008893 10.07.20 15:28 Сейчас в теме
(36)Без скд,присоединяется только как то не правильно,не могу понять в чем проблема
+
38. user1008893 10.07.20 15:30 Сейчас в теме
(36)Вот такие данные приходят с запроса
Прикрепленные файлы:
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот