Поиск по наименованию; вывод части слова

1. Гость 25.05.16 10:46
Здравствуйте! нуждаюсь в помощи... может кто подскажет как реализовать. у меня идет обход результата запроса по наименованию товара... мне необходимо, чтобы у меня был поиск по одинаковым начальным словам,затем в группировку "наименование товара" выводились одинаковые первые слова , а уже в таблицу заполнялось последующие. Например, покажу.

Наименование товара ---> мороженное шоколадное
Таблица -->|код|ндс|цена| наименование |количество|
| с орехами в ваф.стакан |
| с карамелью в рожке |


					
                                         ВыборкаНаименование = ВыборкаСклад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"НаименованиеТовара");

                                         Пока ВыборкаНаименование.Следующий() Цикл
					ОбработкаПрерыванияПользователя();
					
					
					//Товар = ВыборкаНаименование.НаименованиеТовара;
					НайтиНаименование = Найти(ВыборкаНаименование.НаименованиеТовара," ");
					//ЧастьНаименования = СтрДлина(ВыборкаНаименование.НаименованиеТовара)-НайтиНаименование;
					Наименование =  Лев(ВыборкаНаименование.НаименованиеТовара,?(НайтиНаименование=0,СтрДлина(ВыборкаНаименование.НаименованиеТовара),НайтиНаименование-1)); 
					//Лев(ВыборкаНаименование.НаименованиеТовара, ЧастьНаименования);
					//Товар = СтрЗаменить(ВыборкаНаименование.НаименованиеТовара, "Наименование", "ВыборкаНаименование.НаименованиеТовара");
					ОбластьТовар.Параметры.Товар = Наименование;
					
					ТабДокОснТаблица.Вывести(ОбластьТоварКод);
					ТабДокОснТаблица.Присоединить(ОбластьТоварСрок);
                                        ТабДокОснТаблица.Присоединить(ОбластьТоварНДС);
					ТабДокОснТаблица.Присоединить(ОбластьТовар,ВыборкаНаименование.Уровень());
					ТабДокОснТаблица.Присоединить(ОбластьТоварКол);
						
					ВыборкаСтрока = ВыборкаНаименование.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
					
					Пока ВыборкаСтрока.Следующий() Цикл
						ОбработкаПрерыванияПользователя();
						
						ОбластьСтрокаКод = Макет.ПолучитьОбласть("Строка|Код");
						ОбластьСтрокаКод.Параметры.КодТовара = ВыборкаСтрока.КодТовара;    
						СрокОкончанияГодности = ДобавитьМесяц(ДатаКон, -2);
						ОбластьСтрокаСрок = Макет.ПолучитьОбласть("Строка|Срок");
						ОбластьСтрокаСрок.Параметры.Срок = ВыборкаСтрока.СрокРеализации;
						Попытка
							Если СрокОкончанияГодности >= ВыборкаСтрока.СрокРеализации Тогда 
								ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.Бирюзовый;
							Иначе 
								ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.ПризрачноБелый;
							КонецЕсли;
						Исключение
						КонецПопытки;
						
						ОбластьСтрокаНДС.Параметры.НДС    =  ВыборкаСтрока.НДС;
						ОбластьСтрока.Параметры.ШтрихКод = ВыборкаСтрока.ШтрихКод;
						
						ОбластьСтрока.Параметры.Товар = СокрЛП(ВыборкаСтрока.НаименованиеТовара);         
						ОбластьСтрока.Параметры.цена = ВыборкаСтрока.Цена;
Показать


Вот что пыталась сделать, получается обрезается, все кроме первого слова....Но я понимаю,что надо реализовать это как-то иначе.
Помогите по
По теме из базы знаний
Вознаграждение за ответ
Для передачи вознаграждения воспользуйтесь кнопкой "Отдать $m" в сообщении. Для возврата вознаграждения, отдайте его самому себе. Можно вознаграждение разделить между несколькими участниками. Не забывайте нажимать кнопку "Это решение", это повысит вашу репутацию.
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Гость 25.05.16 14:02
наименование удалось обрезать, как нужно. вот только проблема с группировкой, он мне выводит группировку как по старому наименованию, а не обрезанному, каким образом можно это исправить...может кто поможет?
                               ВыборкаНаименование = ВыборкаСклад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"НаименованиеТовара");

					Пока ВыборкаНаименование.Следующий() Цикл
					ОбработкаПрерыванияПользователя();
										
					НайтиНаименование = СокрЛП(ВыборкаНаименование.НаименованиеТовара); 
					ПозицияСлева=Найти(НайтиНаименование," "); 
					СтрокаДо =Лев(НайтиНаименование,ПозицияСлева-1); 
					СтрокаПосле = Сред(НайтиНаименование,ПозицияСлева+1,СтрДлина(НайтиНаименование));
					
					ОбластьТовар.Параметры.Товар = СтрокаДо;
					
					ТабДокОснТаблица.Вывести(ОбластьТоварКод);
					ТабДокОснТаблица.Присоединить(ОбластьТоварСрок);
                                        ТабДокОснТаблица.Присоединить(ОбластьТоварНДС);
					ТабДокОснТаблица.Присоединить(ОбластьТовар,ВыборкаНаименование.Уровень());
					//ТабДокОснТаблица.Присоединить(ОбластьТовар);
					ТабДокОснТаблица.Присоединить(ОбластьТоварКол);
					
					ВыборкаСтрока = ВыборкаНаименование.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
					
					Пока ВыборкаСтрока.Следующий() Цикл
Показать
5. BackinSoda 25.05.16 14:44 Сейчас в теме
Чтобы сработал код как в пункте (2), то из запроса уже должны приходить урезанные наименования. Следовательно надо или их получать в запросе, или в обходе результата предварительно заполнять новую таблицу значений, отсортировать её, а дальше пройтись по ней и выводить в табличный документ.
тз = новый таблицаЗначений;
тз.колонки.добавить("СтрокаДо"); //ну и остальные нужные колонки. возможно потребуется указывать тип колонки
//далее ваш код
 ВыборкаНаименование = ВыборкаСклад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"НаименованиеТовара");

                    Пока ВыборкаНаименование.Следующий() Цикл
...
но вместо вывода (ОбластьТовар.Параметры.Товар = СтрокаДо;) сделать
НовСтр = ТЗ.Добавить();
НовСтр.СтрокаДо = СтрокаДо;
...
КонецЦикла;

тз.Сортировать("СтрокаДо"); 
ну и дальше уже обходя таблицу (либо запрос из неё же)
для каждого стр из тз Цикл
Показать
6. Гость 25.05.16 16:55
(5) BackinSoda,
но вместо вывода (ОбластьТовар.Параметры.Товар = СтрокаДо;) сделать
но потом же я все равно буду выводить эту область, и он не все равно выводит не так как надо...
Понимаю, что глупо спрашивать, если я правильно
ну и дальше уже обходя таблицу (либо запрос из неё же)
для каждого стр из тз Цикл

дальше пойдет мой следующий обход
ВыборкаСтрока = ВыборкаНаименование.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                    
                    Пока ВыборкаСтрока.Следующий() Цикл
                        ОбработкаПрерыванияПользователя();
                        
                        ОбластьСтрокаКод = Макет.ПолучитьОбласть("Строка|Код");
                        ОбластьСтрокаКод.Параметры.КодТовара = ВыборкаСтрока.КодТовара;    
                        СрокОкончанияГодности = ДобавитьМесяц(ДатаКон, -2);
                        ОбластьСтрокаСрок = Макет.ПолучитьОбласть("Строка|Срок");
                        ОбластьСтрокаСрок.Параметры.Срок = ВыборкаСтрока.СрокРеализации;
                        Попытка
                            Если СрокОкончанияГодности >= ВыборкаСтрока.СрокРеализации Тогда 
                                ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.Бирюзовый;
                            Иначе 
                                ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.ПризрачноБелый;
                            КонецЕсли;
                        Исключение
                        КонецПопытки;
                        
                        ОбластьСтрокаНДС.Параметры.НДС    =  ВыборкаСтрока.НДС;
                        ОбластьСтрока.Параметры.ШтрихКод = ВыборкаСтрока.ШтрихКод;
                        
                        ОбластьСтрока.Параметры.Товар = СокрЛП(ВыборкаСтрока.НаименованиеТовара);         
                        ОбластьСтрока.Параметры.цена = ВыборкаСтрока.Цена;
Показать
7. BackinSoda 25.05.16 17:20 Сейчас в теме
(6) Гость, как то так:
	ТЗ = Новый  ТаблицаЗначений;
	ТЗ.Колонки.Добавить("СтрокаДо"); 
	ТЗ.Колонки.Добавить("Код");
	//ТЗ.Колонки.Добавить("НДС");
	//ТЗ.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2)));
	
	//тут идёт какой-то запрос
	ВыборкаНаименование = ВыборкаСклад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"НаименованиеТовара");
	
	Пока ВыборкаНаименование.Следующий() Цикл
		ОбработкаПрерыванияПользователя();
		
		НайтиНаименование = СокрЛП(ВыборкаНаименование.НаименованиеТовара); 
		ПозицияСлева=Найти(НайтиНаименование," "); 
		СтрокаДо =Лев(НайтиНаименование,ПозицияСлева-1); 
		СтрокаПосле = Сред(НайтиНаименование,ПозицияСлева+1,СтрДлина(НайтиНаименование));
		
		НовСтр = ТЗ.Добавить();
		НовСтр.СтрокаДо = СтрокаДо;
		
		ВыборкаСтрока = ВыборкаНаименование.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		Пока ВыборкаСтрока.Следующий() Цикл
			 //заполняем другие колонки нашей таблицы, идущие в этой группировке, напр. Код, ндс и остальное
			 ЗаполнитьЗначенияСвойств(НовСтр, ВыборкаСтрока); //это аналог  НовСтр.НДС = ВыборкаСтрока.НДС; и т.д.
		КонецЦикла;
	КонецЦикла;
	
	ТЗ.Сортировать("СтрокаДо");
	
	Для Каждого стр из ТЗ Цикл
		ОбластьТовар.Параметры.Товар = СтрокаДо;
		ТабДокОснТаблица.Вывести(ОбластьТоварКод);
		ТабДокОснТаблица.Присоединить(ОбластьТоварСрок);
		ТабДокОснТаблица.Присоединить(ОбластьТоварНДС);
		ТабДокОснТаблица.Присоединить(ОбластьТовар,ВыборкаНаименование.Уровень());
		//ТабДокОснТаблица.Присоединить(ОбластьТовар);
		ТабДокОснТаблица.Присоединить(ОбластьТоварКол);
		
		//тут по идее заполнение других параметров
	КонецЦикла;
Показать
9. oleg21592 20 25.05.16 17:47 Сейчас в теме
в запросе наименование не обрезать до пробела ибо не известно где он и существует ли.

(5) BackinSoda,
тз.Сортировать("СтрокаДо");
ну и дальше уже обходя таблицу (либо запрос из неё же)
для каждого стр из тз Цикл


Начало было верно, но это нет. сортировать смысла нет.

Предлагаю вместо этого

 тз = ВыборкаСклад.Выгрузить();
 тз = Новый ТаблицаЗначений;
 тз.колонки.добавить("СтрокаДо");
 
 Имена = Новый Соответствие;
 
 Для каждого стр из тз Цикл 
	 ПозПробела = Найти(стр.НаименованиеТовара," ");
	 Если ПозПробела = 0 тогда
		 стр.СтрокаДо = стр.НаименованиеТовара;
	 Иначе
		 стр.СтрокаДо = Лев(стр.НаименованиеТовара,ПозПробела-1);    
	 КонецЕсли;
	 
	 Если Имена.Получить(стр.СтрокаДо)=Неопределено Тогда
		 Имена.Вставить(стр.СтрокаДо,Истина);
	 КонецЕсли;	 
 КонецЦикла;
 
 
 Для Каждого Элемент из Имена Цикл 
	Наименование = Элемент.Ключ;
	НайденныеСтроки = тз.НайтиСтроки(Новый Структура("СтрокаДо",Наименование);
 

	
					ОбластьТовар.Параметры.Товар = Наименование;
                    
                    ТабДокОснТаблица.Вывести(ОбластьТоварКод);
                    ТабДокОснТаблица.Присоединить(ОбластьТоварСрок);
                                        ТабДокОснТаблица.Присоединить(ОбластьТоварНДС);
                    //ТабДокОснТаблица.Присоединить(ОбластьТовар,ВыборкаНаименование.Уровень());
                    ТабДокОснТаблица.Присоединить(ОбластьТоварКол);
                        
                    //ВыборкаСтрока = ВыборкаНаименование.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                    
                    //Пока ВыборкаСтрока.Следующий() Цикл
					Для Каждого ВыборкаСтрока из НайденныеСтроки Цикл 					
					
                        ОбработкаПрерыванияПользователя();
                        
                        ОбластьСтрокаКод = Макет.ПолучитьОбласть("Строка|Код");
                        ОбластьСтрокаКод.Параметры.КодТовара = ВыборкаСтрока.КодТовара;    
                        СрокОкончанияГодности = ДобавитьМесяц(ДатаКон, -2);
                        ОбластьСтрокаСрок = Макет.ПолучитьОбласть("Строка|Срок");
                        ОбластьСтрокаСрок.Параметры.Срок = ВыборкаСтрока.СрокРеализации;
                        Попытка
                            Если СрокОкончанияГодности >= ВыборкаСтрока.СрокРеализации Тогда 
                                ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.Бирюзовый;
                            Иначе 
                                ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.ПризрачноБелый;
                            КонецЕсли;
                        Исключение
                        КонецПопытки;
                        
                        ОбластьСтрокаНДС.Параметры.НДС    =  ВыборкаСтрока.НДС;
                        ОбластьСтрока.Параметры.ШтрихКод = ВыборкаСтрока.ШтрихКод;
                        
                        ОбластьСтрока.Параметры.Товар = СокрЛП(ВыборкаСтрока.НаименованиеТовара);         
                        ОбластьСтрока.Параметры.цена = ВыборкаСтрока.Цена;
	КонецЦикла; 
	КонецЦикла; 
	
Показать
11. oleg21592 20 25.05.16 18:14 Сейчас в теме
(9) oleg21592,
Принцип тот же, но экономичней

 ВыборкаНаименование = ВыборкаСклад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"НаименованиеТовара");

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

 
 Для Каждого Элемент из Имена Цикл 
	Наименование = Элемент.Ключ;
	//НайденныеСтроки = тз.НайтиСтроки(Новый Структура("СтрокаДо",Наименование);
 
	
					ОбластьТовар.Параметры.Товар = Наименование;
                    
                    ТабДокОснТаблица.Вывести(ОбластьТоварКод);
                    ТабДокОснТаблица.Присоединить(ОбластьТоварСрок);
                                        ТабДокОснТаблица.Присоединить(ОбластьТоварНДС);
                    //ТабДокОснТаблица.Присоединить(ОбластьТовар,ВыборкаНаименование.Уровень());
                    ТабДокОснТаблица.Присоединить(ОбластьТоварКол);
                        
                    //ВыборкаСтрока = ВыборкаНаименование.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                    
                    //Пока ВыборкаСтрока.Следующий() Цикл
					Для Каждого ВыборкаСтрока из Элемент.Значение Цикл 					
					
                        ОбработкаПрерыванияПользователя();
                        
                        ОбластьСтрокаКод = Макет.ПолучитьОбласть("Строка|Код");
                        ОбластьСтрокаКод.Параметры.КодТовара = ВыборкаСтрока.КодТовара;    
                        СрокОкончанияГодности = ДобавитьМесяц(ДатаКон, -2);
                        ОбластьСтрокаСрок = Макет.ПолучитьОбласть("Строка|Срок");
                        ОбластьСтрокаСрок.Параметры.Срок = ВыборкаСтрока.СрокРеализации;
                        Попытка
                            Если СрокОкончанияГодности >= ВыборкаСтрока.СрокРеализации Тогда 
                                ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.Бирюзовый;
                            Иначе 
                                ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.ПризрачноБелый;
                            КонецЕсли;
                        Исключение
                        КонецПопытки;
                        
                        ОбластьСтрокаНДС.Параметры.НДС    =  ВыборкаСтрока.НДС;
                        ОбластьСтрока.Параметры.ШтрихКод = ВыборкаСтрока.ШтрихКод;
                        
                        ОбластьСтрока.Параметры.Товар = СокрЛП(ВыборкаСтрока.НаименованиеТовара);         
                        ОбластьСтрока.Параметры.цена = ВыборкаСтрока.Цена;
	КонецЦикла; 
	КонецЦикла; 
Показать
Nastya-chajkovskaya; +1 Ответить
3. BackinSoda 25.05.16 14:21 Сейчас в теме
Не выводить напрямую, а выводить из таблицы с укороченными наименованиями.
4. Гость 25.05.16 14:27
(3) BackinSoda, я не совсем понимаю(((( уже столько способов перепробовав, все в пустую... можно немного хоть конкретики..прошу прощения...
8. 6есик 52 25.05.16 17:24 Сейчас в теме
Как вариант:
1. Берешь свой начальный запрос и выгружаешь в ТЗ.
2. Проходишься по этой ТЗ и добавляешь 2 новые колонки НаменованиеКороткое НаименованиеТовара
в Наименование короткое забиваеш короткую часть в НаименованиеТовара остаток наименования (можно заменой короткого наименования в полном пустой строкой)
3. Теперь получившуюся ТЗ помещаеш запросом во временную таблицу и выбираешь запросом уже с нужными тебе группировками.
10. HitGroove 49 25.05.16 17:54 Сейчас в теме
Если для отчета, попробуйте использовать в запросе ПОДСТРОКА, ПОДОБНО и выводите в СКД.

Запрос типа:

ВЫБРАТЬ
	Номенклатура.Ссылка КАК Номенклатура,
	Номенклатура.Наименование,
	ПОДСТРОКА(Номенклатура.Наименование, 1, 5) КАК НаименованиеКороткое
ИЗ
	Справочник.Номенклатура КАК Номенклатура


Если сложная группировка, поддерживаю (8)
12. uk09 25.05.16 20:39 Сейчас в теме
Гость, добрый день!

вопрос - еще актуальный ?
14. Nastya-chajkovskaya 25.05.16 21:11 Сейчас в теме
(12) uk09, да, ещё актуальный....
13. Гость 25.05.16 21:09
вот как пытаюсь сделать
Пока ВыборкаПоставщик.Следующий() Цикл
				ОбработкаПрерыванияПользователя();
				ОбластьПоставщик.Параметры.Поставщик = ВыборкаПоставщик.Поставщик;
				ТабДокОснТаблица.Вывести(ОбластьПоставщикКод);
				ТабДокОснТаблица.Присоединить(ОбластьПоставщикСрок);
				ТабДокОснТаблица.Присоединить(ОбластьПоставщикНДС);
				ТабДокОснТаблица.Присоединить(ОбластьПоставщик, ВыборкаПоставщик.Уровень());
				ТабДокОснТаблица.Присоединить(ОбластьПоставщикКол);
				
				ВыборкаСклад = ВыборкаПоставщик.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Склад");
				
				Пока ВыборкаСклад.Следующий() Цикл
					ОбработкаПрерыванияПользователя();
					ОбластьСклад.Параметры.Склад = ВыборкаСклад.Склад;
					
					ТабДокОснТаблица.Вывести(ОбластьСкладКод);
					ТабДокОснТаблица.Присоединить(ОбластьСкладСрок);
                    ТабДокОснТаблица.Присоединить(ОбластьСкладНДС);
					ТабДокОснТаблица.Присоединить(ОбластьСклад, ВыборкаСклад.Уровень());
					ТабДокОснТаблица.Присоединить(ОбластьСкладКол);
					
					
					ВыборкаНаименование = ВыборкаСклад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"НаименованиеТовара");
					
					Имена = Новый Соответствие;
					Пока ВыборкаНаименование.Следующий() Цикл
						
						ВыборкаСтрока = ВыборкаНаименование.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
						
						Пока ВыборкаСтрока.Следующий() Цикл
							
							ПозПробела = Найти(ВыборкаСтрока.НаименованиеТовара," ");
							
							Если ПозПробела = 0 тогда
								СтрокаДо = ВыборкаСтрока.НаименованиеТовара;
							Иначе
								СтрокаДо = Лев(ВыборкаСтрока.НаименованиеТовара,ПозПробела-1);    
							КонецЕсли;
							
							СписокСтрокСОдинаковымиНаименованиями = Имена.Получить(СтрокаДо);
							Если СписокСтрокСОдинаковымиНаименованиями = Неопределено Тогда
								СписокСтрокСОдинаковымиНаименованиями = Новый Массив;
							КонецЕсли;     
							
							СписокСтрокСОдинаковымиНаименованиями.Добавить(ВыборкаСтрока);
							Имена.Вставить(СтрокаДо,СписокСтрокСОдинаковымиНаименованиями);
							
					//	КонецЦикла;         
					//КонецЦикла;
					//
					
					Для Каждого Элемент из Имена Цикл 
						Наименование = Элемент.Ключ;
						//НайденныеСтроки = тз.НайтиСтроки(Новый Структура("СтрокаДо",Наименование);
						
						
						ОбластьТовар.Параметры.Товар = Наименование;
						
						ТабДокОснТаблица.Вывести(ОбластьТоварКод);
						ТабДокОснТаблица.Присоединить(ОбластьТоварСрок);
						ТабДокОснТаблица.Присоединить(ОбластьТоварНДС);
						//ТабДокОснТаблица.Присоединить(ОбластьТовар,ВыборкаНаименование.Уровень());
						ТабДокОснТаблица.Присоединить(ОбластьТоварКол);
						
						//ВыборкаСтрока = ВыборкаНаименование.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
						
						//Пока ВыборкаСтрока.Следующий() Цикл
						Для Каждого ВыборкаСтрока из Элемент.Значение Цикл                     
							
							ОбработкаПрерыванияПользователя();
							
							ОбластьСтрокаКод = Макет.ПолучитьОбласть("Строка|Код");
							ОбластьСтрокаКод.Параметры.КодТовара = ВыборкаСтрока.КодТовара;    
							СрокОкончанияГодности = ДобавитьМесяц(ДатаКон, -2);
							ОбластьСтрокаСрок = Макет.ПолучитьОбласть("Строка|Срок");
							ОбластьСтрокаСрок.Параметры.Срок = ВыборкаСтрока.СрокРеализации;
							Попытка
								Если СрокОкончанияГодности >= ВыборкаСтрока.СрокРеализации Тогда 
									ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.Бирюзовый;
								Иначе 
									ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.ПризрачноБелый;
								КонецЕсли;
							Исключение
							КонецПопытки;
							
							ОбластьСтрокаНДС.Параметры.НДС    =  ВыборкаСтрока.НДС;
							ОбластьСтрока.Параметры.ШтрихКод = ВыборкаСтрока.ШтрихКод;
							
							ОбластьСтрока.Параметры.Товар = СокрЛП(ВыборкаСтрока.НаименованиеТовара);         
							ОбластьСтрока.Параметры.цена = ВыборкаСтрока.Цена;
							
							ОбластьСтрока.Параметры.опт    = ВыборкаСтрока.ОптоваяНадбавка;
							ОбластьСтрока.Параметры.колво = ВыборкаСтрока.КоличествоВГрузовомМесте;    
							ОбластьСтрокаКол = Макет.ПолучитьОбласть("Строка|Количество");						
							Если ВыборкаСтрока.КоличествоМестНовый = 0 Тогда
								ОбластьСтрокаКол.Параметры.КолвоМест = ВыборкаСтрока.КоличествоВсего;
								ОбластьСтрокаКол.Область(1,1).Шрифт = Новый Шрифт(,,Истина,,Истина);
							Иначе 
								ОбластьСтрокаКол.Параметры.КолвоМест = ВыборкаСтрока.КоличествоМестНовый;
								ОбластьСтрокаКол.Область(1,1).Шрифт = Новый Шрифт(,,,,Ложь);
							КонецЕсли;
							МассивОбластей.Очистить();        
							МассивОбластей.Добавить(ОбластьСтрока);
							
							Если Не ТабДокОснТаблица.ПроверитьВывод(МассивОбластей) Тогда    
								ТабДокОснТаблица.ВывестиГоризонтальныйРазделительСтраниц();
								МассивОбластей.Очистить();
								НомерСтраницы = НомерСтраницы + 1;    
								ОбластьСтраница.Параметры.НомерСтраницы =НомерСтраницы; 
								ТабДокОснТаблица.Вывести(ОбластьСтраница);
								ТабДокОснТаблица.Вывести(ОбластьКартинка);
								ТабДокОснТаблица.Вывести(ОбластьШапка);
							КонецЕсли;    
							ТабДокОснТаблица.Вывести(ОбластьСтрокаКод);
							ТабДокОснТаблица.Присоединить(ОбластьСтрокаСрок);
							ТабДокОснТаблица.Присоединить(ОбластьСтрокаНДС);
							//ТабДокОснТаблица.Присоединить(ОбластьСтрока,ВыборкаСтрока.Уровень());
							ТабДокОснТаблица.Присоединить(ОбластьСтрока);
							
							ТабДокОснТаблица.Присоединить(ОбластьСтрокаКол);
						КонецЦикла; 
					КонецЦикла; 
				КонецЦикла;
			КонецЦикла;    
		КонецЦикла;
	КонецЦикла;
КонецЦикла;
КонецЦикла;
Показать


Получается, что он почему-то моё наименование товара,если через точку останова, изначально все нормально идет, но в конечном результате получается, что наименование товара он вообще нигде не вывел, ну а в таблице наименование, тоже каким-то не понятным образом... Скидываю скринщот
Прикрепленные файлы:
15. oleg21592 20 26.05.16 09:48 Сейчас в теме
(13) не надо принцип коверкать было

Пока ВыборкаПоставщик.Следующий() Цикл
	ОбработкаПрерыванияПользователя();
	ОбластьПоставщик.Параметры.Поставщик = ВыборкаПоставщик.Поставщик;
	ТабДокОснТаблица.Вывести(ОбластьПоставщикКод);
	ТабДокОснТаблица.Присоединить(ОбластьПоставщикСрок);
	ТабДокОснТаблица.Присоединить(ОбластьПоставщикНДС);
	ТабДокОснТаблица.Присоединить(ОбластьПоставщик, ВыборкаПоставщик.Уровень());
	ТабДокОснТаблица.Присоединить(ОбластьПоставщикКол);
	
	ВыборкаСклад = ВыборкаПоставщик.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Склад");
	
	Пока ВыборкаСклад.Следующий() Цикл
		ОбработкаПрерыванияПользователя();
		ОбластьСклад.Параметры.Склад = ВыборкаСклад.Склад;
		
		ТабДокОснТаблица.Вывести(ОбластьСкладКод);
		ТабДокОснТаблица.Присоединить(ОбластьСкладСрок);
		ТабДокОснТаблица.Присоединить(ОбластьСкладНДС);
		ТабДокОснТаблица.Присоединить(ОбластьСклад, ВыборкаСклад.Уровень());
		ТабДокОснТаблица.Присоединить(ОбластьСкладКол);
		
		
		//ВыборкаНаименование = ВыборкаСклад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"НаименованиеТовара");  = что За группировка??
		ВыборкаНаименование = ВыборкаСклад.Выбрать();
		
		Имена = Новый Соответствие;
		Пока ВыборкаНаименование.Следующий() Цикл
			
			//ВыборкаСтрока = ВыборкаНаименование.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			//
			//Пока ВыборкаСтрока.Следующий() Цикл
			
			ПозПробела = Найти(ВыборкаСтрока.НаименованиеТовара," ");
			
			Если ПозПробела = 0 тогда
				СтрокаДо = ВыборкаСтрока.НаименованиеТовара;
			Иначе
				СтрокаДо = Лев(ВыборкаСтрока.НаименованиеТовара,ПозПробела-1);    
			КонецЕсли;
			
			СписокСтрокСОдинаковымиНаименованиями = Имена.Получить(СтрокаДо);
			Если СписокСтрокСОдинаковымиНаименованиями = Неопределено Тогда
				СписокСтрокСОдинаковымиНаименованиями = Новый Массив;
			КонецЕсли;     
			
			СписокСтрокСОдинаковымиНаименованиями.Добавить(ВыборкаСтрока);
			Имена.Вставить(СтрокаДо,СписокСтрокСОдинаковымиНаименованиями);
			
			//КонецЦикла;         
		КонецЦикла;
		
		
		Для Каждого Элемент из Имена Цикл 
			Наименование = Элемент.Ключ;
			
			ОбластьТовар.Параметры.Товар = Наименование;
			
			ТабДокОснТаблица.Вывести(ОбластьТоварКод);
			ТабДокОснТаблица.Присоединить(ОбластьТоварСрок);
			ТабДокОснТаблица.Присоединить(ОбластьТоварНДС);
			//ТабДокОснТаблица.Присоединить(ОбластьТовар,ВыборкаНаименование.Уровень());
			ТабДокОснТаблица.Присоединить(ОбластьТоварКол);
			
			//ВыборкаСтрока = ВыборкаНаименование.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			
			//Пока ВыборкаСтрока.Следующий() Цикл
			Для Каждого ВыборкаСтрока из Элемент.Значение Цикл                     
				
				ОбработкаПрерыванияПользователя();
				
				ОбластьСтрокаКод = Макет.ПолучитьОбласть("Строка|Код");
				ОбластьСтрокаКод.Параметры.КодТовара = ВыборкаСтрока.КодТовара;    
				СрокОкончанияГодности = ДобавитьМесяц(ДатаКон, -2);
				ОбластьСтрокаСрок = Макет.ПолучитьОбласть("Строка|Срок");
				ОбластьСтрокаСрок.Параметры.Срок = ВыборкаСтрока.СрокРеализации;
				Попытка
					Если СрокОкончанияГодности >= ВыборкаСтрока.СрокРеализации Тогда 
						ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.Бирюзовый;
					Иначе 
						ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.ПризрачноБелый;
					КонецЕсли;
				Исключение
				КонецПопытки;
				
				ОбластьСтрокаНДС.Параметры.НДС    =  ВыборкаСтрока.НДС;
				ОбластьСтрока.Параметры.ШтрихКод = ВыборкаСтрока.ШтрихКод;
				
				ОбластьСтрока.Параметры.Товар = СокрЛП(ВыборкаСтрока.НаименованиеТовара);         
				ОбластьСтрока.Параметры.цена = ВыборкаСтрока.Цена;
				
				ОбластьСтрока.Параметры.опт    = ВыборкаСтрока.ОптоваяНадбавка;
				ОбластьСтрока.Параметры.колво = ВыборкаСтрока.КоличествоВГрузовомМесте;    
				ОбластьСтрокаКол = Макет.ПолучитьОбласть("Строка|Количество");                        
				Если ВыборкаСтрока.КоличествоМестНовый = 0 Тогда
					ОбластьСтрокаКол.Параметры.КолвоМест = ВыборкаСтрока.КоличествоВсего;
					ОбластьСтрокаКол.Область(1,1).Шрифт = Новый Шрифт(,,Истина,,Истина);
				Иначе 
					ОбластьСтрокаКол.Параметры.КолвоМест = ВыборкаСтрока.КоличествоМестНовый;
					ОбластьСтрокаКол.Область(1,1).Шрифт = Новый Шрифт(,,,,Ложь);
				КонецЕсли;
				МассивОбластей.Очистить();        
				МассивОбластей.Добавить(ОбластьСтрока);
				
				Если Не ТабДокОснТаблица.ПроверитьВывод(МассивОбластей) Тогда    
					ТабДокОснТаблица.ВывестиГоризонтальныйРазделительСтраниц();
					МассивОбластей.Очистить();
					НомерСтраницы = НомерСтраницы + 1;    
					ОбластьСтраница.Параметры.НомерСтраницы =НомерСтраницы; 
					ТабДокОснТаблица.Вывести(ОбластьСтраница);
					ТабДокОснТаблица.Вывести(ОбластьКартинка);
					ТабДокОснТаблица.Вывести(ОбластьШапка);
				КонецЕсли;    
				ТабДокОснТаблица.Вывести(ОбластьСтрокаКод);
				ТабДокОснТаблица.Присоединить(ОбластьСтрокаСрок);
				ТабДокОснТаблица.Присоединить(ОбластьСтрокаНДС);
				//ТабДокОснТаблица.Присоединить(ОбластьСтрока,ВыборкаСтрока.Уровень());
				ТабДокОснТаблица.Присоединить(ОбластьСтрока);
				
				ТабДокОснТаблица.Присоединить(ОбластьСтрокаКол);
			КонецЦикла; 
		КонецЦикла; 
		//КонецЦикла;
		//КонецЦикла;    
		//КонецЦикла;
		//КонецЦикла;
	КонецЦикла;
КонецЦикла;
Показать
16. Nastya-chajkovskaya 26.05.16 10:41 Сейчас в теме
отлично наименование товара он выводит, осталось разобраться с табличной частью....т.к.
Для Каждого ВыборкаСтрока из Элемент.Значение Цикл
затычка, передается ВыборкаИзРезультатаЗапроса, но она пустая.Может где-та затычка в циклах...
17. oleg21592 20 26.05.16 10:59 Сейчас в теме
(16) Nastya-chajkovskaya,
да не досмотрел. в массив собираем строки выборки.

        Пока ВыборкаНаименование.Следующий() Цикл
            
            //ВыборкаСтрока = ВыборкаНаименование.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            //
            //Пока ВыборкаСтрока.Следующий() Цикл
            
            ПозПробела = Найти(ВыборкаНаименование.НаименованиеТовара," ");
            
            Если ПозПробела = 0 тогда
                СтрокаДо = ВыборкаНаименование.НаименованиеТовара;
            Иначе
                СтрокаДо = Лев(ВыборкаНаименование.НаименованиеТовара,ПозПробела-1);    
            КонецЕсли;
            
            СписокСтрокСОдинаковымиНаименованиями = Имена.Получить(СтрокаДо);
            Если СписокСтрокСОдинаковымиНаименованиями = Неопределено Тогда
                СписокСтрокСОдинаковымиНаименованиями = Новый Массив;
            КонецЕсли;     
            
            СписокСтрокСОдинаковымиНаименованиями.Добавить(ВыборкаНаименование);
            Имена.Вставить(СтрокаДо,СписокСтрокСОдинаковымиНаименованиями);
            
            //КонецЦикла;         
        КонецЦикла;
Показать
18. Nastya-chajkovskaya 26.05.16 11:03 Сейчас в теме
(17) oleg21592, у меня так и есть
тут, что-то другое.. получается наименование есть, а таблица пустая

ВыборкаПоставщик = ВыборкаТоварнаяГруппа.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Поставщик");
			
			Пока ВыборкаПоставщик.Следующий() Цикл
				ОбработкаПрерыванияПользователя();
				ОбластьПоставщик.Параметры.Поставщик = ВыборкаПоставщик.Поставщик;
				ТабДокОснТаблица.Вывести(ОбластьПоставщикКод);
				ТабДокОснТаблица.Присоединить(ОбластьПоставщикСрок);
				ТабДокОснТаблица.Присоединить(ОбластьПоставщикНДС);
				ТабДокОснТаблица.Присоединить(ОбластьПоставщик, ВыборкаПоставщик.Уровень());
				ТабДокОснТаблица.Присоединить(ОбластьПоставщикКол);
				
				ВыборкаСклад = ВыборкаПоставщик.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Склад");
				
				Пока ВыборкаСклад.Следующий() Цикл
					ОбработкаПрерыванияПользователя();
					ОбластьСклад.Параметры.Склад = ВыборкаСклад.Склад;
					
					ТабДокОснТаблица.Вывести(ОбластьСкладКод);
					ТабДокОснТаблица.Присоединить(ОбластьСкладСрок);
					ТабДокОснТаблица.Присоединить(ОбластьСкладНДС);
					ТабДокОснТаблица.Присоединить(ОбластьСклад, ВыборкаСклад.Уровень());
					ТабДокОснТаблица.Присоединить(ОбластьСкладКол);
					
					ВыборкаНаименование = ВыборкаСклад.Выбрать();
					
					Имена = Новый Соответствие;
					Пока ВыборкаНаименование.Следующий() Цикл
						
						ПозПробела = Найти(ВыборкаНаименование.НаименованиеТовара," ");
						
						Если ПозПробела = 0 тогда
							СтрокаДо = ВыборкаНаименование.НаименованиеТовара;
						Иначе
							СтрокаДо = Лев(ВыборкаНаименование.НаименованиеТовара,ПозПробела-1);    
						КонецЕсли;
						
						СписокСтрокСОдинаковымиНаименованиями = Имена.Получить(СтрокаДо);
						Если СписокСтрокСОдинаковымиНаименованиями = Неопределено Тогда
							СписокСтрокСОдинаковымиНаименованиями = Новый Массив;
						КонецЕсли;     
						
						СписокСтрокСОдинаковымиНаименованиями.Добавить(ВыборкаНаименование);
						Имена.Вставить(СтрокаДо,СписокСтрокСОдинаковымиНаименованиями);
						
						//КонецЦикла;         
					КонецЦикла;
					
					
					Для Каждого Элемент из Имена Цикл 
						Наименование = Элемент.Ключ;
						
						ОбластьТовар.Параметры.Товар = Наименование;
						
						ТабДокОснТаблица.Вывести(ОбластьТоварКод);
						ТабДокОснТаблица.Присоединить(ОбластьТоварСрок);
						ТабДокОснТаблица.Присоединить(ОбластьТоварНДС);
						ТабДокОснТаблица.Присоединить(ОбластьТовар,ВыборкаНаименование.Уровень());
						ТабДокОснТаблица.Присоединить(ОбластьТоварКол);
						
						Для Каждого ВыборкаСтрока из Элемент.Значение Цикл                     
							
							ОбработкаПрерыванияПользователя();
							
							ОбластьСтрокаКод = Макет.ПолучитьОбласть("Строка|Код");
							ОбластьСтрокаКод.Параметры.КодТовара = ВыборкаСтрока.КодТовара;    
							СрокОкончанияГодности = ДобавитьМесяц(ДатаКон, -2);
							ОбластьСтрокаСрок = Макет.ПолучитьОбласть("Строка|Срок");
							ОбластьСтрокаСрок.Параметры.Срок = ВыборкаСтрока.СрокРеализации;
							Попытка
								Если СрокОкончанияГодности >= ВыборкаСтрока.СрокРеализации Тогда 
									ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.Бирюзовый;
								Иначе 
									ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.ПризрачноБелый;
								КонецЕсли;
							Исключение
							КонецПопытки;
							
							ОбластьСтрокаНДС.Параметры.НДС    =  ВыборкаСтрока.НДС;
							ОбластьСтрока.Параметры.ШтрихКод = ВыборкаСтрока.ШтрихКод;
							
							ОбластьСтрока.Параметры.Товар = СокрЛП(ВыборкаСтрока.НаименованиеТовара);         
							ОбластьСтрока.Параметры.цена = ВыборкаСтрока.Цена;
							
							ОбластьСтрока.Параметры.опт    = ВыборкаСтрока.ОптоваяНадбавка;
							ОбластьСтрока.Параметры.колво = ВыборкаСтрока.КоличествоВГрузовомМесте;    
							ОбластьСтрокаКол = Макет.ПолучитьОбласть("Строка|Количество");                        
							Если ВыборкаСтрока.КоличествоМестНовый = 0 Тогда
								ОбластьСтрокаКол.Параметры.КолвоМест = ВыборкаСтрока.КоличествоВсего;
								ОбластьСтрокаКол.Область(1,1).Шрифт = Новый Шрифт(,,Истина,,Истина);
							Иначе 
								ОбластьСтрокаКол.Параметры.КолвоМест = ВыборкаСтрока.КоличествоМестНовый;
								ОбластьСтрокаКол.Область(1,1).Шрифт = Новый Шрифт(,,,,Ложь);
							КонецЕсли;
							МассивОбластей.Очистить();        
							МассивОбластей.Добавить(ОбластьСтрока);
							
							Если Не ТабДокОснТаблица.ПроверитьВывод(МассивОбластей) Тогда    
								ТабДокОснТаблица.ВывестиГоризонтальныйРазделительСтраниц();
								МассивОбластей.Очистить();
								НомерСтраницы = НомерСтраницы + 1;    
								ОбластьСтраница.Параметры.НомерСтраницы =НомерСтраницы; 
								ТабДокОснТаблица.Вывести(ОбластьСтраница);
								ТабДокОснТаблица.Вывести(ОбластьКартинка);
								ТабДокОснТаблица.Вывести(ОбластьШапка);
							КонецЕсли;    
							ТабДокОснТаблица.Вывести(ОбластьСтрокаКод);
							ТабДокОснТаблица.Присоединить(ОбластьСтрокаСрок);
							ТабДокОснТаблица.Присоединить(ОбластьСтрокаНДС);
							//ТабДокОснТаблица.Присоединить(ОбластьСтрока,ВыборкаСтрока.Уровень());
							ТабДокОснТаблица.Присоединить(ОбластьСтрока);
							
							ТабДокОснТаблица.Присоединить(ОбластьСтрокаКол);
						КонецЦикла; 
					КонецЦикла; 
				КонецЦикла;
			КонецЦикла;    
			
Показать
19. oleg21592 20 26.05.16 11:38 Сейчас в теме
группировка в запросе лишняя "НаименованиеТовара". Удалить ее.

или

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

Показать
20. Nastya-chajkovskaya 26.05.16 12:22 Сейчас в теме
(19) oleg21592, получается по количеству строчек после наименования товара. верно.... но они по прежднему, пустые
Вот когда доходит до
Для Каждого ВыборкаСтрока из Элемент.Значение Цикл
получается пустая таблица и все дванные не заполняются
22. Nastya-chajkovskaya 26.05.16 12:23 Сейчас в теме
(19) oleg21592, я пробовала делать так, но все равно
21. Nastya-chajkovskaya 26.05.16 12:22 Сейчас в теме
вот
Прикрепленные файлы:
23. oleg21592 20 26.05.16 12:39 Сейчас в теме
СписокСтрокСОдинаковымиНаименованиями.Добавить(ВыборкаСтрока);  // Проверить что ВыборкаСтрока = строке выборки! 


в этой строке ВыборкаСтрока равна строке выборки со всеми полями готовыми для заполнения строки отчета?
если да то можно заменить например структурой. я так понял группировку в запросе "НаименованиеТовара" так и не удалили?

можно код из запроса после слова ИТОГИ
24. Nastya-chajkovskaya 26.05.16 12:44 Сейчас в теме
(23) oleg21592,вот
Прикрепленные файлы:
код.txt
25. oleg21592 20 26.05.16 13:13 Сейчас в теме
Процедура КнопкаСформироватьНажатие(Кнопка)
	
	ТабДокСодерж = Новый ТабличныйДокумент;
	ТабДокОснТаблица = Новый ТабличныйДокумент;
	ТабДок = Новый ТабличныйДокумент;
	
	Макет = ПолучитьМакет("Макет");
	
	МассивОбластей = Новый Массив;
	НомерСтраницы = 1;
	ОбластьСтраница = Макет.ПолучитьОбласть("Страница");
	ОбластьСтраница.Параметры.НомерСтраницы = НомерСтраницы;
	ТабДокОснТаблица.Вывести(ОбластьСтраница);
	
	
	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	ТабДокСодерж.Вывести(ОбластьЗаголовок);
	
	ОбластьКартинка = Макет.ПолучитьОбласть("Картинка"); 
	ОбластьКартинка.Параметры.Дата = Формат(ДатаКон, "ДФ=dd.MM.yyyy");
	ТабДокОснТаблица.Вывести(ОбластьКартинка);
	
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
	ТабДокОснТаблица.Вывести(ОбластьШапка);
	
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ТМЦНаСкладах_КоличествоОстатки.Склад КАК Склад,
	|	ТМЦНаСкладах_КоличествоОстатки.Партия КАК НаименованиеПартии,
	|	ТМЦНаСкладах_КоличествоОстатки.Партия.СрокГодности КАК СрокРеализации,
	|	СУММА(ТМЦНаСкладах_КоличествоОстатки.КоличествоВЕдиницеХраненияОстаток) КАК КоличествоВсего,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.СтавкаНДС КАК НДС,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.ШтрихКодОсновной КАК ШтрихКод,
	|	ЦеныТМЦСрезПоследних.ОтпускнаяЦена КАК Цена,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.ОптоваяНадбавка КАК ОптоваяНадбавка,
	|	СУММА(ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КоличествоВГрузовомМесте) КАК КоличествоВГрузовомМесте,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КлассТМЦ.ТоварнаяГруппа КАК ТоварнаяГруппа,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.Наименование КАК НаименованиеТовара,
	|	ТМЦНаСкладах_КоличествоОстатки.Партия.Контрагент КАК Поставщик,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КлассТМЦ.Наименование КАК НаименованиеСклада,
	|	СУММА(ВЫБОР
	|			КОГДА ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КоличествоВГрузовомМесте = 0
	|				ТОГДА 0
	|			ИНАЧЕ ВЫРАЗИТЬ(ТМЦНаСкладах_КоличествоОстатки.КоличествоВЕдиницеХраненияОстаток / ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КоличествоВГрузовомМесте - 0.5 КАК ЧИСЛО(15, 0))
	|		КОНЕЦ) КАК КоличествоМестНовый,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.Код КАК КодТовара,
	|	ТМЦНаСкладах_КоличествоОстатки.Склад.Код КАК КодСклада
	|ИЗ
	|	РегистрНакопления.ТМЦНаСкладах_Количество.Остатки(&ДатаКон, 
	|	НЕ ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КлассТМЦ.ТоварнаяГруппа = ЗНАЧЕНИЕ(Перечисление.ВидыТоварныхГрупп.ПустаяСсылка)
	|	И ТМЦНаСкладах_КоличествоОстатки.Склад.Код = ""000008""
	//|   ТМЦНаСкладах_КоличествоОстатки.ТМЦ ПОДОБНО &ТМЦ
	|	) КАК ТМЦНаСкладах_КоличествоОстатки
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныТМЦ.СрезПоследних КАК ЦеныТМЦСрезПоследних
	|		ПО ТМЦНаСкладах_КоличествоОстатки.ТМЦ = ЦеныТМЦСрезПоследних.ТМЦ
	//|ГДЕ
	//|	НЕ ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КлассТМЦ.ТоварнаяГруппа = ЗНАЧЕНИЕ(Перечисление.ВидыТоварныхГрупп.ПустаяСсылка)
	//|	И ТМЦНаСкладах_КоличествоОстатки.Склад.Код = ""000008""
	////|   ТМЦНаСкладах_КоличествоОстатки.ТМЦ ПОДОБНО &ТМЦ
	|
	|СГРУППИРОВАТЬ ПО
	|	ТМЦНаСкладах_КоличествоОстатки.Партия.СрокГодности,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.СтавкаНДС,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.ШтрихКодОсновной,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.ОптоваяНадбавка,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КлассТМЦ.ТоварнаяГруппа,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.Наименование,
	|	ТМЦНаСкладах_КоличествоОстатки.Партия.Контрагент,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КлассТМЦ.Наименование,
	|	ТМЦНаСкладах_КоличествоОстатки.Партия,
	|	ТМЦНаСкладах_КоличествоОстатки.Склад,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.Код,
	|	ТМЦНаСкладах_КоличествоОстатки.Склад.Код,
	|	ЦеныТМЦСрезПоследних.ОтпускнаяЦена
	|
	|УПОРЯДОЧИТЬ ПО
	|	Склад,
	|	ТоварнаяГруппа
	
	|ИТОГИ
	|	СУММА(КоличествоВсего)
	|ПО
	|	Склад,
	|	ТоварнаяГруппа,
	|	Поставщик";
	//|	НаименованиеТовара";
	
	Запрос.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон)+1);
	
	
	Результат = Запрос.Выполнить();
	
	ОбластьСкладКод = Макет.ПолучитьОбласть("Склад|Код");
	ОбластьТоварнаяГруппаКод = Макет.ПолучитьОбласть("ТоварнаяГруппа|Код");
	ОбластьПоставщикКод = Макет.ПолучитьОбласть("Поставщик|Код");
	ОбластьТоварКод = Макет.ПолучитьОбласть("Товар|Код");
	
	ОбластьСклад = Макет.ПолучитьОбласть("Склад|Основная");
	ОбластьТоварнаяГруппа = Макет.ПолучитьОбласть("ТоварнаяГруппа|Основная");
	ОбластьПоставщик = Макет.ПолучитьОбласть("Поставщик|Основная");
	ОбластьТовар = Макет.ПолучитьОбласть("Товар|Основная");
	ОбластьСтрока = Макет.ПолучитьОбласть("Строка|Основная");
	ОбластьЗаголовокСтрока = Макет.ПолучитьОбласть("ЗаголовокСтрока");
	
	ОбластьСкладКол = Макет.ПолучитьОбласть("Склад|Количество");
	ОбластьТоварнаяГруппаКол = Макет.ПолучитьОбласть("ТоварнаяГруппа|Количество");
	ОбластьПоставщикКол = Макет.ПолучитьОбласть("Поставщик|Количество");
	ОбластьТоварКол = Макет.ПолучитьОбласть("Товар|Количество");
	ОбластьСтрокаКол = Макет.ПолучитьОбласть("Строка|Количество");
	
	ОбластьСкладСрок = Макет.ПолучитьОбласть("Склад|Срок");
	ОбластьТоварнаяГруппаСрок = Макет.ПолучитьОбласть("ТоварнаяГруппа|Срок");
	ОбластьПоставщикСрок = Макет.ПолучитьОбласть("Поставщик|Срок");
	ОбластьТоварСрок = Макет.ПолучитьОбласть("Товар|Срок");
	
	ОбластьСкладНДС = Макет.ПолучитьОбласть("Склад|НДС");
	ОбластьТоварнаяГруппаНДС = Макет.ПолучитьОбласть("ТоварнаяГруппа|НДС");
	ОбластьПоставщикНДС = Макет.ПолучитьОбласть("Поставщик|НДС");
	ОбластьТоварНДС = Макет.ПолучитьОбласть("Товар|НДС");
	ОбластьСтрокаНДС = Макет.ПолучитьОбласть("Строка|НДС");
	
	ТабДок.Очистить();
	ТабДок.НачатьАвтогруппировкуСтрок();
	
	//ТЗ =  Результат.Выгрузить();
	//ТЗ.Свернуть("ТоварнаяГруппа, КодСклада");
	
	//ТЗ для страниц
	ТЗСтраницы = Новый ТаблицаЗначений;
	ТЗСтраницы.Колонки.Добавить("Код");
	ТЗСтраницы.Колонки.Добавить("Группа");
	ТЗСтраницы.Колонки.Добавить("Страница");
	
	ТекущаяГруппа = Неопределено;
	ТекущийКод = Неопределено;
	ТекущаяСтраница = 0;
	
	ВыборкаЗаголовокСтрока = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	Пока ВыборкаЗаголовокСтрока.Следующий()Цикл           // обход Склад
		ОбработкаПрерыванияПользователя();
		КодСклада = ВыборкаЗаголовокСтрока.КодСклада;
		ВыборкаТоварнаяГруппа = ВыборкаЗаголовокСтрока.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ТоварнаяГруппа");
		
		Пока ВыборкаТоварнаяГруппа.Следующий() Цикл        // обход ТоварнаяГруппа
			ОбработкаПрерыванияПользователя();
			КодСклада = ВыборкаТоварнаяГруппа.КодСклада;
			
			ОбластьТоварнаяГруппа.Параметры.ТоварнаяГруппа =ВыборкаТоварнаяГруппа.ТоварнаяГруппа;
			
			//Добавим страницу...
			ПараметрыОтбора = Новый Структура;
			ПараметрыОтбора.Вставить("Код", КодСклада);
			ПараметрыОтбора.Вставить("Группа", ВыборкаТоварнаяГруппа.ТоварнаяГруппа);
			НайденныеСтроки = ТЗСтраницы.НайтиСтроки(ПараметрыОтбора);
			Если НайденныеСтроки.Количество() > 0 Тогда 
				НайденныеСтроки[0].Страница = НомерСтраницы;		
			Иначе
				НоваяСтрока = ТЗСтраницы.Добавить();
				НоваяСтрока.Код = КодСклада;
				НоваяСтрока.Группа = ВыборкаТоварнаяГруппа.ТоварнаяГруппа;
				НоваяСтрока.Страница = НомерСтраницы;
			КонецЕсли;
			////////////////////////////////////////////////
			
			ТабДокОснТаблица.Вывести(ОбластьТоварнаяГруппаКод);
			ТабДокОснТаблица.Присоединить(ОбластьТоварнаяГруппаСрок);
			ТабДокОснТаблица.Присоединить(ОбластьТоварнаяГруппаНДС);
			ТабДокОснТаблица.Присоединить(ОбластьТоварнаяГруппа,ВыборкаТоварнаяГруппа.Уровень());
			ТабДокОснТаблица.Присоединить(ОбластьТоварнаяГруппаКол);
			
			ВыборкаПоставщик = ВыборкаТоварнаяГруппа.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Поставщик");
			
			Пока ВыборкаПоставщик.Следующий() Цикл          // обход Поставщик
				ОбработкаПрерыванияПользователя();
				ОбластьПоставщик.Параметры.Поставщик = ВыборкаПоставщик.Поставщик;
				ТабДокОснТаблица.Вывести(ОбластьПоставщикКод);
				ТабДокОснТаблица.Присоединить(ОбластьПоставщикСрок);
				ТабДокОснТаблица.Присоединить(ОбластьПоставщикНДС);
				ТабДокОснТаблица.Присоединить(ОбластьПоставщик, ВыборкаПоставщик.Уровень());
				ТабДокОснТаблица.Присоединить(ОбластьПоставщикКол);
				
				//ВыборкаСклад = ВыборкаПоставщик.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Склад");
				ВыборкаНаименование = ВыборкаПоставщик.Выбрать(); // дальше нет группировок И правильней переименовать было бы ВыборкаНаименование в ВыборкаТовары
				
				Пока ВыборкаНаименование.Следующий() Цикл
					ОбработкаПрерыванияПользователя();
					ОбластьСклад.Параметры.Склад = ВыборкаНаименование.Склад;
					
					ТабДокОснТаблица.Вывести(ОбластьСкладКод);
					ТабДокОснТаблица.Присоединить(ОбластьСкладСрок);
					ТабДокОснТаблица.Присоединить(ОбластьСкладНДС);
					ТабДокОснТаблица.Присоединить(ОбластьСклад, ВыборкаНаименование.Уровень());
					ТабДокОснТаблица.Присоединить(ОбластьСкладКол);
					
					//ВыборкаНаименование = ВыборкаСклад.Выбрать();
					
					Имена = Новый Соответствие;
					//Пока ВыборкаНаименование.Следующий() Цикл
													
						ПозПробела = Найти(ВыборкаНаименование.НаименованиеТовара," ");
						
						Если ПозПробела = 0 тогда
							СтрокаДо = ВыборкаНаименование.НаименованиеТовара;
						Иначе
							СтрокаДо = Лев(ВыборкаНаименование.НаименованиеТовара,ПозПробела-1);    
						КонецЕсли;
						
						СписокСтрокСОдинаковымиНаименованиями = Имена.Получить(СтрокаДо);
						Если СписокСтрокСОдинаковымиНаименованиями = Неопределено Тогда
							СписокСтрокСОдинаковымиНаименованиями = Новый Массив;
						КонецЕсли;     
						
						СписокСтрокСОдинаковымиНаименованиями.Добавить(ВыборкаНаименование);
						Имена.Вставить(СтрокаДо,СписокСтрокСОдинаковымиНаименованиями);
						
						//КонецЦикла;         
				 КонецЦикла; // относится к // Пока ВыборкаСклад.Следующий() Цикл
					
					Для Каждого Элемент из Имена Цикл 
						Наименование = Элемент.Ключ;
						
						ОбластьТовар.Параметры.Товар = Наименование;
						
						ТабДокОснТаблица.Вывести(ОбластьТоварКод);
						ТабДокОснТаблица.Присоединить(ОбластьТоварСрок);
						ТабДокОснТаблица.Присоединить(ОбластьТоварНДС);
						ТабДокОснТаблица.Присоединить(ОбластьТовар);
						ТабДокОснТаблица.Присоединить(ОбластьТоварКол);
						
						Для Каждого ВыборкаСтрока из Элемент.Значение Цикл                     
							
							ОбработкаПрерыванияПользователя();
							
							ОбластьСтрокаКод = Макет.ПолучитьОбласть("Строка|Код");
							ОбластьСтрокаКод.Параметры.КодТовара = ВыборкаСтрока.КодТовара;    
							СрокОкончанияГодности = ДобавитьМесяц(ДатаКон, -2);
							ОбластьСтрокаСрок = Макет.ПолучитьОбласть("Строка|Срок");
							ОбластьСтрокаСрок.Параметры.Срок = ВыборкаСтрока.СрокРеализации;
							Попытка
								Если СрокОкончанияГодности >= ВыборкаСтрока.СрокРеализации Тогда 
									ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.Бирюзовый;
								Иначе 
									ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.ПризрачноБелый;
								КонецЕсли;
							Исключение
							КонецПопытки;
							
							ОбластьСтрокаНДС.Параметры.НДС    =  ВыборкаСтрока.НДС;
							ОбластьСтрока.Параметры.ШтрихКод = ВыборкаСтрока.ШтрихКод;
							
							ОбластьСтрока.Параметры.Товар = СокрЛП(ВыборкаСтрока.НаименованиеТовара);         
							ОбластьСтрока.Параметры.цена = ВыборкаСтрока.Цена;
							
							ОбластьСтрока.Параметры.опт    = ВыборкаСтрока.ОптоваяНадбавка;
							ОбластьСтрока.Параметры.колво = ВыборкаСтрока.КоличествоВГрузовомМесте;    
							ОбластьСтрокаКол = Макет.ПолучитьОбласть("Строка|Количество");                        
							Если ВыборкаСтрока.КоличествоМестНовый = 0 Тогда
								ОбластьСтрокаКол.Параметры.КолвоМест = ВыборкаСтрока.КоличествоВсего;
								ОбластьСтрокаКол.Область(1,1).Шрифт = Новый Шрифт(,,Истина,,Истина);
							Иначе 
								ОбластьСтрокаКол.Параметры.КолвоМест = ВыборкаСтрока.КоличествоМестНовый;
								ОбластьСтрокаКол.Область(1,1).Шрифт = Новый Шрифт(,,,,Ложь);
							КонецЕсли;
							МассивОбластей.Очистить();        
							МассивОбластей.Добавить(ОбластьСтрока);
							
							Если Не ТабДокОснТаблица.ПроверитьВывод(МассивОбластей) Тогда    
								ТабДокОснТаблица.ВывестиГоризонтальныйРазделительСтраниц();
								МассивОбластей.Очистить();
								НомерСтраницы = НомерСтраницы + 1;    
								ОбластьСтраница.Параметры.НомерСтраницы =НомерСтраницы; 
								ТабДокОснТаблица.Вывести(ОбластьСтраница);
								ТабДокОснТаблица.Вывести(ОбластьКартинка);
								ТабДокОснТаблица.Вывести(ОбластьШапка);
							КонецЕсли;    
							ТабДокОснТаблица.Вывести(ОбластьСтрокаКод);
							ТабДокОснТаблица.Присоединить(ОбластьСтрокаСрок);
							ТабДокОснТаблица.Присоединить(ОбластьСтрокаНДС);
							ТабДокОснТаблица.Присоединить(ОбластьСтрока);
							
							ТабДокОснТаблица.Присоединить(ОбластьСтрокаКол);
						КонецЦикла; 
					КонецЦикла; 
				КонецЦикла;
			КонецЦикла;    
		КонецЦикла;
//	КонецЦикла;
	
	ТЗСтраницы.Сортировать("Страница");
	Для Каждого Стр Из ТЗСтраницы Цикл
		ОбработкаПрерыванияПользователя();
		Если ЗначениеНеЗаполнено(Стр.Группа) Тогда
			Продолжить;
		КонецЕсли;
		ОбластьЗаголовокСтрока.Параметры.КодСклада = Стр.Код;
		ОбластьЗаголовокСтрока.Параметры.Наименование = Стр.Группа;
		ОбластьЗаголовокСтрока.Параметры.Страница = Стр.Страница;
		МассивОбластей.Очистить();        
		МассивОбластей.Добавить(ОбластьЗаголовокСтрока);
		Если Не ТабДокСодерж.ПроверитьВывод(МассивОбластей) Тогда    
			ТабДокСодерж.ВывестиГоризонтальныйРазделительСтраниц();
			МассивОбластей.Очистить();
			ТабДокСодерж.Вывести(ОбластьЗаголовок);
		КонецЕсли;    
		ТабДокСодерж.Вывести(ОбластьЗаголовокСтрока);
	КонецЦикла;
	Если ФлагВывестиРеквизиты Тогда
		ОбластьРеквизиты = Макет.ПолучитьОбласть("Реквизиты");
		ТабДокСодерж.Вывести(ОбластьРеквизиты);
	Иначе
		
	КонецЕсли;
	ТабДок.ЗакончитьАвтогруппировкуСтрок();
	
	ТабДок.Вывести(ТабДокСодерж);
	ТабДок.Вывести(ТабДокОснТаблица);
	
	ТабДок.ОриентацияСтраницы=ОриентацияСтраницы.Портрет;
	ТабДок.ОтображатьСетку = Истина; 
	ТабДок.АвтоМасштаб     = Истина;
	ТабДок.Показать();
	
КонецПроцедуры

Процедура ПриОткрытии()
			
Склад = Справочники.МестаХранения.ВыбратьИерархически(Справочники.МестаХранения.НайтиПоНаименованию("СКЛАД НЕПРОДОВОЛЬСТВЕННЫХ ТОВАРОВ"));	
	
ДатаКон = ТекущаяДата();	
	
КонецПроцедуры
Показать
26. Nastya-chajkovskaya 26.05.16 13:52 Сейчас в теме
(25) oleg21592, вот все же сделано как и говорили
Процедура КнопкаСформироватьНажатие(Кнопка)
    
    ТабДокСодерж = Новый ТабличныйДокумент;
    ТабДокОснТаблица = Новый ТабличныйДокумент;
    ТабДок = Новый ТабличныйДокумент;
    
    Макет = ПолучитьМакет("Макет");
    
    МассивОбластей = Новый Массив;
    НомерСтраницы = 1;
    ОбластьСтраница = Макет.ПолучитьОбласть("Страница");
    ОбластьСтраница.Параметры.НомерСтраницы = НомерСтраницы;
    ТабДокОснТаблица.Вывести(ОбластьСтраница);
    
    
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ТабДокСодерж.Вывести(ОбластьЗаголовок);
    
    ОбластьКартинка = Макет.ПолучитьОбласть("Картинка"); 
    ОбластьКартинка.Параметры.Дата = Формат(ДатаКон, "ДФ=dd.MM.yyyy");
    ТабДокОснТаблица.Вывести(ОбластьКартинка);
    
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ТабДокОснТаблица.Вывести(ОбластьШапка);
    
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    ТМЦНаСкладах_КоличествоОстатки.Склад КАК Склад,
    |    ТМЦНаСкладах_КоличествоОстатки.Партия КАК НаименованиеПартии,
    |    ТМЦНаСкладах_КоличествоОстатки.Партия.СрокГодности КАК СрокРеализации,
    |    СУММА(ТМЦНаСкладах_КоличествоОстатки.КоличествоВЕдиницеХраненияОстаток) КАК КоличествоВсего,
    |    ТМЦНаСкладах_КоличествоОстатки.ТМЦ.СтавкаНДС КАК НДС,
    |    ТМЦНаСкладах_КоличествоОстатки.ТМЦ.ШтрихКодОсновной КАК ШтрихКод,
    |    ЦеныТМЦСрезПоследних.ОтпускнаяЦена КАК Цена,
    |    ТМЦНаСкладах_КоличествоОстатки.ТМЦ.ОптоваяНадбавка КАК ОптоваяНадбавка,
    |    СУММА(ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КоличествоВГрузовомМесте) КАК КоличествоВГрузовомМесте,
    |    ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КлассТМЦ.ТоварнаяГруппа КАК ТоварнаяГруппа,
    |    ТМЦНаСкладах_КоличествоОстатки.ТМЦ.Наименование КАК НаименованиеТовара,
    |    ТМЦНаСкладах_КоличествоОстатки.Партия.Контрагент КАК Поставщик,
    |    ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КлассТМЦ.Наименование КАК НаименованиеСклада,
    |    СУММА(ВЫБОР
    |            КОГДА ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КоличествоВГрузовомМесте = 0
    |                ТОГДА 0
    |            ИНАЧЕ ВЫРАЗИТЬ(ТМЦНаСкладах_КоличествоОстатки.КоличествоВЕдиницеХраненияОстаток / ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КоличествоВГрузовомМесте - 0.5 КАК ЧИСЛО(15, 0))
    |        КОНЕЦ) КАК КоличествоМестНовый,
    |    ТМЦНаСкладах_КоличествоОстатки.ТМЦ.Код КАК КодТовара,
    |    ТМЦНаСкладах_КоличествоОстатки.Склад.Код КАК КодСклада
    |ИЗ
    |    РегистрНакопления.ТМЦНаСкладах_Количество.Остатки(&ДатаКон, 
    |    НЕ ТМЦ.КлассТМЦ.ТоварнаяГруппа = ЗНАЧЕНИЕ(Перечисление.ВидыТоварныхГрупп.ПустаяСсылка)
    |    И Склад.Код = ""000008""
    //|   ТМЦНаСкладах_КоличествоОстатки.ТМЦ ПОДОБНО &ТМЦ
    |    ) КАК ТМЦНаСкладах_КоличествоОстатки
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныТМЦ.СрезПоследних КАК ЦеныТМЦСрезПоследних
    |        ПО ТМЦНаСкладах_КоличествоОстатки.ТМЦ = ЦеныТМЦСрезПоследних.ТМЦ
    |
    |СГРУППИРОВАТЬ ПО
    |    ТМЦНаСкладах_КоличествоОстатки.Партия.СрокГодности,
    |    ТМЦНаСкладах_КоличествоОстатки.ТМЦ.СтавкаНДС,
    |    ТМЦНаСкладах_КоличествоОстатки.ТМЦ.ШтрихКодОсновной,
    |    ТМЦНаСкладах_КоличествоОстатки.ТМЦ.ОптоваяНадбавка,
    |    ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КлассТМЦ.ТоварнаяГруппа,
    |    ТМЦНаСкладах_КоличествоОстатки.ТМЦ.Наименование,
    |    ТМЦНаСкладах_КоличествоОстатки.Партия.Контрагент,
    |    ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КлассТМЦ.Наименование,
    |    ТМЦНаСкладах_КоличествоОстатки.Партия,
    |    ТМЦНаСкладах_КоличествоОстатки.Склад,
    |    ТМЦНаСкладах_КоличествоОстатки.ТМЦ.Код,
    |    ТМЦНаСкладах_КоличествоОстатки.Склад.Код,
    |    ЦеныТМЦСрезПоследних.ОтпускнаяЦена
    |
    |УПОРЯДОЧИТЬ ПО
    |    Склад,
    |    ТоварнаяГруппа
    
    |ИТОГИ
    |    СУММА(КоличествоВсего)
    |ПО
    |    Склад,
    |    ТоварнаяГруппа,
    |    Поставщик";
    //|    НаименованиеТовара";
    
    Запрос.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон)+1);
    
    
    Результат = Запрос.Выполнить();
    
    ОбластьСкладКод = Макет.ПолучитьОбласть("Склад|Код");
    ОбластьТоварнаяГруппаКод = Макет.ПолучитьОбласть("ТоварнаяГруппа|Код");
    ОбластьПоставщикКод = Макет.ПолучитьОбласть("Поставщик|Код");
    ОбластьТоварКод = Макет.ПолучитьОбласть("Товар|Код");
    
    ОбластьСклад = Макет.ПолучитьОбласть("Склад|Основная");
    ОбластьТоварнаяГруппа = Макет.ПолучитьОбласть("ТоварнаяГруппа|Основная");
    ОбластьПоставщик = Макет.ПолучитьОбласть("Поставщик|Основная");
    ОбластьТовар = Макет.ПолучитьОбласть("Товар|Основная");
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка|Основная");
    ОбластьЗаголовокСтрока = Макет.ПолучитьОбласть("ЗаголовокСтрока");
    
    ОбластьСкладКол = Макет.ПолучитьОбласть("Склад|Количество");
    ОбластьТоварнаяГруппаКол = Макет.ПолучитьОбласть("ТоварнаяГруппа|Количество");
    ОбластьПоставщикКол = Макет.ПолучитьОбласть("Поставщик|Количество");
    ОбластьТоварКол = Макет.ПолучитьОбласть("Товар|Количество");
    ОбластьСтрокаКол = Макет.ПолучитьОбласть("Строка|Количество");
    
    ОбластьСкладСрок = Макет.ПолучитьОбласть("Склад|Срок");
    ОбластьТоварнаяГруппаСрок = Макет.ПолучитьОбласть("ТоварнаяГруппа|Срок");
    ОбластьПоставщикСрок = Макет.ПолучитьОбласть("Поставщик|Срок");
    ОбластьТоварСрок = Макет.ПолучитьОбласть("Товар|Срок");
    
    ОбластьСкладНДС = Макет.ПолучитьОбласть("Склад|НДС");
    ОбластьТоварнаяГруппаНДС = Макет.ПолучитьОбласть("ТоварнаяГруппа|НДС");
    ОбластьПоставщикНДС = Макет.ПолучитьОбласть("Поставщик|НДС");
    ОбластьТоварНДС = Макет.ПолучитьОбласть("Товар|НДС");
    ОбластьСтрокаНДС = Макет.ПолучитьОбласть("Строка|НДС");
    
    ТабДок.Очистить();
    ТабДок.НачатьАвтогруппировкуСтрок();
    
    //ТЗ =  Результат.Выгрузить();
    //ТЗ.Свернуть("ТоварнаяГруппа, КодСклада");
    
    //ТЗ для страниц
    ТЗСтраницы = Новый ТаблицаЗначений;
    ТЗСтраницы.Колонки.Добавить("Код");
    ТЗСтраницы.Колонки.Добавить("Группа");
    ТЗСтраницы.Колонки.Добавить("Страница");
    
    ТекущаяГруппа = Неопределено;
    ТекущийКод = Неопределено;
    ТекущаяСтраница = 0;
    
    ВыборкаЗаголовокСтрока = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаЗаголовокСтрока.Следующий()Цикл           // обход Склад
        ОбработкаПрерыванияПользователя();
        КодСклада = ВыборкаЗаголовокСтрока.КодСклада;
        ВыборкаТоварнаяГруппа = ВыборкаЗаголовокСтрока.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ТоварнаяГруппа");
        
        Пока ВыборкаТоварнаяГруппа.Следующий() Цикл        // обход ТоварнаяГруппа
            ОбработкаПрерыванияПользователя();
            КодСклада = ВыборкаТоварнаяГруппа.КодСклада;
            
            ОбластьТоварнаяГруппа.Параметры.ТоварнаяГруппа =ВыборкаТоварнаяГруппа.ТоварнаяГруппа;
            
            //Добавим страницу...
            ПараметрыОтбора = Новый Структура;
            ПараметрыОтбора.Вставить("Код", КодСклада);
            ПараметрыОтбора.Вставить("Группа", ВыборкаТоварнаяГруппа.ТоварнаяГруппа);
            НайденныеСтроки = ТЗСтраницы.НайтиСтроки(ПараметрыОтбора);
            Если НайденныеСтроки.Количество() > 0 Тогда 
                НайденныеСтроки[0].Страница = НомерСтраницы;        
            Иначе
                НоваяСтрока = ТЗСтраницы.Добавить();
                НоваяСтрока.Код = КодСклада;
                НоваяСтрока.Группа = ВыборкаТоварнаяГруппа.ТоварнаяГруппа;
                НоваяСтрока.Страница = НомерСтраницы;
            КонецЕсли;
            ////////////////////////////////////////////////
            
            ТабДокОснТаблица.Вывести(ОбластьТоварнаяГруппаКод);
            ТабДокОснТаблица.Присоединить(ОбластьТоварнаяГруппаСрок);
            ТабДокОснТаблица.Присоединить(ОбластьТоварнаяГруппаНДС);
            ТабДокОснТаблица.Присоединить(ОбластьТоварнаяГруппа,ВыборкаТоварнаяГруппа.Уровень());
            ТабДокОснТаблица.Присоединить(ОбластьТоварнаяГруппаКол);
            
            ВыборкаПоставщик = ВыборкаТоварнаяГруппа.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Поставщик");
            
            Пока ВыборкаПоставщик.Следующий() Цикл          // обход Поставщик
                ОбработкаПрерыванияПользователя();
                ОбластьПоставщик.Параметры.Поставщик = ВыборкаПоставщик.Поставщик;
                ТабДокОснТаблица.Вывести(ОбластьПоставщикКод);
                ТабДокОснТаблица.Присоединить(ОбластьПоставщикСрок);
                ТабДокОснТаблица.Присоединить(ОбластьПоставщикНДС);
                ТабДокОснТаблица.Присоединить(ОбластьПоставщик, ВыборкаПоставщик.Уровень());
                ТабДокОснТаблица.Присоединить(ОбластьПоставщикКол);
                
                //ВыборкаСклад = ВыборкаПоставщик.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Склад");
                ВыборкаТовары = ВыборкаПоставщик.Выбрать(); // дальше нет группировок И правильней переименовать было бы ВыборкаНаименование в ВыборкаТовары
                
                Пока ВыборкаТовары.Следующий() Цикл
                    ОбработкаПрерыванияПользователя();
                    ОбластьСклад.Параметры.Склад = ВыборкаТовары.Склад;
                    
                    ТабДокОснТаблица.Вывести(ОбластьСкладКод);
                    ТабДокОснТаблица.Присоединить(ОбластьСкладСрок);
                    ТабДокОснТаблица.Присоединить(ОбластьСкладНДС);
                    ТабДокОснТаблица.Присоединить(ОбластьСклад, ВыборкаТовары.Уровень());
                    ТабДокОснТаблица.Присоединить(ОбластьСкладКол);
                    
                    //ВыборкаНаименование = ВыборкаСклад.Выбрать();
                    
                    Имена = Новый Соответствие;
                    //Пока ВыборкаНаименование.Следующий() Цикл
                                                    
                        ПозПробела = Найти(ВыборкаТовары.НаименованиеТовара," ");
                        
                        Если ПозПробела = 0 тогда
                            СтрокаДо = ВыборкаТовары.НаименованиеТовара;
                        Иначе
                            СтрокаДо = Лев(ВыборкаТовары.НаименованиеТовара,ПозПробела-1);    
                        КонецЕсли;
                        
                        СписокСтрокСОдинаковымиНаименованиями = Имена.Получить(СтрокаДо);
                        Если СписокСтрокСОдинаковымиНаименованиями = Неопределено Тогда
                            СписокСтрокСОдинаковымиНаименованиями = Новый Массив;
                        КонецЕсли;     
                        
                        СписокСтрокСОдинаковымиНаименованиями.Добавить(ВыборкаТовары);
                        Имена.Вставить(СтрокаДо,СписокСтрокСОдинаковымиНаименованиями);
                        
                        //КонецЦикла;         
                 КонецЦикла; // относится к // Пока ВыборкаСклад.Следующий() Цикл
                    
                    Для Каждого Элемент из Имена Цикл 
                        Наименование = Элемент.Ключ;
                        
                        ОбластьТовар.Параметры.Товар = Наименование;
                        
                        ТабДокОснТаблица.Вывести(ОбластьТоварКод);
                        ТабДокОснТаблица.Присоединить(ОбластьТоварСрок);
                        ТабДокОснТаблица.Присоединить(ОбластьТоварНДС);
                        ТабДокОснТаблица.Присоединить(ОбластьТовар);
                        ТабДокОснТаблица.Присоединить(ОбластьТоварКол);
                        
                        Для Каждого ВыборкаСтрока из Элемент.Значение Цикл                     
                            
                            ОбработкаПрерыванияПользователя();
                            
                            ОбластьСтрокаКод = Макет.ПолучитьОбласть("Строка|Код");
                            ОбластьСтрокаКод.Параметры.КодТовара = ВыборкаСтрока.КодТовара;    
                            СрокОкончанияГодности = ДобавитьМесяц(ДатаКон, -2);
                            ОбластьСтрокаСрок = Макет.ПолучитьОбласть("Строка|Срок");
                            ОбластьСтрокаСрок.Параметры.Срок = ВыборкаСтрока.СрокРеализации;
                            Попытка
                                Если СрокОкончанияГодности >= ВыборкаСтрока.СрокРеализации Тогда 
                                    ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.Бирюзовый;
                                Иначе 
                                    ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.ПризрачноБелый;
                                КонецЕсли;
                            Исключение
                            КонецПопытки;
                            
                            ОбластьСтрокаНДС.Параметры.НДС    =  ВыборкаСтрока.НДС;
                            ОбластьСтрока.Параметры.ШтрихКод = ВыборкаСтрока.ШтрихКод;
                            
                            ОбластьСтрока.Параметры.Товар = СокрЛП(ВыборкаСтрока.НаименованиеТовара);         
                            ОбластьСтрока.Параметры.цена = ВыборкаСтрока.Цена;
                            
                            ОбластьСтрока.Параметры.опт    = ВыборкаСтрока.ОптоваяНадбавка;
                            ОбластьСтрока.Параметры.колво = ВыборкаСтрока.КоличествоВГрузовомМесте;    
                            ОбластьСтрокаКол = Макет.ПолучитьОбласть("Строка|Количество");                        
                            Если ВыборкаСтрока.КоличествоМестНовый = 0 Тогда
                                ОбластьСтрокаКол.Параметры.КолвоМест = ВыборкаСтрока.КоличествоВсего;
                                ОбластьСтрокаКол.Область(1,1).Шрифт = Новый Шрифт(,,Истина,,Истина);
                            Иначе 
                                ОбластьСтрокаКол.Параметры.КолвоМест = ВыборкаСтрока.КоличествоМестНовый;
                                ОбластьСтрокаКол.Область(1,1).Шрифт = Новый Шрифт(,,,,Ложь);
                            КонецЕсли;
                            МассивОбластей.Очистить();        
                            МассивОбластей.Добавить(ОбластьСтрока);
                            
                            Если Не ТабДокОснТаблица.ПроверитьВывод(МассивОбластей) Тогда    
                                ТабДокОснТаблица.ВывестиГоризонтальныйРазделительСтраниц();
                                МассивОбластей.Очистить();
                                НомерСтраницы = НомерСтраницы + 1;    
                                ОбластьСтраница.Параметры.НомерСтраницы =НомерСтраницы; 
                                ТабДокОснТаблица.Вывести(ОбластьСтраница);
                                ТабДокОснТаблица.Вывести(ОбластьКартинка);
                                ТабДокОснТаблица.Вывести(ОбластьШапка);
                            КонецЕсли;    
                            ТабДокОснТаблица.Вывести(ОбластьСтрокаКод);
                            ТабДокОснТаблица.Присоединить(ОбластьСтрокаСрок);
                            ТабДокОснТаблица.Присоединить(ОбластьСтрокаНДС);
                            ТабДокОснТаблица.Присоединить(ОбластьСтрока);
                            
                            ТабДокОснТаблица.Присоединить(ОбластьСтрокаКол);
                        КонецЦикла; 
                    КонецЦикла; 
                КонецЦикла;
            КонецЦикла;    
        КонецЦикла;
