Имя: Пароль:
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) Спасибо!
Сообщу о результате...
13 Кирпич
 
08.03.26
13:35
21 век на дворе, а у них всё Excel.Application
14 Злопчинский
 
08.03.26
13:36
(13) а то! некоторые данные собирают и типа учет ведут в гуглотаблицах. и ничего. люди-то умнее в целом не становятся, а глупеют...
15 Кирпич
 
08.03.26
13:54
(14)да пускай в гуглотаблицах ведут что хотят. Excel штука удобная. Но Excel.Application да еще и на сервере это гений1с-стайл
16 craxx
 
08.03.26
16:00
(12) Есть же специальные ВК для создания xlsx без использования Excel.Application.
И кстати, по работе с листами
https://infostart.ru/1c/articles/665512/
17 Garykom
 
гуру
08.03.26
16:16
(16) А они умеют xls, xlsx, doc, docx и т.д. в формат pdf экспортировать?
18 Кирпич
 
08.03.26
16:56
(17) 1C же вроде умеет
19 Chameleon1980
 
08.03.26
16:58
(18) и даже в листы (16) может
20 Garykom
 
гуру
08.03.26
17:36
(18) doc/docx и прочие форматы 1С умеет???
И ppt/pptx?
21 Кирпич
 
08.03.26
17:38
(20) да ты задрал. задача - записать xlsx, а не записать xls, xlsx, doc, docx и ppt/pptx в формат pdf
22 Garykom
 
гуру
08.03.26
18:30
(21) Ну запиши xlsx с формулами и сводными таблицами сразу и диаграммами...
23 Кирпич
 
08.03.26
18:43
(22) А надо?
24 Garykom
 
гуру
08.03.26
19:37
(23) Когда не нада можно просто ТабличныйДокумент.Записать();
Но очень часто без Новый COMОбъект("Excel(Word|PowerPoint).Application") никак
25 Garykom
 
гуру
08.03.26
19:39
(24)+ Причем лучше не на сервере где сервер 1С крутится это делать
А поднять отдельный сервер/виртуалку и там через микросервис работать с MS Office
С сервера 1С общаться с микросервисом по http
26 Garykom
 
гуру
08.03.26
19:40
(25)+ Потому что сервер 1С может крутиться на Линуксе или просто там нет MS Office и хрен поставишь
А работать из сервера 1С с офисом надо
27 craxx
 
08.03.26
23:28
(22) xlsx (а также docx и pptx) это zip-архив с xml и вложенными медиафайлами.
По формулам там прямо на Инфостарте гуглится готовый пример работы
28 Garykom
 
гуру
09.03.26
00:27
(27) Не смешно
Приходилось заниматься подобным извратом, но это сильно ограниченное применение
Например заполнение по шаблонам или нечто вроде

Сложность реализации и надежность такого (что документ откроется и все не поедет нафик) далеки от простоты через COM/OLE с MS Office
29 timurhv
 
09.03.26
00:40
(4) какой-то ПЗДЦ, че серъезно? 26 год на дворе, грузят Excel - файлы в интеграции? o_O
>Да некошерно как-то: файл потом в ГИС ЖКХ должен грузиться: там перечень листов как бы определен жестко...
30 timurhv
 
09.03.26
00:45
(27) я это УГ с инфостарта разбирал, потом полгода доводил до ума по своему проекту и не скажу что 100% возможностей Excel там достигнуто, но 95% - да, реализовал.
Excel = Word^50 по сложности, поэтому в БСП Excel очень нескоро увидим сохранение.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн