Вывод и формирование шк в отчете

1. user1008893 09.11.18 09:20 Сейчас в теме
Делаю отчет,Надо вывести у каждого вариантаИсполнения свой штрихкод,вот вывожу.
ВариантИсполнения и едизм находит,а шк-неопределено. В чем проблема? Что не так?
Помогите пожалуйста...
Пока Выборка_ТипВИКатегории.Следующий() Цикл
			
			Выборка_ВариантИсполнения_Категория = Выборка_ТипВИКатегории.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ВариантИсполнения_Категория");
			Пока Выборка_ВариантИсполнения_Категория.Следующий() Цикл
			 
                     _Дополнительно = Новый Структура;
                     _Дополнительно.Вставить("ВариантИсполнения",Выборка_ВариантИсполнения_Категория.ВариантИсполнения_Категория);
                     _Дополнительно.Вставить("ЕдИзм",Выборка_ВариантИсполнения_Категория.Номенклатура.БазоваяЕдИзм);
                    шк = глСформироватьВнутреннийШтрихкод(Выборка_ВариантИсполнения_Категория,_Дополнительно);
                  _Дополнительно.Вставить("шк",шк);
                ОбластьВариантИсполнения_КатегорияТело.Параметры.Заполнить(_Дополнительно);
                 ТабличныйДокумент.Вывести(ОбластьВариантИсполнения_КатегорияТело);
				// ОбластьСтрока.Параметры.ВариантИсполнения = "";
				//  ОбластьСтрока.Параметры._ШК = "" ;

             
      

				Выборка_ЕдИзм = Выборка_ВариантИсполнения_Категория.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ЕдИзм");
				Пока Выборка_ЕдИзм.Следующий() Цикл
										
					
					Область_Детали_Тело.Параметры.Заполнить(Выборка_ЕдИзм);
					ТабличныйДокумент.Вывести(Область_Детали_Тело, Детали_Уровень + 1);
					Область_Детали_ЕдИзм.Параметры.Заполнить(Выборка_ЕдИзм);
					ТабличныйДокумент.Присоединить(Область_Детали_ЕдИзм);
					
					Выборка_ТипыЦен = Выборка_ЕдИзм.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ТипЦен", "Все");
					Пока Выборка_ТипыЦен.Следующий() Цикл
						
						Если глПустоеЗначение(Выборка_ТипыЦен.ТипЦен) Тогда
							Продолжить;
						КонецЕсли;
						
						Область_Детали_ТипЦен.Параметры.Заполнить(Выборка_ТипыЦен);
						ТабличныйДокумент.Присоединить(Область_Детали_ТипЦен);
						
					КонецЦикла;
					  	КонецЦикла;
					ТабличныйДокумент.Присоединить(Область_Детали_Итого);
					
				КонецЦикла;
				
			КонецЦикла;
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1008893 09.11.18 10:05 Сейчас в теме
блин,нашла ошибку,но теперь вот такая ерунда
Группировки сбились и задваивает вариант исполнения
Выборка_ТипВИКатегории = Выборка_Номенклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ТипВИКатегории");
		Пока Выборка_ТипВИКатегории.Следующий() Цикл
			
			Выборка_ВариантИсполнения_Категория = Выборка_ТипВИКатегории.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ВариантИсполнения_Категория");
			Пока Выборка_ВариантИсполнения_Категория.Следующий() Цикл
			 
                     _Дополнительно = Новый Структура;
                     _Дополнительно.Вставить("ВариантИсполнения",Выборка_ВариантИсполнения_Категория.ВариантИсполнения_Категория);
                     _Дополнительно.Вставить("ЕдИзм",Выборка_ВариантИсполнения_Категория.Номенклатура.БазоваяЕдИзм);
                    шк = глСформироватьВнутреннийШтрихкод(Выборка_ВариантИсполнения_Категория.Номенклатура,_Дополнительно);
                  _Дополнительно.Вставить("шк",шк);
                ОбластьВариантИсполнения_КатегорияТело.Параметры.Заполнить(_Дополнительно);
                 ТабличныйДокумент.Вывести(ОбластьВариантИсполнения_КатегорияТело);
				  ОбластьВариантИсполнения_КатегорияТело.Параметры.ВариантИсполнения_Категория = "";
				  ОбластьВариантИсполнения_КатегорияТело.Параметры.шк = "" ;

             
      

				Выборка_ЕдИзм = Выборка_ВариантИсполнения_Категория.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ЕдИзм");
				Пока Выборка_ЕдИзм.Следующий() Цикл
										
					
					Область_Детали_Тело.Параметры.Заполнить(Выборка_ЕдИзм);
					ТабличныйДокумент.Вывести(Область_Детали_Тело, Детали_Уровень + 1);
					Область_Детали_ЕдИзм.Параметры.Заполнить(Выборка_ЕдИзм);
					ТабличныйДокумент.Присоединить(Область_Детали_ЕдИзм);
					
					Выборка_ТипыЦен = Выборка_ЕдИзм.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ТипЦен", "Все");
					Пока Выборка_ТипыЦен.Следующий() Цикл
						
						Если глПустоеЗначение(Выборка_ТипыЦен.ТипЦен) Тогда
							Продолжить;
						КонецЕсли;
						
						Область_Детали_ТипЦен.Параметры.Заполнить(Выборка_ТипыЦен);
						ТабличныйДокумент.Присоединить(Область_Детали_ТипЦен);
						
					КонецЦикла;
					  	КонецЦикла;
					ТабличныйДокумент.Присоединить(Область_Детали_Итого);
					
				КонецЦикла;
				
			КонецЦикла;
			
Показать
Прикрепленные файлы:
3. tata_1211 63 09.11.18 11:09 Сейчас в теме
А в если выгрузить результат запроса, там нормально с группировками?(2)
4. user1008893 09.11.18 11:11 Сейчас в теме
(3)
 _Дополнительно = Новый Структура;
                     _Дополнительно.Вставить("ВариантИсполнения",Выборка_ВариантИсполнения_Категория.ВариантИсполнения_Категория);
                     _Дополнительно.Вставить("ЕдИзм",Выборка_ВариантИсполнения_Категория.Номенклатура.БазоваяЕдИзм);
                    шк = глСформироватьВнутреннийШтрихкод(Выборка_ВариантИсполнения_Категория.Номенклатура,_Дополнительно);
                  _Дополнительно.Вставить("шк",шк);
                ОбластьВариантИсполнения_КатегорияТело.Параметры.Заполнить(_Дополнительно);
                 ТабличныйДокумент.Вывести(ОбластьВариантИсполнения_КатегорияТело);
                  ОбластьВариантИсполнения_КатегорияТело.Параметры.ВариантИсполнения_Категория = "";
                  ОбластьВариантИсполнения_КатегорияТело.Параметры.шк = "" ;
Показать

это убрать и все норм
5. tata_1211 63 09.11.18 11:59 Сейчас в теме
(4) Не поняла по последнему сообщению, вопрос решен?
Если нет - то вывод идет в двух местах:
ТабличныйДокумент.Вывести(ОбластьВариантИсполнения_КатегорияТело);
ТабличныйДокумент.Вывести(Область_Детали_Тело, Детали_Уровень + 1);
Во всех остальных местах только присоединение. Место положения вывода вроде нормальное, т.е. визуально внутри нужных циклов. Как по мне, если что-то задваивает - копать группировки в запросе.
user1008893; +1 Ответить
6. user1008893 09.11.18 12:04 Сейчас в теме
(5)да я тоже заметила вывод в двух местах,убрала в одном месте
Пока Выборка_ТипВИКатегории.Следующий() Цикл
			
			Выборка_ВариантИсполнения_Категория = Выборка_ТипВИКатегории.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ВариантИсполнения_Категория");
			Пока Выборка_ВариантИсполнения_Категория.Следующий() Цикл
			    Выборка_ЕдИзм = Выборка_ВариантИсполнения_Категория.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ЕдИзм");
				Пока Выборка_ЕдИзм.Следующий() Цикл
										
					
					Область_Детали_Тело.Параметры.Заполнить(Выборка_ЕдИзм);
					//ТабличныйДокумент.Вывести(Область_Детали_Тело, Детали_Уровень + 1);
					Область_Детали_ЕдИзм.Параметры.Заполнить(Выборка_ЕдИзм);
					ТабличныйДокумент.Присоединить(Область_Детали_ЕдИзм);
					
					Если НЕ глПустоеЗначение(Выборка_ВариантИсполнения_Категория.ВариантИсполнения_Категория) Тогда 
				_Дополнительно = Новый Структура;
                     _Дополнительно.Вставить("ВариантИсполнения",Выборка_ЕдИзм.ВариантИсполнения_Категория);
                     _Дополнительно.Вставить("ЕдИзм",Выборка_ЕдИзм.Номенклатура.БазоваяЕдИзм);
                    шк = глСформироватьВнутреннийШтрихкод(Выборка_ЕдИзм.Номенклатура,_Дополнительно);
                  _Дополнительно.Вставить("шк",шк);
                Область_Детали_Тело.Параметры.Заполнить(_Дополнительно);
                 ТабличныйДокумент.Вывести(Область_Детали_Тело, Детали_Уровень + 1);
                  Область_Детали_Тело.Параметры.ВариантИсполнения_Категория = "";
                  Область_Детали_Тело.Параметры.шк = "" ;
			  КонецЕсли;
Показать

вот что получилось,весь ШК выводит правильно,но вот поля какие то вылезли
Прикрепленные файлы:
7. tata_1211 63 09.11.18 12:12 Сейчас в теме
(6) Пересмотрите местоположение строк, где идет присоединение. Какая-то из строк находится не на своем месте. Навскидку кажется, что эта: ТабличныйДокумент.Присоединить(Область_Детали_Итого);
Если ее перенести ниже внутрь следующего цикла, поможет?
8. user1008893 09.11.18 12:21 Сейчас в теме
9. tata_1211 63 09.11.18 12:34 Сейчас в теме
(8) На скрине странно смотрится местоположение единиц измерения. И вот эта строка : ТабличныйДокумент.Присоединить(Область_Детали_ТипЦен); на своем месте? внутри правильного цикла?
11. user1008893 09.11.18 12:42 Сейчас в теме
(9)пробую,ничего не получается
12. tata_1211 63 09.11.18 12:46 Сейчас в теме
(11) На скринах не очень хорошо видно, какие именно данные выводятся. Я бы искала ошибку по следующему алгоритму: комментировала строку, которая присоединяется, смотрела бы на результат. И так бы в итоге нашла. Как-то так.
13. user1008893 09.11.18 12:54 Сейчас в теме
(12)
ТабличныйДокумент.НачатьАвтогруппировкуСтрок();
	
	Выборка_Номенклатура = Выборка_Итого.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Номенклатура");
	
	Пока Выборка_Номенклатура.Следующий() Цикл
		
    	_Уровень = ?(ВыводитьИерархию, Выборка_Номенклатура.Уровень() - 1, 0);
		ОбластьНоменклатураГруппаТело.Область(1,1,1,1).Отступ 				= _Уровень;
		ОбластьНоменклатураТело.Область(1,1,1,1).Отступ 					= _Уровень;
		ОбластьВариантИсполнения_КатегорияТело.Область(1,1,1,1).Отступ 		= _Уровень + 1;
		Область_Пустая_ВариантИсполнения_КатегорияТело.Область(1,1,1,1).Отступ = _Уровень;
		        		
		//Вывод строки номенклатуры
		Если Выборка_Номенклатура.Номенклатура.ЭтоГруппа Тогда
			
			//Группу номенклатуры выводим только если она является итогом по группировке (при иерархическом выводе)
			//ИЛИ выводится номенклатура, невключаемая в прайс
			
                   
			Если Выборка_Номенклатура.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоИерархии
				ИЛИ (НЕ ЭлементОтбора_НеВключатьВПрайс = Неопределено 
					И ЭлементОтбора_НеВключатьВПрайс.Использование 
					И ЭлементОтбора_НеВключатьВПрайс.Значение = ИСТИНА) Тогда
				
				ОбластьНоменклатураГруппаТело.Параметры.Заполнить(Выборка_Номенклатура);
				ТабличныйДокумент.Вывести(ОбластьНоменклатураГруппаТело, _Уровень,,Истина);
				ОбластьНоменклатураГруппаЕдИзм.Параметры.Заполнить(Выборка_Номенклатура);
				ТабличныйДокумент.Присоединить(ОбластьНоменклатураГруппаЕдИзм);
				
				ВыборкаИтого_ТипыЦен.Сбросить();
				Пока ВыборкаИтого_ТипыЦен.Следующий() Цикл
					
					Если глПустоеЗначение(ВыборкаИтого_ТипыЦен.ТипЦен) Тогда
						Продолжить;
					КонецЕсли;
					
					ТабличныйДокумент.Присоединить(ОбластьНоменклатураГруппаТипЦен);
					
				КонецЦикла;
				
				ТабличныйДокумент.Присоединить(ОбластьНоменклатураГруппаИтого);
				
			КонецЕсли;
			
			Продолжить;
			
		Иначе
			
			// Строку номенклатуры (при обходе номенклатуры) выводим только 
			// если по ней указаны цены для категорий или вариантов исполнения
			// Иначе тут строку не выводим, а для детальных записей текущей номенклатуры
			// указываем область, в которой вместо пустых категорий/вариантов исполнений выводится сама номенклатура
			Если Выборка_Номенклатура.ЕстьНепустой_ВариантИсполненияКатегория Тогда
			
				ОбластьНоменклатураТело.Параметры.Заполнить(Выборка_Номенклатура);
				ТабличныйДокумент.Вывести(ОбластьНоменклатураТело, _Уровень,,Истина);
				ОбластьНоменклатураЕдИзм.Параметры.Заполнить(Выборка_Номенклатура);
				ТабличныйДокумент.Присоединить(ОбластьНоменклатураЕдИзм);
				
				ВыборкаИтого_ТипыЦен.Сбросить();
				Пока ВыборкаИтого_ТипыЦен.Следующий() Цикл
					
					Если глПустоеЗначение(ВыборкаИтого_ТипыЦен.ТипЦен) Тогда
						Продолжить;
					КонецЕсли;
					
					ТабличныйДокумент.Присоединить(ОбластьНоменклатураТипЦен);
					
				КонецЦикла;
				
				ТабличныйДокумент.Присоединить(ОбластьНоменклатураИтого);
				
				Область_Детали_Тело 	= ОбластьВариантИсполнения_КатегорияТело;
				Область_Детали_ЕдИзм 	= ОбластьВариантИсполнения_КатегорияЕдИзм;
				Область_Детали_ТипЦен 	= ОбластьВариантИсполнения_КатегорияТипЦен;
				Область_Детали_Итого 	= ОбластьВариантИсполнения_КатегорияИтого;
				Детали_Уровень 			= _Уровень;
				
			Иначе
				
				Область_Детали_Тело 	= Область_Пустая_ВариантИсполнения_КатегорияТело;
				Область_Детали_ЕдИзм 	= Область_Пустая_ВариантИсполнения_КатегорияЕдИзм;
				Область_Детали_ТипЦен 	= Область_Пустая_ВариантИсполнения_КатегорияТипЦен;
				Область_Детали_Итого 	= Область_Пустая_ВариантИсполнения_КатегорияИтого;
				Детали_Уровень 			= _Уровень -1;
				
			КонецЕсли;
			
		КонецЕсли;
		
		//Вывод ВариантаИсполнения/Категории
		Выборка_ТипВИКатегории = Выборка_Номенклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ТипВИКатегории");
		Пока Выборка_ТипВИКатегории.Следующий() Цикл
			
			Выборка_ВариантИсполнения_Категория = Выборка_ТипВИКатегории.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ВариантИсполнения_Категория");
			Пока Выборка_ВариантИсполнения_Категория.Следующий() Цикл
			    Выборка_ЕдИзм = Выборка_ВариантИсполнения_Категория.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ЕдИзм");
				Пока Выборка_ЕдИзм.Следующий() Цикл
										
					
					Область_Детали_Тело.Параметры.Заполнить(Выборка_ЕдИзм);
					//ТабличныйДокумент.Вывести(Область_Детали_Тело, Детали_Уровень + 1);
					Область_Детали_ЕдИзм.Параметры.Заполнить(Выборка_ЕдИзм);
					ТабличныйДокумент.Присоединить(Область_Детали_ЕдИзм);
					
					Если НЕ глПустоеЗначение(Выборка_ВариантИсполнения_Категория.ВариантИсполнения_Категория) Тогда 
				_Дополнительно = Новый Структура;
                     _Дополнительно.Вставить("ВариантИсполнения",Выборка_ЕдИзм.ВариантИсполнения_Категория);
                     _Дополнительно.Вставить("ЕдИзм",Выборка_ЕдИзм.Номенклатура.БазоваяЕдИзм);
                    шк = глСформироватьВнутреннийШтрихкод(Выборка_ЕдИзм.Номенклатура,_Дополнительно);
                  _Дополнительно.Вставить("шк",шк);
                Область_Детали_Тело.Параметры.Заполнить(_Дополнительно);
                ТабличныйДокумент.Вывести(Область_Детали_Тело, Детали_Уровень + 1);
                  Область_Детали_Тело.Параметры.ВариантИсполнения_Категория = "";
                  Область_Детали_Тело.Параметры.шк = "" ;
			  КонецЕсли;

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

				КонецЦикла;
			КонецЦикла;
			
		КонецЦикла;
		

	
	ТабличныйДокумент.ЗакончитьАвтогруппировкуСтрок ();
	
Показать

Вот все кроме вывода шапки
Может что заметите
Прикрепленные файлы:
10. tata_1211 63 09.11.18 12:35 Сейчас в теме
(8) В любом случае нужно посмотреть местоположение всех строк, где идет присоединение.
14. user1008893 09.11.18 13:38 Сейчас в теме
(10)заметила,что едизмерения не выводится
а нет норм,просто не в своем столбце
15. antz 09.11.18 13:40 Сейчас в теме
16. user1008893 09.11.18 13:43 Сейчас в теме
(15)да,только другой отчет теперь
17. tata_1211 63 09.11.18 13:47 Сейчас в теме
Область_Детали_Тело.Параметры.Заполнить(Выборка_ЕдИзм);
//ТабличныйДокумент.Вывести(Область_Детали_Тело, Детали_Уровень + 1);
Область_Детали_ЕдИзм.Параметры.Заполнить(Выборка_ЕдИзм);
ТабличныйДокумент.Присоединить(Область_Детали_ЕдИзм);
Если правильно, что вторая строка закомментарена, то присоединение идет после
ТабличныйДокумент.Присоединить(ОбластьНоменклатураИтого);
А должна но идее выводится новая строка.
То есть я вижу логику следующую. По итогу по иерархии идет вывод номенклатуры, к нему присоединяются единицы измерения, потом все типы цен с пустыми данными (нет заполнения), потом присоединяется пустая область но группе номенклатуры. Не вижу определения областей:
Область_Детали_ЕдИзм = Область_Пустая_ВариантИсполнения_КатегорияЕдИзм;
Область_Детали_ТипЦен = Область_Пустая_ВариантИсполнения_КатегорияТипЦен;
Область_Детали_Итого = Область_Пустая_ВариантИсполнения_КатегорияИтого;
Потом открывается цикл по Выборка_ВариантИсполнения_Категория, и тут же открывается выборка по едИзм. Причем ничего не выводится, идет присоединение, и только потом заполняется ШК. Внутри цикла по единицам открывается цикл по получению типов цен, они начинают присоединяться сразу после ШК. И внутри цикла по едИзм присоединяется пустая область ДеталиИтого.
user1008893; +1 Ответить
18. user1008893 09.11.18 14:00 Сейчас в теме
19. user1008893 09.11.18 14:09 Сейчас в теме
просто то что строка закомменчена,он как бы сдвигает ее
20. tata_1211 63 09.11.18 14:38 Сейчас в теме
(19) А что выведется, если закомментаренную строку раскомментарить?
21. user1008893 09.11.18 14:39 Сейчас в теме
22. tata_1211 63 09.11.18 14:50 Сейчас в теме
(21) Сделайте сначала вывод ШК и заполнение остальных параметров, а затем уже присоединяйте данные по Единицам, типам цен и присоединении Детали_Итого
23. user1008893 09.11.18 15:42 Сейчас в теме
24. user1008893 09.11.18 15:47 Сейчас в теме
убрала все присоединения,кроме номенклатуры и ШК
закоментила,ту строку и все норм выводится. Теперь пытаюсь нормально добавить все остальное
25. user1008893 09.11.18 16:27 Сейчас в теме
26. user1008893 12.11.18 07:56 Сейчас в теме +1 $m
так и не сделаю похоже(((
Оставьте свое сообщение

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