//    КонецЦикла;
    
    ТЗСтраницы.Сортировать("Страница");
    Для Каждого Стр Из ТЗСтраницы Цикл
        ОбработкаПрерыванияПользователя();
        Если ЗначениеНеЗаполнено(Стр.Группа) Тогда
            Продолжить;
        КонецЕсли;
        ОбластьЗаголовокСтрока.Параметры.КодСклада = Стр.Код;
        ОбластьЗаголовокСтрока.Параметры.Наименование = Стр.Группа;
        ОбластьЗаголовокСтрока.Параметры.Страница = Стр.Страница;
        МассивОбластей.Очистить();        
        МассивОбластей.Добавить(ОбластьЗаголовокСтрока);
        Если Не ТабДокСодерж.ПроверитьВывод(МассивОбластей) Тогда    
            ТабДокСодерж.ВывестиГоризонтальныйРазделительСтраниц();
            МассивОбластей.Очистить();
            ТабДокСодерж.Вывести(ОбластьЗаголовок);
        КонецЕсли;    
        ТабДокСодерж.Вывести(ОбластьЗаголовокСтрока);
    КонецЦикла;
    Если ФлагВывестиРеквизиты Тогда
        ОбластьРеквизиты = Макет.ПолучитьОбласть("Реквизиты");
        ТабДокСодерж.Вывести(ОбластьРеквизиты);
    Иначе
        
    КонецЕсли;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    
    ТабДок.Вывести(ТабДокСодерж);
    ТабДок.Вывести(ТабДокОснТаблица);
    
    ТабДок.ОриентацияСтраницы=ОриентацияСтраницы.Портрет;
    ТабДок.ОтображатьСетку = Истина; 
    ТабДок.АвтоМасштаб     = Истина;
    ТабДок.Показать();
    
КонецПроцедуры

Процедура ПриОткрытии()
            
Склад = Справочники.МестаХранения.ВыбратьИерархически(Справочники.МестаХранения.НайтиПоНаименованию("СКЛАД НЕПРОДОВОЛЬСТВЕННЫХ ТОВАРОВ"));    
    
ДатаКон = ТекущаяДата();    
    
КонецПроцедуры
Показать


а в результате вот что на картинке
Прикрепленные файлы:
27. oleg21592 20 26.05.16 14:15 Сейчас в теме
а если так

Процедура КнопкаСформироватьНажатие(Кнопка)
	
	ТабДокСодерж = Новый ТабличныйДокумент;
	ТабДокОснТаблица = Новый ТабличныйДокумент;
	ТабДок = Новый ТабличныйДокумент;
	
	Макет = ПолучитьМакет("Макет");
	
	МассивОбластей = Новый Массив;
	НомерСтраницы = 1;
	ОбластьСтраница = Макет.ПолучитьОбласть("Страница");
	ОбластьСтраница.Параметры.НомерСтраницы = НомерСтраницы;
	ТабДокОснТаблица.Вывести(ОбластьСтраница);
	
	
	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	ТабДокСодерж.Вывести(ОбластьЗаголовок);
	
	ОбластьКартинка = Макет.ПолучитьОбласть("Картинка"); 
	ОбластьКартинка.Параметры.Дата = Формат(ДатаКон, "ДФ=dd.MM.yyyy");
	ТабДокОснТаблица.Вывести(ОбластьКартинка);
	
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
	ТабДокОснТаблица.Вывести(ОбластьШапка);
	
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ТМЦНаСкладах_КоличествоОстатки.Склад КАК Склад,
	|	ТМЦНаСкладах_КоличествоОстатки.Партия КАК НаименованиеПартии,
	|	ТМЦНаСкладах_КоличествоОстатки.Партия.СрокГодности КАК СрокРеализации,
	|	СУММА(ТМЦНаСкладах_КоличествоОстатки.КоличествоВЕдиницеХраненияОстаток) КАК КоличествоВсего,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.СтавкаНДС КАК НДС,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.ШтрихКодОсновной КАК ШтрихКод,
	|	ЦеныТМЦСрезПоследних.ОтпускнаяЦена КАК Цена,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.ОптоваяНадбавка КАК ОптоваяНадбавка,
	|	СУММА(ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КоличествоВГрузовомМесте) КАК КоличествоВГрузовомМесте,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КлассТМЦ.ТоварнаяГруппа КАК ТоварнаяГруппа,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.Наименование КАК НаименованиеТовара,
	|	ТМЦНаСкладах_КоличествоОстатки.Партия.Контрагент КАК Поставщик,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КлассТМЦ.Наименование КАК НаименованиеСклада,
	|	СУММА(ВЫБОР
	|			КОГДА ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КоличествоВГрузовомМесте = 0
	|				ТОГДА 0
	|			ИНАЧЕ ВЫРАЗИТЬ(ТМЦНаСкладах_КоличествоОстатки.КоличествоВЕдиницеХраненияОстаток / ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КоличествоВГрузовомМесте - 0.5 КАК ЧИСЛО(15, 0))
	|		КОНЕЦ) КАК КоличествоМестНовый,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.Код КАК КодТовара,
	|	ТМЦНаСкладах_КоличествоОстатки.Склад.Код КАК КодСклада
	|ИЗ
	|	РегистрНакопления.ТМЦНаСкладах_Количество.Остатки(&ДатаКон, 
	|	НЕ ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КлассТМЦ.ТоварнаяГруппа = ЗНАЧЕНИЕ(Перечисление.ВидыТоварныхГрупп.ПустаяСсылка)
	|	И ТМЦНаСкладах_КоличествоОстатки.Склад.Код = ""000008""
	//|   ТМЦНаСкладах_КоличествоОстатки.ТМЦ ПОДОБНО &ТМЦ
	|	) КАК ТМЦНаСкладах_КоличествоОстатки
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныТМЦ.СрезПоследних КАК ЦеныТМЦСрезПоследних
	|		ПО ТМЦНаСкладах_КоличествоОстатки.ТМЦ = ЦеныТМЦСрезПоследних.ТМЦ
	//|ГДЕ
	//|	НЕ ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КлассТМЦ.ТоварнаяГруппа = ЗНАЧЕНИЕ(Перечисление.ВидыТоварныхГрупп.ПустаяСсылка)
	//|	И ТМЦНаСкладах_КоличествоОстатки.Склад.Код = ""000008""
	////|   ТМЦНаСкладах_КоличествоОстатки.ТМЦ ПОДОБНО &ТМЦ
	|
	|СГРУППИРОВАТЬ ПО
	|	ТМЦНаСкладах_КоличествоОстатки.Партия.СрокГодности,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.СтавкаНДС,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.ШтрихКодОсновной,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.ОптоваяНадбавка,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КлассТМЦ.ТоварнаяГруппа,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.Наименование,
	|	ТМЦНаСкладах_КоличествоОстатки.Партия.Контрагент,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.КлассТМЦ.Наименование,
	|	ТМЦНаСкладах_КоличествоОстатки.Партия,
	|	ТМЦНаСкладах_КоличествоОстатки.Склад,
	|	ТМЦНаСкладах_КоличествоОстатки.ТМЦ.Код,
	|	ТМЦНаСкладах_КоличествоОстатки.Склад.Код,
	|	ЦеныТМЦСрезПоследних.ОтпускнаяЦена
	|
	|УПОРЯДОЧИТЬ ПО
	|	Склад,
	|	ТоварнаяГруппа
	
	|ИТОГИ
	|	СУММА(КоличествоВсего)
	|ПО
	|	ТоварнаяГруппа,
	|	Поставщик,
	|	Склад";
	//|	НаименованиеТовара";
	
	Запрос.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон)+1);
	
	
	Результат = Запрос.Выполнить();
	
	ОбластьСкладКод = Макет.ПолучитьОбласть("Склад|Код");
	ОбластьТоварнаяГруппаКод = Макет.ПолучитьОбласть("ТоварнаяГруппа|Код");
	ОбластьПоставщикКод = Макет.ПолучитьОбласть("Поставщик|Код");
	ОбластьТоварКод = Макет.ПолучитьОбласть("Товар|Код");
	
	ОбластьСклад = Макет.ПолучитьОбласть("Склад|Основная");
	ОбластьТоварнаяГруппа = Макет.ПолучитьОбласть("ТоварнаяГруппа|Основная");
	ОбластьПоставщик = Макет.ПолучитьОбласть("Поставщик|Основная");
	ОбластьТовар = Макет.ПолучитьОбласть("Товар|Основная");
	ОбластьСтрока = Макет.ПолучитьОбласть("Строка|Основная");
	ОбластьЗаголовокСтрока = Макет.ПолучитьОбласть("ЗаголовокСтрока");
	
	ОбластьСкладКол = Макет.ПолучитьОбласть("Склад|Количество");
	ОбластьТоварнаяГруппаКол = Макет.ПолучитьОбласть("ТоварнаяГруппа|Количество");
	ОбластьПоставщикКол = Макет.ПолучитьОбласть("Поставщик|Количество");
	ОбластьТоварКол = Макет.ПолучитьОбласть("Товар|Количество");
	ОбластьСтрокаКол = Макет.ПолучитьОбласть("Строка|Количество");
	
	ОбластьСкладСрок = Макет.ПолучитьОбласть("Склад|Срок");
	ОбластьТоварнаяГруппаСрок = Макет.ПолучитьОбласть("ТоварнаяГруппа|Срок");
	ОбластьПоставщикСрок = Макет.ПолучитьОбласть("Поставщик|Срок");
	ОбластьТоварСрок = Макет.ПолучитьОбласть("Товар|Срок");
	
	ОбластьСкладНДС = Макет.ПолучитьОбласть("Склад|НДС");
	ОбластьТоварнаяГруппаНДС = Макет.ПолучитьОбласть("ТоварнаяГруппа|НДС");
	ОбластьПоставщикНДС = Макет.ПолучитьОбласть("Поставщик|НДС");
	ОбластьТоварНДС = Макет.ПолучитьОбласть("Товар|НДС");
	ОбластьСтрокаНДС = Макет.ПолучитьОбласть("Строка|НДС");
	
	ТабДок.Очистить();
	ТабДок.НачатьАвтогруппировкуСтрок();
	
	//ТЗ =  Результат.Выгрузить();
	//ТЗ.Свернуть("ТоварнаяГруппа, КодСклада");
	
	//ТЗ для страниц
	ТЗСтраницы = Новый ТаблицаЗначений;
	ТЗСтраницы.Колонки.Добавить("Код");
	ТЗСтраницы.Колонки.Добавить("Группа");
	ТЗСтраницы.Колонки.Добавить("Страница");
	
	ТекущаяГруппа = Неопределено;
	ТекущийКод = Неопределено;
	ТекущаяСтраница = 0;
	
	ВыборкаЗаголовокСтрока = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	Пока ВыборкаЗаголовокСтрока.Следующий()Цикл           // обход "ТоварнаяГруппа"
		ОбработкаПрерыванияПользователя();
		//КодСклада = ВыборкаЗаголовокСтрока.КодСклада;
		ВыборкаТоварнаяГруппа = ВыборкаЗаголовокСтрока.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); // , "ТоварнаяГруппа"
		
		Пока ВыборкаТоварнаяГруппа.Следующий() Цикл        // обход Поставщик 
			ОбработкаПрерыванияПользователя();
			КодСклада = ВыборкаТоварнаяГруппа.КодСклада;
			
			ОбластьТоварнаяГруппа.Параметры.ТоварнаяГруппа =ВыборкаТоварнаяГруппа.ТоварнаяГруппа;
			
			//Добавим страницу...
			ПараметрыОтбора = Новый Структура;
			ПараметрыОтбора.Вставить("Код", КодСклада);
			ПараметрыОтбора.Вставить("Группа", ВыборкаТоварнаяГруппа.ТоварнаяГруппа);
			НайденныеСтроки = ТЗСтраницы.НайтиСтроки(ПараметрыОтбора);
			Если НайденныеСтроки.Количество() > 0 Тогда 
				НайденныеСтроки[0].Страница = НомерСтраницы;		
			Иначе
				НоваяСтрока = ТЗСтраницы.Добавить();
				НоваяСтрока.Код = КодСклада;
				НоваяСтрока.Группа = ВыборкаТоварнаяГруппа.ТоварнаяГруппа;
				НоваяСтрока.Страница = НомерСтраницы;
			КонецЕсли;
			////////////////////////////////////////////////
			
			ТабДокОснТаблица.Вывести(ОбластьТоварнаяГруппаКод);
			ТабДокОснТаблица.Присоединить(ОбластьТоварнаяГруппаСрок);
			ТабДокОснТаблица.Присоединить(ОбластьТоварнаяГруппаНДС);
			ТабДокОснТаблица.Присоединить(ОбластьТоварнаяГруппа,ВыборкаТоварнаяГруппа.Уровень());
			ТабДокОснТаблица.Присоединить(ОбластьТоварнаяГруппаКол);
			
			ВыборкаПоставщик = ВыборкаТоварнаяГруппа.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); // ОбходРезультатаЗапроса.ПоГруппировкам, "Поставщик"
			
			Пока ВыборкаПоставщик.Следующий() Цикл          // обход Склад
				ОбработкаПрерыванияПользователя();
				ОбластьПоставщик.Параметры.Поставщик = ВыборкаПоставщик.Поставщик;
				ТабДокОснТаблица.Вывести(ОбластьПоставщикКод);
				ТабДокОснТаблица.Присоединить(ОбластьПоставщикСрок);
				ТабДокОснТаблица.Присоединить(ОбластьПоставщикНДС);
				ТабДокОснТаблица.Присоединить(ОбластьПоставщик, ВыборкаПоставщик.Уровень());
				ТабДокОснТаблица.Присоединить(ОбластьПоставщикКол);
				
				//ВыборкаСклад = ВыборкаПоставщик.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Склад");
				ВыборкаНаименование = ВыборкаПоставщик.Выбрать(); // дальше нет группировок И правильней переименовать было бы ВыборкаНаименование в ВыборкаТовары
				
				Пока ВыборкаНаименование.Следующий() Цикл
					ОбработкаПрерыванияПользователя();
					ОбластьСклад.Параметры.Склад = ВыборкаНаименование.Склад;
					
					ТабДокОснТаблица.Вывести(ОбластьСкладКод);
					ТабДокОснТаблица.Присоединить(ОбластьСкладСрок);
					ТабДокОснТаблица.Присоединить(ОбластьСкладНДС);
					ТабДокОснТаблица.Присоединить(ОбластьСклад, ВыборкаНаименование.Уровень());
					ТабДокОснТаблица.Присоединить(ОбластьСкладКол);
					
					//ВыборкаНаименование = ВыборкаСклад.Выбрать();
					
					Имена = Новый Соответствие;
					//Пока ВыборкаНаименование.Следующий() Цикл
													
						ПозПробела = Найти(ВыборкаНаименование.НаименованиеТовара," ");
						
						Если ПозПробела = 0 тогда
							СтрокаДо = ВыборкаНаименование.НаименованиеТовара;
						Иначе
							СтрокаДо = Лев(ВыборкаНаименование.НаименованиеТовара,ПозПробела-1);    
						КонецЕсли;
						
						СписокСтрокСОдинаковымиНаименованиями = Имена.Получить(СтрокаДо);
						Если СписокСтрокСОдинаковымиНаименованиями = Неопределено Тогда
							СписокСтрокСОдинаковымиНаименованиями = Новый Массив;
						КонецЕсли;     
						
						СписокСтрокСОдинаковымиНаименованиями.Добавить(ВыборкаНаименование);
						Имена.Вставить(СтрокаДо,СписокСтрокСОдинаковымиНаименованиями);
						
						//КонецЦикла;         
				 КонецЦикла; // относится к // Пока ВыборкаСклад.Следующий() Цикл
					
					Для Каждого Элемент из Имена Цикл 
						Наименование = Элемент.Ключ;
						
						ОбластьТовар.Параметры.Товар = Наименование;
						
						ТабДокОснТаблица.Вывести(ОбластьТоварКод);
						ТабДокОснТаблица.Присоединить(ОбластьТоварСрок);
						ТабДокОснТаблица.Присоединить(ОбластьТоварНДС);
						ТабДокОснТаблица.Присоединить(ОбластьТовар);
						ТабДокОснТаблица.Присоединить(ОбластьТоварКол);
						
						Для Каждого ВыборкаСтрока из Элемент.Значение Цикл                     
							
							ОбработкаПрерыванияПользователя();
							
							ОбластьСтрокаКод = Макет.ПолучитьОбласть("Строка|Код");
							ОбластьСтрокаКод.Параметры.КодТовара = ВыборкаСтрока.КодТовара;    
							СрокОкончанияГодности = ДобавитьМесяц(ДатаКон, -2);
							ОбластьСтрокаСрок = Макет.ПолучитьОбласть("Строка|Срок");
							ОбластьСтрокаСрок.Параметры.Срок = ВыборкаСтрока.СрокРеализации;
							Попытка
								Если СрокОкончанияГодности >= ВыборкаСтрока.СрокРеализации Тогда 
									ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.Бирюзовый;
								Иначе 
									ОбластьСтрокаНДС.Область().ЦветФона = WebЦвета.ПризрачноБелый;
								КонецЕсли;
							Исключение
							КонецПопытки;
							
							ОбластьСтрокаНДС.Параметры.НДС    =  ВыборкаСтрока.НДС;
							ОбластьСтрока.Параметры.ШтрихКод = ВыборкаСтрока.ШтрихКод;
							
							ОбластьСтрока.Параметры.Товар = СокрЛП(ВыборкаСтрока.НаименованиеТовара);         
							ОбластьСтрока.Параметры.цена = ВыборкаСтрока.Цена;
							
							ОбластьСтрока.Параметры.опт    = ВыборкаСтрока.ОптоваяНадбавка;
							ОбластьСтрока.Параметры.колво = ВыборкаСтрока.КоличествоВГрузовомМесте;    
							ОбластьСтрокаКол = Макет.ПолучитьОбласть("Строка|Количество");                        
							Если ВыборкаСтрока.КоличествоМестНовый = 0 Тогда
								ОбластьСтрокаКол.Параметры.КолвоМест = ВыборкаСтрока.КоличествоВсего;
								ОбластьСтрокаКол.Область(1,1).Шрифт = Новый Шрифт(,,Истина,,Истина);
							Иначе 
								ОбластьСтрокаКол.Параметры.КолвоМест = ВыборкаСтрока.КоличествоМестНовый;
								ОбластьСтрокаКол.Область(1,1).Шрифт = Новый Шрифт(,,,,Ложь);
							КонецЕсли;
							МассивОбластей.Очистить();        
							МассивОбластей.Добавить(ОбластьСтрока);
							
							Если Не ТабДокОснТаблица.ПроверитьВывод(МассивОбластей) Тогда    
								ТабДокОснТаблица.ВывестиГоризонтальныйРазделительСтраниц();
								МассивОбластей.Очистить();
								НомерСтраницы = НомерСтраницы + 1;    
								ОбластьСтраница.Параметры.НомерСтраницы =НомерСтраницы; 
								ТабДокОснТаблица.Вывести(ОбластьСтраница);
								ТабДокОснТаблица.Вывести(ОбластьКартинка);
								ТабДокОснТаблица.Вывести(ОбластьШапка);
							КонецЕсли;    
							ТабДокОснТаблица.Вывести(ОбластьСтрокаКод);
							ТабДокОснТаблица.Присоединить(ОбластьСтрокаСрок);
							ТабДокОснТаблица.Присоединить(ОбластьСтрокаНДС);
							ТабДокОснТаблица.Присоединить(ОбластьСтрока);
							
							ТабДокОснТаблица.Присоединить(ОбластьСтрокаКол);
						КонецЦикла; 
					КонецЦикла; 
				КонецЦикла;
			КонецЦикла;    
		КонецЦикла;
//	КонецЦикла;
	
	ТЗСтраницы.Сортировать("Страница");
	Для Каждого Стр Из ТЗСтраницы Цикл
		ОбработкаПрерыванияПользователя();
		Если ЗначениеНеЗаполнено(Стр.Группа) Тогда
			Продолжить;
		КонецЕсли;
		ОбластьЗаголовокСтрока.Параметры.КодСклада = Стр.Код;
		ОбластьЗаголовокСтрока.Параметры.Наименование = Стр.Группа;
		ОбластьЗаголовокСтрока.Параметры.Страница = Стр.Страница;
		МассивОбластей.Очистить();        
		МассивОбластей.Добавить(ОбластьЗаголовокСтрока);
		Если Не ТабДокСодерж.ПроверитьВывод(МассивОбластей) Тогда    
			ТабДокСодерж.ВывестиГоризонтальныйРазделительСтраниц();
			МассивОбластей.Очистить();
			ТабДокСодерж.Вывести(ОбластьЗаголовок);
		КонецЕсли;    
		ТабДокСодерж.Вывести(ОбластьЗаголовокСтрока);
	КонецЦикла;
	Если ФлагВывестиРеквизиты Тогда
		ОбластьРеквизиты = Макет.ПолучитьОбласть("Реквизиты");
		ТабДокСодерж.Вывести(ОбластьРеквизиты);
	Иначе
		
	КонецЕсли;
	ТабДок.ЗакончитьАвтогруппировкуСтрок();
	
	ТабДок.Вывести(ТабДокСодерж);
	ТабДок.Вывести(ТабДокОснТаблица);
	
	ТабДок.ОриентацияСтраницы=ОриентацияСтраницы.Портрет;
	ТабДок.ОтображатьСетку = Истина; 
	ТабДок.АвтоМасштаб     = Истина;
	ТабДок.Показать();
	
КонецПроцедуры

Процедура ПриОткрытии()
			
Склад = Справочники.МестаХранения.ВыбратьИерархически(Справочники.МестаХранения.НайтиПоНаименованию("СКЛАД НЕПРОДОВОЛЬСТВЕННЫХ ТОВАРОВ"));	
	
ДатаКон = ТекущаяДата();	
	
КонецПроцедуры
Показать
28. Nastya-chajkovskaya 26.05.16 15:47 Сейчас в теме
(27) oleg21592, не изменилось
29. oleg21592 20 26.05.16 16:46 Сейчас в теме
вот смоделировал ситуацию.

&НаСервере
Процедура Команда1НаСервере()
	//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
	|	ЗаказКлиентаТовары.СтавкаНДС КАК СтавкаНДС,
	|	ЗаказКлиентаТовары.Номенклатура.Родитель КАК ТоварнаяГруппа,
	|	ЗаказКлиентаТовары.Номенклатура.Наименование КАК НаименованиеТовара,
	|	ЗаказКлиентаТовары.Склад КАК Склад,
	|	ЗаказКлиентаТовары.ВидЦены КАК Поставщик,
	|	СУММА(ЗаказКлиентаТовары.Количество) КАК Количество
	|ИЗ
	|	Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
	|ГДЕ
	|	ЗаказКлиентаТовары.Ссылка.Дата МЕЖДУ ДАТАВРЕМЯ(2016, 5, 1) И ДАТАВРЕМЯ(2016, 5, 20)
	|
	|СГРУППИРОВАТЬ ПО
	|	ЗаказКлиентаТовары.Номенклатура,
	|	ЗаказКлиентаТовары.СтавкаНДС,
	|	ЗаказКлиентаТовары.Номенклатура.Родитель,
	|	ЗаказКлиентаТовары.Номенклатура.Наименование,
	|	ЗаказКлиентаТовары.Склад,
	|	ЗаказКлиентаТовары.ВидЦены
	|ИТОГИ
	|	СУММА(Количество)
	|ПО
	|	ТоварнаяГруппа,
	|	Поставщик,
	|	Склад";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ИменаПолей="";
	Для каждого Поля Из РезультатЗапроса.Колонки Цикл
	  ИменаПолей=ИменаПолей + "," + Поля.Имя;
	КонецЦикла;
	  ИменаПолей=Сред(ИменаПолей,2);
	
	ВыборкаТоварнаяГруппа = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	Пока ВыборкаТоварнаяГруппа.Следующий() Цикл
		// Вставить обработку выборки ВыборкаТоварнаяГруппа
		
		ВыборкаПоставщик = ВыборкаТоварнаяГруппа.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		
		Пока ВыборкаПоставщик.Следующий() Цикл
			// Вставить обработку выборки ВыборкаПоставщик
			
			ВыборкаСклад = ВыборкаПоставщик.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			
			Пока ВыборкаСклад.Следующий() Цикл
				
				ВыборкаНаименование = ВыборкаСклад.Выбрать();
				
				Имена = Новый Соответствие;
				Пока ВыборкаНаименование.Следующий() Цикл
					
					ПозПробела = Найти(ВыборкаНаименование.НаименованиеТовара," ");
					
					Если ПозПробела = 0 тогда
						СтрокаДо = ВыборкаНаименование.НаименованиеТовара;
					Иначе
						СтрокаДо = Лев(ВыборкаНаименование.НаименованиеТовара,ПозПробела-1);    
					КонецЕсли;
					
					СписокСтрокСОдинаковымиНаименованиями = Имена.Получить(СтрокаДо);
					Если СписокСтрокСОдинаковымиНаименованиями = Неопределено Тогда
						СписокСтрокСОдинаковымиНаименованиями = Новый Массив;
					КонецЕсли;     
					
					СтрВыборки = Новый Структура(ИменаПолей);
					ЗаполнитьЗначенияСвойств(СтрВыборки,ВыборкаНаименование);
					
					СписокСтрокСОдинаковымиНаименованиями.Добавить(СтрВыборки);
					Имена.Вставить(СтрокаДо,СписокСтрокСОдинаковымиНаименованиями);
					
				КонецЦикла;
				
				Для Каждого Элемент из Имена Цикл 
					Наименование = Элемент.Ключ;
					Сообщить("===== "+Наименование+" =======");
					//ОбластьТовар.Параметры.Товар = Наименование;
					//
					//ТабДокОснТаблица.Вывести(ОбластьТоварКод);
					//ТабДокОснТаблица.Присоединить(ОбластьТоварСрок);
					//ТабДокОснТаблица.Присоединить(ОбластьТоварНДС);
					//ТабДокОснТаблица.Присоединить(ОбластьТовар);
					//ТабДокОснТаблица.Присоединить(ОбластьТоварКол);
					
					Для Каждого ВыборкаСтрока из Элемент.Значение Цикл                     
						Сообщить("      "+ВыборкаСтрока.НаименованиеТовара);	
						
					КонецЦикла;	
					
				КонецЦикла;	
				
				
			КонецЦикла;
		КонецЦикла;
	КонецЦикла;
	
	
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
	Команда1НаСервере();
КонецПроцедуры
Показать
30. oleg21592 20 26.05.16 16:57 Сейчас в теме
Тоесть исправить два места

первое
    Запрос.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон)+1);
    
    
    Результат = Запрос.Выполнить();
// чтоб не переписывать == добавить     
	ИменаПолей="";
	Для каждого Поля Из Результат.Колонки Цикл
	  ИменаПолей=ИменаПолей + "," + Поля.Имя;
	КонецЦикла;
	  ИменаПолей=Сред(ИменаПолей,2);
Показать


					СтрВыборки = Новый Структура(ИменаПолей);
					ЗаполнитьЗначенияСвойств(СтрВыборки,ВыборкаНаименование);
					
					СписокСтрокСОдинаковымиНаименованиями.Добавить(СтрВыборки);
					Имена.Вставить(СтрокаДо,СписокСтрокСОдинаковымиНаименованиями);
31. Nastya-chajkovskaya 27.05.16 13:42 Сейчас в теме
(30) oleg21592, спасибо огромное, сделала все и все отлично работает....по первоначальному коду (11) добавила эти поправки и все работает...
32. Nastya-chajkovskaya 27.05.16 13:43 Сейчас в теме
спасибо огромное тема закрыта
33. Nastya-chajkovskaya 27.05.16 13:43 Сейчас в теме
вопрос, как переслать вознаграждение?=)
34. Bukaska 140 27.05.16 14:39 Сейчас в теме
(33) Nastya-chajkovskaya, Утвердите под нужным постом: Это лучший ответ.
35. Nastya-chajkovskaya 27.05.16 14:43 Сейчас в теме
(34) Bukaska, если плюсом, то я нажала
Внимание! Не забывайте отмечать решение на ваш вопрос, если оно найдено. Это повысит ваш рейтинг на форуме.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

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

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

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

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