NEW! Быстрый способ выгрузки в Excel без «геморроя» с помощью COMSafeArray.

30.03.14

Интеграция - Загрузка и выгрузка в Excel

Как очень быстро, легко и без всяких препятствий (драйвера ADODB, права пользователя Windows и т.п.) выгрузить данные в Excel с помощью COMSafeArray.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Шаблон выгрузки в Excel COMSafeArray.epf
.epf 8,48Kb
107
107 Скачать (1 SM) Купить за 1 850 руб.

Заглянем в справку:

COMSafeArray  - объектная оболочка над многомерным массивом SAFEARRAY из COM. Позволяет создавать и использовать SAFEARRAY для обмена данными между COM-объектами.

Т.е., существует универсальный массив  для передачи данных между различными COM-объектами.  Всё что нужно, это 1С и Excel, ничего лишнего. Именно это привлекло моё внимание к этому объекту.

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

Этот объект очень хитёр, т.к. при чтении файла из Excel возвращается массив в одном виде, а для передачи данных в Excel необходимо создать немного иной вариант. Но время было потрачено с пользой.

Кроме того, функция принимающая таблицу значений и сохраняющая данные в файл получилась универсальной. Теперь достаточно создать запрос с учётом некоторых нюансов и передать в эту функцию выгрузку запроса или таблицу значений.

Предложенная обработка спроектирована таким образом, что может быть вызвана как пользователем, так и регламентным заданием.

ОБРАТИТЕ ВНИМАНИЕ!

  1. Если в ТЗ будут строки из чисел, то как поступить, чтобы Excel не превратил их в числа, описано в публикации «Выгрузка данных в Excel без «геморроя». Один, но принципиально важный момент» (Ищите в моих публикациях).
  2. Учтите, Excel не понимает дат меньше 01.01.1900, по этому и пустую дату передавать нельзя, будет ошибка.
  3. ТЗ должна содержать только примитивные типы Дата, Число, Строка, Булево.

Эти нюансы, дополнительно, описаны в самой обработке.

Также, обратите внимание на статью «Как предотвратить возникновение ошибки при одновременном обращении пользователя и обработки к Excel»  (Ищите в моих публикациях).

Excel Экспорт Выгрузка данных COMSafeArray Обмен

См. также

Загрузка и выгрузка в Excel Оптовая торговля Печатные формы Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 1C:Бухгалтерия 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С. Забудьте о ручном вводе: загружайте документы из Excel в 1С за секунды! Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С.

8000 руб.

09.11.2016    244587    1133    912    

1054

Загрузка и выгрузка в Excel Маркетплейсы Программист Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы преобразуете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, Детский мир, МагнитЭкспресс (быв.Казань-Экспресс), Леруа Мерлен, ЭНФАНТА (Акушерство), ЛаМода, Летуаль, Твой дом, Золотое Яблоко в документы "Отчет комиссионера (агента) о продажах" и другие. Работает в 1С:БП 3.0, 1С:БП 3.0 КОРП, 1С:УТ 11, 1С:УНФ, 1С:КА 2, 1С:ERP Управление предприятием. Возможность подключить любые маркетплейсы. Анализ продаж ОZON. 30 дней БЕСПЛАТНОГО пользования!

5400 руб.

12.08.2021    38684    428    68    

178

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Пользователь Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 26.03.2025, версия 9.10 - 9.16)

18000 руб.

20.11.2015    160536    395    384    

522

Маркетплейсы Загрузка и выгрузка в Excel Программист Пользователь Платформа 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Загрузка данных отчета о реализации и продаже товаров из сервиса Яндекс.Маркета «Беру» из отчетов Excel для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11; Управление торговлей, редакция 10.3; Управление нашей фирмой, редакция 3.0 и Розница, редакция 3.0 в документ «Отчет комиссионера о продажах».

6000 руб.

09.12.2020    27091    279    1    

133

Загрузка и выгрузка в Excel Маркетплейсы Программист Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет Оперативный учет 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бухгалтерский учет Платные (руб)

Обработки загрузки данных о продажах WildBerries предназначены для следующих конфигураций: Бухгалтерия предприятия, редакция 3.0; Управление нашей фирмой, редакция 3.0; Розница, редакция 3.0; Управление торговлей, редакция 11; Управление торговлей, редакция 10.3

6000 руб.

11.12.2019    59908    1026    3    

259

SALE! 30%

ЭДО и ОФД Загрузка и выгрузка в Excel Бухгалтер Бухгалтерский учет 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Платные (руб)

Кто получает документы в формате XML из различных сервисов ЭДО (формат 820 приказ ФНС 31 мая 2019 или формат 970 (2025г) 19.12.2023 № ЕД-7-26/970@) и набивает их вручную в 1С, тот наверняка хотел бы автоматизировать этот процесс. Поддержка конфигураций: Бухгалтерии 3, УПП 1.3, 1С:КА 2.4 и 1С:КА 2.5, УТ10, УТ11.4 и УТ11.5. Для бухгалтерии 3 добавлена поддержка формат 5.03 от 23/01/2025

3600 руб.

11.02.2020    95709    324    158    

233
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. rasswet 82 02.04.14 08:49 Сейчас в теме
"по этому и пустую дату передавать нельзя"-натыкался на эти грабли. спасибо.
2. Evil Beaver 8284 02.04.14 10:01 Сейчас в теме
Решение интересное, не знал что можно диапазон ячеек сразу задать в виде SAFEARRAY.
Единственное замечание - уж очень много пафоса у вас в публикациях. Может попроще как-то?
Краткая суть, для тех кому интересен принцип предлагаемого решения:
// ИсходныйМассив - двумерный массив исходных данных (строки/колонки)
// Размер - размерности массива (см. синтакс-помощник для ComSafeArray)
Массив = Новый COMSafeArray(ИсходныйМассив, "VT_VARIANT", Размер);

// Самое главное. диапазону ячеек можно просто присвоить SAFEARRAY со значениями.
Лист.Range(Лист.Cells(2,1), Лист.Cells(Строк, Колонок)).Value = Массив;
Nikitos_NSK; DmitryShekhovtsev; rrustam11983; savauu; 0rel1; kelleam; JohnyDeath; json; AlexanderKai; dsv_nsk; artbear; Naill99; утюгчеловек; slavap; Yashazz; Nikola23; bulpi; +17 Ответить
5. akor77 198 02.04.14 17:34 Сейчас в теме
(2) Evil Beaver, На счёт "пафоса" - учту. Писал "на радостях", это эмоции радости выплеснулись. Постараюсь быть сдержанней.
3. Pr-Mex 178 02.04.14 11:21 Сейчас в теме
Ну, насчет того, что "в интернете ничего подобного мне не приходилось встречать. По этому пришлось стать первопроходцем." у гугла есть другое мнение:

https://www.google.ru/search?q=1%D1%81+SAFEARRAY&oq=1%D1%81+SAFEARRAY&aqs=chrome..69i57.3672j0j7&sourceid=chrome&espv=210&es_sm=93&ie=UTF-8#newwindow=1&q=site%3Amista.ru+excel+comSAFEARRAY
Nikitos_NSK; 0rel1; dsv_nsk; artbear; Никс; Yashazz; Evil Beaver; +7 Ответить
4. akor77 198 02.04.14 17:30 Сейчас в теме
(3) Pr-Mex, Действительно, в книге знаний описано, не натыкался. По Вашей ссылке нашлась только одна статья по выгрузке. Может я опять не так ищу. Но заметьте, там ни слова о граблях.
6. akor77 198 02.04.14 20:43 Сейчас в теме
В обработке есть ошибки:
1. Поместить строку
Лист.Range(Лист.Cells(2,1), Лист.Cells(Строк, Колонок)).Value = Массив;

В попытку.
	Попытка
		Лист.Range(Лист.Cells(2,1), Лист.Cells(Строк, Колонок)).Value = Массив;
	Исключение
		Книга.Close();
		Книга = Неопределено;
		Excel.Interactive = Истина;
		Excel.DisplayAlerts = Истина;
		Excel.Application.Quit();
		Excel = Неопределено;
		Возврат "Ошибка при вставке массива. Подробно: " + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
	КонецПопытки;
Показать

2. Переместить "возврат" ниже
	Попытка
		Книга.SaveAs(ПутьКФайлу, 56);
	Исключение
		Книга.Close();
		Книга = Неопределено;
		Возврат "Ошибка при записи файла. Подробно: " + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); // Отсюда
		Excel.Interactive = Истина;
		Excel.DisplayAlerts = Истина;
		Excel.Application.Quit();
		Excel = Неопределено;
		//Сюда
	КонецПопытки;
Показать
7. DoctorRoza 03.04.14 08:04 Сейчас в теме
За идею +, за оформление -! :)
8. makc2k 108 03.04.14 09:17 Сейчас в теме
Данный подход чем то похож на метод excel CopyFromRST, когда результат адошного запроса сразу сбрасывается на лист. Только вот все равно тяжеловесный эксель нужно запускать. Тем не менее это кирпичик в копилку знаний.
9. nofx 20.02.16 15:06 Сейчас в теме
Хреново что нужно указывать границы диапазона области, если работаем с именованными областями.
10. user659124_s.kostina 07.02.18 10:21 Сейчас в теме
После выполнения обработки созданный файл Ексель будет висеть в процессах.
Если рОткрыватьДляПросмотра Тогда
			#Если Клиент Тогда
				Ексель.Visible=Истина;
			#КонецЕсли
		КонецЕсли;
		//чтобы файл не висел в процессах после выполнения обработки  		
		Ексель.DisplayAlerts = 0; 
		Ексель.Quit();
		Ексель.DisplayAlerts = 1; 
		Ексель=Null;
Показать
Оставьте свое сообщение