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

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)Вот такие данные приходят с запроса
Прикрепленные файлы:
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

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

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

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

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