8.х выгрузка в Excel

Тема в разделе "Установка платформы "1С:Предприятие 8"", создана пользователем H0mRk, 18 янв 2011.

  1. TopicStarter Overlay
    H0mRk
    Offline

    H0mRk

    Регистрация:
    18 янв 2011
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    Как выгрузить товары из 1с:УТ в Excel для загрузки в интернет-магазин? :angry:
  2. 1Cman
    Offline

    1Cman Опытный в 1С

    Регистрация:
    25 июл 2009
    Сообщения:
    308
    Симпатии:
    0
    Баллы:
    26
    В эксель свободно конвертируются любые печатные формы из 1С
  3. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.399
    Симпатии:
    40
    Баллы:
    54
    Для загрузки в интернет-магазин не используется формат excel, ни есть правило хорошего тона, для выгрузки всех прайсjв предусмотрен формат CommerceML
  4. TopicStarter Overlay
    H0mRk
    Offline

    H0mRk

    Регистрация:
    18 янв 2011
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    Подскажи как с ним работать, сколько искал, никаких конкретных материалов не нашел.
  5. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    [off]Улыбнуло... Нужно взять на заметку[/off]
  7. TopicStarter Overlay
    H0mRk
    Offline

    H0mRk

    Регистрация:
    18 янв 2011
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    вроде же писал, что ничего конкретного не нашел, а на www.commerceml.ru вообще никакой инфы кроме общей.
  8. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    http://www.commerceml.ru/standard.htm а так?

    ОК. Не хотите париться с чтением букавок - идите более прямым путем (который в итоге получается чуть более кривым, но всем пофиг)

    1) Если все таки решили выгружать из 1С в ексель, а потом этот файл грузить на сервере в БД - бога ради, примеров полно (забанили на гугле? не беда. Яндекс - найдется многое)
    В чем проблема? Создать в коде ком.объект (оле апликейшн) и запилить в него данные полученные 1С запросом?

    2) И все же, я бы рекомендовал отказаться от громоздкого экселя, и возспользоваться более универсальными форматами (XML, DBF, TXT наконец)

    Иными словами, я готов оказать посильную помощь, но только при более корректной (детальной) постановке задачи. Ибо вопрос "как выгрузить в эксель" на мой взгляд равнозначен вопросу "как сделать программу?".

    Два примера кода по выгрузке малого набора данных (более чем достаточные для старта):

    Вариант 1 (исключительно средствами 1Ски):
    Код:
    //---------------------------------------------------------------------------------------------
    //строим запрос к контрагентам
    Запрос1С = Новый Запрос;
    Запрос1С.Текст = 
    "ВЫБРАТЬ ПЕРВЫЕ 20
    |	Контрагенты.Код,
    |	Контрагенты.Наименование
    |ИЗ
    |	Справочник.Контрагенты КАК Контрагенты";
    
    Выборка1С	= Запрос1С.Выполнить().Выбрать();
    //---------------------------------------------------------------------------------------------
    //инициализируем табличный документ
    ТабДок		= Новый ТабличныйДокумент;
    ТабДок.Очистить();
    
    Макет		= ПолучитьМакет("Макет");
    Область		= Макет.ПолучитьОбласть("Заголовок");
    ТабДок.Вывести(Область);
    
    СчетчикОбхода	= 0;
    ВсегоЗаписей	= Выборка1С.Количество();
    Пока Выборка1С.Следующий() Цикл
    СчетчикОбхода	= СчетчикОбхода + 1;
    ПроцентОбхода	= Формат(СчетчикОбхода*100/ВсегоЗаписей, "ЧЦ=5; ЧДЦ=1");
    Состояние("Идет формирования списка. Обработано "+ПроцентОбхода+"% данных");
    //-------------------------------------------------------------------
    Область		= Макет.ПолучитьОбласть("Строка");
    Область.Параметры.Код		= СокрЛП(Выборка1С.Код);
    Область.Параметры.ФИО		= СокрЛП(Выборка1С.Наименование);
    ТабДок.Вывести(Область);
    //-------------------------------------------------------------------
    
    #Если Клиент Тогда
    ОбработкаПрерыванияПользователя();
    #КонецЕсли
    КонецЦикла; 	
    //---------------------------------------------------------------------------------------------
    //сохраняем в формате EXCEL
    ТабДок.Записать("D:\Temp\primer.xls", ТипФайлаТабличногоДокумента.XLS); 
    //---------------------------------------------------------------------------------------------
    //?????
    //PROFIT
    
    
    
    Вариант 2 (сразу в EXCEL, который поднят как OLE):
    Код:
    //---------------------------------------------------------------------------------------------
    //строим запрос к контрагентам
    Запрос1С = Новый Запрос;
    Запрос1С.Текст = 
    "ВЫБРАТЬ ПЕРВЫЕ 20
    |	Контрагенты.Код,
    |	Контрагенты.Наименование
    |ИЗ
    |	Справочник.Контрагенты КАК Контрагенты";
    
    Выборка1С	= Запрос1С.Выполнить().Выбрать();
    //---------------------------------------------------------------------------------------------
    //инициализируем EXCEL
    ObjExcel = Новый COMОбъект("Excel.Application");
    WrkBook = ObjExcel.WorkBooks.Add(); //создали новую книгу EXCEL (файл, если угодно)
    ObjExcel.Visible = Истина; //сделали его видимым, ну так, ради лулзов.
    WrkSht	= ObjExcel.Sheets(1); //выделили первый лист книги в отдельный объект. Для удобства 
    //---------------------------------------------------------------------------------------------
    //сформируем заголовок листа
    WrkSht.Cells(1, 1).Value = "КОД";
    WrkSht.Cells(1, 2).Value = "ФИО";
    //---------------------------------------------------------------------------------------------
    //наполняем лист данными, начиная с 3ей строки (чтобы заголовок визуально был выделен)
    //можно конечно заголовок выделить шрифтом, границами ячеек и т.п. - то это много больше кода
    //который для понимания примера будет ЛИШНИМ
    СчетчикОбхода	= 0;
    ВсегоЗаписей	= Выборка1С.Количество();
    Пока Выборка1С.Следующий() Цикл
    СчетчикОбхода	= СчетчикОбхода + 1;
    ПроцентОбхода	= Формат(СчетчикОбхода*100/ВсегоЗаписей, "ЧЦ=5; ЧДЦ=1");
    Состояние("Наполняем список. Обработано "+ПроцентОбхода+"% данных");
    //-------------------------------------------------------------------
    WrkSht.Cells(СчетчикОбхода + 2, 1).Value = СокрЛП(Выборка1С.Код);
    WrkSht.Cells(СчетчикОбхода + 2, 2).Value = СокрЛП(Выборка1С.Наименование);
    
    //т.к. у нас книга видимая, и как правило теперь перекрывает экран самой 1Сы
    //то визуальное отображение процесса реализуем через выделение строки экселя
    WrkSht.Rows(СчетчикОбхода + 2).Select();
    //-------------------------------------------------------------------
    
    #Если Клиент Тогда
    ОбработкаПрерыванияПользователя();
    #КонецЕсли
    КонецЦикла; 
    //---------------------------------------------------------------------------------------------
    WrkBook.SaveAs("D:\TEMP\primer.xls"); //сохранили книгу(файл)
    ObjExcel.Quit(); //собственно закрывваем эксель, дабы это не пришлось делать юзверу.
    //---------------------------------------------------------------------------------------------
    //?????
    //PROFIT
    
    
    Ktyf нравится это.

Поделиться этой страницей