Ошибка при сохранении в Ексель
По теме из базы знаний
- Ошибки команд или как стать лучше
- Экселька. Универсальный инструмент, построенный по типу классических электронных таблиц, с возможностью использования данных 1С.
- Делаем формат ячейки дата в Excel без Excel
- Выгрузка данных в Excel с добавлением формул (нюансы формирования формул)
- Расширение для интеграции с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода для 1С:УНФ, УТ, КА, ERP
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Вот все продедура выгрузки
Процедура КнопкаВыполнитьНажатие(Кнопка)
НомерЛиста = 1;
//Пытаемся подключиться к Excel
Попытка
Excel = новый COMОбъект("Excel.Application");
Исключение
Сообщить("Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.");
Возврат;
КонецПопытки;
//Подключились удачно, открываем файл
Excel.Workbooks.Open("C:\Documents and Settings\Программист-3\Рабочий стол\111.xlsx");
//Открываем необходимый лист
Лист = Excel.Sheets(1);
ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count;
ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 19);
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ХозрасчетныйДвиженияССубконто.Период КАК Период,
| ХозрасчетныйДвиженияССубконто.Регистратор КАК Регистратор,
| ХозрасчетныйДвиженияССубконто.СчетДт,
| ХозрасчетныйДвиженияССубконто.СубконтоДт1,
| ХозрасчетныйДвиженияССубконто.СубконтоДт2,
| ХозрасчетныйДвиженияССубконто.СубконтоДт3,
| ХозрасчетныйДвиженияССубконто.Сумма,
| ХозрасчетныйДвиженияССубконто.СчетКт,
| ХозрасчетныйДвиженияССубконто.СубконтоКт1,
| ХозрасчетныйДвиженияССубконто.ВидСубконтоКт2,
| ХозрасчетныйДвиженияССубконто.ВидСубконтоКт3,
| ХозрасчетныйДвиженияССубконто.КоличествоДт,
| ХозрасчетныйДвиженияССубконто.КоличествоКт,
| ХозрасчетныйДвиженияССубконто.СуммаНУКт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
| &НачалоПериода,
| &КонецПериода,
| СчетКт.Родитель.Код = ""10""
| ИЛИ СчетКт.Родитель.Код = ""41""
| ИЛИ СчетКт.Родитель.Код = ""08"",
| ,
| ) КАК ХозрасчетныйДвиженияССубконто
|ГДЕ
| ХозрасчетныйДвиженияССубконто.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И (ХозрасчетныйДвиженияССубконто.Регистратор ССЫЛКА Документ.ТребованиеНакладная
| ИЛИ ХозрасчетныйДвиженияССубконто.Регистратор ССЫЛКА Документ.ПередачаМатериаловВЭксплуатацию
| ИЛИ ХозрасчетныйДвиженияССубконто.Регистратор ССЫЛКА Документ.ОперацияБух)
|
|УПОРЯДОЧИТЬ ПО
| Период,
| Регистратор");
Запрос.УстановитьПараметр("НачалоПериода",НачалоГода('20171231000000'));
Запрос.УстановитьПараметр("КонецПериода",КонецГода('20171231000000'));
РезультатЗапроса = Запрос.Выполнить().Выбрать();
a=1;
Пока РезультатЗапроса.Следующий() Цикл
a = a + 1;
Лист.Cells(a,1).NumberFormat = "@";
Лист.Cells(a,1).value = Строка(РезультатЗапроса.Регистратор.УникальныйИдентификатор());
Лист.Cells(a,2).NumberFormat = "@";
Лист.Cells(a,2).value = РезультатЗапроса.Регистратор.Номер;
Лист.Cells(a,3).NumberFormat = "ДД.ММ.ГГГГ";
Лист.Cells(a,3).value = РезультатЗапроса.Регистратор.Дата;
Лист.Cells(a,4).NumberFormat = "@";
Лист.Cells(a,4).value = Строка(РезультатЗапроса.Регистратор);
//Лист.Cells(a,5).NumberFormat = "@";
//Лист.Cells(a,5).value = Строка(РезультатЗапроса.СубконтоКт1.НоменклатураАналитики.УИД);
Лист.Cells(a,6).NumberFormat = "0,00";
Лист.Cells(a,6).value = РезультатЗапроса.КоличествоКт;
Лист.Cells(a,7).NumberFormat = "0,00";
Лист.Cells(a,7).value = РезультатЗапроса.Сумма;
Лист.Cells(a,8).NumberFormat = "ДД.ММ.ГГГГ";
Лист.Cells(a,8).value = НачалоМесяца(РезультатЗапроса.Регистратор.Дата);
Лист.Cells(a,11).NumberFormat = "@";
Лист.Cells(a,11).value = РезультатЗапроса.СчетДт.Код;
Лист.Cells(a,19).NumberFormat = "@";
Лист.Cells(a,19).value = РезультатЗапроса.СубконтоКт1.Наименование;
Лист.Cells(a,20).NumberFormat = "@";
Если (РезультатЗапроса.СуммаНУКт > 0) Тогда
Лист.Cells(a,20).value = "Да";
КонецЕсли;
КонецЦикла;
Excel.Save();
Excel.quit();
КонецПроцедуры
Показать
(6)если ошибка не постоянная и иногда сохраняется иногда нормально. то нужно копать в сторону прав пользователя. Попробуйте в шару какую нить залить этот файл и проверить как там будет происходить сохранение. иногда с рабочим столом или Диском С бывают проблемы при записили из 1с
Ну а если удалить это файл заранее с каталога, в который сохраняется, всё нормально же?
Я бы другим путем пошёл... создал в обработке макет, такой какой мне нужен, красивый..
заполнил его, по аналогии любой процедуры печати .. ну а там уже всё просто и легко:
Пример короткий:
// и вот тут барабанная дробь, внимание..//
ТабДок.Записать(ТипФайлаТабличногоДокумента.XLSX, НужныйКаталог, Имя)// может наоборот параметры,не помню, посмотрите в синтакс помощнике
и не нужен никакой ЭксельКомАпликейшен.. в этом смысле так сделать даже опимальней, док будет сохраняться даже на компе, где нет экселя.
Я бы другим путем пошёл... создал в обработке макет, такой какой мне нужен, красивый..
заполнил его, по аналогии любой процедуры печати .. ну а там уже всё просто и легко:
Пример короткий:
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("НовыйСозданныйМакетЭтойОбработки");
ОбластьМакета = ПолучитьОбласть("Область1");
областьМАкета.Параметры.Заполнить(РезультатЗапросаИлиЧегоНибудь);///или как вам угодно его заполняйте
Табдок.Вывести(ОбластьМакета);
// и вот тут барабанная дробь, внимание..//
ТабДок.Записать(ТипФайлаТабличногоДокумента.XLSX, НужныйКаталог, Имя)// может наоборот параметры,не помню, посмотрите в синтакс помощнике
и не нужен никакой ЭксельКомАпликейшен.. в этом смысле так сделать даже опимальней, док будет сохраняться даже на компе, где нет экселя.
Пардон, тоже не обратил внимания
Excel.ActiveWorkbook.Save();
//Excel.ActiveWorkbook.Close(); // закрывает текущий документ Excel - если если надо только сохранить
// или
//Excel.Visible = 1; // если надо показать пользователю
// Excel = Неопределено; // Excel больше не нужен
(25)Вот смотрите так должно получится
Процедура КнопкаВыполнитьНажатие(Кнопка)
НомерЛиста = 1;
//Пытаемся подключиться к Excel
Попытка
Excel = новый COMОбъект("Excel.Application");
Исключение
Сообщить("Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.");
Возврат;
КонецПопытки;
Excel.DisplayAlerts = False;
Excel.ScreenUpdating = False;
//Подключились удачно, открываем файл
Excel.Workbooks.Open("C:\Documents and Settings\Программист-3\Рабочий стол\222.xlsx");
//Открываем необходимый лист
Лист = Excel.Sheets(1);
ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count;
ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 19);
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ХозрасчетныйДвиженияССубконто.Период,
| ХозрасчетныйДвиженияССубконто.Регистратор,
| ХозрасчетныйДвиженияССубконто.СчетДт,
| ХозрасчетныйДвиженияССубконто.СубконтоДт1,
| ХозрасчетныйДвиженияССубконто.СубконтоДт2,
| ХозрасчетныйДвиженияССубконто.СубконтоДт3,
| ХозрасчетныйДвиженияССубконто.Сумма,
| ХозрасчетныйДвиженияССубконто.СуммаНУДт,
| ХозрасчетныйДвиженияССубконто.СуммаНУКт,
| ХозрасчетныйДвиженияССубконто.СчетКт,
| ХозрасчетныйДвиженияССубконто.СубконтоКт1,
| ПервоначальныеСведенияОСБухгалтерскийУчет.ОсновноеСредство,
| ПервоначальныеСведенияОСБухгалтерскийУчет.ПервоначальнаяСтоимость,
| ПервоначальныеСведенияОСБухгалтерскийУчет.Период КАК Период1
|ИЗ
| РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет КАК ПервоначальныеСведенияОСБухгалтерскийУчет
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
| &НачалоПериода,
| &КонецПериода,
| (СчетДт.Код = ""20.01""
| ИЛИ СчетДт.Код = ""25""
| ИЛИ СчетДт.Код = ""26"")
| И СчетКт.Код = ""02.01"",
| ,
| ) КАК ХозрасчетныйДвиженияССубконто
| ПО ПервоначальныеСведенияОСБухгалтерскийУчет.ОсновноеСредство.Ссылка = ХозрасчетныйДвиженияССубконто.СубконтоКт1.Ссылка
|ГДЕ
| ХозрасчетныйДвиженияССубконто.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И ХозрасчетныйДвиженияССубконто.Сумма <> 0");
Запрос.УстановитьПараметр("НачалоПериода",НачалоГода('20161231000000'));
Запрос.УстановитьПараметр("КонецПериода",КонецГода('20161231000000'));
РезультатЗапроса = Запрос.Выполнить().Выбрать();
a=1;
Пока РезультатЗапроса.Следующий() Цикл
a = a + 1;
Лист.Cells(a,1).NumberFormat = "@";
Лист.Cells(a,1).value = Строка(РезультатЗапроса.Регистратор.УникальныйИдентификатор());
Лист.Cells(a,2).NumberFormat = "@";
Лист.Cells(a,2).value = РезультатЗапроса.Регистратор.Номер;
Лист.Cells(a,3).NumberFormat = "ДД.ММ.ГГГГ";
Лист.Cells(a,3).value = РезультатЗапроса.Регистратор.Дата;
Лист.Cells(a,4).NumberFormat = "@";
Лист.Cells(a,4).value = Строка(РезультатЗапроса.Регистратор);
Лист.Cells(a,5).NumberFormat = "@";
Если (РезультатЗапроса.СчетДт.Код = "20.01") Тогда
//Лист.Cells(a,5).value = Строка(РезультатЗапроса.СубконтоДт3.Код);
КонецЕсли;
Лист.Cells(a,6).NumberFormat = "ДД.ММ.ГГГГ";
Лист.Cells(a,6).value = НачалоМесяца(РезультатЗапроса.Регистратор.Дата);
Лист.Cells(a,7).NumberFormat = "@";
//Лист.Cells(a,7).value = РезультатЗапроса.ОсновноеСредство.УИД;
Лист.Cells(a,8).NumberFormat = "@";
Лист.Cells(a,9).NumberFormat = "@";
Лист.Cells(a,10).NumberFormat = "0,00";
Лист.Cells(a,10).value = РезультатЗапроса.Сумма;
Лист.Cells(a,11).NumberFormat = "@";
Если (РезультатЗапроса.СуммаНУКт > 0) ИЛИ (РезультатЗапроса.СуммаНУДт > 0) Тогда
Лист.Cells(a,11).value = "Да";
КонецЕсли;
Лист.Cells(a,12).NumberFormat = "@";
Лист.Cells(a,12).value = РезультатЗапроса.СчетДт.Код;
Лист.Cells(a,14).NumberFormat = "@";
Лист.Cells(a,14).value = РезультатЗапроса.ОсновноеСредство.НаименованиеПолное;
Лист.Cells(a,15).NumberFormat = "@";
Лист.Cells(a,15).value = Строка(РезультатЗапроса.ОсновноеСредство.АмортизационнаяГруппа);
Лист.Cells(a,16).NumberFormat = "ДД.ММ.ГГГГ";
Лист.Cells(a,16).value = РезультатЗапроса.Период1;
Лист.Cells(a,17).NumberFormat = "0,00";
Лист.Cells(a,17).value = РезультатЗапроса.ПервоначальнаяСтоимость;
КонецЦикла;
Excel.ScreenUpdating = True;
Excel.ActiveWorkbook.Save();
Excel.quit();
КонецПроцедуры
Показать
Замените Excel.Save на
перезагрузитесь и выполните. Если не появится окно экселя с несохраненным файлом, проблема в открытии файла, тогда лучше пошагать отладчиком и посмотреть в табло что попадает в переменные.
Excel.Visible = 1;
Excel = Неопределено;
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)