|
Как бороться с отсечением лидирующих нулей при загрузке из табличного документа? | ☑ | ||
---|---|---|---|---|
0
Dotoshin
27.01.16
✎
09:03
|
Есть типовая обработка - Загрузка данных из табличного документа, с помощью которой нужно загрузить цены из экселя.
Все работает совершенно замечательно за исключением тех случаев, когда код номенклатуры состоит из числа и лидирующих нулей. Например 00000000255. В этом случае после открытия файла в обработке отображается 255 вместо 00000000255. Естессно цена для этой номенклатуры не загружается. В самом экселе, в ячейке отображается 00000000255, но если открыить ее на редактирование, то отобразится 255. Формат у этой ячейки какой-то нестандартный, вот такой: 00000000000;[Красный]-00000000000. Если указать текстовый формат, то ведущие нули сразу же обрезаются, но если после этого ввести эти нули руками, то - о чудо они сохраняются. На самом деле никакого чуда нет - текстовый формат хранит значение в том виде как оно введено. Собственно в чем вопрос, можно ли как-то преобразовать такие значения в текстовые? Может есть какой-то макрос или еще какой-то способ? |
|||
1
vde69
27.01.16
✎
09:07
|
формат(,)
|
|||
2
grayshadow
27.01.16
✎
09:09
|
в коде заменить .Value на .Text
|
|||
3
Масянька
27.01.16
✎
09:10
|
(2) +100
Либо - Дополнить(Строка, Чем, Длина). |
|||
4
Рэйв
27.01.16
✎
09:11
|
Лист.Cells(НомерСтроки, НомерКолонки).NumberFormat = Формат;
|
|||
5
Serg_1960
27.01.16
✎
09:11
|
Хмм.. прежде чем советовать, хотелось бы узнать что автор может изменить -формат Экселя или "есть типовая обработка"(цы) Если ни то ни другое изменить нельзя - то типовую обработку выгрузить во внешнюю и пририсовать свои бантики и рюшечки.
|
|||
6
Dotoshin
27.01.16
✎
09:14
|
(5) В каком смысле изменить формат Экселя?
|
|||
7
Serg_1960
27.01.16
✎
09:15
|
(6) в смысле внести изменения в файл экселя.
|
|||
8
Serg_1960
27.01.16
✎
09:16
|
или в алгоритм той программы, что его формирует.
|
|||
9
Serg_1960
27.01.16
✎
09:29
|
Если ексель "съедает" нули, то значит использовали "неудобный" для 1С формат ячейки. Почитай, например, http://catalog.mista.ru/public/269722/
|
|||
10
Dotoshin
27.01.16
✎
09:39
|
(9) Спасибо, очень полезная статья. Теперь осталось придумать как с этой бедой бороться.
|
|||
11
Dotoshin
27.01.16
✎
09:42
|
(1) формат не понимает как нужно форматировать строки, то есть Формат(255,"ЧЦ=11; ЧВН=; ЧГ=") вернет "00000000255", а Формат("255","ЧЦ=11; ЧВН=; ЧГ=") вернет "255"
А у меня как раз строка и преобразовывать ее в число нет никакого желания, потому как есть коды с буковками. |
|||
12
Serg_1960
27.01.16
✎
09:47
|
Хулиганю :) Прав("00000000000" + "255", 11)
|
|||
13
bolobol
27.01.16
✎
11:03
|
(12) А вот вы откуда знаете на этапе разработки - сколько лидирующих нулей имеется?
|
|||
14
grayshadow
27.01.16
✎
11:07
|
если ломать обработку лень, можно еще попытаться в файле нафигачить формат Текстовый и в ячейки вхерачить "00000000255" прямо с кавычками(!!!)
|
|||
15
bolobol
27.01.16
✎
11:30
|
(14) Во все 65 535 строчек предлагаете?
|
|||
16
Serg_1960
28.01.16
✎
09:27
|
(13) Открою тебе большой секрет: мне об этом сообщил автор в (11) и в (0) :)
|
|||
17
cw014
28.01.16
✎
09:42
|
В обработке есть чудо механизм "события". В событии при загрузке этого поля ставь "Формат" и будет тебе счастье
|
|||
18
FIXXXL
28.01.16
✎
10:04
|
(13) тут надо знать длину поля, куда потом пойдет загрузка
|
|||
19
Dotoshin
28.01.16
✎
10:23
|
(17) Да есть такой механизм. В каком событии мне нужно поставить формат, чтобы найти в справочнике номенклатуры позицию с кодом 00000000255, если в табличном документе из которого нужно загрузить, этот код записан как 255?
|
|||
20
Масянька
28.01.16
✎
10:26
|
(19) Ёлки-моталки! Там работы на час (максимум)... Ты же вторые сутки мозг имеешь...
|
|||
21
Dotoshin
28.01.16
✎
10:27
|
+ (19) По коду номенклатуры идет поиск, при загрузке из табличного документа. Ну то есть на вкладке настройка, в колонке режим загрузки, для номенклатуры установлено искать по коду
|
|||
22
Dotoshin
28.01.16
✎
10:27
|
(20) Так я вчера уже все сделал
|
|||
23
Dotoshin
28.01.16
✎
10:30
|
+ (22) ...с помощью кувалды, лома и такой-то матери, а хочется гармонии...
|
|||
24
FIXXXL
28.01.16
✎
11:35
|
(23) прочитай из метаданных длину поля-получателя, накинь слева 30 нулей и возьми ПРАВ от строки на длину поля-получателя
будет железно и гармонично :) |
|||
25
Serg_1960
28.01.16
✎
12:16
|
(кстати) Если по метаданным в коде 11 символов - это вовсе не значит что "реальные" коды справочника будут формироваться длиной в 11 символов. Автонумерация, например, формирует коды/номера с учётом длины поледнего кода/номера.
|
|||
26
Serg_1960
28.01.16
✎
12:17
|
*последнего
|
|||
27
Dotoshin
28.01.16
✎
13:00
|
(24) я так и сделал, только не 30 нулей, 11 по длине кода
(25) я проверил длина везде одинаковая, это как раз критерий - если прочитанное из экселя меньше определенной длины, значит нужно дополнить нулями |
|||
28
FIXXXL
28.01.16
✎
13:22
|
(27) я делал нечто похожее однажды, строку нулей формировал в цикле, по длине метаданного
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |