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С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

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

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

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