![]() |
![]() |
![]() |
|
Ошибка при выгрузке в 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) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |