Как в коде сделать группировку в Excel

1. user1979322 24.02.25 12:22 Сейчас в теме
Всем привет, написал код код который в обработке работал, но потому почему то, что то и как то сломалось. А именно эта строчка

	//// Группировка по вендору         
	Лист.Range("D1:D" + (ТекущаяСтрока - 1)).Sort(Лист.Range("D1"),2);   
	Лист.Outline.SummaryRow = 0;  
Что ни так не пойму
вот сам код, который копирует данные из справочника в файл Excel

	    // Создаем COM-объект Excel
    Excel = Новый COMОбъект("Excel.Application");
    Excel.Visible = Ложь; // Скрываем окно Excel
    Excel.DisplayAlerts = Ложь; // Отключаем предупреждения
    
    // Создаем новую книгу
    Книга = Excel.Workbooks.Add();
    Лист = Книга.Worksheets(1);
    Лист.Name = "Номенклатура";
    
    // Заголовки столбцов
    Лист.Cells(1, 1).Value = "Наименование";
    Лист.Cells(1, 2).Value = "Описание";
    Лист.Cells(1, 3).Value = "НаименованиеРасшириное";  
    Лист.Cells(1, 4).Value = "Производитель"; 
    Лист.Cells(1, 5).Value = "Артикул"; 
    Лист.Cells(1, 6).Value = "Размер"; 
    Лист.Cells(1, 7).Value = "Цена"; 
 
    
    ТаблНоменклатура=ПолучаюБД_Номенклатура(); 
    
    
    ТекущаяСтрока=2;	
    Для сч = 0 По ТаблНоменклатура.Количество()-1 Цикл
    	Строка = ТаблНоменклатура[сч]; 
    	   	
    	Лист.Cells(ТекущаяСтрока, 1).Value = Строка.Наименование;
        Лист.Cells(ТекущаяСтрока, 2).Value = Строка.Описание;
        Лист.Cells(ТекущаяСтрока, 3).Value = Строка.НаименованиеРасшириное;
    	Лист.Cells(ТекущаяСтрока, 4).Value = Строка.Производитель;
        Лист.Cells(ТекущаяСтрока, 5).Value = Строка.Артикул;
    	Лист.Cells(ТекущаяСтрока, 6).Value = Строка.Размер;
    	Лист.Cells(ТекущаяСтрока, 7).Value = Строка.Цена; 
    		
    	ТекущаяСтрока=ТекущаяСтрока+1; 
	КонецЦикла;	
    

	//// Группировка по вендору         
	Лист.Range("D1:D" + (ТекущаяСтрока - 1)).Sort(Лист.Range("D1"),2);   // ЗДЕСЬ ОШИБКА
	Лист.Outline.SummaryRow = 0;  
    
    // Сохраняем файл
        
    Книга.SaveAs(ПутьКФайлу);
    
    // Закрываем книгу и Excel
    Книга.Close();
    Excel.Quit();
    
    Сообщить("Выгрузка завершена. Файл сохранен по пути: " + ПутьКФайлу);
Показать


Ошибка при вызове метода контекста (Range)
{Обработка.КонфигОбработкаЗаполненияСправочника.Форма.Форма.Форма(303)}: Лист.Range("D1:D" + (ТекущаяСтрока - 1)).Sort(Лист.Range("D1"),2);
{Обработка.КонфигОбработкаЗаполненияСправочника.Форма.Форма.Форма(256)}: ЗаписьВЭксель(ИмяФайла)
по причине:
Произошла исключительная ситуация (0x800a03ec)
Произошла исключительная ситуация (0x800a03ec)
По теме из базы знаний
Найденные решения
2. SlavaKron 24.02.25 12:25 Сейчас в теме
(1) Если количество строк будет больше 1000, код Лист.Range("D1:D" + (ТекущаяСтрока - 1)) сломается, так как адрес ячейки будет содежать неразрывный пробел. Используйте XMLСтрока:
Лист.Range("D1:D" + XMLСтрока(ТекущаяСтрока - 1)).Sort(Лист.Range("D1"),2);
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 24.02.25 12:25 Сейчас в теме
(1) Если количество строк будет больше 1000, код Лист.Range("D1:D" + (ТекущаяСтрока - 1)) сломается, так как адрес ячейки будет содежать неразрывный пробел. Используйте XMLСтрока:
Лист.Range("D1:D" + XMLСтрока(ТекущаяСтрока - 1)).Sort(Лист.Range("D1"),2);
3. user1979322 24.02.25 12:54 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот