Версия для печати темы (https://pro1c.org.ua/index.php?s=137629fc74dab2910fbe6e89ce0d9e09&showtopic=59424)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Экспорт в Excell

Автор: vpr.ztr@gmail.com 04.06.20, 22:14

Просьба помочь начинающему программировать в 1с, просто пишу вопрос в гугле, нахожу похожий пример и делаю по аналогии под свою задачу(не программист). Задача выгрузить данные в ексель из ведомости по ЗП для дальнейшего импорта из ексель в клиент банк (зарплатный проэкт). На даанный момент есть рабочая процедура которая выгружает в ексель часть данных и работает ОК. Остановился на моменте когда в ячейку нужно записать параметр из запроса. Вот код подскажите пожалуйста как заполнить там где ?????????

Код

Процедура КнопкаВыполнитьНажатие(Кнопка)
              
    
            
    ЗапросОрганизации = Новый Запрос;
    ЗапросОрганизации.Текст =
        "ВЫБРАТЬ
        |    Организации.НаименованиеПолное
        |ИЗ
        |    Справочник.Организации КАК Организации";
    
    ВыборкаОрганизации = ЗапросОрганизации.Выполнить().Выбрать();

    
    
    
     ЗапросБанки = Новый Запрос;
     ЗапросБанки.Текст = "ВЫБРАТЬ
     |    Банки.Код,
     |    Банки.Наименование,
     |    Банки.КоррСчет
     |ИЗ
     |    Справочник.Банки КАК Банки";
    
     ВыборкаБанки = ЗапросБанки.Выполнить().Выбрать();
    
     ЗапросБанковскиеСчета = Новый Запрос;
     ЗапросБанковскиеСчета.Текст = "ВЫБРАТЬ
     |    БанковскиеСчета.НомерСчета
     |ИЗ
     |    Справочник.БанковскиеСчета КАК БанковскиеСчета";
    
     ВыборкаБанковскиеСчета = ЗапросБанковскиеСчета.Выполнить().Выбрать();
    
     ЗапросЗарплатаКВыплатеОрганизаций = Новый Запрос;
     ЗапросЗарплатаКВыплатеОрганизаций.Текст = "ВЫБРАТЬ
     |    ЗарплатаКВыплатеОрганизаций.СуммаВыплаты,
     |    ЗарплатаКВыплатеОрганизаций.РаботникиОрганизации.(
     |        Сотрудник.Физлицо.Наименование,
     |        Сотрудник.Физлицо.КодПоДРФО,
     |        НомерКарточки
     |    )
     |ИЗ
     |    Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций";  
    
     ВыборкаЗарплатаКВыплатеОрганизаций = ЗапросЗарплатаКВыплатеОрганизаций.Выполнить().Выбрать();
    
EXEL = Новый COMObject("Excel.Application");
  
Книга = EXEL.WorkBooks.Add();
Лист2 = Книга.Sheets.Add();
Лист2.Name = "Amounts";
Лист1 = Книга.Sheets.Add();
Лист1.Name = "SheduleInfo";


Лист1.Cells(1, 1).Value = "SHEDULE_DATE";
Лист1.Cells(1, 2).Value = "SHED_NUMBER";
Лист1.Cells(1, 3).Value = "CLIENTNAME";
Лист1.Cells(1, 4).Value = "BANK_MFO";
Лист1.Cells(1, 5).Value = "BANK_NAME";
Лист1.Cells(1, 6).Value = "BANK_ACCNO";
Лист1.Cells(1, 7).Value = "BANK_ACCIBAN";
Лист1.Cells(1, 8).Value = "ACCOUNTNO";
Лист1.Cells(1, 9).Value = "ACCOUNTNO";
Лист1.Cells(1, 10).Value = "SHED_SUM";
Лист1.Cells(1, 11).Value = "EXTACCOUNT";
Лист1.Cells(1, 12).Value = "CONTRAGENT_ZKP";
Лист1.Cells(1, 13).Value = "COMMENTS";

Лист1.Cells(2, 1).Value = Дата;
Лист1.Cells(2, 2).Value = Номер;
Лист1.Cells(2, 3).Value = ВыборкаОрганизации.Организации.НаименованиеПолное;
Лист1.Cells(2, 4).Value = ???????????? Здесь должно быть полное наименование из запроса
Лист1.Cells(2, 5).Value =
Лист1.Cells(2, 6).Value =
Лист1.Cells(2, 7).Value =
Лист1.Cells(2, 8).Value =
Лист1.Cells(2, 9).Value =
Лист1.Cells(2, 10).Value =
Лист1.Cells(2, 11).Value =
Лист1.Cells(2, 12).Value =
Лист1.Cells(2, 13).Value =



Лист2.Cells(1, 1).Value = "IDCODE";
Лист2.Cells(1, 2).Value = "TABNO";
Лист2.Cells(1, 3).Value = "ACCOUNTNO";
Лист2.Cells(1, 4).Value = "ACCOUNTNO";
Лист2.Cells(1, 5).Value = "LASTNAME";
Лист2.Cells(1, 6).Value = "FIRSTNAME";
Лист2.Cells(1, 7).Value = "MIDDLENAME";
Лист2.Cells(1, 8).Value = "AMOUNT";


Попытка
        Книга.SaveAs(ПутьКФайлу);
    Исключение
        Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
    КонецПопытки;
    
    EXEL.Application.Quit();

КонецПроцедуры

Автор: volodya1122 05.06.20, 8:23

vpr.ztr@gmail.com @ Вчера, 23:14 * ,

Для начала нужно понимать что Вам возвращает запрос. Например из документа ЗарплатаКВыплатеОрганизаций вернет данные из всех документов ЗарплатаКВыплатеОрганизаций которые есть в базе. Из стравочников Вы вибираете данные. Вы уверены что там есть только одна запись в каждом из этих справочников?

И так.
1. Как понять что возвращает запрос? Я делаю так:

    ВыборкаЗарплатаКВыплатеОрганизаций = ЗапросЗарплатаКВыплатеОрганизаций.Выполнить().Выгрузить();
        Построитель = Новый ПостроительОтчета;
    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ВыборкаЗарплатаКВыплатеОрганизаций);
    Построитель.Макет = Неопределено;
    Макет = Построитель.Макет;
    Область = Макет.Область();
    Область.ШиринаКолонки = 20;
     Построитель.Макет = Макет;
    Построитель.Выполнить();
    Построитель.Вывести();
// в итоге на экране я вижу таблицу из результатом запроса

2. Выборку из запроса нужно делать так:
ВыборкаОрганизации = ЗапросОрганизации.Выполнить().Выбрать();
Пока ВыборкаОрганизации.Следующий() Цикл
НаименованиеОрганизации=ВыборкаОрганизации.НаименованиеПолное;
//тут будут перебиратся все записи в справичнике организации, если их больше одного
КонецЦикла;




Автор: Moloko 09.06.20, 9:59

vpr.ztr@gmail.com @ 04.06.20, 22:14 * ,
Я бы создал обычный отчет по запросу с нужными столбцами, а потом бы сохранил его как xls:
ТабДокумент.Записать(Путь+"\"+XXXXXX+".xls",ТипФайлаТабличногоДокумента.XLS);

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua