|
v7: Полтергейст с записью в Excel | ☑ | ||
---|---|---|---|---|
0
evgpinsk_
29.01.19
✎
10:00
|
Странный глюк.
Открываю файл Exccell, записываю данные во 2й столбец, 1й столбец оставляю пустым, сохраняю файл. конец процедуры. Открываю файл и в нём записанные данные вижу в 1м столбце. Если же в процедуре заполняю и 1й столбец, то всё штатно. Вот сам код: Функция Сформировать() xl=createobject("Excel.Application"); имяФ=ПутьКфайлу; wb2=xl.Workbooks.Open(имяФ,,0); Лист2=wb2.sheets(1);//Первый лист xl.Displayalerts = 0; xl.Cells.Select(); xl.Selection.Delete(10); //очищаем 10 строк wb2.SaveAs(имяФ); Лист2.Cells(1,2).Value="2"; Лист2.Cells(1,1).Value="1"; //если эту строку закомменировать, то данные из 2го стообца оказывается в 1м стол wb2.SaveAs(имяФ); xl.ActiveWorkbook.close(); КонецФункции Или ссылка на обработку: https://dropmefiles.com/REqAt |
|||
1
Tatitutu
29.01.19
✎
10:27
|
Все штатно работает
|
|||
2
Tatitutu
29.01.19
✎
10:28
|
с комментарием и без
(смотри в диспетчере задач - не висит ли EXCEL в процессах) |
|||
3
evgpinsk_
29.01.19
✎
11:42
|
(1) Вы проверили у себя?
|
|||
4
evgpinsk_
29.01.19
✎
11:42
|
(2) Нет, не висит
|
|||
5
evgpinsk_
30.01.19
✎
11:33
|
Жаль зависла тема
|
|||
6
НоваяВолна
30.01.19
✎
11:47
|
(0) А зачем сохраняешь два раза?
|
|||
7
Kigo_Kigo
30.01.19
✎
11:50
|
(5) Что я делаю не так ?
https://yadi.sk/i/tCIIAe83jB5AkQ |
|||
8
Mikeware
30.01.19
✎
12:01
|
(7) ты делаешь все правильно. а вот что делает ТС - загадка...
|
|||
9
Kigo_Kigo
30.01.19
✎
12:11
|
(8) Я взял его обработку, закомментил строку, которую он просил, отчет на скрине
|
|||
10
Kigo_Kigo
30.01.19
✎
12:15
|
Я думаю ТС пишет в один файл, смотрит в другой
|
|||
11
Кирпич
30.01.19
✎
12:23
|
Может первый столбец у него скрыт
|
|||
12
Кирпич
30.01.19
✎
12:24
|
Скриншота полтергейста то нету
|
|||
13
evgpinsk_
30.01.19
✎
17:03
|
(7) У екселя как бы много версий
|
|||
14
evgpinsk_
30.01.19
✎
17:10
|
http://prntscr.com/me9y3r
и сейчас попробую видео снять |
|||
15
evgpinsk_
30.01.19
✎
17:15
|
https://dropmefiles.com/inaSD видео проблемы.
Я предполагал, что может быть проблема в офисе 2016 |
|||
16
evgpinsk_
30.01.19
✎
17:18
|
Ребята сори, перегрелся. Буду смотреть свою основную обработку
|
|||
17
Ёпрст
30.01.19
✎
17:57
|
(15) И ? где глюк то ?!
|
|||
18
Ёпрст
30.01.19
✎
17:57
|
опять наипалово
|
|||
19
evgpinsk_
31.01.19
✎
00:10
|
Нет, всётаки ещё не так со мной всё плачевно ).
Да, глюк действительно у Екселя /скорее всего именно моего варианта/ есть. Один и тотже код 1с ведёт себя по разному. Ссылка на видео: https://dropmefiles.com/kKCDX Плоховатое качество картинки, код практически тотже: Функция Выполнить() xl=createobject("Excel.Application"); wb2_=xl.Workbooks.Open(ПутьКфайлу,,0); Лист2_=wb2_.sheets(1);//Первый лист xl.Displayalerts = 0; xl.Cells.Select(); xl.Selection.Delete(1446); wb2_.SaveAs(ПутьКфайлу); Лист2_.Cells(1,1).Value=1; Лист2_.Cells(1,2).Value=3; wb2_.SaveAs(ПутьКфайлу); КонецФункции |
|||
20
Mikeware
31.01.19
✎
07:22
|
(19) видео моргает и хрен что увидишь.
в чем проблема-то? |
|||
21
Кирпич
31.01.19
✎
08:04
|
(19) да выспись уже, наконец :)
|
|||
22
evgpinsk_
31.01.19
✎
08:41
|
(20) Проблема что ИНОГДА, код Лист2_.Cells(1,1).Value=1; записывает значение во второй столбец.
Если же 1й столбец не пустой, то пишет во 2й столбец |
|||
23
Ёпрст
31.01.19
✎
08:42
|
(22) неа, проблема в том, что иногда нужно F5 нажимать и перечитывать открытый документ
|
|||
24
Mikeware
31.01.19
✎
08:47
|
(21)изветный анекдот про листинг, и вопрос "где же у меня ошибка?"
© |
|||
25
evgpinsk_
31.01.19
✎
08:50
|
(23) Не пойму, причём здесь обновление через F5?
|
|||
26
Mikeware
31.01.19
✎
08:51
|
(25) пишешь в открытый файл?
|
|||
27
evgpinsk_
31.01.19
✎
08:58
|
нет конечно. перед выполнением процесс ексель закрыт
|
|||
28
evgpinsk_
31.01.19
✎
09:02
|
И самое интересно, что с первой попытки код:
Лист2_.Cells(1,1).Value=1; Лист2_.Cells(1,2).Value=3; цифру 3 добавляет в ячейку 1. а уже каждая последующая попытка отрабатывает нормально, цифра 1 в первой ячейке, цифра 3 во второй |
|||
29
Mikeware
31.01.19
✎
09:08
|
(28) все прекрасно работает.
пишет туда, куда надо. а в чем вообще цель кода, пишушего две цифры в известные две ячейки? |
|||
30
evgpinsk_
31.01.19
✎
09:11
|
(29) Я понимаю, что этот код должен работать и работает в 98% случаев. Но у меня он не всегда работает.
И на видео это видно. И основная моя обработка также глючит. А выше просто пример для облегчения кода |
|||
31
evgpinsk_
31.01.19
✎
09:14
|
Возможно связано с версией Офиса, или может "Office Tab" у меня глючит, не знаю.
Думал, может кто сталкивался с такой ситуацией |
|||
32
Кирпич
31.01.19
✎
09:21
|
(30) на видео у тебя как раз всё правильно работает. где видео, в котором не работает?
|
|||
33
Кирпич
31.01.19
✎
09:25
|
Может проблема в том, что у тебя csv, а не xls и excel сохраняет только диапазон с реальными данными
|
|||
34
Кирпич
31.01.19
✎
09:25
|
задай имена колонок в первой строке
|
|||
35
Кирпич
31.01.19
✎
09:26
|
и нахрена для записи csv запускать махину Excel, если можно записать текстовый файлик и без него.
|
|||
36
Mikeware
31.01.19
✎
09:34
|
(35) "Если из всех инструментов у тебя есть только молоток, то в каждой проблеме ты увидишь гвоздь".
А если ты проктолог, то все задачи решаешь соотвественно :-) Что и делает ТС. |
|||
37
evgpinsk_
31.01.19
✎
09:50
|
(32) сообщение (19)
|
|||
38
evgpinsk_
31.01.19
✎
09:51
|
(35) Выше сокращённый пример. Основной обработке нужен Ексель
|
|||
39
Mikeware
31.01.19
✎
09:52
|
(37) ну хотя бы видео нормально выклади. или скрины.
|
|||
40
Вася Теркин
31.01.19
✎
09:58
|
(14) Пять баллов друг! Спасибо, порадовал!
И как я тебя сразу не разглядел такого талантливого... |
|||
41
evgpinsk_
31.01.19
✎
10:02
|
(40) Ещё раз объясняю, первая обработка также глючит. Просто проблема проявляется НЕ всегда. И когда позже я снимал первое видео, то не заметил, что в тот момент работало штатно
|
|||
42
Вася Теркин
31.01.19
✎
10:04
|
(39) Не надо. Я от первого видео уже...
|
|||
43
evgpinsk_
31.01.19
✎
10:08
|
(39) https://dropmefiles.com/pkxef
софтина в не очень хорошем разрешении пишет. но вроде как всё видно. в 54 секунды уложился. |
|||
44
Mikeware
31.01.19
✎
10:27
|
ну, в csv воспроизводится.
соглашусь. хотя не понимаю, и не вижу ответа на Традиционный Китайский Вопрос... |
|||
45
evgpinsk_
31.01.19
✎
10:34
|
(44) Гугл не знает, что за вопрос )
|
|||
46
Mikeware
31.01.19
✎
10:35
|
(45) "анахуа?"
|
|||
47
evgpinsk_
31.01.19
✎
10:52
|
(46) Ответ в (38). Есть и XLS файлы, которые нужно править
|
|||
48
Mikeware
31.01.19
✎
10:53
|
(47) ну тогда зачем ты правишь csv?
|
|||
49
evgpinsk_
31.01.19
✎
11:00
|
(48) отве в (30)
"И основная моя обработка также глючит. А выше просто пример для облегчения кода"" |
|||
50
evgpinsk_
31.01.19
✎
11:00
|
и в в (47) ответ. Есть xls файлы, которые мне нужно править
|
|||
51
vova1122
31.01.19
✎
11:06
|
Да, если писать в csv, то будет глючить. Если задать расширение xls, то отработает правильно. Проверь свою поделку при записи в ексель а не в csv.
|
|||
52
evgpinsk_
31.01.19
✎
11:13
|
(51) уже понял и в планах, чуть позже проверю.
|
|||
53
evgpinsk_
31.01.19
✎
12:49
|
(51) Да, если файл переименовать в xls то всё ок
|
|||
54
evgpinsk_
31.01.19
✎
13:30
|
Устал ).
если не ошибаюсь, изначально с xls отработало нормально. Но вот сейчас и с ним глючит. http://prntscr.com/meoaul http://prntscr.com/meobnb |
|||
55
vova1122
31.01.19
✎
13:56
|
(54)Может через лишнее сохранение документа. Такого не должно быть. (или сам ексель чудит. Попробуйте открыть этот файлик на другом компе с другой версией екселя
|
|||
56
Kigo_Kigo
31.01.19
✎
15:19
|
(54) А откройка нам этот файлик блокнотом и покажи нам содержимое
|
|||
57
evgpinsk_
31.01.19
✎
15:40
|
||||
58
Kigo_Kigo
31.01.19
✎
15:45
|
(57) Все ясно, полтергейста тут никакого нет, файл csv это просто текст с разделителем,поставь в блокноте перед "5" знак ";" увидишь его во второй ячейке, а мы то тут бьемся
|
|||
59
Kigo_Kigo
31.01.19
✎
15:46
|
Если тебе нужен файл именно csv формата, то тут эксель не нужен, пиши значения прямо в текст с разделителем ";"
|
|||
60
evgpinsk_
31.01.19
✎
15:53
|
(58) Да, но почему тогда на первом видео код 1с сам ";" прописывает, т..е штатно. и тотже код на втором виде - нет.
Ну и таже проблема с xls файлами |
|||
61
evgpinsk_
31.01.19
✎
15:58
|
Проблема с csv файлами - предположим разобрались, что в связке 1с-exccell иногда знак ";" не прописывается.
Но как объяснить тотже глюк с xls файлами? |
|||
62
Kigo_Kigo
31.01.19
✎
16:02
|
(61) Файл CSV переименованный в xls, не становится xls, он все еще остается csv c расширением экселя, создай чистый файл экселя, и положи его вместо своего и все взлетит
|
|||
63
evgpinsk_
31.01.19
✎
16:40
|
(62) Верно. Скорее всего проблема в этом.
Ну а ситуция когда в один и тотже код 1с иногда и в csv пишет верно - спишем на барабашку ) |
|||
64
vova1122
31.01.19
✎
16:53
|
(63) 1с в csv всегда пишет верно (согласно ващему коду) и никаких ";" не ставит, если ты в коде этого не сделал.
А в екселе csv открывается по разному, потому, что ексель пытается анализировать то что ему подсовывают в файле csv и пробует разместить по ячейкам |
|||
65
Kigo_Kigo
31.01.19
✎
16:54
|
(63) Это не барабашка, это как говорится - уже "замылился глаз", хотя что я несу, да, это барабашка, в рот ей компот :)
|
|||
66
vova1122
31.01.19
✎
17:02
|
(63) например запиши в свой csv файл (вручную) вот такую строку (примерно так должен выглядить файл csv с разделителями)
00025;000,25;0000,0025000;25000 и открой его екселем. Удивишься куда пропадают нули (но не все) |
|||
67
evgpinsk_
31.01.19
✎
17:07
|
(66) Я это понимаю. Но барабашка пока гдето зарыта:
код Лист2_.Cells(1,1).Value=1; Лист2_.Cells(1,2).Value=3; Лист2_.Cells(1,3).Value=5; в CSV пишет так: 1;3;5 а код: Лист2_.Cells(1,1).Value=1; Лист2_.Cells(1,2).Value=3; в CSV пишет так: 1 3 |
|||
68
vova1122
31.01.19
✎
17:08
|
(62) Экстрасенс. Я бы до такого не додумался что в файле поменял разрешение.
|
|||
69
evgpinsk_
31.01.19
✎
17:08
|
вот скрин:
http://prntscr.com/merti6 |
|||
70
vova1122
31.01.19
✎
17:09
|
(67) Барабашка в этой строке
|
|||
71
vova1122
31.01.19
✎
17:09
|
xl=createobject("Excel.Application");
|
|||
72
evgpinsk_
31.01.19
✎
17:12
|
(70) Объясните?
|
|||
73
evgpinsk_
31.01.19
✎
17:14
|
(67) Причём как и писал, только первая попытка выполнения кода работает не штатно - (код 1с не добавляет знак ; в csv)
при втором и каждом последующем запуске обработки знак ; добавляется кодом 1с |
|||
74
vova1122
31.01.19
✎
17:18
|
(72) xl=createobject("Excel.Application"); предназначен для работы с екселевкими файлами. И ты создаешь свой текстовый csv файл через ексель (например у тебя есть открит екселевский файл и ты делаешь в екселе: Файл/Сохранить как/ выбрать формат csv)
|
|||
75
vova1122
31.01.19
✎
17:20
|
Если так хочется писать в csv файл, то используй обект Текст (и в коде после каждого елемента не забывай вставлять разделитель.
Вот первая ссылка с описанием метода Текст http://www.about1c.ru/v77/for-developer/language-reference/complex-auxiliary-types/text |
|||
76
evgpinsk_
31.01.19
✎
17:23
|
(74) Это не отвечает на вопрос:
Почему код: xl=createobject("Excel.Application"); wb2_=xl.Workbooks.Open(ПутьКфайлу,,0); Лист2_=wb2_.sheets(1);//Первый лист xl.Displayalerts = 0; xl.Cells.Select(); xl.Selection.Delete(1446); Лист2_.Cells(1,1).Value=1; Лист2_.Cells(1,2).Value=3; wb2_.SaveAs(ПутьКфайлу); с 1й попытки знак ; не добавляет в файл CSV, но уже со 2й и каждой следующей добавляет |
|||
77
evgpinsk_
31.01.19
✎
17:27
|
Со всем разобрался, тема пополнила багаж знаний. Но вот барабашка из (76) пока не понятна
|
|||
78
vova1122
31.01.19
✎
17:30
|
(76) а ты попробуй прямо из екселя сохранить в csv (оставив заполненной только одну ячейку), потом несколько ячеек. (увидишь разнику
|
|||
79
Kigo_Kigo
31.01.19
✎
17:33
|
(77) Там разделитель, табуляция, а как и почему это делает эксель не понятно, может какие параметры или команды ему дополнительно надо давать, чтобы он всегда делал раделитель один и тот же, а мы ему даем это делать самостоятельно(выбирать знак разделитель) как и по какому признаку он это делает я лично не знаю, знаю одно работать из 1С через ексель в тексте- то еще извращение :)
|
|||
80
evgpinsk_
31.01.19
✎
17:48
|
(78) Нет смысла. Мы говорим о том, что код 1с 1й раз работает одним способом. а второй раз /ничего не меняя/ - уже по другому.
А сохранение из екселя будет работать и первый раз и последующие одинаково |
|||
81
vova1122
31.01.19
✎
18:10
|
(81) Нет. изменилось количество заполненных ячеек.
но суть не в том. Для текста есть объект Текст, для Екселя есть ЕксельАпликатион, Для того чтобы забить гроздь в доску есть молоток..... Поэтому для каждого случая нужно использовать свой инструмент |
|||
82
evgpinsk_
18.02.19
✎
23:34
|
Всё-таки при работе с CSV чтение данных через
xl=createobject("Excel.Application"); имеет свои плюсы. Не нужна замарачиваться с правильным прочтением данных из CSV формата, знак " Excell сам убирает. А вот если читать данные через Текст, то приходится гемороится, чтобы корректно прочитать значения без знака " |
|||
83
Злопчинский
19.02.19
✎
00:49
|
Даааа, Эксель это не в мотобол гонять...
|
|||
84
Mikeware
19.02.19
✎
07:12
|
(82) позовите программиста!©
|
|||
85
Slypower
19.02.19
✎
08:58
|
(82) Правда скорость чтения с csv быстрее, чтение без запуска exel, да и проблем меньше. Вот пример: в новых версиях ексель, установленных на компе, могут быть глюки при чтении чисел. Число 4,02 он может распознать на дату 4.02, а потом при преобразовании в число результат: 4.2, т.к. февраль - это 2й месяц. Наглядно видно при открытии файла cvs в екселе, там даты проставлены.
|
|||
86
Kigo_Kigo
19.02.19
✎
10:25
|
(82) Ну да вот ведь гемморой какой СтрЗаменить(Симв(34),"") :)
|
|||
87
Arbuz
19.02.19
✎
14:51
|
та. надо было создать объект corel draw и уже через него работать с файлом csv с измененным "разрешением" на xls. желательно в utf-16be. вообще без заморочек, само все проставляется и убирается.
|
|||
88
evgpinsk_
19.02.19
✎
15:41
|
(86) Уверены?
Т.е. мне нужны кавычки тоже заменить на запятую? |
|||
89
evgpinsk_
19.02.19
✎
15:49
|
Да, есть относительно простой способ читать в Список строку CSV, заменим предварительно "ЗнакРазделителя" на запятую, а двойные кавычки например на одинарные.
Но трабл в том, что и двойные ковычки тоже нужны. И соответственно код из 4х строчек уже усложняется. Я не говорю что это сложно написать, но использую Ексель вообще не нужно этих лишних движений |
|||
90
Kigo_Kigo
19.02.19
✎
15:58
|
(88) (89) Ну и будете получать полтергейсты как в сабже, газовым ключом тоже можно автомобиль отремонтировать, но сцук не удобно
|
|||
91
evgpinsk_
19.02.19
✎
16:15
|
(90) Ну речь как бы не об этом. Был поднята тема, что через Ексель иногда возникают траблы и при работе с CSV файлами. Но зато не нужно замарачиваться с чтением значений из него, не нужно всякие преобразования и замена ковычек и т.д.
Если этот трабл можно решить, либо в других версиях трабл не проявляется, то не вижу проблем в определённых задачах использовать "гаечный ключ". |
|||
92
Kigo_Kigo
19.02.19
✎
16:29
|
(91) Там сразу сказали, csv файл по сути не екселевский, а текст, и работать надо с ним как с текстом, я еще посмотрю как вы из екселя число с дробью для 1с-ки преобразовывать будете
|
|||
93
Злопчинский
19.02.19
✎
17:12
|
по мне так проще csv без всяких экселей обработать.
|
|||
94
ДенисЧ
19.02.19
✎
17:12
|
(93) А если будет "аа;бб";"цц" - проще? )))
|
|||
95
evgpinsk_
19.02.19
✎
17:31
|
(92) Надо кому? Ещё раз - есть разные задачи и разные варианты решений. То что CSV - текстовый документ - не отменяет возможности открывать его через Ексель.
И если бы не непонятный глюк, который наблюдается у меня, я бы с удовольствием использовал и дальше Ексель, а не гемороился с правильным чтением ковычек из CSV файла |
|||
96
evgpinsk_
19.02.19
✎
17:36
|
(93) Чем проще?
В екселе я из любого места читаю Cells(строка, столбец). И значение читается сразу без ковычек, то что обычно и нужно. Если читать ПРАВИЛЬНО CSV то нужно ещё дописать дополнительный обработчик CSV, который не из 3х строчек. И кстати в гугле я готовый так и не нашёл :) /я не считаю правильным когда " заменяется на '/ |
|||
97
Mikeware
20.02.19
✎
08:08
|
(96) по большому счету, ексель надо покупать...
кстати, с CSV можно через ADO работать |
|||
98
Salimbek
20.02.19
✎
08:46
|
(96) Недавно только писал, код тут: В тупике... Чтение CSV с разделителями и всяким мусором
В той же ветке ссылка на Книгу знаний: Книга знаний: Преобразование csv в таблицу значений |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |