Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Сохранение таблицы в Excel + формат ячейки "дата" вместо "общий" (http://forums.kuban.ru/f1040/sohranenie_tablicy_v_excel_format_yachejki_data_vmesto_obshij-3563963.html)

Birmingem 17.01.2013 13:21

Сохранение таблицы в Excel + формат ячейки "дата" вместо "общий"
 
Сохраняю таблицу отчета (Файл-Сохранить) в Excel 2010. Есть колонка с датами в формате "#ДДДММГГГГ", положение "центр". Как нужно в 1С отформатировать дату при выводе в таблицу, чтобы в Excel в этой ячейке сразу установился бы формат "Дата"? Сейчас устанавливается формат "Общий".

bma1 17.01.2013 14:11

"20120105" - общий формат
"05.01.2012" - дата

101 17.01.2013 14:58

пересохрани прогой - 1C Предприятие 8.2 - Работа с файлами

Buzz 17.01.2013 15:32

Попробуй выравнять значения не по центру, а право (лучше сразу в конфигураторе). При сохранении эксель должен врубится в нужный формат.

Helen1986 17.01.2013 16:19

а вывести в ячейку =Дата(год;месяц;день) религия не позволяет?

Birmingem 18.01.2013 17:04

1) Это понятно и так. Естественно выводится "05.01.2012". Написал же про формат "#ДДДММГГГГ"
2) Речь о 1С 7.7
3) Если выравнивание в право, то Excel воспринимает как число.
4) Пробовал. В отчете выводится как "05.01.12". В Excel все равно сохраняется в формате "Общий"

Helen1986 18.01.2013 17:43

тогда так попробуй


ДатаФормат = "ДД.ММ.ГГГГ";
Лист2.Cells(НомерСтроки,НомерКолонки).NumberFormat = ДатаФормат;


даем экселю по башке - впендюриваем формат даты

DeiMos 18.01.2013 19:10

Влево

Birmingem 21.01.2013 16:50

6) эээ ... неееет, не пойдет. Понятно, что при программной выгрузке в эксель, можно чего хочешь наформатировать. Мне же надо, чтобы в 1С:Предприятие нажал "Сохранить как" и все ...
7) Выравнивание влево, или по центру, дает одинаковый результат. В Excel все равно сохраняется в формате "Общий".

Helen1986 21.01.2013 17:16

уважаемый, с такими запролсами валите ка вы .... к разработчикам 1це.

bma1 21.01.2013 17:40

2(0) У тебя Ексель неправильный. 97-ой отлично понимал строку типа "01.11.2012" как ДАТУ.

economist 22.01.2013 09:31

Кстати да, стоит, однако-ж, поставить на MSO2010 SP1... Борюсь с привычкой "Сохранить как - xls" всеми средствами, уж больно много от нее проблем.

Если не шашечки, а ехать, то можно решить задачу и внутри Excel, формулами или на VBA:

=ДАТА(ЛЕВСИМВ(RC[-1];4);ПСТР(RC[-1];5;2);ПРАВСИМВ(RC[-1];2))

Если эту строку ввести в правила автозамены PuntoSwitcher на набор пары буковок, то получить нужные даты можно за несколько секунд - вставил столбец, нажал пару буковок и пробел, двойной клик по маркеру автозаполнения - вуаля.

А на написание/чтение/поиски решения в рамках всего этого поста - у уважаемой публики уже ушло, имхо, 3 человеко-часа, что нанесло ущерб российскому ВВП по меньшей мере в 1 тыс. руб.

Helen1986 22.01.2013 09:51

решение давно найдено грамотными человеками.
причем работает гораздо быстрее
всех предложенных здесь

economist 22.01.2013 11:57

Моксель? Так и он иногда пасует перед экзотическими форматами, форматированием пробелами и нестандартными разделителями триад/дробной доли.

Helen1986 22.01.2013 12:10

что такое моксель?

economist 22.01.2013 14:49

йоксель-моксель, что-же еще?

Helen1986 22.01.2013 16:05

ну и нафиг оно нужно?

economist 22.01.2013 16:12

Helen1986 - сохранять за 5 секунд в XLS то, что штатным методом Сохранить как не сохранится никогда.

Birmingem 22.01.2013 16:21

12)Что за решение то, от грамотных людей? Озвучьте пожалуйста?

Birmingem 22.01.2013 16:29

На счет Йокселя, пробовал как то, по минимуму, только для сохранения больших отчетов.
А кто в курсе, Йоксель проблему указанную здесь, решает?

Helen1986 23.01.2013 09:27

(18) у нас это работает в первую очередь в индивидуальных прайсах для покупателей
смысл простой - из обработки пишем в ДБВ файлы (встроенная возможность), ДБФ создается программно,
полям записи присваивается нужный тип.
Записи сначала записываются в ТЗ и там как надо сортируются (по цене, срокам годности, срокам поставки, изготовителю и ваще как моя левая задняя нога пожелает)

Открывается эксель через ОЛЕ

выдается команда на создание нужной страницы в экселе (прайсы у нас многостраничные)

импортируется внеший ДБФ файл на страницу. Так как эксель признает ДБФ файлы за свои - он прекрасно разбирается в типах ячеек. Импортируется 60 тыс строк за 1-2 секунды

Далее у нас раскрашиваются колонки, устанавливается их защита, вносятся формулы для расчетов и т.д.
Обработка ведется не отдельных ячеек, а регионов.

для создания новой страницы цикл повторяется

затем файл экселя записывается

все программируется очень легко - есть программка,
которая записанные в экселе тексты макросов переделывает в куски кода 1це. Знай себе клепай макросы в экселе, кидай через буфер в программку, и опять таки через буфер в 1це. Думать особо не надА

Helen1986 23.01.2013 09:34

при создании файлов экселя (именно прайсов) мы делаем скрытые колонки, в которые заносим идентификатор товара в 1це, контрольные суммы и т.д.

покупатель просто проставляет в прайсе количество
при этом у него на экране отображается автоматом
сумма по группе товаров
вес/объем по группе товаров
на отдельном листе -
суммы по группам товаров
вес/объем по группам товаров
итоговая сумма
итоговый вес

после простановки заказанного количества файл отсылается взад. И оператор на основе этого файла формирует расходные накладные с учетом веса, габаритов и т.д.

Есть еще заказ через сайты - там немного по другому
но заказом через эксельные файлы пользуется куча клиентов - по моему, многие предпочитают именно такую оторванную от инета заказную систему

там же реализована защита от подделок

economist 23.01.2013 13:29

Helen1986 - одобряю именно такой подход. Где надо много считать - лучше и проще этио сделает Excel... Правда сейчас вОроны налетят, скажут что мы не правы...

И тем не менее есть пара ремарок, вдруг кому понадобится:

1) Транслировать код VBA в 1C-код, по моему извращение. Буфер, если это не терминальный сеанс - можно работать с ним и программно. Я бы перенес (у мя тоже есть подобная система) центр кода в Excel.

2) Excel 2007 некорректно работает с DBF при доступе через ODBC/ADO/DAO именно с датами, не делает экспорт в DBF. Начиная с этой версии поставил крест на использование с Excel файлов DBF. Лучше работать с TXT - парсинг мгновенный, все методы штатные, типизация не утиная - а та, которая нужна...

Helen1986 23.01.2013 15:11

(22) это не мой подход - это я сперла готовую идею и мне понравилось рисовать для заполнения сложных таблиц экселя с формулами и на нескольких листах


транслируется код макроса - точнее, команд, которые надо подать экселю для выполнения. Чтобы мосх не парить

VZ 23.01.2013 17:25

Прекрасное решение. Только не сабжа, правда.
Заявлено: "Сохранение [b]таблицы[/b] в Excel"
Предложенно: "[b]Создание[/b] таблицы Excel-я"
Что полезно, конечно :D

economist 23.01.2013 20:13

Helen1986 - ага, значит все таки наоборот - из кода 1С в Excel передаются команды VBA (т.е. через COM или идет доступ к объектной модели VBProject). Все рано изврат. Если жутко не хочется в XLS файлах держать макросы - держите их в XLA/XLAM - библиотеках. И клиентов антивирус будет спать спокойно, и макросы можно будет редактировать в VBA IDE, что не в пример удобнее COM-обращений. Имхо.

VZ - Да... Создание предложено Helen1986, я же предложил либо сохранять быстро тем что умеет не коверкать формат. У создания есть минус - тогда если это терминальный сервер - нужен Excel на сервере, а это лицензионный вопрос, и в случае сложных или долгих макросов - нагрузка на сервак, вплоть до его завешивания.

Helen1986 24.01.2013 09:43

(25) фигня твои предложения

Birmingem 24.01.2013 13:03

Helen1986
Спасибо за подробное описание. Метод и сфера его применения весьма интересные.
А что за программка, которая макросы экселя в код 1С переводит? Не слышал про такую.

Helen1986 24.01.2013 14:36

FriendVBA называется

victuan 22.02.2017 07:50

Контроль - "Авто"
Положение - "Центр" - "Центр".
Проверено - работает!


Текущее время: 17:07. Часовой пояс GMT +3.