ВАЛЕРИЙ БОНДАРЧУК пишет:
Теперь осталось нам совместно разработатьвыгрузку в эксель формате.
Под кнопку "Выполнить" в конце скрипта (после GlobalMaskEI:=...) положите код
Код
//ВЫГРУЗКА В EXCEL
//ВНУТРЕННЕЕ НАЗВАНИЕ ОТЧЕТА (Передача параметров: NAME##FONT)
DataSet1.Params['cReportToExcel']:= 'OBOROT##';
//ЗАГОЛОВОК ОТЧЕТА (Передача параметров: NAME##DEC##FONT)
cTitStr := cTitStr + '##-##'+if(VALIDINT(pExportFont.text)=true,TRIM(Str(StrToInt(pExportFont.text)+2)),'10');
DataSet1.Params['cTitleToExcel'] := '';
//ОБЛАСТЬ ДАННЫХ ПОСЛЕ ЗАГОЛОВКА (Передача параметров: NAME(FILMES)##NAME(FILTER)##FONT)
DataSet1.Params['cFilterToExcel'] := '';
DataSet1.Params['cFilterToExcel'] := DataSet1.Params['cFilterToExcel'] + '###';
//ТАБЛИЧНАЯ ЧАСТЬ ОТЧЕТА (ШАПКА) (Передача параметров: NAME##DEC##WIDTH##BLOCK##FONT)
DataSet1.Params['cColToExcel'] :='';
//ГРУППИРОВКА СТРОК (Передача параметров: NAME##COLSUM##DEC##FONT)
DataSet1.Params['cItogToExcel'] :=''; ig := 0;
//СКЛАД (заголовок)
//ПОЛЯ ВЫВОДА (Поля таблицы REP_)
ss := [TRIM(STR(GLOBAL('Curr_Accur')))];
DataSet1.Params['cFieldToExcel'] := ' GRUP, NNUM, LNM, ED, ROUND(SE/KE,'+ss+') AS CE, KB, ROUND(SB,'+ss+') AS SB, KP, ROUND(SP,'+ss+') AS SP';
//Итоговая строка
DataSet1.Open;
cTabl := DataSet1.Params['cTableToExcel']+'.DBF'+'@';
cTabl := CallBlueFuncFR('common','CallExcelFromFR',cTabl);
[STOPREPORT()];
Вместо формирования отчёта будет сразу формироваться файл excel.
Я так понял, что Вы выводите, цену, остаток на начало (количество, сумма) и приход (количество, сумма). Если не так, то поправляется в списке полей в строке DataSet1.Params['cFieldToExcel'] :=...
ВАЛЕРИЙ БОНДАРЧУК пишет:
Почемуто выводит ее, только один раз и как то посередине строк.
Поле "группа" не лежит целиком на бэнде . Оно смещено выше, поэтому воспринимается генератором не как поле на бэнде, а как поле на листе. Поэтому и выводится только один раз, ведь лист не связан с источником.
Опустите поле на 1 пиксель вниз и всё станет нормально.
ВАЛЕРИЙ БОНДАРЧУК пишет:
Оказалось что сортировка по наименованию присутствует в карточке запроса, а как сделать, чтоб она там стояла по умолчанию.
а то там сейчас номенклатурный номер.
Надо в дизайнере открыть свойство OnActivate у карточки запроса (щёлкнуть на самой карточке, лучше всего внизу, под источниками).
Там есть выражение pOrder.ItemIndex := 0; , оно устанавливает значение, отображаемое по-умолчанию в поле сортировка. Нумерация начинается с нуля, следовательно 0 - это первый элемент списка Item. "Наименование" идёт в списке Item вторым, следовательно если исправить на pOrder.ItemIndex := 1; то по-умолчанию будет предложена сортировка по наименованию.
Это дело разработчика. Видимо, решили отказаться от такой системы.
LBL_INN при старте инициализируется пустой строкой, но нигде в БЭСТ-5 не используется.
Поиск, действительно, не помогает. Потому что это выражение как-бы не совсем скрипт.
Найдите секцию с именем GHM (это второй сверху бэнд GroupHeader). Можно просто в самом верхнем поле инспектора свойств найти эту секцию в списке и выбрать.
Далее можно исправить выражение в инспекторе (свойство Condition) или два раза щёлкнув на самом бэнде.
Сразу скажу, что у меня ошибка не появляется. Видимо, есть особенности в расчёте источника, которые не учесть на демобазе.
Выражение, вызывающее ошибку, находится в секции GHM и является выражением группировки в groupheader.
Рискну предположить, что поле DATAD ("дата операции") не всегда заполняется при расчёте источника данных. Возможно, в некоторых случаях поле принимает значение null, например для строки "Задолженность на начало", которая подаётся из источника первой и маркируется значением поля FLAG<>2. Поскольку для секции masterdata эта строка является обычной рядовой строкой, то попытка вычислить выражение группировки приводит к ошибке.
Рекомендую изменить выражение группировки.
По крайней мере у меня не получилось скомпилировать prg в аналогичный hrb. Но может дело в каких-то параметрах компиляции, я не помню.
Но версий prg, отличных от версии 26/02/2008 у меня тоже не сохранилось.
1. Формирование справочников - Отчисления в фонды - Таблица тарифов
Создаёте новые тарифы для трёх фондов (ПФР, ФФОМС, ФСС), для базы до 624000 и базы свыше. Итого - шесть фондов.
2. Формирование справочников - Отчисления в фонды - Таблица ставок
Создаёте три таблицы ставок, для трёх фондов. В каждой таблице вводите две строки - для базы до 624000 и свыше. Привязываете в этих строках тарифы, созданные в п.1
3. Повторяете п.1 и 2 в случае, если у Вас есть выплаты в пользу инвалидов и Вы их показываете.
4. Формирование справочников - Отчисления в фонды - Начисления в фонды
Проставляете коды новых ставок (обычные и для выплат в пользу инвалидов) в используемые начисления.
Мне пришлось выезжать на днях к клиенту и лично убедиться, что не сбрасывается нумерация в счетах-фактурах. Предлагает номер 356, исправляешь на 1, записываешь. В новом счёте-фактуре - 357.
Исправил в memdat, но тоже вышло кривобоко. Предлагает №6, исправляешь на 5, записываешь. В следующий раз предлагает уже №7. №6 в пролёте.
Версия - один из последних SP. Не всё так однозначно.
Утилита для тех, кому надо много-много раз настроить тарифы страховых взносов в 2014 году. Автоматически создаётся набор "ставки - тарифы".
Запускается в каталоге БЭСТ-4.
Настройка в xml. Я не помню в каком пакете появилась возможность не вводить обязательно пол в настройке тарифа. Если я ошибся и это не SP86, то можно исправить в xml.
Кроме тарифов создаются также ставки НДФЛ на 2014 год.
Если необходимо нарисовать таблицу, но при этом лень её рисовать, то можно нарисовать одну строку и привязать виртуальный источник. Это источник без полей, он выполняется заданное количество раз. В итоге получаем определённое количество строк в готовом отчёте. Как пример - пустографка для ТМЦ в доверенности.
Расположение бэндов в шаблоне имеет только относительный смысл (один выше, другой ниже). Нет никакой абсолютной привязки положения бэнда в шаблоне к месту вывода в готовом отчёте. Бэнды обрабатываются сверху вниз (но child обрабатываются по связке). Следующий бэнд выводится сразу за предыдущим, если не оговорено начало страницы. Поэтому, если необходимо что бы master data начинался в середине листа, надо начать шаблон с вертикально широкого report title или master title.
1. Если необходимо исключить из вывода всю секцию, то надо устанавливать visible в false для секции.
Например, если мне надо не выводить некоторые строки источника, то в master data пишу
if <условие_вывода> then MasterData1.visible:=true
else MasterData1.visible:=false
В этом случае не выводится весь бэнд и место под него не резервируется. Ну или задайте вoпрос по-другому, если я не вижу проблемы.
2. Интерпретатор обрабатывает шаблон последовательно и обратно не возвращается. Если memo, находящееся ниже, меняет memo, находящее выше, то изменений в отчёт внесено не будет. Есть memo как программа и есть memo как сформированный элемент готового отчёта. Сформированный элемент уже недоступен. Думаю, что в тот момент, когда считается скрипт, memo уже зафиксировано и его изменение не влияет на конечный результат. Если это так, то включении опции "два прохода" в настройках отчёта, должно привести к изменению результата. Можно расположить изменение memo89.memo на бэнде report title или на кнопке "выполнить", тогда memo89.memo гарантировано изменится до расчёта и выдаст правильный результат. Но это только в том случае, если это изменение одно на отчёт. Если вывод зависит от состояния источника, то надо делать иначе.
Например, так:
Вверху (в memo) прописать просто [cText]
Внизу (в скрипте) написать
if <условие_вывода> then cText:='Вариант_1'
else cText:='Вариант_2'
1. Вы щёлкните на секции master data ЛКМ два раза, откроется окно, в котором перечислены описанные источники, плюс виртуальный источник и пункт "нет". Выделенная строка указывает на привязку к источнику.
2. Когда Вы щёлкаете два раза ЛКМ на элементе типа memo, открывается окно скрипта. Вот верхняя часть этого окна и есть массив memo. Самая первая строка - memo[0], далее по порядку.
3. Выражение типа memo89.Visible:=False приводит к тому, что элемент не выводится.
4. Не ходите в горячую линию.
Скорей всего, так не получится из-за того, что fastreport не озаботился подсистемой вывода, отличной от вывода band на странице.
Предлагаю настроить отчёт (печатную форму fastreport) оптимально для текстового вида и сохранять полученный отчёт в текстовый файл средствами самого fastfreport.
Давайте определимся. Вы хотите записать данные готового отчёта fastreport в текстовый файл? Или просто некие данные из БЭСТ?
Пример, который был приведён, является программой на harbour и должен запускаться как спецфункция из БЭСТ. Этот пример совершенно не подходит для применения в fastreport.