проблема с переделкой отчёта

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

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

goonia
Сообщения: 2
Зарегистрирован: 02 ноя 2006, 18:44
Откуда: Вологда

проблема с переделкой отчёта

Сообщение goonia »

Добрый день.

Подскажите в решении следующей проблемы.

Модуль управление персоналом / база данных / перечень приказов.
Завёл новое распорядительное действие (с кодом 101)
И заказчик требует переделать форму стандартного галактического отчёта.
Возникла трудность: Переменная "FIELD1" содержит в себе слово "сотрудник" + ФИО + слово "Таб.Н." + сам Табельный номер + подразделение + должность.
А мне необходимо разнести эти значение по разным переменным, поскольку
необходимо вывоить их в разных местах отчёта, а не все вместе.
goonia
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

если есть нрек в прототипе приказа, позиционируйтесь на приказ и выводите прямо из таблицы.
coolibin
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 29 мар 2005, 17:49

Сообщение coolibin »

А можно порезать

substr
instr
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

coolibin
А если фамилия имя отчество выводятся по разному?
могу ведь занести в трёх вариантах
1. Иванов
2. Иванов Иван
3. Иванов Иван Иванович.

Тогда нужен анализ строки перед тем как резать.
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

есть объектный интерфейс StrFunc.vih
решаюший вашу задачу, в zar15 он выглядит так:

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

/*
  ╔═════════════════════════════════════════════════════════════════════╗
  ║      Н Т О  "T O P   S O F T",  А О   "Н О В Ы Й   А Т Л А Н Т"     ║
  ║      Проект    : ГАЛАКТИКА  (с) 2000                                ║
  ║      Система   : Управление персоналом                              ║
  ║      Версия    : 5.8                                                ║
  ║      Разработал: Антонович А.К.     01/02/2002                      ║
  ║      Назначение: Функции работы со строками                         ║
  ║      Изменения :                                                    ║
  ╚═════════════════════════════════════════════════════════════════════╝
*/

#ifndef _StrFunc_vih_Included
#define _SetFunc_vih_Included

#ifdef ComponentVersion
#component "z_Staff"
#end

//------------------------------------------------------------------------------
ObjInterface ObjStrFunc;
//------------------------------------------------------------------------------

// Функция возвращает Фамилию
Public function GetFirstName(FIO : string) : string;

// Функция возвращает Имя
Public function GetLastName(FIO : string) : string;

// Функция возвращает Отчество
Public function GetPatronymic(FIO : string) : string;

// Функция возвращает Фамилию и инициалы
Public function GetFIO(FIO : string) : string;

Public function UnVisibleInt(iTemp : integer) : string;
// функция преобразует число в строку и 0 заменяет пустой строкой

Public function UnVisibleLong(iTemp : longInt) : string;
// функция преобразует число в строку и 0 заменяет пустой строкой

Public function UnVisibleDouble(doubleTemp : double) : string;
//  функция преобразует doubleTemp в строку и некорректное значение doubleTemp заменяет пустой строкой (для отчетов)

Public function UnVisibleDate(dateTemp : date; formatStr : string) : string;
// функция преобразует дату в строку по формату formatStr
// и некорректную дату заменяет пустой строкой

Public function GetCountDay(DateBeg : Date; DateEnd : Date) : longint;
// Функция возвращает количество дней между датами без учета полных месяцев (для расчета испытательного срока)

Public function GetCountMonths(DateBeg : Date; DateEnd : Date) : longint;
// Функция возвращает количество полных месяцев между датами (для расчета испытательного срока)

Public function GetCountYears(DateBeg : Date; DateEnd : Date) : longint;
// Функция возвращает количество полных лет между датами (для расчета испытательного срока)

Public function CreatePeriod(dateBeg : date; dateEnd : date) : string;
// функция формирует строку периода месяц, квартал, полугодие, год, период

Public function isCrossPeriod(dateBeg1 : date; dateEnd1 : date; dateBeg2 : date; dateEnd2 : date) : boolean;
// проверяет на пересечение периодов

Public function isHitPeriod(dateBeg : date; dateEnd : date; dateTest : date) : boolean;
// проверяет попадает ли dateTest в период

//------------------------------------------------------------------------------
end;
//------------------------------------------------------------------------------
VipInterface StringFunctions implements ObjStrFunc
;

