Переписываю обработку по выгрузке данных в excel. Но почему то ругается на это
Поле объекта не обнаружено (Selection) ВхЛист.Selection.Rows.Group();
не могу понять где ошибка.Помогите пожалуйста....
Поле объекта не обнаружено (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;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Попробуйте ВхЛист.Application.Selection
Это зависит от того, что у вас передаётся в вашу процедуру в параметр ВхЛист. Если ComОбъект, тогда просто ВхЛист.Selection, а если сам документ уже, то ВхЛист.Application.Selection.
Могу быть не прав, тогда заранее извиняюсь)
Это зависит от того, что у вас передаётся в вашу процедуру в параметр ВхЛист. Если ComОбъект, тогда просто ВхЛист.Selection, а если сам документ уже, то ВхЛист.Application.Selection.
Могу быть не прав, тогда заранее извиняюсь)
(5)
Вот эту часть внимательно почитайте) Вы же здесь явно говорите, что в группировке у вас будут строки, начиная с номерстр и заканчивая номерстр. Отсюда следует, что выделена будет одна строка. Может, здесь всё же надо выделять первую строку в начале и последнюю строку в конце?
ВхЛист.Range(ВхЛист.Cells(номерстр,2), ВхЛист.Cells(номерстр,2)).Select(); //Выделение
Вот эту часть внимательно почитайте) Вы же здесь явно говорите, что в группировке у вас будут строки, начиная с номерстр и заканчивая номерстр. Отсюда следует, что выделена будет одна строка. Может, здесь всё же надо выделять первую строку в начале и последнюю строку в конце?
(7)
Для ВыборкаНоменклатура, скорее всего, есть метод Количество(), который вернёт Вам количество выбранных строк, которые Вы и выводите в Excel, судя по всему. Если к этому прибавить число строк, которые Вы отступаете до вывода строк, то получится как раз последняя строка)
Для ВыборкаНоменклатура, скорее всего, есть метод Количество(), который вернёт Вам количество выбранных строк, которые Вы и выводите в Excel, судя по всему. Если к этому прибавить число строк, которые Вы отступаете до вывода строк, то получится как раз последняя строка)
(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;
КонецЦикла;
КонецЕсли;
КонецЕсли;
ПоказатьПрикрепленные файлы:
(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();
//Сообщить(Строка(колво)+" колво");
//Сообщить(Строка(кол)+" колво");
КонецПроцедуры
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();
//Сообщить(Строка(колво)+" колво");
//Сообщить(Строка(кол)+" колво");
КонецПроцедуры
Прикрепленные файлы:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот