1. user1008893 06.11.18 08:06 Сейчас в теме

Поле объекта не обнаружено (Selection)

Переписываю обработку по выгрузке данных в excel. Но почему то ругается на это
Поле объекта не обнаружено (Selection) ВхЛист.Selection.Rows.Group();
не могу понять где ошибка.Помогите пожалуйста....
Процедура ВывестиСтроку(ВхВыборка,Итератор,ВхЛист)
	   				Если ВхВыборка.Номенклатура.ЭтоГруппа Тогда	  
		номерстр=8;	
		ВхЛист.Cells(Итератор,2).Value = Строка(Итератор);
		ВхЛист.Cells(Итератор,3).Value = Строка(СокрЛП(ВхВыборка.Номенклатура.Код));	
		ВхЛист.Cells(Итератор,4).Value = Строка(СокрЛП(ВхВыборка.Номенклатура.Наименование));
		ВхЛист.Cells(Итератор,5).Value = "";
		ВхЛист.Cells(Итератор,6).Value = "";
		ВхЛист.Cells(Итератор,2).Font.Bold = 1;
		ВхЛист.Cells(Итератор,3).Font.Bold = 1;
		ВхЛист.Cells(Итератор,4).Font.Bold = 1;
		ВхЛист.Cells(Итератор,5).Font.Bold = 1;
		ВхЛист.Cells(Итератор,6).Font.Bold = 1;
		Итератор = Итератор + 1;
				ВыборкаНоменклатура = ВхВыборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		
		Если ВыборкаНоменклатура.Следующий() Тогда
			ВывестиСтроку(ВыборкаНоменклатура,Итератор,ВхЛист);
		КонецЕсли;
		
	
ВхЛист.Range(ВхЛист.Cells(номерстр,2), ВхЛист.Cells(номерстр,2)).Select(); //Выделение 
ВхЛист.Selection.Rows.Group();

	Иначе	
		
		Если глПустоеЗначение(ВхВыборка.ВИ) Тогда
			
			ВыборкаНоменклатура = ВхВыборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			
			Если ВыборкаНоменклатура.Следующий() Тогда
				ВывестиСтроку(ВыборкаНоменклатура,Итератор,ВхЛист);
			КонецЕсли;
			 
			 		Иначе	
			
			_Дополнительно = Новый Структура;
			_Дополнительно.Вставить("ВариантИсполнения",ВхВыборка.ВИ);
			_Дополнительно.Вставить("ЕдИзм",ВхВыборка.Номенклатура.БазоваяЕдИзм);
			_ШК = глСформироватьВнутреннийШтрихкод(ВхВыборка.Номенклатура,_Дополнительно);
			
			ВхЛист.Cells(Итератор,2).Value = Итератор;
			ВхЛист.Cells(Итератор,3).Value = _ШК;	
			ВхЛист.Cells(Итератор,4).Value = Строка(СокрЛП(ВхВыборка.Номенклатура.Наименование));
			ВхЛист.Cells(Итератор,5).Value = Строка(СокрЛП(ВхВыборка.ВИ.Наименование));
			ВхЛист.Cells(Итератор,6).Value = "";
			Итератор = Итератор + 1;
			
			Пока ВхВыборка.Следующий() Цикл
				
				_Дополнительно = Новый Структура;
				_Дополнительно.Вставить("ВариантИсполнения",ВхВыборка.ВИ);
				_Дополнительно.Вставить("ЕдИзм",ВхВыборка.Номенклатура.БазоваяЕдИзм);
				_ШК = глСформироватьВнутреннийШтрихкод(ВхВыборка.Номенклатура,_Дополнительно);
				
				ВхЛист.Cells(Итератор,2).Value = Итератор;
				ВхЛист.Cells(Итератор,3).Value = _ШК;	
				ВхЛист.Cells(Итератор,4).Value = Строка(СокрЛП(ВхВыборка.Номенклатура.Наименование));
				ВхЛист.Cells(Итератор,5).Value = Строка(СокрЛП(ВхВыборка.ВИ.Наименование));
				ВхЛист.Cells(Итератор,6).Value = "";
				Итератор = Итератор + 1;
				 
			КонецЦикла;
			
		КонецЕсли;
			КонецЕсли;
	
	 КонецПроцедуры
Показать
Ответы
Избранное Подписка Сортировка: Древо
2. Kovekh 06.11.18 08:11 Сейчас в теме
Попробуйте ВхЛист.Application.Selection

Это зависит от того, что у вас передаётся в вашу процедуру в параметр ВхЛист. Если ComОбъект, тогда просто ВхЛист.Selection, а если сам документ уже, то ВхЛист.Application.Selection.
Могу быть не прав, тогда заранее извиняюсь)
user1008893; +1 Ответить
3. user1008893 06.11.18 08:14 Сейчас в теме
(2)Спасибо,сработало. Только группировка перевернутая почему то
Прикрепленные файлы:
4. Kovekh 06.11.18 08:23 Сейчас в теме
(3)
Почему же? Она не перевёрнутая, excel так и группирует. Откройте новый документ чистый, сгруппируйте несколько строк и увидите, что всё точно так же)
user1008893; +1 Ответить
5. user1008893 06.11.18 08:28 Сейчас в теме
(4)ой,точно. А я что то не посмотрела. Спасибо)
Вот еще не могу сообразить как узнать строку где заканчивается группировка. Например,чтобы от 10 до конца тоже сгруппировать
Прикрепленные файлы:
6. Kovekh 06.11.18 08:38 Сейчас в теме
(5)
ВхЛист.Range(ВхЛист.Cells(номерстр,2), ВхЛист.Cells(номерстр,2)).Select(); //Выделение

Вот эту часть внимательно почитайте) Вы же здесь явно говорите, что в группировке у вас будут строки, начиная с номерстр и заканчивая номерстр. Отсюда следует, что выделена будет одна строка. Может, здесь всё же надо выделять первую строку в начале и последнюю строку в конце?
7. user1008893 06.11.18 08:40 Сейчас в теме
(6)это то я поняла,вот как последнюю строку то найти?
8. Kovekh 06.11.18 08:47 Сейчас в теме
(7)
Для ВыборкаНоменклатура, скорее всего, есть метод Количество(), который вернёт Вам количество выбранных строк, которые Вы и выводите в Excel, судя по всему. Если к этому прибавить число строк, которые Вы отступаете до вывода строк, то получится как раз последняя строка)
user1008893; +1 Ответить
9. user1008893 06.11.18 08:49 Сейчас в теме
10. user1008893 06.11.18 09:16 Сейчас в теме
(8) вот так получилось.
Процедура ВыгрузитьШаблон(ВхСтрокаКонтрагент)
	ActiveDOC    = ПолучитьМакет("ШаблонЗаказа");
	COMobject    = ActiveDOC.Получить();
		  
	Лист         = COMobject.WorkSheets(1);

	Лист.Cells(2,4).Value = СокрЛП(ВхСтрокаКонтрагент.Контрагент.Код);
	Лист.Cells(3,4).Value = СокрЛП(ВхСтрокаКонтрагент.Контрагент.Наименование);	
	Лист.Cells(4,4).Value = СокрЛП(ВхСтрокаКонтрагент.Контрагент.Адрес);
	
	COMobject.Application.Visible = 1;
	COMobject.Windows(1).Visible = 1;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ВариантыИсполнения.Владелец КАК Номенклатура,
		|	ВариантыИсполнения.Ссылка КАК ВИ
		|ИЗ
		|	Справочник.ВариантыИсполнения КАК ВариантыИсполнения
		|ГДЕ
		|	ВариантыИсполнения.ПометкаУдаления = ЛОЖЬ
		|	И ВариантыИсполнения.Владелец.ПометкаУдаления = ЛОЖЬ
		|	И ВариантыИсполнения.Владелец В ИЕРАРХИИ(&Номенклатура)
		|	И ВариантыИсполнения.Активность
		|	И ВариантыИсполнения.Владелец.Активность
		|	И ВариантыИсполнения.ТипВИ = ЗНАЧЕНИЕ(Перечисление.ТипыВариантовИсполнения.Стандартный) 
		|ИТОГИ ПО
		|	Номенклатура ИЕРАРХИЯ,
		|	ВИ";
	
	Запрос.УстановитьПараметр("Номенклатура", НоменклатураИерархия.ВыгрузитьЗначения());	
	РезультатЗапроса = Запрос.Выполнить();	
		ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	  колво=ВыборкаНоменклатура.Количество()+8;
	_й=9;
		Пока ВыборкаНоменклатура.Следующий() Цикл
		
		ВывестиСтроку(ВыборкаНоменклатура,_й,Лист,колво);
		
	КонецЦикла;
		   	  
	  
	COMobject.SaveAs(КаталогШаблонов+"\"+РегистрыСведений.ВнешниеКоды.ПолучитьВнешнийКодПоСсылке(ВхСтрокаКонтрагент.Контрагент,"МебельМосква")+"_ШаблонЗаказа.xlsx");

	// Выйти из Excel.
	COMobject.Application.Quit();


Сообщить(Строка(колво)+"   колво");


КонецПроцедуры

Процедура ВывестиСтроку(ВхВыборка,Итератор,ВхЛист,колво)
	 номерстр =8;
	Если ВхВыборка.Номенклатура.ЭтоГруппа Тогда	  
		 номерстр =номерстр+1;
		ВхЛист.Cells(Итератор,2).Value = Строка(Итератор);
		ВхЛист.Cells(Итератор,3).Value = Строка(СокрЛП(ВхВыборка.Номенклатура.Код));	
		ВхЛист.Cells(Итератор,4).Value = Строка(СокрЛП(ВхВыборка.Номенклатура.Наименование));
		ВхЛист.Cells(Итератор,5).Value = "";
		ВхЛист.Cells(Итератор,6).Value = "";
		ВхЛист.Cells(Итератор,2).Font.Bold = 1;
		ВхЛист.Cells(Итератор,3).Font.Bold = 1;
		ВхЛист.Cells(Итератор,4).Font.Bold = 1;
		ВхЛист.Cells(Итератор,5).Font.Bold = 1;
		ВхЛист.Cells(Итератор,6).Font.Bold = 1;
		Итератор = Итератор + 1;
				ВыборкаНоменклатура = ВхВыборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		      		Если ВыборкаНоменклатура.Следующий() Тогда
			ВывестиСтроку(ВыборкаНоменклатура,Итератор,ВхЛист,колво);
		КонецЕсли;
ВхЛист.Range(ВхЛист.Cells(номерстр,2), ВхЛист.Cells(колво,2)).Select(); //Выделение 
ВхЛист.Application.Selection.Rows.Group();
Сообщить(Строка(номерстр)+"   первая");

	Иначе	
		
		Если глПустоеЗначение(ВхВыборка.ВИ) Тогда
			
			ВыборкаНоменклатура = ВхВыборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			
			Если ВыборкаНоменклатура.Следующий() Тогда
				ВывестиСтроку(ВыборкаНоменклатура,Итератор,ВхЛист,колво);
			КонецЕсли;
			 
			 		Иначе	
			
			_Дополнительно = Новый Структура;
			_Дополнительно.Вставить("ВариантИсполнения",ВхВыборка.ВИ);
			_Дополнительно.Вставить("ЕдИзм",ВхВыборка.Номенклатура.БазоваяЕдИзм);
			_ШК = глСформироватьВнутреннийШтрихкод(ВхВыборка.Номенклатура,_Дополнительно);
			
			ВхЛист.Cells(Итератор,2).Value = Итератор;
			ВхЛист.Cells(Итератор,3).Value = _ШК;	
			ВхЛист.Cells(Итератор,4).Value = Строка(СокрЛП(ВхВыборка.Номенклатура.Наименование));
			ВхЛист.Cells(Итератор,5).Value = Строка(СокрЛП(ВхВыборка.ВИ.Наименование));
			ВхЛист.Cells(Итератор,6).Value = "";
			Итератор = Итератор + 1;
			
			Пока ВхВыборка.Следующий() Цикл
				
				_Дополнительно = Новый Структура;
				_Дополнительно.Вставить("ВариантИсполнения",ВхВыборка.ВИ);
				_Дополнительно.Вставить("ЕдИзм",ВхВыборка.Номенклатура.БазоваяЕдИзм);
				_ШК = глСформироватьВнутреннийШтрихкод(ВхВыборка.Номенклатура,_Дополнительно);
				
				ВхЛист.Cells(Итератор,2).Value = Итератор;
				ВхЛист.Cells(Итератор,3).Value = _ШК;	
				ВхЛист.Cells(Итератор,4).Value = Строка(СокрЛП(ВхВыборка.Номенклатура.Наименование));
				ВхЛист.Cells(Итератор,5).Value = Строка(СокрЛП(ВхВыборка.ВИ.Наименование));
				ВхЛист.Cells(Итератор,6).Value = "";
				Итератор = Итератор + 1;
				 
			КонецЦикла;
			
		КонецЕсли;
			КонецЕсли;
Показать
Прикрепленные файлы:
11. Kovekh 06.11.18 09:32 Сейчас в теме
(10)
Ну, по сути, про что-то подобное я и говорил)
12. user1008893 06.11.18 09:35 Сейчас в теме
(11)только колво строк получаемых из запроса неправильное,вот пытаюсь исправить
13. user1008893 06.11.18 10:58 Сейчас в теме
что то не получается правильное кол-во получить
14. Kovekh 06.11.18 11:28 Сейчас в теме
(13)
Больше получается, чем нужно?
15. user1008893 06.11.18 11:44 Сейчас в теме
16. user1008893 06.11.18 11:48 Сейчас в теме
(14)Процедура ВыгрузитьШаблон(ВхСтрокаКонтрагент)
ActiveDOC = ПолучитьМакет("ШаблонЗаказа");
COMobject = ActiveDOC.Получить();

Лист = COMobject.WorkSheets(1);

Лист.Cells(2,4).Value = СокрЛП(ВхСтрокаКонтрагент.Контрагент.Код);
Лист.Cells(3,4).Value = СокрЛП(ВхСтрокаКонтрагент.Контрагент.Наименование);
Лист.Cells(4,4).Value = СокрЛП(ВхСтрокаКонтрагент.Контрагент.Адрес);

COMobject.Application.Visible = 1;
COMobject.Windows(1).Visible = 1;

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

ВывестиСтроку(ВыборкаНоменклатура,_й,Лист,колво);

КонецЦикла;


COMobject.SaveAs(КаталогШаблонов+"\"+РегистрыСведений.ВнешниеКоды.ПолучитьВнешнийКодПоСсылке(ВхСтрокаКонтрагент.Контрагент,"МебельМосква")+"_ШаблонЗаказа.xlsx");

// Выйти из Excel.
COMobject.Application.Quit();
//Сообщить(Строка(колво)+" колво");
//Сообщить(Строка(кол)+" колво");
КонецПроцедуры
Прикрепленные файлы:
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

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

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

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

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

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