1. user1008893 07.11.18 07:57 Сейчас в теме

Выгрузка табдока в excel

Процедура ВыгрузитьШаблон(ВхСтрокаКонтрагент)
	
Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ВариантыИсполнения.Владелец КАК Номенклатура,
		|	ВариантыИсполнения.Ссылка КАК ВИ
		|ИЗ
		|	Справочник.ВариантыИсполнения КАК ВариантыИсполнения
		|ГДЕ
		|	ВариантыИсполнения.ПометкаУдаления = ЛОЖЬ
		|	И ВариантыИсполнения.Владелец.ПометкаУдаления = ЛОЖЬ
		|	И ВариантыИсполнения.Владелец В ИЕРАРХИИ(&Номенклатура)
		|	И ВариантыИсполнения.Активность
		|	И ВариантыИсполнения.Владелец.Активность
		|	И ВариантыИсполнения.ТипВИ = ЗНАЧЕНИЕ(Перечисление.ТипыВариантовИсполнения.Стандартный)
		|
		|СГРУППИРОВАТЬ ПО
		|	ВариантыИсполнения.Владелец,
		|	ВариантыИсполнения.Ссылка
		|
		|УПОРЯДОЧИТЬ ПО
		|	Номенклатура
		|ИТОГИ ПО
		|	Номенклатура,
		|	ВИ
		|АВТОУПОРЯДОЧИВАНИЕ";
  		 Запрос.УстановитьПараметр("Номенклатура", НоменклатураИерархия.ВыгрузитьЗначения());	
		
	   //ВыборкаДетали = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);    
    
    ТабДок = Новый ТабличныйДокумент;
        
    Макет = ПолучитьМакет("Макет");
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("Тело");
    ТабДок.Вывести(ОбластьШапка);
    ТабДок.НачатьАвтогруппировкуСтрок();
	ВыборкаДетали = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); 
   РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаДетали);
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
	       	    ТабДок.Показать();
конецПроцедуры
Показать

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

выводит пустые строки,не могу понять почему? Помогите пожалуйста...
Прикрепленные файлы:
Ответы
Избранное Подписка Сортировка: Древо
2. user1008893 07.11.18 08:04 Сейчас в теме
Все разобралась в макете слишком много полей взяла. Теперь другая проблема,выводит номенклатуру с одинаковыми вариантами исполнения,т.е. повторяющиеся строки. Как исправить?
3. EVKash 07.11.18 08:14 Сейчас в теме
(2) Не могут в этом запросе строки повторяться. Повторяется номенклатура, а вот варианты исполнения уникальны, хоть и могут иметь одинаковое наименование. Т.е. в справочние вариантов исполнения у вас дубли скорей всего. Можно попробовать вместо ссылки вывести и группировать по ВариантыИсполнения.Ссылка.Наименование, если правильное заполнение в справочнике не принципиально. Но не сработает, если наименования отличаются(например пробел в конце).
4. user1008893 07.11.18 08:38 Сейчас в теме
(3)все равно 2 выводит
Прикрепленные файлы:
5. d.batovskiy 07.11.18 08:56 Сейчас в теме
Уберите итоги по ВИ, у вас первая запись идет Итог, а вторая детальная запись
user1008893; +1 Ответить
8. user1008893 07.11.18 09:01 Сейчас в теме
9. user1008893 07.11.18 09:21 Сейчас в теме
Процедура ВыгрузитьШаблон(ВхСтрокаКонтрагент)
	
Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ВариантыИсполнения.Владелец КАК Номенклатура,
		|	ВариантыИсполнения.Ссылка КАК ВИ
		|ИЗ
		|	Справочник.ВариантыИсполнения КАК ВариантыИсполнения
		|ГДЕ
		|	ВариантыИсполнения.ПометкаУдаления = ЛОЖЬ
		|	И ВариантыИсполнения.Владелец.ПометкаУдаления = ЛОЖЬ
		|	И ВариантыИсполнения.Владелец В ИЕРАРХИИ(&Номенклатура)
		|	И ВариантыИсполнения.Активность
		|	И ВариантыИсполнения.Владелец.Активность
		|	И ВариантыИсполнения.ТипВИ = ЗНАЧЕНИЕ(Перечисление.ТипыВариантовИсполнения.Стандартный)
		|
		|СГРУППИРОВАТЬ ПО
		|	ВариантыИсполнения.Владелец,
		|	ВариантыИсполнения.Ссылка
		|ИТОГИ ПО
		|	Номенклатура ИЕРАРХИЯ
		|АВТОУПОРЯДОЧИВАНИЕ";
  		 Запрос.УстановитьПараметр("Номенклатура", НоменклатураИерархия.ВыгрузитьЗначения());	
		
	   ВыборкаДетали = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);    
    
    ТабДок = Новый ТабличныйДокумент;
        
    Макет = ПолучитьМакет("Макет");
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("Тело");
	струк=Новый Структура;
	струк.Вставить("Код",ВхСтрокаКонтрагент.Контрагент.Код);
	струк.Вставить("Наименование",ВхСтрокаКонтрагент.Контрагент.Наименование);	
	струк.Вставить("Адрес",ВхСтрокаКонтрагент.Контрагент.Адрес);
	ОбластьШапка.Параметры.Заполнить(струк);
	 ТабДок.Вывести(ОбластьШапка);

	    ТабДок.НачатьАвтогруппировкуСтрок();
	

   РекурсивныйВыводСтрок(ТабДок,ОбластьСтрока,ВыборкаДетали);
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
	       	    ТабДок.Показать();
    //ТабДок.Записать("C:\Users\User\Desktop\1.xls", ТипФайлаТабличногоДокумента.XLS); 

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

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

Смотрите (9),сделала вот так,но не могу вывести шк
6. VmvLer 07.11.18 08:56 Сейчас в теме
а что мешает просто сохранить в эксель?

я бы не парил мозг с выводом в макет кодом, а кинул бы запрос в СКД и после формирования табдок сохранил бы в экесель стандартно
singlych; +1 Ответить
7. d.batovskiy 07.11.18 08:58 Сейчас в теме
И еще вам писали сделать вместо

ВариантыИсполнения.Ссылка КАК ВИ

ВариантыИсполнения.Ссылка.Наименование КАК ВИ
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

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

Программист 1С
Москва
Полный день

Программист 1С
Видное
Полный день

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

Программист 1С
Ростов-на-Дону
зарплата до 120 000 руб.
Полный день