1С8 Пример: Регистр сведений, контактная информация. Выгружаем реквизиты контрагентов в Excel

Image

//
// Выполнить запрос. Результат в Excel
Функция Запрос2Excel(Запрос)
            
    objExcel = Новый COMОбъект("Excel.Application");
    objExcel.Visible = true;
    objWorkbook = objExcel.Workbooks.Add();
    objWorksheet = objWorkbook.Worksheets(1);        

    НомСтр = 1;
    НомКол = 0;
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    
    НаимКолонок2Excel(РезультатЗапроса,objWorksheet);
        
    Таблица2Excel(РезультатЗапроса,objWorksheet);
        
    Возврат 0;
    
КонецФункции

//
// Заполнить наименования колонок
Функция НаимКолонок2Excel(РезультатЗапроса,objExcelWorksheet)

    НомСтр=1;
    // цикл по коллекции колонок
    Для НомКол=0 по РезультатЗапроса.Колонки.Количество() - 1 Цикл
        //Сообщить(Колонка.Имя + "(" + Колонка.ТипЗначения + ")" );            
        
        objExcelWorksheet.Cells(НомСтр,НомКол+1).Value = 
            РезультатЗапроса.Колонки[НомКол].Имя;        
            
    КонецЦикла;
    
КонецФункции    

//
// Заполнить построчно таблицу Excel 
Функция Таблица2Excel(РезультатЗапроса,objExcelWorksheet)
    
    Выборка = РезультатЗапроса.Выбрать();
    НомСтр=1; // заполняем данными начиная со 2-й строки
    
    // цикл по строкам таблицы
    Пока Выборка.Следующий() Цикл
        
        НомСтр = НомСтр + 1;
                
        // цикл по колонкам таблицы        
        Строка2Excel(РезультатЗапроса,Выборка,НомСтр,objExcelWorksheet);            
        
    КонецЦикла;    
    
КонецФункции

//
// Заполнить ячейки в строке с номером НомСтр значениями 
Функция Строка2Excel(РезультатЗапроса,Выборка,НомСтр,objExcelWorksheet)
     
    // цикл по колонкам таблицы
    // РезультатЗапроса.Колонки.Количество()    // - количество колонок
    Для НомКол=0 по РезультатЗапроса.Колонки.Количество() - 1 цикл 
            
        // значения ячеек
        objExcelWorksheet.Cells(НомСтр,НомКол+1).Value = Выборка[НомКол];        
    КонецЦикла;    
    
КонецФункции


//
//
Функция РеквизитыКонтрагентов2Excel()
    
    Запрос = Новый Запрос;

    // Получить данные для формируемого прайс-листа.
    Запрос.Текст = 
        "ВЫБРАТЬ ПЕРВЫЕ 10000
        |    КонтактнаяИнформация.Объект.Код КАК КонтрагентКод,
        |    КонтактнаяИнформация.Объект.Наименование КАК ОбъектНаименование,
        |    КонтактнаяИнформация.Объект.НаименованиеПолное КАК НаименованиеПолное,
        |    КонтактнаяИнформация.Объект.ИНН КАК ИНН,
        |    КонтактнаяИнформация.Объект.КПП КАК КПП,
        |    ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА) КАК Адрес,
        |    ""р/с:"" + СправочникБанковскиеСчета.НомерСчета + "" в "" 
        |    + СправочникБанковскиеСчета.Наименование КАК реквизиты,
        |    ""БИК:"" + СправочникБанки.Код КАК БИК,
        |    ""к/с:"" + СправочникБанки.КоррСчет КАК КоррСчет
        |ИЗ
        |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчета 
        |            КАК СправочникБанковскиеСчета
        |        ПО КонтактнаяИнформация.Объект.Ссылка = 
        |            СправочникБанковскиеСчета.Владелец.Ссылка
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Банки КАК СправочникБанки
        |        ПО (СправочникБанковскиеСчета.Банк.Ссылка = СправочникБанки.Ссылка)
        |ГДЕ
        |    КонтактнаяИнформация.Вид.Наименование = ""Юридический адрес контрагента""
        |
        |УПОРЯДОЧИТЬ ПО
        |    ОбъектНаименование";            
    
    
    Запрос2Excel(Запрос);
    
КонецФункции 

// Основная логика. Точка входа
РеквизитыКонтрагентов2Excel();    

Если в Excel ИНН или КПП отображается неверно, - поменяйте формат ячейки на "#".

Image

Скачать пример выгрузки контрагентов в Excel.