Формирование отчета в EXCEL

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Олег13
Сообщения: 4
Зарегистрирован: 07 апр 2007, 08:31

Формирование отчета в EXCEL

Сообщение Олег13 »

Добрый день! Подскажите как решить вот такой вопрос: В модуле "Складской учет" я формирую отчет "Отчеты - Оборотная ведомость - По МЦ". Задаю необходимые мне даты, выбираю МЦ, в группе отчетов выбираю отчет "Обычные отчеты - В разрезе учетных единиц измерения". У меня проблема в следующем: Мне необходимо этот отчет перенести в EXCEL, я делаю так, открываю форму этого отчета, копирую ее в EXCEL, открываю эту форму в SUPPORTе, но при компиляции он выдает в начале предупреждение "ПРЕДУПРЕЖДЕНИЕ: В ЗАГОЛОВОК/ПОДНОЖИЕ ЦИКЛЫ ВСТАВЛЯТЬ НЕЛЬЗЯ - МОГУТ БЫТЬ ПРОБЛЕМЫ. " и указывает строку, затем выдает следующую ошибку "ОШИБКА: ОЖИДАЛСЯ ИДЕНТИФИКАТОР" и указывает на тот же номкр строки. В чем проблема никак не могу понять уже 2-й день, веди если я беру этот же отчет в Галактиканском формате и правлю его в SUPPORTе, то он потом нормально компилируется и при подключении откомпилированного ресурсника к ГАЛАКТИКЕ нормально работает. Почему не компилируется отчет в формате EXCEL? Ниже я привел текст формы:

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

.LinkForm 'TINYMC_Y_S_' Prototype is 'TinyMC'
.Group 'Только в НДЕ и учетных единицах_Скворцов'
.NameInList 'В разрезе учетных единиц измерения'
.p 60
.DEFO LANDSCAPE
.fields
  CommonFormHeader
  b_dat
  e_dat
  sPodr
  sMOL
  sMC
  sParty
  valR
  valR
  valR
  valR
  valR
  valR
  valR
  valR
  mc_name
  mc_nom
  ed_Y
  sb_kolY
  sb_prRY
  sb_sumRY
  sa_kolY
  sa_prRY
  sa_sumRY
  ss_kolY
  ss_prRY
  ss_sumRY
  se_kolY
  se_prRY
  se_sumRY
  ib_kolY
  ib_prRY
  ib_sumRY
  ia_kolY
  ia_prRY
  ia_sumRY
  is_kolY
  is_prRY
  is_sumRY
  ie_kolY
  ie_prRY
  ie_sumRY
.endfields												
.[H SKIP												
Лист@np@												

Наименование МЦ	Остаток на начало			Приход			Расход			Остаток на конец		
	кол-во	цена	сумма	кол-во	цена	сумма	кол-во	цена	сумма	кол-во	цена	сумма
												
.]H												
^												
												
Оборотная ведомость движения МЦ												
(в разрезе учетных единиц измерения)												
с ^ по ^												
												
Используемые фильтры:												
Склад:^												
МОЛ:^												
МЦ:^												
Партия:^												
												
Лист @np@												
												
												
Наименование МЦ	Остаток на начало			Приход			Расход			Остаток на конец		
	кол-во	цена         	сумма 	кол-во	цена           	сумма  	кол-во	цена             	сумма 	кол-во	цена            	сумма
		@@@@@@@@	@@@@@@@@		@@@@@@@@	@@@@@@@@		@@@@@@@@	@@@@@@@@		@@@@@@@@	@@@@@@@@
												
.{												
.{												
.if POSNOZERO												
.else												
.end												
.}												
@@@@@@@@@@@@@@@@@@@@@@@@@@												
@@@@@@@@@@@@@@@@ @@@@@@@@@	&&&&&&&&&&	&&&&&&&.&&	&&&&&&&.&&	&&&&&&&&&&	&&&&&&&.&&	&&&&&&&.&&	&&&&&&&&&&	&&&&&&&.&&	&&&&&&&.&&	&&&&&&&&&&	&&&&&&&.&&	&&&&&&&.&&
.}												
												
												
ИТОГО ПО ВСЕМ МЦ	&&&&&&&&&&	&&&&&&&.&&	&&&&&&&.&&	&&&&&&&&&&	&&&&&&&.&&	&&&&&&&.&&	&&&&&&&&&&	&&&&&&&.&&	&&&&&&&.&&	&&&&&&&&&&	&&&&&&&.&&	&&&&&&&.&&
.endform												
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

EXcel или все таки SLK?
при компиляции создается temp.frm ( где зависит от cfg)
переменуйте его в нормальный файл и попробуйте скомпилить, потом сравните с образцом и сразу все увидите.
ElenaZ
Сообщения: 14
Зарегистрирован: 30 май 2007, 14:03
Контактная информация:

Сообщение ElenaZ »

Помогите пожалуйста с синтаксисом! Делаю slk-отчет, при компиляции система ругается на строку:
Trim(DoubleToStr(Износ_весь, '[|-]3666`666`666`666`666'))
пишет: Ожидалась ",". Где она ожидала зяпятую, непонятно. :)
Помогите новичку разобраться, плиз!
Мой ICQ номер 56221533.
aleks1232321
Постоянный гость
Сообщения: 86
Зарегистрирован: 28 апр 2005, 12:15
Откуда: Москва

Сообщение aleks1232321 »

А зачем так сложно?
Если используешь SLK, то значительно проще писать так:
.FIELDS
string(<имя переменной>,0,Y)
.ENDFIELDS
Где Y - количество знаков после запятой

А само поле для вывода описывается как ^ и в свойиствах указывается сколько знаков после запятой нужно выводить.
Напрмер, если хочу чтобы выводилось целое число, то пишу
string(XXXXX,0,0)
И все
aleks1232321
Постоянный гость
Сообщения: 86
Зарегистрирован: 28 апр 2005, 12:15
Откуда: Москва

Сообщение aleks1232321 »

Но если уж очень хочется использовать DOUBLETOSTR то вот ее описание

Функция DoubleToStr (double, string) : string

Назначение

Преобразование числа в строку с учетом формата. Форматный перевод вещественных чисел в строку в основном используется для вывода результатов, связанных с деньгами. Никаких округлений по умолчанию не производится, не поместившиеся в формат цифры дробной части просто отсекаются.

Описание

function DoubleToStr (num : double, format : string) : string;
Параметры

num : double - число, которое необходимо преобразовать в строку.

format : string - формат преобразования, см. 'Формат преобразования вещественных чисел в строку'.

Примеры

Вывод знака числа:

DoubleToStr(55.55,'3666.88') = '+55.55'
DoubleToStr(-55.55,'3666.88') = '-55.55'
DoubleToStr(55.55,'[|-]3666.88') = '55.55'
DoubleToStr(-55.55,'[|-]3666.88') = '-55.55'
Текстовое представление целой части:

DoubleToStr(5.555,'4КГ 5') =
'пять КГ пятьсот пятьдесят пять тысячных'
DoubleToStr(55.55,'4') = 'пятьдесят пять'
// по умолчанию не округляет, берет только целую часть числа
DoubleToStr(55.55,'\0p4') = 'пятьдесят шесть'
// чтобы округлило до целых, необходимо использовать \0p
DoubleToStr(Round(55.55),'4') = 'пятьдесят шесть'
// или подавать на вход уже округленное число
Текстовое представление дробной части:

DoubleToStr( 0.00, '4 целых 5') = 'ноль целых ноль десятых'
DoubleToStr(5.555,'4КГ 5') =
'пять КГ пятьсот пятьдесят пять тысячных'
DoubleToStr(5.555,'\2p4КГ 5') = 'пять КГ пятьдесят шесть сотых'
// для округления до сотых - надо явно прописать \2p
DoubleToStr(5.555,'\1p4КГ 5') = 'пять КГ шесть десятых'
// для округления до десятых - надо явно прописать \1p
Необязательная (незначимая) цифра целой части:

DoubleToStr(5,'666') ='5'
DoubleToStr(55,'666') ='55'
DoubleToStr(555,'666') = '555'
DoubleToStr(5555,'666') = '***'
DoubleToStr(0.55,'666') = '0'
Обязательная (значимая) цифра целой части:

DoubleToStr(5,'777') = '005'
DoubleToStr(55,'777') = '055'
DoubleToStr(555,'777') = '555'
DoubleToStr(5555,'777') = '***'
Обязательная (значимая) цифра дробной части:

DoubleToStr(5.55,'77.88') = '05.55'
DoubleToStr(5.555,'77.88') = '05.55'
DoubleToStr(5.555,'\2p77.88') = '05.56'
// для округления до N знаков следует воспользоваться \Np
DoubleToStr(5.5,'77.88') = '05.50'
DoubleToStr(5.599,'\2p77.88') = '05.60'
Необязательная (незначимая) цифра дробной части:

DoubleToStr(5.55,'77.99') = '05.55'
DoubleToStr(5.555,'77.99') = '05.55'
DoubleToStr(5.555,'\2p77.99') = '05.56'
DoubleToStr(5.5,'77.99') = '05.5'
DoubleToStr(5.599,'\2p77.99') = '05.6'
Если необходимо, чтобы в дробной части всегда выводилось не менее к примеру 2 знаков, поступаем следующим образом:

DoubleToStr(5.599,'7.8899') = '5.599'
DoubleToStr(5.59,'7.8899') = '5.59'
DoubleToStr(5.9,'7.8899') = '5.90'
Окруление:

DoubleToStr(55.555,'\2p66.99') = '55.56'
// \2p - 2 знака после запятой
DoubleToStr(55.555,'\1p66.99') = '55.6'
// \1p - 1 знак после запятой
DoubleToStr(55.555,'\0p66.99') = '55'
// \0p - округления до целого
DoubleToStr(55.555,'\-1p66.99') = '60'
// \-1p - округления до десятков
Мужской /женский род:

DoubleToStr(22.22,'\m4 РУБЛЯ \f5') =
'двадцать два РУБЛЯ двадцать две сотых'
ElenaZ
Сообщения: 14
Зарегистрирован: 30 май 2007, 14:03
Контактная информация:

Сообщение ElenaZ »

aleks1232321 писал(а):А зачем так сложно?
Если используешь SLK, то значительно проще писать так:
.FIELDS
string(<имя переменной>,0,Y)
.ENDFIELDS
Где Y - количество знаков после запятой

А само поле для вывода описывается как ^ и в свойиствах указывается сколько знаков после запятой нужно выводить.
Напрмер, если хочу чтобы выводилось целое число, то пишу
string(XXXXX,0,0)
И все
Дело в том, что у меня не переменная, а уже существующее поле.Можно ли так поступать с полями? А Ваш совет я себе записала, сенкью.:)
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

Может поможет

При копировании в SLK целыми строками, добавляется шняга, которую вроде не видно в файле, но если смотреть файл редактором по ф3 - видно :)
На неё бывает часто ругается

Я обычно удаляю строку и переписываю её заново ручками.
ElenaZ
Сообщения: 14
Зарегистрирован: 30 май 2007, 14:03
Контактная информация:

Сообщение ElenaZ »

Это опять я. :) Поскольку я еще новичок в Галактике, а отчеты делать нужно, возник следующий вопрос:
Я сделала slk-отчет и теперь бухгалтер для каждой службы предприятия сохраняет его на сервере - для каждого подразделения свое имя файла. Нельзя ли в операторе .f '<путь к файлу>' использовать переменную или макроподстановку, как в Фокспро для того, чтобы автоматизировать присвоение имени slk-файлу? Короче говоря, я написала такой оператор:
.f 'c:\OC для служб\os_'+Наименование_подразделения+'.slk'
Саппорт ругается.
Помогите пожалуйста новичку! :)
aleks1232321
Постоянный гость
Сообщения: 86
Зарегистрирован: 28 апр 2005, 12:15
Откуда: Москва

Сообщение aleks1232321 »

Наименование_подразделения - это переменная?
Что говорит компилятор?
ElenaZ
Сообщения: 14
Зарегистрирован: 30 май 2007, 14:03
Контактная информация:

Сообщение ElenaZ »

aleks1232321 писал(а):Наименование_подразделения - это переменная?
Что говорит компилятор?
Это поле, которое есть в прототипе формы. Я хочу его использовать в названии выходного файла. Как поле можно использовать в имени файла?
Ответить