Сохранить табличный документ по умолчанию в Excel

01.10.09

Интеграция - Загрузка и выгрузка в Excel

Очень часто клиенты просили меня сделать им так, чтобы по нажатию элемента меню "Сохранить как" открывался диалог сохранения файла, в котором уже был бы выбран тип файла "ТаблицаExcel (*.xls)".

Посидел, подумал и решил немножко по-другому сделать.

Добавил в глобальный модуль функцию

Функция глСохранитьФайлExcel() Экспорт
    Перем ТекКонтекст;
    Перем ИмяФайла;
    Перем ИмяКаталога;
   
     ЗагрузитьВнешнююКомпоненту("FormEx.dll");
     глСервис    = СоздатьОбъект("Сервис");

     //получаем контекст активной формы
     Если глСервис.АктивныйКонтекст(ТекКонтекст) = 1 Тогда

        //проверяем является ли форма таблицой
        Если ТипЗначенияСтр(ТекКонтекст) = "Таблица" Тогда

            //активная таблица будет всегда первой в списке таблиц
            глСервис.СписокТаблиц().ПолучитьЗначение(1, ИмяФайла);

            ИмяФайла    = СокрЛП(СтрЗаменить(ИмяФайла, "*", ""));

            ИмяФайла    = СтрЗаменить(ИмяФайла, ":", "-");


          
  Если ФС.ВыбратьФайл(1, ИмяФайла, ИмяКаталога, "Сохранить как", "Таблицы Excel (*.xls)|*.xls") = 1 Тогда
                ТекКонтекст.Записать(ИмяКаталога + ИмяФайла, 1);
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
   
КонецФункции //глСохранитьФайлExcel()

Добавил в меню "Файл" элемент "Сохранить в Excel"(Объект - Задача, Команда - Задача.Выполнить, Формула - глСохранитьФайлExcel()) - и все, клиент доволен.

Для работы необходим formex.dll (можно взять по адресу dorex.ru)


См. также

Загрузка банковской выписки для 1С 7.7 любой конфигурации

Банковские операции Загрузка и выгрузка в Excel Платформа 1С v7.7 Конфигурации 1cv7 Россия Бухгалтерский учет Платные (руб)

Решение предоставляет комплексную загрузку банковской выписки из CSV, XLS, TXT файла в 1С 7.7 любой конфигурации. Позволяет создавать документы выбранного вида, например "Строка выписки банка (приход/расход)", или многострочный табличный документ, например Выписка, для каждой операции из загружаемого файла банковской выписки. Загружает реквизиты документа, а также создаёт контрагентов и другие необходимые элементы справочников.

3588 руб.

29.07.2021    20601    13    22    

14

Загрузка документов в 1С (7.7) из табличных файлов Excel,OpenOffice,1C,DBF,TXT (обработка)

Файловый обмен (TXT, XML, DBF), FTP Загрузка и выгрузка в Excel Платформа 1С v7.7 Конфигурации 1cv7 Платные (руб)

Обработка решает поставленную задачу по вводу документов, а кроме того обладает важной функцией: настраивается на ассортимент конкретного поставщика, запоминая соответствие между его номенклатурой и «нашей». Т.е. фактически – является самообучающейся системой ввода накладных. У разных поставщиков могут быть накладные различного типа, с разным количеством полей, поэтому для каждого из них может быть сохранена своя собственная настройка диалоговой формы так, что любая поступающая накладная может быть обработана. По отношению к программе "1С:Предприятие 7.7" данное решение является внешними файлами. Для использования данного продукта не требуется вносить изменения в алгоритм существующих программ или используемых конфигураций.

2400 руб.

10.12.2009    76459    58    93    

68

Выгрузка товаров из 1С:Предприятия 7.7 "Торговля и Склад 9.2" в файл CSV для онлайн кассы МТС

Кассовые операции Оптовая торговля Розничная торговля Загрузка и выгрузка в Excel Оперативный учет 7.7 1С:Торговля и склад 7.7 Бухгалтерский учет Управленческий учет Абонемент ($m)

Данная обработка предназначена для выгрузки файла из программы 1С: Предприятие 7.7 Конфигурации «Торговля и Склад 9.2» в файл CSV для загрузки в кассу МТС. Тестирование проводилось на релизах 937 и 998. В теории должна работать на всех типовых релизах конфигурации «Торговля и Склад 9.2».

1 стартмани

07.02.2021    9932    5    Kuzya_brаtsk    1    

7

Выгрузка товаров из 7.7 для загрузки в личный кабинет АТОЛ для ньюджеров 91Ф, 92Ф и подобных

Оптовая торговля Загрузка и выгрузка в Excel Платформа 1С v7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Бухгалтерский учет Управленческий учет Абонемент ($m)

Выполняет выгрузку товаров (всех, только с признаком в прайсе, только из указанной папочки) с гибкой настройкой выгружаемых данных. Формируется файл в формате XLSX подходящий для прямой удаленной загрузки в кассовый аппарат АТОЛ 91Ф/92Ф и им подобных, имеющих управление через Личный кабинет АТОЛ (lk.atol.ru).

1 стартмани

31.01.2021    8156    2    &-rey    1    

3

Загрузка данных из файла XLS в Штрих-М Торговое предприятие 4.17.01

Розничная торговля Загрузка и выгрузка в Excel Платформа 1С v7.7 Конфигурации 1cv7 Розничная и сетевая торговля (FMCG) Россия Бухгалтерский учет Абонемент ($m)

Заполнение справочника номенклатуры и документа приходной накладной. Будет полезно для товароведов или менеджеров.

5 стартмани

20.02.2020    11220    0    Ignatov_mu    6    

3

Дополнение реквизитов номенклатуры из Эксель в 7.7. Групповое редактирование реквизитов номенклатуры 7.7 в списке

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Платформа 1С v7.7 1С:Комплексная 7.7 Управленческий учет Абонемент ($m)

Обработки группового дополнения данных о номенклатуре. Ввод веса и объема существующих товаров вручную в форму таблицы значений и затем запись в справочник Номенклатуры и Единиц. Закачка весов и объемов существующих товаров из Эксель в справочник Номенклатуры и Единиц. Загрузка внешних кодов товаров из Эксель в справочник Номенклатуры. Редактирование внешних кодов товаров в форме списка. Дозаполнение реквизитов существующих товаров из Эксель (ключевые поля - штрихкод, наименование, внешний код).

1 стартмани

11.10.2019    11900    2    ksnik    2    

2

Оптовая торговля. Обработки дистрибьютора для обмена с поставщиками и покупателями через Excel в 1С 7.7

Оптовая торговля Загрузка и выгрузка в Excel Платформа 1С v7.7 Конфигурации 1cv7 Оптовая торговля, дистрибуция, логистика Управленческий учет Абонемент ($m)

В данной публикации приведены примеры обработок обмена дистрибьютора с поставщиками и покупателями через Эксель. Создание товаров-новинок. Автоматическое формирование Заказа поставщику по продажам. Заполнение бланка заказа поставщику. Загрузка приходной накладной от поставщика. Загрузка любых справочников из Эксель, например товарных сертификатов. Выгрузка прайслиста в бланк заказа (создание бланка заказа). Загрузка заявки покупателя из произвольного файла Эксель. Загрузка заявки покупателя из бланка заказа.. Для работы требуется установленный MS Excel.

1 стартмани

08.09.2019    16242    10    ksnik    2    

3

Загрузка адресов произвольного формата (КЛАДР и нестандартных "грязных" адресов) в ФИАС современных конфигураций из 1С 7.7

Загрузка и выгрузка в Excel Обмен между базами 1C Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 1С:ERP Управление предприятием 2 Абонемент ($m)

Описание технологии загрузки любых адресов из 1С 7.7 с разложением по ФИАС в современные конфигурации 1C 8.3 на примере ERP. Предлагаемый способ просто чудо, он гарантирует результат, он очень простой и качественный! Моя обработка является синтаксическим анализатором, который подставляет в строку грязного адреса выражение "Дом №" и "Корпус", благодаря чему грязные адреса 7.7 сами очень хорошо раскладываются по значимым полям ФИАС - заполняется область, город, улица, дом, корпус.. все раскладывается само с помощью встроенного механизма современных конфигураций 1С 8.3, который написали сами сотрудники фирмы 1С!