#endif
Жду выхода Вселенная 2.12!
Gameus_
Местный житель
Сообщения: 209
Зарегистрирован: 18 окт 2006, 17:03
Откуда: Ростов на Дону Новочеркасск Новороссийск
Контактная информация:

Сообщение Gameus_ »

можете выложить сюда версию StrFunc.vih поновее ?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

поновее возьмите в frm\z_staff.rar
Gameus_
Местный житель
Сообщения: 209
Зарегистрирован: 18 окт 2006, 17:03
Откуда: Ростов на Дону Новочеркасск Новороссийск
Контактная информация:

Сообщение Gameus_ »

нет там, поэтому и прошу
Polimer
Местный житель
Сообщения: 489
Зарегистрирован: 27 янв 2006, 12:46
Откуда: Москва

Сообщение Polimer »

Если речь о 8.1, то лежит, где сказал edward_k.

#ifndef _StrFunc_vih_Included
#define _SetFunc_vih_Included

#ifdef ComponentVersion
#component "z_Staff"
#end

#doc
Функции работы со строками
#end
ObjInterface ObjStrFunc;

#doc
склонение количества лет, месяцев, дней
#end
Public function DeclYMD(countYMD : longint; typeYMD: longint) : string;

#doc
Функция возвращает Фамилию
#end
Public function GetFirstName(FIO : string) : string;

#doc
Функция возвращает Имя
#end
Public function GetLastName(FIO : string) : string;

#doc
Функция возвращает Отчество
#end
Public function GetPatronymic(FIO : string) : string;

#doc
Функция возвращает Фамилию и инициалы
#end
Public function GetFIO(FIO : string) : string;

#doc
функция преобразует число в строку и 0 заменяет пустой строкой
#end
Public function UnVisibleInt(iTemp : integer) : string;

#doc
функция преобразует число в строку и 0 заменяет пустой строкой
#end
Public function UnVisibleLong(iTemp : longInt) : string;

#doc
функция преобразует doubleTemp в строку и некорректное значение doubleTemp заменяет пустой строкой (для отчетов)
#end
Public function UnVisibleDouble(doubleTemp : double) : string;

#doc
функция преобразует дату в строку по формату formatStr
и некорректную дату заменяет пустой строкой
#end
Public function UnVisibleDate(dateTemp : date; formatStr : string) : string;

#doc
Функция возвращает количество дней между датами без учета полных месяцев (для расчета испытательного срока)
#end
Public function GetCountDay(DateBeg : Date; DateEnd : Date) : longint;

#doc
Функция возвращает количество полных месяцев между датами (для расчета испытательного срока)
#end
Public function GetCountMonths(DateBeg : Date; DateEnd : Date) : longint;

#doc
Функция возвращает количество полных лет между датами (для расчета испытательного срока)
#end
Public function GetCountYears(DateBeg : Date; DateEnd : Date) : longint;

#doc
функция формирует строку периода месяц, квартал, полугодие, год, период
#end
Public function CreatePeriod(dateBeg : date; dateEnd : date) : string;

#doc
проверяет на пересечение периодов
#end
Public function isCrossPeriod(dateBeg1 : date; dateEnd1 : date; dateBeg2 : date; dateEnd2 : date) : boolean;

#doc
проверяет попадает ли dateTest в период
#end
Public function isHitPeriod(dateBeg : date; dateEnd : date; dateTest : date) : boolean;

//------------------------------------------------------------------------------
end;

#doc
Расширение интерфейса ObjStrFunc
#end
objinterface ObjStrFunc1;

#doc
Функция возвращает ФИО (в зависимости от настройки)
#end
Public function GetFIODir : string;

end;
//------------------------------------------------------------------------------
VipInterface StringFunctions implements ObjStrFunc, ObjStrFunc1
#ifdef ATL51
Licensed (free)
#end
;

#endif
Gameus_
Местный житель
Сообщения: 209
Зарегистрирован: 18 окт 2006, 17:03
Откуда: Ростов на Дону Новочеркасск Новороссийск
Контактная информация:

Сообщение Gameus_ »

спасибо огромное, очень выручили
Ruslan_V
Посетитель
Сообщения: 45
Зарегистрирован: 01 июн 2009, 17:11

Сообщение Ruslan_V »

Добрый день. Такой вопрос - а как подключить StrFunc.vih и где его взять, если версия Галактики 7.12? Подскажите пожалуйста новичку!
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

может быть поможет. у меня в папке 712 остатки лежат :)

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

/*
  ╔═════════════════════════════════════════════════════════════════════╗
  ║      Н Т О  "T O P   S O F T",  А О   "Н О В Ы Й   А Т Л А Н Т"     ║
  ║      Проект    : ГАЛАКТИКА  (с) 2000                                ║
  ║      Система   : Управление персоналом                              ║
  ║      Версия    : 5.8                                                ║
  ║      Разработал: Антонович А.К.     01/02/2002                      ║
  ║      Назначение: Функции работы со строками                         ║
  ║      Изменения :                                                    ║
  ╚═════════════════════════════════════════════════════════════════════╝
*/

#ifndef _StrFunc_vih_Included
#define _SetFunc_vih_Included

#ifdef ComponentVersion
#component "z_Staff"
#end

//------------------------------------------------------------------------------
ObjInterface ObjStrFunc;
//------------------------------------------------------------------------------

// Функция возвращает Фамилию
Public function GetFirstName(FIO : string) : string;

// Функция возвращает Имя
Public function GetLastName(FIO : string) : string;

// Функция возвращает Отчество
Public function GetPatronymic(FIO : string) : string;

// Функция возвращает Фамилию и инициалы
Public function GetFIO(FIO : string) : string;

Public function UnVisibleInt(iTemp : integer) : string;
// функция преобразует число в строку и 0 заменяет пустой строкой

Public function UnVisibleLong(iTemp : longInt) : string;
// функция преобразует число в строку и 0 заменяет пустой строкой

Public function UnVisibleDouble(doubleTemp : double) : string;
//  функция преобразует doubleTemp в строку и некорректное значение doubleTemp заменяет пустой строкой (для отчетов)

Public function UnVisibleDate(dateTemp : date; formatStr : string) : string;
// функция преобразует дату в строку по формату formatStr
// и некорректную дату заменяет пустой строкой

Public function GetCountDay(DateBeg : Date; DateEnd : Date) : longint;
// Функция возвращает количество дней между датами без учета полных месяцев (для расчета испытательного срока)

Public function GetCountMonths(DateBeg : Date; DateEnd : Date) : longint;
// Функция возвращает количество полных месяцев между датами (для расчета испытательного срока)

Public function GetCountYears(DateBeg : Date; DateEnd : Date) : longint;
// Функция возвращает количество полных лет между датами (для расчета испытательного срока)

Public function CreatePeriod(dateBeg : date; dateEnd : date) : string;
// функция формирует строку периода месяц, квартал, полугодие, год, период

Public function isCrossPeriod(dateBeg1 : date; dateEnd1 : date; dateBeg2 : date; dateEnd2 : date) : boolean;
// проверяет на пересечение периодов

Public function isHitPeriod(dateBeg : date; dateEnd : date; dateTest : date) : boolean;
// проверяет попадает ли dateTest в период

//------------------------------------------------------------------------------
end;
//------------------------------------------------------------------------------
VipInterface StringFunctions implements ObjStrFunc
#ifdef ATL51
Licensed (free)
#end
;

#endif
Ruslan_V
Посетитель
Сообщения: 45
Зарегистрирован: 01 июн 2009, 17:11

Сообщение Ruslan_V »

то есть нужно создать файл с именем StrFunc.vih с вышеуказанным текстом, а затем в vip.cfg прописать #include StrFunc.vih ? Я правильно понял?
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

создать файл с текстом - да
и положить его туда где компилите либо в ту директорию, откуда у вас автомаом инклюды подключаются.
Ruslan_V
Посетитель
Сообщения: 45
Зарегистрирован: 01 июн 2009, 17:11

Сообщение Ruslan_V »

Подключил в проектном файле #include StrFunc.vih, файл положил в папку, где компилирую проект,
Когда использую функцию GetFIO в своем rtf-отчете:
sFIO:=GetFIO(view1.persons.fio);
, то при компиляции выдает ошибку
Ошибка: Нет такой функции,поля или метода, или неверный контекст использования:
GETFIO (стр.77, поз.15 в FRM\PR_MANUF.RTF)
sFIO:=GetFIO(viass2.persons.fio);

Что тут не так, не подскажете?
Ответить