Вход | Регистрация
 

Ошибка при выгрузке в XLS

Ошибка при выгрузке в  XLS
Я
   NIGHTHUNTER
 
28.04.21 - 09:31
Подскажите пожалуйста, из за чего идет ошибка.

Произошла исключительная ситуация (0x800a03ec)
{ВнешняяОбработка.ПанельЗаготовок_0_20_28.Форма.Форма.Форма(1557)}:            List.Cells(СтрокаТаблицы, СтолбецКолонки).Value = ТзСтрока[ТзКолонка.Имя];
{ВнешняяОбработка.ПанельЗаготовок_0_20_28.Форма.Форма.Форма(1595)}:            СоздатьXLS();

по причине:
Произошла исключительная ситуация (0x800a03ec)

http://joxi.ru/a2Xj7eEC4Bdl7r
   NIGHTHUNTER
 
1 - 28.04.21 - 09:31
Джокси не сработала ((((
   NIGHTHUNTER
 
2 - 28.04.21 - 09:32
ошибка возникает на строке, начинающейся с List

    СтрокаТаблицы  = 2;
    Для Каждого ТзСтрока Из ТаблицаЗначений Цикл
        СтолбецКолонки = 1;
        Для Каждого ТзКолонка Из ТаблицаЗначений.Колонки Цикл
            List.Cells(СтрокаТаблицы, СтолбецКолонки).Value = ТзСтрока[ТзКолонка.Имя];
            СтолбецКолонки = СтолбецКолонки + 1;
        КонецЦикла;
        СтрокаТаблицы  = СтрокаТаблицы + 1;
    КонецЦикла;
   mikecool
 
3 - 28.04.21 - 09:36
Лист определен?
ТабДок сохранить в эксель не вариант?
   NIGHTHUNTER
 
4 - 28.04.21 - 09:38
(3) Видимо понял в чем ошибка
 = СТРОКА(ТзСтрока[ТзКолонка.Имя]);


было

=  ТзСтрока[ТзКолонка.Имя];

и присваивался тип справочник.

Пока я рассматриваю такой вариант, следующий будет сохранить или как там выгрузитть или загрузить
   NIGHTHUNTER
 
5 - 28.04.21 - 10:42
Почему при открытии файла сохраненного вот этим кодом, открывается 2 файла .xls?
В одном шапка, в другом шапка и строки.
И ещё выходит окно что формат не соответствует расширению.
Почему просто не открывается файл эксель как в него программно сохранили данные ?


&НаСервере
Процедура СоздатьXLS()
    ТаблицаЗначений        = ПолучитьданныеДляВыгрузки();
    //

    Table                  = Новый COMObject("Excel.Application");
    Book                     = Table.Workbooks.Add();
    List                     = Book.WorkSheets.Add();
    //

    СтолбецКолонки = 1;
    Для Каждого ТзКолонка Из ТаблицаЗначений.Колонки Цикл
        List.Cells(1, СтолбецКолонки).Value = ТзКолонка.Имя;
        СтолбецКолонки                      = СтолбецКолонки + 1;
    КонецЦикла;
    //

    //СтолбецКолонки = 1;

    СтрокаТаблицы  = 2;
    Для Каждого ТзСтрока Из ТаблицаЗначений Цикл
        СтолбецКолонки = 1;
        Для Каждого ТзКолонка Из ТаблицаЗначений.Колонки Цикл
            List.Cells(СтрокаТаблицы, СтолбецКолонки).Value = СТРОКА(ТзСтрока[ТзКолонка.Имя]);
            СтолбецКолонки                                  = СтолбецКолонки + 1;
        КонецЦикла;
        СтрокаТаблицы  = СтрокаТаблицы + 1;
    КонецЦикла;
    //

    Попытка
        Book.SaveAs(КаталогНаДискеУТ + "\" + "Nomenklatura.xls");        
    Исключение
        Сообщить(ОписаниеОшибки() + ". Файл не сохранен ! ");
    КонецПопытки;
    //

    Table.Quit();
КонецПроцедуры
   МимохожийОднако
 
6 - 28.04.21 - 10:46
Перед проверкой этого кода. Убедись, что в диспетчере задач не остался висеть Excel с кривыми файлами
   NIGHTHUNTER
 
7 - 28.04.21 - 10:56
(6) так вот это не помогает ?
   NIGHTHUNTER
 
8 - 28.04.21 - 10:56
(7)  Table.Quit();
   mikecool
 
9 - 28.04.21 - 11:29
(8) хз, что у тебя в табле хранится
надо апликейшену сказать выход
но - он не выйдет, пока будут висеть открытые воркбуки
   Kassern
 
10 - 28.04.21 - 11:32
Столько геморроя, чтобы создать простую эксельку... А ведь можно было создать простой ТабДок, при желании нарисовать макет нужный, заполнить его и сохранить в эксель. При этом не будет косяков с коннектом, ошибки разрядности, зависших процессов экселя и т.д.
   NIGHTHUNTER
 
11 - 28.04.21 - 11:33
(6) да, вы конечно правы, но все равно как то странно себя ведет эксель, при открытии этого файла ((((
   NIGHTHUNTER
 
12 - 28.04.21 - 11:34
(9) вот же (8) или как в этом случае правильно закрывать ?
   NIGHTHUNTER
 
13 - 28.04.21 - 11:35
(10) Да, но я хочу разобраться с этим примером, что бы он тоже нормально отрабатывал !
   МимохожийОднако
 
14 - 28.04.21 - 11:35
(11) Сохраняй файл не под одним тем же именем. Добавляй на хвост имени дату. Тогда не будет нахлёста
   NIGHTHUNTER
 
15 - 28.04.21 - 11:56
(14) Да, спасибо! Советы ваши все ценные. По ним только и выжил.

При открытии файла, такое только выходит http://joxi.ru/52aWJQEuko3qXr

Это наверное, от программного сохранения. Понимаю, что не лучший вариант в работе использую.


    //

    УникальностьИмени = СтрЗаменить(ТекущаяДата(),     ".", "");
    УникальностьИмени = СтрЗаменить(УникальностьИмени, ":", "");
    УникальностьИмени = СтрЗаменить(УникальностьИмени, " ", "");
    Попытка
        Book.SaveAs(КаталогНаДискеУТ + "\" + "Parthery" + УникальностьИмени + ".xls");        
    Исключение
        Сообщить(ОписаниеОшибки() + ". Файл не сохранен ! ");
    КонецПопытки;
    //

    Table.Quit();
КонецПроцедуры
   Kassern
 
16 - 28.04.21 - 12:00
(15) есть такая функция, называется Формат. С помощью нее, можно преобразовать дату, так как вам нужно по шаблону вместо:
УникальностьИмени = СтрЗаменить(ТекущаяДата(),     ".", "");
    УникальностьИмени = СтрЗаменить(УникальностьИмени, ":", "");
    УникальностьИмени = СтрЗаменить(УникальностьИмени, " ", "");
   NIGHTHUNTER
 
17 - 28.04.21 - 12:41
(16) Согласен. Спасибо. Наверное не только дату, а любое значение, строку?
   NIGHTHUNTER
 
18 - 29.04.21 - 07:17
(16) Как же будет выглядеть использование функции формат, что бы за раз преобразовать ТекущаяДата() в удобное значение для уникальности имени файла ?
   NIGHTHUNTER
 
19 - 29.04.21 - 07:20
(16+) Нашел. В поисковике не точно поиск задавал. такой пример выявил.

СтрокаДата = Формат(ТекущаяДата(), "ггггММддЧЧммсс");

20100228235859
   МимохожийОднако
 
20 - 29.04.21 - 07:38
Научись пользоваться СП Ctrl-F1. Это эффективнее поиска в интернете
   NIGHTHUNTER
 
21 - 29.04.21 - 09:26
понадеялся на пример

ФОРМАТ(ТекущаяДата(), "ггггММддЧЧммсс")

но он вообще ничег оне делает (((( как все же нужно правильно ?
   NIGHTHUNTER
 
22 - 29.04.21 - 09:26
(20) там нет примера, что бы из даты убрали двоеточия, точки и пробелы форматом
   МимохожийОднако
 
23 - 29.04.21 - 09:28
(22) Да ладно..
ДФ (DF) - формат даты.
д (d) - день месяца (цифрами) без лидирующего нуля;
дд (dd) - день месяца (цифрами) с лидирующим нулем;
ддд (ddd) - краткое название дня недели *);
дддд (dddd) - полное название дня недели *);
М (m) - минута без лидирующего нуля;
ММ (mm) - минута с лидирующим нулем;
МММ (MMM) - краткое название месяца *);
ММММ (MMMM) - полное название месяца *);
к (q) - номер квартала в году;
г (y) - номер года без века и лидирующего нуля;
гг (yy) - номер года без века с лидирующим нулем;
гггг (yyyy) - номер года с веком;
ч (h) - час в 12-часовом варианте без лидирующих нулей;
чч (hh) - час в 12-часовом варианте с лидирующим нулем;
Ч (H) - час в 24-часовом варианте без лидирующих нулей;
ЧЧ (HH) - час в 24-часовом варианте с лидирующим нулем;
м (m) - минута без лидирующего нуля;
мм (mm) - минута с лидирующим нулем;
с (s) - секунда без лидирующего нуля;
сс (ss) - секунда с лидирующим нулем;
вв (tt) - отображение половины дня AM/PM (действительно только для языков конфигурирования, поддерживающих 12 часовой вариант представления времени).
Примечание: *) - не используется для форматной строки поля ввода даты.
ДЛФ (DLF) - локальный формат даты. Указывается вариант отображения частей даты.
Д (D) - дата (цифрами);
ДД (DD) - длинная дата (месяц прописью);
В (T) - полное время, дата может объединяться со временем;
ДВ (DT) - дата время.
Пример: выражение Формат('20051120140323',"ДЛФ=ДДВ") имеет значение "20 ноября 2005 г. 14:03:23".
Важно! Порядок следования опций форматной строки для ДЛФ <дата + время> (ДВ или ДДВ) не может быть изменен.
ДП (DE) - строка, представляющая пустую дату (например, Формат('00010101000000' ,"ДП=""пустая дата""") вернет строку "пустая дата").
БЛ (BF) - строка, представляющая логическое значение Ложь.
БИ (BT) - строка, представляющая логическое значение Истина.
ЧФ (NF) - шаблон форматирования числа. В строке можно использовать символ Ч(N) для указания позиции, в которую нужно вывести число. Число выводится с учетом остальных параметров, заданных в форматной строке. Остальные символы выводятся как есть. Символы, находящиеся между двойными или одинарными кавычками выводятся как есть. Шаблон форматирования не применяется к числу 0 (за исключением случая наличия в формате строки параметра "ЧН=").
Примечание. Использование параметров для поля ввода: параметр ДП (DE) не используется; параметр ДЛФ (DLF) используется только со значениями Д (D), В(T) и ДВ (DT).
   МимохожийОднако
 
24 - 29.04.21 - 09:29
Разложи дату на день, час, минуту, секунду и соедини в строку
   NIGHTHUNTER
 
25 - 29.04.21 - 09:49
вооде вопрос то простой, но пример что я нашел не работает ((
   МимохожийОднако
 
26 - 29.04.21 - 09:50
Не надо искать примеры, надо писать код.
   Kassern
 
27 - 29.04.21 - 09:57
(22) Формат(ТекущаяДата(),"ДФ=dd_MM_yyyy")
   Kassern
 
28 - 29.04.21 - 09:58
(27) в место нижнего подчеркивания, можно другой разделитель использовать.
   NIGHTHUNTER
 
29 - 29.04.21 - 09:59
ФОРМАТ(ТекущаяДата(), "ДФ='yyyyMMддЧммсс'")

вот так вышло, как писали в (24)


Список тем форума
Рекламное место пустует  Рекламное место пустует
AdBlock убивает бесплатный контент. 1Сергей
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.