Страница 1 из 3

ручная установка курсора в отчете excel

Добавлено: 18 фев 2014, 13:46
Olegpro
Добрый день! Помогите пожалуйста.
Делаю отчет в Excel. Нужно сделать так, чтобы курсор после выгрузки нескольких полей в столбце, грузил другой столбец рядом.
Например, выгружаю столбец:
mc1
mc2
mc3
mc4
...

Затем надо установить курсор в строке mc1 в соответствующем столбце посредством VIP, чтобы выгрузить столбец с параметрами. Т.е. должно получиться что-то такое:
mc1 param1
mc2 param2
mc3 param3
mc4 param4
... ...

А не такое:
mc1
mc2
mc3
mc4
_____param1
_____param2
_____param3
_____param4

Именно в такой последовательности, т.е. сначала выгружаю один столбец, потом устанавливаю курсор в соответствующее место на первой строке и начинаю выгружать второй столбец. Т.е. я не знаю, как после выгрузки первого столбца параметров установить курсор в соответствующую ячейку в первой строке. Надеюсь, объяснил понятно.
С Галактикой работаю недавно. Очень рассчитываю на вашу помощь!

Re: ручная установка курсора в отчете excel

Добавлено: 18 фев 2014, 14:27
Irina_
Здравствуйте. Для вывода в соответствующую строку обычно используется переменная счетчик. Что Вам мешает перед началом вывода нового столбца сделать присвоение этой переменной значения номера первой строки?

Re: ручная установка курсора в отчете excel

Добавлено: 18 фев 2014, 14:30
Olegpro
Мешает отсутствие опыта) Я недавно работаю, мне бы на примере это увидеть, поподробнее, если можно. Спасибо!

Re: ручная установка курсора в отчете excel

Добавлено: 18 фев 2014, 15:20
Irina_
Ниже совсем простой пример (не оптимальный), только чтобы показать работу со счетчиком строк и вывод в Excel сначала первого столбца, а потом второго.
.form "Каталог ТМЦ"
.ard
.create view TMC
as select
Katmc.name,
Katmc.barkod
from Katmc
;
.var
n: double;
.endvar
.begin
xlCreateExcel('Пример',true);
SetVisualHeader ( 'Вывод данных в Excel.' );
//вывод 1–го столбца
n:=5;
_loop Katmc
{
xlSetCellStringValue(katmc.name,n,1,n,1);
n:=n+1;
}
//вывод 2–го столбца
n:=5;
_loop Katmc
{
xlSetCellStringValue(katmc.barkod,n,2,n,2);
n:=n+1;
}

xlKillExcel;
message('ГОТОВО !');
end.
.endform

Re: ручная установка курсора в отчете excel

Добавлено: 18 фев 2014, 15:27
Olegpro
Спасибо за пример. Не совсем понятно, т.к. в отчете я использую для вывода значений символы ^.
Т.е. условно
цикл1 (^)
цикл2 (_______^)

Первый символ для первого столбца, второй соответственно для второго, который должен печататься рядом.
Если делать напрямую, то столбцы будут печататься так:
mc1
mc2
mc3
mc4
_____param1
_____param2
_____param3
_____param4


Как оперировать со вторым символом ^, чтобы после вывода первого столбца второй выводился опять с первой строки рядом? При этом символы должны оставаться внутри своих циклов.

Re: ручная установка курсора в отчете excel

Добавлено: 18 фев 2014, 15:31
Den
Вы vip-интерфейс то сами разрабатываете с потоком данных ? не очень понятно....
если да, то зачем в FCOM юзать для этого.

Re: ручная установка курсора в отчете excel

Добавлено: 18 фев 2014, 15:55
Zver
Чтобы дать ответ на Ваш вопрос необходимо понять, откуда берутся данные.
Лучше всего выложите код интерфейса.
Или же это отчет, который формируется прямо в Excell.

Re: ручная установка курсора в отчете excel

Добавлено: 18 фев 2014, 16:04
Olegpro
Это присоединенная форма к прототипу MANUFAKTBRAK. Написана в Excelе в slk-формате. Я стараюсь переделать неработающий отчет, который был написан до меня. Большое спасибо еще раз за внимание к моей проблеме!

Re: ручная установка курсора в отчете excel

Добавлено: 18 фев 2014, 17:17
m0p3e
На slk "курсором" управлять не получится.
Самый простой вариант создать временную таблицу, заполнить ее данными и выводить уже ее построчно.

Re: ручная установка курсора в отчете excel

Добавлено: 18 фев 2014, 18:30
edward_K
Лучше переделать slk на текстовый, в котором вывести напрямую в excel. Если сделаете на основе шаблона избежите многих болезней slk

Re: ручная установка курсора в отчете excel

Добавлено: 19 фев 2014, 14:26
Olegpro
А как мне из текстовой присоединенной формы вывести напрямую в excel? Если что, простите за глупые вопросы)

Re: ручная установка курсора в отчете excel

Добавлено: 19 фев 2014, 14:48
RAJAH
Olegpro писал(а):А как мне из текстовой присоединенной формы вывести напрямую в excel? Если что, простите за глупые вопросы)
ExcelLib.pdf почитайте.

Re: ручная установка курсора в отчете excel

Добавлено: 19 фев 2014, 14:51
Den
Irina_ по сути написала как...создаете свою ЛТ в link-форме отталкиваясь от nrec документа, переданного в форму и выводите в цикле по этой ЛТ что нужно ....

Re: ручная установка курсора в отчете excel

Добавлено: 19 фев 2014, 15:32
Olegpro
Я просматривал эту документацию, но не совсем понимаю, как это использовать в присоединенной rtf-форме к прототипу. Банально, после чего надо вызывать функцию xlCreateExcel. Вот пример:

.LinkForm 'MNAKTBRK_SNAB_1 Prototype is 'MANUFAKTBRAK'//
.NameInList 'Тест'//
.var//
nomre:Double//
datre:Date//
summare:Double//
.endvar//
.Create view rrr//
from katsopr kk,spsopr sp, attrval art//
where//
((//
comp(KATSOPRNREC)/==art.vcomp (noindex)//
and '1110' ==art.wtable (noindex)//
and art.crec==sp.nrec (noindex)//
and '00010000000006DDh'/==art.cattrnam (noindex)//
and sp.csopr==kk.nrec//
and '206'==kk.vidsopr (noindex)//
));//
.fields//
NAME_TOVAR
if(datre=date(0,0,0),'',datre)//
nomre//
summare//
.endfields//
.{//
.{//
.{//
^
.}//
.}//
.begin//
nomre:=0;//
datre:=date(0,0,0);//
summare:=0;//
end.//
.{table 'rrr.art'//
.begin//
nomre:=rrr.kk.nsopr;//
datre:=rrr.kk.dsopr;//
summare:=rrr.kk.summa;//
end.//
^ ^ ^
.}//
.}//
.endform//

Как в данном случае вывести результаты в excel, чтобы столбец NAME_TOVAR стоял рядом со столбцами nomre, datre, summare, при этом чтобы циклы остались такими же, как есть. Вообще с этим сталкиваюсь впервые, поэтому поподробнее, если вас не затруднит. Спасибо.

Re: ручная установка курсора в отчете excel

Добавлено: 19 фев 2014, 15:42
RAJAH
xl*-функции - это совсем другая технология, тут раздел .fields - .endfields не нужен, как и не нужны ^ - место вывода переменной вы должны указать координатами в соответствующих функциях xlSetCell<<>>Value.
После всех своих вьюшек пошёл begin? Вот там и пишите xlCreateExcel.

Код: Выделить всё

.{table 'rrr.art'//
.begin//
nomre:=rrr.kk.nsopr;//
datre:=rrr.kk.dsopr;//
summare:=rrr.kk.summa;//
xlSetCellStringValue(nomre, 1, 1, 1, 1);
xlSetCellDateValue(datre, 1, 2, 1, 2);
xlSetCellNumberValue(summare, 1, 3, 1, 3);
end.//
.}/