Имя: Пароль:
1C
 
Ошибка при выгрузке в XLS
0 NIGHTHUNTER
 
28.04.21
09:31
Подскажите пожалуйста, из за чего идет ошибка.

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

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

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

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

= СТРОКА(ТзСтрока[ТзКолонка.Имя]);


было

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

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

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

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

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


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

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

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

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

но он вообще ничег оне делает (((( как все же нужно правильно ?
22 NIGHTHUNTER
 
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
Разложи дату на день, час, минуту, секунду и соедини в строку
25 NIGHTHUNTER
 
29.04.21
09:49
вооде вопрос то простой, но пример что я нашел не работает ((
26 Мимохожий Однако
 
29.04.21
09:50
Не надо искать примеры, надо писать код.
27 Kassern
 
29.04.21
09:57
(22) Формат(ТекущаяДата(),"ДФ=dd_MM_yyyy")
28 Kassern
 
29.04.21
09:58
(27) в место нижнего подчеркивания, можно другой разделитель использовать.
29 NIGHTHUNTER
 
29.04.21
09:59
ФОРМАТ(ТекущаяДата(), "ДФ='yyyyMMддЧммсс'")

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