Имя: Пароль:
1C
 
Метод Delete из класса Worksheet завершен неверно
0 kubik_live
 
06.03.26
22:31
Коллеги, прошу помощи.
Баян наверное.
Что не так с настройками на сервере?

Создаю книгу 10 листов, заполняю листы. Все заполняется
Необходимо удалить пустой лист шаблона в конце.


&НаКлиенте
Процедура ЭкспортВФайл()  

................

ИмяПромежуточногоФайла_Пустой = ПолучитьИмяВременногоФайла("xlsx");


Попытка  
Состояние("Обработка файла MS Excel...");
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.Workbooks.Open(ИмяПромежуточногоФайла_Пустой);  
//Состояние("Обработка файла MS Excel...");
Исключение
Сообщить("Ошибка при открытии файла MS Excel!");
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;  
            
Лист0=Книга.WorkSheets(1);
Лист0.Name="TMP";
..........................
// Здесь добавление и заполнение листов...
..........................
Вот тут проблема:

//Книга.WorkSheets("TMP").Delete();
//
ЛистTMP=Книга.Sheets("TMP");
ЛистTMP.Delete();

.................

В файловой версии все штатно работает (причем оба варианта удаления (и который закомментен).

В клиент-серверной версии - беда:

Произошла исключительная ситуация (Microsoft Excel): Метод Delete из класса Worksheet завершен неверно

Я вангую, что-то в службах компонентов не донастроено...
1 Волшебник
 
06.03.26
22:33
оберните в Попытка...Исключение
2 kubik_live
 
06.03.26
22:36
(1) Оборачиваю - все нормально. Но лист шаблона остается. Хотелось бы его удалить.
В файловой все прокатывает.
3 Волшебник
 
06.03.26
22:36
(2) пусть остаётся
4 kubik_live
 
06.03.26
22:39
(3) Да некошерно как-то: файл потом в ГИС ЖКХ должен грузиться: там перечень листов как бы определен жестко...
5 Волшебник
 
06.03.26
22:39
(4) у них там тоже попытка
выдыхай, бобёр
6 kubik_live
 
06.03.26
22:42
Нечто было подобное с ВПФ с шаблонами  из Word (давно) - чтото поднастраивали на сервере (не помню :((( ).
На файловой все нормально тоже работало
7 Garykom
 
гуру
06.03.26
22:49
(0) Имхо оно там некий вопрос задает на сервере
Погугли нечто вроде "excel worksheet delete"

Найдешь
https://learn.microsoft.com/ru-ru/office/vba/api/excel.worksheet.delete

И там
Чтобы удалить лист без отображения диалогового окна, задайте для свойства Application.DisplayAlerts значение False.
8 Garykom
 
гуру
06.03.26
22:51
(7)+ Точнее оно пытается задать вопрос но упс окружения рабочего стола нетути и ошибка
MS Office это любит по ошибкам падать без окружения нужного
9 kubik_live
 
06.03.26
22:52
(7)

У меня это идет следующей строкой:

            Книга.Application.DisplayAlerts = False; // подавить сообщение

Может раньше надо? Щас попробую...
10 Garykom
 
гуру
06.03.26
22:53
(9) В самом начале надо!
Как только создал
Excel = Новый COMОбъект("Excel.Application");

Сразу делаешь
Excel.DisplayAlerts = False;
11 Garykom
 
гуру
06.03.26
22:54
(9) Это ты давишь чтобы при сохранении не спрашивало видать
А догадаться повыше перенести не додумались
12 kubik_live
 
06.03.26
23:03
(10) (11) Спасибо!
Сообщу о результате...
2 + 2 = 3.9999999999999999999999999999999...