Итак, после загрузки файлов(в форме выбора файлов используете множественный выбор) Вы получаете по одному элементу в справочнике для каждого файла, в табличной части которого, для каждой ячейки есть строка. Для каждой ячейки указано :
- на каком листе она находится;
- её координаты — номер строки и колонки в отдельных реквизитов;
- текст который был в ячейке;
- сумма или дата, в отдельных колонках, если в процессе загрузки они были распознаны;
- формула забитая в ячейки;
- цвет фона или шрифта.
Как мы можем всю эту радость использовать? Вам остается написать запрос который бы выбрал данные в нужной Вам форме и потом обработать результат. Лично я, для одноразовых загрузок использую консоль запроса с обработчиком, для чего-то более менее регулярного приходится накидывать уже более полноценные куски кода.
Во вложении, я к обработке кинул демо excel файл и sel который на примере демо бухгалтерии демонстрирует простоту работы данной методики.
Например, меня очень радует что я могу запросами проверить корректность файлов. Например, что при заполнении бюджета использовали корректные наименования статей затрат из справочника и.т.п.
Теперь немного о минусах:
- файл грузится целиком, что может увеличивать время обработки — согласитесь, но работать без посредника будет быстрее. На этот аргумент, моя лень чихала. ) говорит что для регулярных обменах, где необходима оперативность надобно работьс xml.
- для чтения файлов использует COMОбъект(«Excel.Application») соответсвенно, для работы с управляемыми приложениями на сервере(или вашей тачке, клиент таки толстый) должен быть установлен MS Office. Но! если тема получит адекватный отзыв, моя лень заткнется и я перепишу что-бы читать xlsx напрямую.
Очень красивое решение. Класс!!!
Считываете через ADO?
Вот мне кажется, что если читать с хмл на прямую, то это было бы шикарно, иначе, как то не ахти.
Нет, COM.
(3) DitriX,
спасибо за мнение.
Мне кажется стоит поторговаться со своей совестью и прикрутить чтение файлов xlsx напрямую, не будет напрягов с наличием установленного пакета Office. Думаю, что идея оригинальна для нерегулярных загрузок.
(6) _LEV_, Если сделаю, то выставлю за бабки. Так что либо мне либо майкрософту….
(8) Ну да… каждый кулик свое болото хвалит… 😉
А вообще автору плюс, т.к в любых идеях можно найти что-либо новое для каждого
Согласен — автору плюс. Как человек, допустим, который ищет подобную конкретную разработку, или просто идею, не вижу абсолютно никакого смысла лезть в какую-нибудь здоровую «самописную» подсистему, чтобы выделить в ней из кучи того что мне не нужно, малую толику того что нужно
Eugeneer, а среди доработок которые вы привели, есть что-то более «абстрактное», нежели загрузка прайсов?
При наличии Ctrl-C + Ctrl-V из Excel в 1С, имхо, тратить время на написание каких-то там COM-соединений для загрузки пары файлов раз в год — бессмысленно..
Ежели у вас загрузка по расписанию — еще было бы понятно.. Но для единичных файлов..
(15) AlX0id, Что-то вообще не понял Вашего комментария. Каким образом Вы собираетесь перенести данные из Excel в базу 1С, используя буфер обмена?
Если бы Вы привели только одну функцию поиска в файле Excel нужного вам зачения (find), то
это решило бы все проблемы. Такой метод/способ ЕСТЬ.
А так… просто трата времени и ресурсов.
Сопряжение 1С и Excel давно размусолено до самых последних «битов».
Уж даже не знаю, что там ещё можно нового найти?
Ничего личного.
(16) RomanUzmov,
«При наличии Ctrl-C + Ctrl-V»
Это он пошутил.
(16) смотри сюда:Как программисту быстро загрузить данные из Excel
1.Не работает в клиент-серверном варианте
2.Зачем нужен такой способ, если можно сразу обратиться запросом к экселю, считать нужные данные и не хранить их в базе
(16) RomanUzmov,
Создаете в обработке на форме табличный документ и тупо копируете туда данные Excel. В дальнейшем работаете только с этим табличным документом. Все. Никаких COM-объектов.
На счет красоты решения и целесообразности ради этого внесения изменений в конфу еще можно подумать.
А ведь всего лишь нужно: 1) Кусок кода для COM подключения 2) Циклом создается ТЗ и заполняется. 3) Обработка таблицы — хоть запросом, хоть чем. При желании это все выносится в шаблон. Выращивать базу элементами с ТЧ в десятки тысяч строк, как это бывает в прайсах, может быть, и не надо.
(22) evrakylon, (20) smielka,
Коллеги, очень хочется потролить, но лень,и еще раз отвечая на вопрос «А НАФИГА???» —
я не люблю(мне лень) писать код, особенно связанный с выборкой данных. Я люблю запросы, они созданны только именно для этого, я пишу их быстро и с удовольствием.
Все остальные моменты которые меня радуют даже перечислять не буду. В шапке я упоминал. Решение не универсально, предназначенно для тех кто предпочитает окну конфигуратора консоль запросов + обработка.
На в клиент сервере работает при наличии на сервере excellя, в моменте — мне проще пойти и заставить админов поставить excell, чем парсить структуру xlsx — уверен вам тоже.
Решение «As Is» и не претендует «на истину в первой инстанции».
Спасибо всем кому понравилось.
Согласен, для себя очень многое открыл.
Добрый день. А в чем принципиальное отличие от аналогичных ?
да каждая вторая обработка на инфостарте чтото делает с exceLL !! где загрузка и обработка таблиц из GOOGLE DOCS — я считаю это просто необходимо добавить в это разработку !! АФТАР ДОБАВЬ ПОЖАЛУЙСТА !!!
Ну вот, накинулись на человека. А на самом деле идея не лишена изящества.
Мне тоже хочется на сторону разработчика новой обработки. Ставлю плюс и попробую использовать.
(26) bxz, Согласен, ваще вот прям!
Еще считаю нужным загрузки из ДБФ!!!
Так как меня все бесит!!!
(23) Александр Серов, спасибо Александр за обработку, за идею! Можно хранить загруженные файлы (в смысле, из которых была загрузка). Чтобы потом была информация для «разбора полетов», когда, например, после загрузки задваивается номенклатура.
А какую-нить демо версию можно сделть бесплатную? или хоть примеры запросов для БД демо.