helpf.pro
Регистрация

v8: Помогите пожалуйста решить задачу по выгрузки из 1С в excel

MrPlankton
03.05.2012 14:06Прочитано: 5006
Доброго времени суток. Помогите пожалуйста решить задачу по выгрузки из 1С в excel.

Необходимо выгрузить значения из оборотно-сальдовой ведомости в уже имеющийся шаблон excel (в ячейки не находящиеся радом с друг другом и на разных листах). Как можно «вытащить» эти значения из 1С (например Дт Сальдо на начало периода по счету 01)? Можно ли как то «указать» напрямую на ячейки сформированного отчета ведомости (например R1C8) или необходимо писать запросы на каждое значение из оборотно-сальдовой ведомости и результаты их вписывать в нужные ячейки Excel? Если второе то подскажите пожалуйста как написать такой запрос.

Excel= Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайла);
Excel.Sheets(1).Cells(24,43).Value=?; //Те самые значения из отчета 1С
Excel.Save();

Заранее спасибо!
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
03.05.2012 14:23Ответ № 1
(0) MrPlankton, посмотри раздел Работа с Регистрами Бухгалтерии, там есть примеры получения остатков счета
MrPlankton
03.05.2012 15:44Ответ № 2
E_Migachev Большое Спасибо! попытался использовать приведенный Вами запрос "v8.x: Как получить обороты по счету?".
Выдает следующую ошибку:"Ошибка при установке значения атрибута контекста (Value). "
Как можно указать на значение из запроса?

Код 1C v 8.2 УП
 Процедура КнопкаВыгрузкаНажатие(Элемент);
НачПериода=ПолеНачПериода; //ПолеНачПериода-Поле содержащие дату начала периода
КонПериода=ПолеКонПериода; //ПолеКонПериода-Поле содержащие дату конца периода

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

ЗапросОС.УстановитьПараметр("НачПериода", НачПериода);
ЗапросОС.УстановитьПараметр("КонПериода", КонПериода);
ЗапросОС.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.ОсновныеСредства);

РезультатЗапроса = ЗапросОС.Выполнить();
ВыборкаИтоги=РезультатЗапроса.Выбрать(); // <---- Вот тут сомнения

//Выгрузка
ИмяФайла=Путь; //Путь- поле содержащие путь к файлу
Excel= Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайла);
Excel.Sheets(1).Cells(1,1).Value=ВыборкаИтоги;
Excel.Save();
Excel.Visible= Истина;
КонецПроцедуры
E_Migachev
03.05.2012 16:28Ответ № 3
Код 1C v 8.х
 ВыборкаИтоги=РезультатЗапроса.Выбрать();    // <---- Вот тут сомнения   

замени на
Код 1C v 8.х
 ВыборкаИтоги=РезультатЗапроса.Выгрузить();  
// и потом
Excel.Sheets(1).Cells(1,1).Value=ВыборкаИтоги[0].СуммаОборотДт ;
MrPlankton
04.05.2012 08:49Ответ № 4
Спасибо! Ошибка пропала, но теперь в ячейку excel обработка возвращает значение "0". Может быть я что то с датами намудрил? У меня на форме 2 поля формата "дата". Имена - ПолеНачПериода и ПолеКонПериода.

Код 1C v 8.2 УП
 
// присваиваю значение даты из полей переменным
НачПериода=ПолеНачПериода; //ПолеНачПериода-Поле содержащие дату начала периода
КонПериода=ПолеКонПериода; //ПолеКонПериода-Поле содержащие дату конца периода
//....................
//....................

| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, Период, Счет = &Счет, , , , ) КАК ХозрасчетныйОбороты");

ЗапросОС.УстановитьПараметр("НачПериода", НачПериода);
ЗапросОС.УстановитьПараметр("КонПериода", КонПериода);


Или ошибка может быть в чем то другом?
Mokey
04.05.2012 09:29Ответ № 5
А сколько записей возвращает вот это:
РезультатЗапроса.Выгрузить()
Может быть, первая с нулём, поэтому ноль и подставляется
MrPlankton
04.05.2012 09:54Ответ № 6
Я так понимаю что результатом запроса будет является строка
| ХозрасчетныйОбороты.СуммаОборотДт
А сумма оборотов по дебету счета 01 ОсновныеСредства как мне представляется должна возвращаться одним числом, на то она и сумма.
Вся процедура:
Код 1C v 8.2 УП
 Процедура КнопкаВыгрузкаНажатие(Элемент);
НачПериода=ПолеНачПериода; //ПолеНачПериода-Поле содержащие дату начала периода
КонПериода=ПолеКонПериода; //ПолеКонПериода-Поле содержащие дату конца периода

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

ЗапросОС.УстановитьПараметр("НачПериода", НачПериода);
ЗапросОС.УстановитьПараметр("КонПериода", КонПериода);
ЗапросОС.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.ОсновныеСредства);

РезультатЗапроса = ЗапросОС.Выполнить();
ВыборкаИтоги=РезультатЗапроса.Выгрузить();

//Выгрузка
ИмяФайла=Путь; //Путь- поле содержащие путь к файлу
Excel= Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайла);
Excel.Sheets(1).Cells(1,1).Value=ВыборкаИтоги[0].СуммаОборотДт ;
Excel.Save();
Excel.Visible= Истина;
КонецПроцедуры
Mokey
04.05.2012 10:21Ответ № 7
(6) MrPlankton, у Вас в запросе стоит детализация по периоду
Код 1C v 8.х
 РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, Период, Счет = &Счет, , , , )   


попробуйте так:
Код 1C v 8.х
 РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, , Счет = &Счет, , , , )   

Изменено 04.05.12 10:22:45
MrPlankton
04.05.2012 10:38Ответ № 8
Не помогло..(
Mokey
04.05.2012 10:45Ответ № 9
так сколько записей возвращает выгрузка результата запроса?
Mokey
04.05.2012 10:46Ответ № 10
и есть ли обороты за выбранный период?
MrPlankton
04.05.2012 11:08Ответ № 11
Обороты за период есть. Как мне представляется должна выгружаться сумма оборотов(следовательно 1 запись) за период по счету.
Код 1C v 8.2 УП
 "ВЫБРАТЬ 
| ХозрасчетныйОбороты.СуммаОборотДт

Но я не уверен. Можно как то узнать точно?
P.S. извиняюсь за невежество ..
Mokey
04.05.2012 11:40Ответ № 12
Код 1C v 8.х
 
РезультатЗапроса = ЗапросОС.Выполнить();
ВыборкаИтоги=РезультатЗапроса.Выгрузить();
КоличествоЗаписей = ВыборкаИтоги.Количество();
MrPlankton
04.05.2012 14:16Ответ № 13
Спасибо. Количество записей = 1. Значит где то что то в другом месте..
E_Migachev
04.05.2012 14:30Ответ № 14
(13) MrPlankton, видимо все-таки оборот ДТ = 0, может надо оборот КТ? посмотри сальдовую ведомость по счету
MrPlankton
04.05.2012 15:53Ответ № 15
Обороты есть. Сальдовую ведомость смотрел, там есть обороты и по дебету и по кредиту за тот самый период. Думал ошибка в датах, но тогда 1С выдавало бы ошибку что интервал не выбрал и т.п. Спасибо всем большое. Буду мучить дальше.
MrPlankton
10.05.2012 12:51Ответ № 16

Изменено 11.05.12 14:38:35
MrPlankton
11.05.2012 14:39Ответ № 17
MrPlankton
11.05.2012 15:51Ответ № 18
Вопрос закрыт!
Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.