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

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

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

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

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