Вопрос про запрос (выгрузка в excel)
23.05.2012
22:38
#1
"Помогите пожалуйста.
Выгружаю из 1С оборотно-сальдовую ведомость в шаблонный файл excel, т.е. необходимо руками указывать ячейки куда выгружаются остатки на начало\конец периода и обороты. Столкнулся с такой проблемой: при выполнении запросов формируются строки в таблицах(виртуальных) только по счетам, имеющим за данный период обороты\остатки... соответственно остальные счета(имеющие пустое значение и по дебету и по кредиту) не отображаются. Например за 2011 год нет сальдо на начало периода по счету 08, а за 2012год есть, в таком случае индекс строки в виртуальной таблице смещается на 1 (был например [3] стал [4])... а при ручном прописывании это чревато тем что вся выгрузка "поплывет". Как можно сделать так, что бы запрос выполнялся и для счетов не имеющих остатков\оборотов, т.е в виртуальной таблице была пустая строка на это месте? Или может быть можно вместо индекса строки [...] например
указывать на строку по номеру счета?
Запрос и выгрузка(кусок):
Выгружаю из 1С оборотно-сальдовую ведомость в шаблонный файл excel, т.е. необходимо руками указывать ячейки куда выгружаются остатки на начало\конец периода и обороты. Столкнулся с такой проблемой: при выполнении запросов формируются строки в таблицах(виртуальных) только по счетам, имеющим за данный период обороты\остатки... соответственно остальные счета(имеющие пустое значение и по дебету и по кредиту) не отображаются. Например за 2011 год нет сальдо на начало периода по счету 08, а за 2012год есть, в таком случае индекс строки в виртуальной таблице смещается на 1 (был например [3] стал [4])... а при ручном прописывании это чревато тем что вся выгрузка "поплывет". Как можно сделать так, что бы запрос выполнялся и для счетов не имеющих остатков\оборотов, т.е в виртуальной таблице была пустая строка на это месте? Или может быть можно вместо индекса строки [...] например
ВыборкаИтогиОстаткиНаНачало[1].СуммаОстатокДт
указывать на строку по номеру счета?
Запрос и выгрузка(кусок):
//Запрос ОстаткиНаНачалоЗапросОстаткиНаНачало = Новый Запрос;"
ЗапросОстаткиНаНачало.Текст =
("ВЫБРАТЬ
| ХозрасчетныйОстатки.Счет,
| ХозрасчетныйОстатки.СуммаОстатокДт,
| ХозрасчетныйОстатки.СуммаОстатокКт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет В ИЕРАРХИИ (&Счет), ) КАК ХозрасчетныйОстатки
|УПОРЯДОЧИТЬ ПО
| ХозрасчетныйОстатки.Счет.Код");
ЗапросОстаткиНаНачало.УстановитьПараметр("Дата", НачПериода);
ЗапросОстаткиНаНачало.УстановитьПараметр("Счет", Счет);
РезультатЗапросаОстаткиНаНачало = ЗапросОстаткиНаНачало.Выполнить();
ВыборкаИтогиОстаткиНаНачало=РезультатЗапросаОстаткиНаНачало.Выгрузить();
//Выгрузка
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();
24.05.2012
09:08
#2
> счетов не имеющих остатков\оборотов
так может в запросе тогда сделать объединение план счетов и остатков/оборотов
так может в запросе тогда сделать объединение план счетов и остатков/оборотов
04.06.2012
11:58
#4
"Запрос исправил, значения выводит.. но возникла другая проблема
значения вводятся по только субсчетам, а мне необходимы оборты в целом по счету. Приходиться складывать по индексу в виртуальной таблице, а это не очень то умно, да конструкция получается зависимая от конкретного плана счетов. Т.е. я беру и складываю определенное количество значений субсчетов и получаю обороты(или остатки) по нужному счету. Например
Как можно автоматически складывать обороты субсчетов по счету( например 01) и выбирать из виртуальной таблицы обороты по нужному счету (например по счету), уходя от выборки по индексу ячейки виртуальной таблицы?"
ВЫБРАТЬ | Код,| ХозрасчетныйОбороты.СуммаОборотДт,| ХозрасчетныйОбороты.СуммаОборотКт,| ХозрасчетныйОбороты.Счет|Из ПланСчетов.Хозрасчетный как ПланСчетов|ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода,, Счет В ИЕРАРХИИ (&Счет), , , , ) как ХозрасчетныйОбороты| ПО ПланСчетов.Ссылка=ХозрасчетныйОбороты.Счет| Упорядочить ПО| ПланСчетов.Код
значения вводятся по только субсчетам, а мне необходимы оборты в целом по счету. Приходиться складывать по индексу в виртуальной таблице, а это не очень то умно, да конструкция получается зависимая от конкретного плана счетов. Т.е. я беру и складываю определенное количество значений субсчетов и получаю обороты(или остатки) по нужному счету. Например
Excel.Sheets(2).Cells(13,2).Value=(ВОНН[1].СОсД+ВОНН[2].СОсД+ВОНН[3].СОсД)/1000;
Как можно автоматически складывать обороты субсчетов по счету( например 01) и выбирать из виртуальной таблицы обороты по нужному счету (например по счету), уходя от выборки по индексу ячейки виртуальной таблицы?"
04.06.2012
21:48
#6
Уже помогли, получилось.. спасибо. Код:
ВЫБРАТЬ ПланСчетов.Код, ПланСчетов.Ссылка КАК Ссылка, ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаОборотДт, ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКтИЗ ПланСчетов.Хозрасчетный КАК ПланСчетов ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, , , , , , ) КАК ХозрасчетныйОбороты ПО ПланСчетов.Ссылка = ХозрасчетныйОбороты.СчетГДЕ НЕ ПланСчетов.ЗапретитьИспользоватьВПроводках УПОРЯДОЧИТЬ ПО ПланСчетов.КодИТОГИ СУММА(СуммаОборотДт), СУММА(СуммаОборотКт)ПО Ссылка ИЕРАРХИЯ
Читают тему
(гостей: 1)