1 стартмани

16.08.2019    19262    17    ksnik    12    

8
Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Pari 28.09.09 22:46 Сейчас в теме
Есть штатный метод таблиц Записать(<ИмяФайла>,<ТипФайла>). Возможно есть причины, по которым в данном конкретном случае штатный метод хуже (или вообще не работает), а FormEx соответственно лучше. Но тогда хотелось бы увидеть пояснения на этот счет в описании.
agentesecreto; +1 Ответить
2. CheBurator 3119 29.09.09 02:14 Сейчас в теме
(1) штатный метод Записать() жестоко тупит на больших таблицах - причины этого известны и описаны. Решений всяких море, например, практически аналогичное сабжевому, но с исправлением диких тормозов при сохранении: http://www.infostart.ru/public/14186/
.
оптимальным же мне видится использование в сабже и упомянутой ссылке решения от Йоксель... быстро, качественно, плюс куча допвозможностей по сохранению разбиения страниц, параметров печати и пррочая...
3. dagroma 116 29.09.09 17:30 Сейчас в теме
Задачи оптимизировать сохранение не было. Просто пользователю хотелось меньше нажимать кнопки мыши.
(1)Я не знаю как можно обратиться к уже открытой таблице штатными методами, поэтому использовал FormEx.
(2)А Йоксель я гляну.
11. GSoft 2235 01.10.09 10:05 Сейчас в теме
а я пользуюсь вот такой процедурой

//_____________________________________________________________________________
//Функция открывает таблицу в MS Excel
//Таблица			- печатная форма 1С
//ИмяЛиста			- имя, которое будет присвоено листу книги MS Excel (если не задано, то остается "Sheet1")
//ОтображатьЯрлычки	- показывать/скрыть ярлычки листов в MS Excel
//ОтображатьСетку	- показывать/скрыть линии сетки в MS Excel
//УдалитьСтроки		- позволяет удалить указанное количество верхних строк таблицы
//УдалитьСтроки		- позволяет удалить указанное количество левых столбцов таблицы
Функция глОткрытьТаблицуВExcel(Таблица, ИмяЛиста = "", ОтображатьЯрлычки = 1, ОтображатьСетку = 1, УдалитьСтроки = 0, УдалитьСтолбцы = 0) Экспорт
	Перем Excel, ExcelWB, ExcelSh, ExcelPS, ИмяФайла, Рез, Зн, Зн1;
	
	Если ТипЗначенияСтр(Таблица) <> "Таблица" Тогда 
		Возврат 0; 
	КонецЕсли;    
	
	Попытка 
		Excel = СоздатьОбъект("Excel.Application") 
	Исключение 
		Сообщить("Не удалось открыть MS Excel","!"); 
		Возврат 0; 
	КонецПопытки;
	
	Пока 1=1 Цикл
		//Подберем уникальное имя для временного файла
		ИмяФайла = КаталогВременныхФайлов() + "1c" + СтрЗаменить(ТекущееВремя(), ":", "");
		Если (ФС.СуществуетФайл(ИмяФайла+".tmp") = 1) или (ФС.СуществуетФайл(ИмяФайла+".xls") = 1) Тогда 
			ФС.УдалитьФайл(ИмяФайла+".tmp"); 
			ФС.УдалитьФайл(ИмяФайла+".xls") 
		Иначе 
			Прервать; 
		КонецЕсли
	КонецЦикла;
	
	Таблица.Записать(ИмяФайла+".tmp", "XLS");
	
	Если ФС.СуществуетФайл(ИмяФайла+".tmp") = 0 Тогда 
		Сообщить("Ошибка записи файла """ + ИмяФайла + "tmp""","!"); 
		Excel = ""; 
		Возврат 0; 
	КонецЕсли;    
	
	Рез = 1;
	
	Попытка
		ExcelWB = Excel.Workbooks.Add(ИмяФайла+".tmp");	//Откроем временный файл в Excel в режиме шаблона (чтобы не блокировать файл)
		Попытка											//Если на клиентской машине не установлен принтер, обращение к настройкам страницы вызывает ошибку. Поэтому работаем в "Попытка ... КонецПопытки"
			ExcelPS = ExcelWB.Sheets(1).PageSetup;		//Исправим спецсимволы в колонтитулах
			Зн = ExcelPS.LeftHeader;	Зн1 = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Зн, "#P", "&P"), "#Q", "&N"), "#T", "&T"), "#D", "&D"); Если Зн <> Зн1 Тогда ExcelPS.LeftHeader	= Зн1 КонецЕсли;
			Зн = ExcelPS.CenterHeader;	Зн1 = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Зн, "#P", "&P"), "#Q", "&N"), "#T", "&T"), "#D", "&D"); Если Зн <> Зн1 Тогда ExcelPS.CenterHeader	= Зн1 КонецЕсли;
			Зн = ExcelPS.RightHeader;	Зн1 = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Зн, "#P", "&P"), "#Q", "&N"), "#T", "&T"), "#D", "&D"); Если Зн <> Зн1 Тогда ExcelPS.RightHeader	= Зн1 КонецЕсли;
			Зн = ExcelPS.LeftFooter;	Зн1 = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Зн, "#P", "&P"), "#Q", "&N"), "#T", "&T"), "#D", "&D"); Если Зн <> Зн1 Тогда ExcelPS.LeftFooter	= Зн1 КонецЕсли;
			Зн = ExcelPS.CenterFooter;	Зн1 = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Зн, "#P", "&P"), "#Q", "&N"), "#T", "&T"), "#D", "&D"); Если Зн <> Зн1 Тогда ExcelPS.CenterFooter	= Зн1 КонецЕсли;
			Зн = ExcelPS.RightFooter;	Зн1 = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Зн, "#P", "&P"), "#Q", "&N"), "#T", "&T"), "#D", "&D"); Если Зн <> Зн1 Тогда ExcelPS.RightFooter	= Зн1 КонецЕсли;
		Исключение 
		КонецПопытки;
		
		ExcelWB.SaveAs(ИмяФайла+".xls", -4143);			//Сохраним, чтобы обновить формат файла до текущего (xlNormal = -4143)
		ExcelWB.Close(0);								//Закроем книгу ...
		ExcelWB = Excel.Workbooks.Add(ИмяФайла+".xls");	//... и вновь откроем в режиме шаблона
		
		Попытка
			ExcelSh = ExcelWB.Sheets(1);
			
			Если ПустаяСтрока(ИмяЛиста) = 0 Тогда			//Зададим имя ярлычка
				ExcelSh.Name = ИмяЛиста
			КонецЕсли;
			
			Если ОтображатьЯрлычки = 1 Тогда				//Сделаем видимыми ярлычки листов
			    ExcelWB.Windows(1).DisplayWorkbookTabs = 1;
				ExcelWB.Windows(1).TabRatio = 0.6			//... и отодвинем горизонтальную полосу прокрутки от левого края
			КонецЕсли;
			
			Если ОтображатьСетку = 0 Тогда					//Скроем линии сетки
				ExcelWB.Windows(1).DisplayGridlines = 0
			КонецЕсли;
		
			Если УдалитьСтроки > 0 Тогда					//Удалим верхние строки
				ExcelSh.Range(ExcelSh.Rows(1), ExcelSh.Rows(УдалитьСтроки)).Delete()
			КонецЕсли;
			
			Если УдалитьСтолбцы > 0 Тогда					//Удалим левые столбцы
				ExcelSh.Range(ExcelSh.Columns(1), ExcelSh.Columns(УдалитьСтолбцы)).Delete()
			КонецЕсли;
		Исключение 
		КонецПопытки;
		
		ExcelWB.Saved = 0;
	Исключение
		Сообщить("Ошибка открытия файла в MS Excel","!"); Рез = 0
	КонецПопытки;
	
	Попытка 
		Excel.Visible = 1 
	Исключение 
	КонецПопытки;  
	
	ExcelWB = ""; ExcelSh = ""; ExcelPS = ""; Excel = "";
	ФС.УдалитьФайл(ИмяФайла+".tmp");
	ФС.УдалитьФайл(ИмяФайла+".xls");
	Возврат Рез
КонецФункции //глОткрытьТаблицуВExcel
Показать
12. Altair777 644 01.10.09 10:21 Сейчас в теме
(11) Интересно :-)
Только вот Пока 1=1 Цикл не нужно.
Все равно ведь при совпадении имени файла существующие удаляются.

(9) Очень показательно поведение ФС при запрещенных символах в имени файла.
С * оно не дает сохранить, а вот : воспринимает, похоже, как двоеточие перед буквой диска. И после вызова даже диалог не показывается.
Да и, вообще, я уже не раз замечал, что ФС может ничего не сделать, но и не вывести никакого сообщения по этому поводу.
Наверно, при разработке этой подсистемки кодеры 1С что-то откуда-то выдернули как зря и так же как зря и вставили.
14. Wicked 59 01.10.09 21:59 Сейчас в теме
(11) вы не будете против? если я добавлю ваш пример нa help1C.com
или добавьте сами :)
16. GSoft 2235 02.10.09 10:34 Сейчас в теме
(14) я нет, а вот автор не знаю))) в свое время нашел данный код на просторах инета)))

добавьте с комментарием что автор неизвестен, и что готовы при условии того что он найдется изменить авторство
19. Wicked 59 02.10.09 11:44 Сейчас в теме
20. GSoft 2235 02.10.09 11:45 Сейчас в теме
(19)
разделите код семерки и восьмерки - будет более читабельно и удобно
4. Altair777 644 29.09.09 17:36 Сейчас в теме
(0) Может, в "Статьи" было бы лучше? Раз обработки все равно нет... :-)
5. CheBurator 3119 29.09.09 17:58 Сейчас в теме
(4) не обязательно, код раскрывающий сущность в необходимом объеме - приведен.
(3) без формекса - только переделкой конфигурации и то без гарантий... ;-)
6. Altair777 644 30.09.09 17:56 Сейчас в теме
(0) Что-то у меня не получается.
Эта строка просто прелетает как фанерка :-)

Если ФС.ВыбратьФайл(1, ИмяФайла, ИмяКаталога, "Сохранить как", "Таблицы Excel (*.xls)|*.xls") = 1 Тогда

Из отладчика:
ИмяФайла = "ПЕЧАТЬ: Расходная накладная *"
ИмяКаталога =
7. Altair777 644 30.09.09 18:00 Сейчас в теме
Автор, перед строкой из (6) добавьте на всякий случай: ;-)

ИмяФайла=СтрЗаменить(ИмяФайла," *","");
ИмяФайла=СтрЗаменить(ИмяФайла,":","-");
8. Altair777 644 30.09.09 18:03 Сейчас в теме
+(7)
А еще лучше так....

Если Прав(ИмяФайла,2)=" *" Тогда
ИмяФайла=Лев(ИмяФайла,СтрДлина(ИмяФайла)-2);
КонецЕсли;
ИмяФайла=СтрЗаменить(ИмяФайла,":","-");
9. dagroma 116 30.09.09 23:46 Сейчас в теме
(7)(8) Изначально у меня было
ИмяФайла = СокрЛП(СтрЗаменить(ИмяФайла, "*", ""));
Но я решил не навязывать свое мнение другим, а без этого кода я просто не проверял и не думал, что вылезут ошибки.
10. dagroma 116 30.09.09 23:48 Сейчас в теме
13. GSoft 2235 01.10.09 10:30 Сейчас в теме
мне в 11 что нравится - то что перенос идет в цветовой гамме 1С а не экселя, а они как известно не совпадают

кстати, насчет имен файлов не пробовал - формирую со штатно-крякозябровыми
15. foxey 4 02.10.09 10:15 Сейчас в теме
Добавил в меню "Файл" элемент "Сохранить в Excel"(Объект - Задача, Команда - Задача.Выполнить, Формула - глСохранитьФайлExcel()) - и все, клиент доволен.

Что-то недопонял... Объект - Задача - это где? Как вставить пункт в меню?
17. Altair777 644 02.10.09 10:37 Сейчас в теме
(15) В редактировании интерфейсов (меню)
Новая колонка, галочка "Системная", выбрать пункт "Файл"
18. Altair777 644 02.10.09 10:53 Сейчас в теме
Ой! Чуть не забыл "плюсик" поставить :-)
21. MadDAD 152 07.10.09 09:02 Сейчас в теме
У меня работает успешно при использовании RWidjets вот такой код:

Процедура ПриПолученииКоманды(пКоманда, пЗаблокироватьКоманду) Экспорт
Сервис = СоздатьОбъект("Сервис");

Если (пКоманда = 57604) ИЛИ (пКоманда = 57603) Тогда
Конт = "";
Если Сервис.АктивныйКонтекст(Конт) = 0 Тогда
Возврат;
КонецЕсли;
Если ПустоеЗначение(Конт) = 1 Тогда
Возврат;
КонецЕсли;

Попытка
Если ТипЗначенияСтр(Конт) = "ГрупповойКонтекст" Тогда
Если ТипЗначенияСтр(Конт.Таблица) = "Таблица" Тогда
Конт = Конт.Таблица;
КонецЕсли;
КонецЕсли;
Исключение
КонецПопытки;

Если ТипЗначенияСтр(Конт) = "Таблица" Тогда
ИмяФайла="";
Попытка
Сервис.СписокТаблиц().ПолучитьЗначение(1,ИмяФайла);
Исключение
КонецПопытки;

пЗаблокироватьКоманду = 1;
//Формируем списки доступных форматов сохранения
сзСтандартнойОбработки = СоздатьОбъект("СписокЗначений");
сзСтандартнойОбработки.ДобавитьЗначение("MXL","Файл 1С");
сзСтандартнойОбработки.ДобавитьЗначение("HTML","Файл HTML");
сзСтандартнойОбработки.ДобавитьЗначение("TXT","Текст");

сзСохраненияЙоксель = СоздатьОбъект("СписокЗначений");
сзСохраненияЙоксель.ДобавитьЗначение("XLS","Файл Excel");

Таб = Конт;
ИмяФайла = ?(ПустоеЗначение(ИмяФайла) = 1,"Таблица1",ИмяФайла);

стрНедопустимыхСимволов = "/\*:"",<>.~'%&";
Позиция = СтрДлина(ИмяФайла);
Для НомерСимвола = 1 по СтрДлина(стрНедопустимыхСимволов) Цикл
ИмяФайла = СтрЗаменить(ИмяФайла,Сред(стрНедопустимыхСимволов,НомерСимвола,1)," ");
КонецЦикла;

Пока СтрЧислоВхождений(ИмяФайла," ") <> 0 цикл
ИмяФайла = СтрЗаменить(ИмяФайла," "," ");
КонецЦикла;


//ИмяФайла = Лев(ИмяФайла,Позиция);
Каталог = "";

//Формируем строку выбора формата файла.
строкаВыбораФормата="";
Для НомерВарианта = 1 по 2 Цикл
Если НомерВарианта = 1 тогда //Перебор списков вариантов сохранения
ТекущийВариант = сзСохраненияЙоксель;
Иначе
ТекущийВариант = сзСтандартнойОбработки;
КонецЕсли;

Для Номер = 1 по ТекущийВариант.РазмерСписка() Цикл // Теперь формируем строку вида "Файл Excel (*.xls)|*.xls| Файл 1C (*.mxl)|*.mxl|"
ОписаниеФормата = "";
ФорматСохранения = ТекущийВариант.ПолучитьЗначение(Номер,ОписаниеФормата);
строкаВыбораФормата = строкаВыбораФормата + Шаблон("[ОписаниеФормата] (*.[Нрег(ФорматСохранения)])|*.[Нрег(ФорматСохранения)]|");
КонецЦикла;
КонецЦикла;
ИмяФайла = Лев(ИмяФайла,20);
//Выбор файла. Если "отмена" тогда возвращаемся
ИмяФайлаОК = 0;
УдалятьСуществующий = 0;
Пока ИмяФайлаОК = 0 цикл
Если ФС.ВыбратьФайл(1,ИмяФайла,Каталог,"Выберите путь сохранения файла",строкаВыбораФормата,"xls") = 0 Тогда
Возврат;
КонецЕсли;

//Определяем расширение файла
КоличествоТочекВИмени = СтрЧислоВхождений(ИмяФайла,".");
Расширение = ИмяФайла;
Для НомерТочки = 1 по КоличествоТочекВИмени Цикл
Расширение = Прав(Расширение,СтрДлина(Расширение)-Найти(Расширение,"."))
КонецЦикла;

//Формат файла - это его раширение
ИмяФайла = Лев(ИмяФайла, СтрДлина(ИмяФайла) - СтрДлина(Расширение) - 1);
ФорматСохранения = Врег(Расширение);
//Формируем путь сохранения
ПутьСохранения = Каталог + ИмяФайла+"."+Расширение;

Если ФС.СуществуетФайл(ПутьСохранения) = 0 Тогда
ИмяФайлаОК = 1;
Иначе
Если Вопрос(""+ПутьСохранения+" уже существует.
|Заменить?","Да+Нет") = "Да" Тогда
УдалятьСуществующий = 1;
ИмяФайлаОК = 1;
Иначе
ИмяФайлаОК = 0;
КонецЕсли;
КонецЕсли;
КонецЦикла;

//Определяемся с варинтом сохранения
Если сзСтандартнойОбработки.Принадлежит(ФорматСохранения) = 1 Тогда //Стандартное сохранение в html, moxel или текст
Таб.Записать(ПутьСохранения,Лев(ФорматСохранения,3));
ИначеЕсли сзСохраненияЙоксель.Принадлежит(ФорматСохранения) = 1 Тогда //в Excel нужно сохранять через йоксель
Док = СоздатьОбъект("ТабличныйДокумент");
Попытка
Док.ЗагрузитьИзТаблицы(Таб);
Док.Записать(ПутьСохранения,1);
Исключение
Таб.Записать(ПутьСохранения,1);;
КонецПопытки;

Для номерПопытки = 1 по 3 Цикл
Если УдалятьСуществующий = 1 Тогда
ФС.УдалитьФайл(ПутьСохранения);
УдалятьСуществующий = 0;
КонецЕсли;

Если ФС.СуществуетФайл(ПутьСохранения) = 0 Тогда
Док.Записать(ПутьСохранения,1);
Иначе
Прервать;
КонецЕсли;
КонецЦикла;

Если ФС.СуществуетФайл(ПутьСохранения) = 0 Тогда
Сообщить("Ошибка: не удалось сохранить файл. Обратитесь к разработчику.","!");
КонецЕсли;

Иначе
Сообщить("Ошибка: Формат сохранения не идентифицирован.","!");
Сообщить("Ошибка: не удалось сохранить файл. Обратитесь к разработчику.","!");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
22. CheBurator 3119 13.11.09 04:00 Сейчас в теме
ну вы накрутили блин.. давно уже сделано все...
aleks_cons; +1 Ответить
23. melnycky 26.05.10 14:02 Сейчас в теме
Спасибо большое, пригодилось!
24. chmv 05.06.13 09:04 Сейчас в теме
а как проверить табличный документ или нет без dll?
25. chmv 05.06.13 09:27 Сейчас в теме
можно ди тоже самое написать без dll
26. dagroma 116 05.06.13 16:32 Сейчас в теме
(25)Я такой возможности не нашел.
27. chmv 06.06.13 11:24 Сейчас в теме
ЖАЛЬ. А библеотеку надо регистрировать?
28. dagroma 116 06.06.13 14:57 Сейчас в теме
29. dimaskl 19.09.13 09:56 Сейчас в теме
Программно сохранить файл Excel в формате 2003 года, надо написать так Книга.SaveAs(ПутьДляЗаписиФайла, -4143);

Синтаксис команды «SaveAs» во втором параметре разрешает указать формат сохраняемого файла.
Числовое значение фрмата файла Excel 2003: FileFormatNum = -4143
Оставьте свое сообщение