Автор: 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);