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

v8.2 УП: Вопрос про запрос (выгрузка в excel)

MrPlankton
23.05.2012 22:40Прочитано: 3091
Помогите пожалуйста.
Выгружаю из 1С оборотно-сальдовую ведомость в шаблонный файл excel, т.е. необходимо руками указывать ячейки куда выгружаются остатки на начало\конец периода и обороты. Столкнулся с такой проблемой: при выполнении запросов формируются строки в таблицах(виртуальных) только по счетам, имеющим за данный период обороты\остатки... соответственно остальные счета(имеющие пустое значение и по дебету и по кредиту) не отображаются. Например за 2011 год нет сальдо на начало периода по счету 08, а за 2012год есть, в таком случае индекс строки в виртуальной таблице смещается на 1 (был например [3] стал [4])... а при ручном прописывании это чревато тем что вся выгрузка "поплывет". Как можно сделать так, что бы запрос выполнялся и для счетов не имеющих остатков\оборотов, т.е в виртуальной таблице была пустая строка на это месте? Или может быть можно вместо индекса строки [...] например
Код 1C v 8.2 УП
 ВыборкаИтогиОстаткиНаНачало[1].СуммаОстатокДт    

указывать на строку по номеру счета?
Запрос и выгрузка(кусок):
Код 1C v 8.2 УП
 //Запрос ОстаткиНаНачалоЗапросОстаткиНаНачало = Новый Запрос;
ЗапросОстаткиНаНачало.Текст =
("ВЫБРАТЬ
| ХозрасчетныйОстатки.Счет,
| ХозрасчетныйОстатки.СуммаОстатокДт,
| ХозрасчетныйОстатки.СуммаОстатокКт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет В ИЕРАРХИИ (&Счет), ) КАК ХозрасчетныйОстатки
|УПОРЯДОЧИТЬ ПО
| ХозрасчетныйОстатки.Счет.Код");
ЗапросОстаткиНаНачало.УстановитьПараметр("Дата", НачПериода);
ЗапросОстаткиНаНачало.УстановитьПараметр("Счет", Счет);
РезультатЗапросаОстаткиНаНачало = ЗапросОстаткиНаНачало.Выполнить();
ВыборкаИтогиОстаткиНаНачало=РезультатЗапросаОстаткиНаНачало.Выгрузить();
//Выгрузка
Excel= Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайла);
Excel.Sheets(2).Cells(14,2).Value=(ВыборкаИтогиОстаткиНаНачало[1].СуммаОстатокДт)/"1000";
Excel.Sheets(2).Cells(14,3).Value=(ВыборкаИтогиОстаткиНаНачало[1].СуммаОстатокКт)/"1000";
Excel.Visible= Истина;Excel.Application.Quit();
Yandex
Возможно, вас также заинтересует
Реклама на портале
odinson
24.05.2012 10:57Ответ № 1
Первое, что приходит в голову - это добавить в запрос статическое поле. Тогда будут строки со значением в статическом поле и нуллами во всех остальных.
MrPlankton
24.05.2012 11:19Ответ № 2
А как это сделать?
E_Migachev
24.05.2012 11:21Ответ № 3
(0) MrPlankton, так тебе в запросе сначал нужно получить таблицы с суммами и без, а потом уже выводить в excel
MrPlankton
24.05.2012 12:24Ответ № 4
расскажите пожалуйста поподробнее как это сделать
MrPlankton
24.05.2012 14:49Ответ № 5
попытался сделать запрос с левым соединением, в консоли запросов возвращает только колонку счетов из плана счетов.. не пойму в чем дело, подскажите пожалуйста
Код 1C v 8.2 УП
  ВЫБРАТЬ 
| Код
|Из ПланСчетов.Хозрасчетный как ПланСчетов
|
| Левое СОЕДИНЕНИЕ
| (Выбрать
| ХозрасчетныйОстатки.СуммаОстатокДт,
| ХозрасчетныйОстатки.СуммаОстатокКт,
| ХозрасчетныйОстатки.Счет
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет В ИЕРАРХИИ (&Счет), ) как ХозрасчетныйОстатки) КАК Остатки
|ПО ПланСчетов.Ссылка=Остатки.Счет
|Упорядочить по ПланСчетов.Код
odinson
24.05.2012 17:23Ответ № 6
Код 1C v 8.2 УП
 
ЗапросОстаткиНаНачало.Текст =
("ВЫБРАТЬ
| &Заглушка КАК заглушка,
| ХозрасчетныйОстатки.Счет,
| ХозрасчетныйОстатки.СуммаОстатокДт,
| ХозрасчетныйОстатки.СуммаОстатокКт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет В ИЕРАРХИИ (&Счет), ) КАК ХозрасчетныйОстатки
|УПОРЯДОЧИТЬ ПО
| ХозрасчетныйОстатки.Счет.Код");
ЗапросОстаткиНаНачало.УстановитьПараметр("Дата", НачПериода);
ЗапросОстаткиНаНачало.УстановитьПараметр("Счет", Счет);
ЗапросОстаткиНаНачало.УстановитьПараметр("Заглушка", " ");

как-то так
MrPlankton
04.06.2012 11:52Ответ № 7
Запрос исправил, значения выводит.. но возникла другая проблема
Код 1C v 8.2 УП
 
ВЫБРАТЬ
| Код,
| ХозрасчетныйОбороты.СуммаОборотДт,
| ХозрасчетныйОбороты.СуммаОборотКт,
| ХозрасчетныйОбороты.Счет
|Из ПланСчетов.Хозрасчетный как ПланСчетов
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода,, Счет В ИЕРАРХИИ (&Счет), , , , ) как ХозрасчетныйОбороты
| ПО ПланСчетов.Ссылка=ХозрасчетныйОбороты.Счет
| Упорядочить ПО
| ПланСчетов.Код


значения вводятся по только субсчетам, а мне необходимы оборты в целом по счету. Приходиться складывать по индексу в виртуальной таблице, а это не очень то умно, да конструкция получается зависимая от конкретного плана счетов. Т.е. я беру и складываю определенное количество значений субсчетов и получаю обороты(или остатки) по нужному счету.title

Код 1C v 8.2 УП
 
Excel.Sheets(2).Cells(13,2).Value=(ВОНН[1].СОсД+ВОНН[2].СОсД+ВОНН[3].СОсД)/1000;

Как можно автоматически складывать обороты субсчетов по счету( например 01) и выбирать из виртуальной таблицы обороты по нужному счету (например по счету), уходя от выборки по индексу ячейки виртуальной таблицы?
Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.