Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
svd_key
Зарегистрирован: 28.04.2009 Сообщения: 10
|
Добавлено: Вт Апр 28, 2009 14:02 Заголовок сообщения: Склоненение ФИО в БОССе |
|
|
Подскажите пожалуйста, есть ли в БОССе функция для склонения ФИО для ее использования в SELECTах.  |
|
Вернуться к началу |
|
 |
Vitaly Большой шоколадный орден

Зарегистрирован: 29.07.2008 Сообщения: 281 Откуда: Санкт-Петербург
|
Добавлено: Ср Апр 29, 2009 10:58 Заголовок сообщения: |
|
|
А зачем использовать склонение в селектах, если не секрет ? |
|
Вернуться к началу |
|
 |
svd_key
Зарегистрирован: 28.04.2009 Сообщения: 10
|
Добавлено: Ср Апр 29, 2009 11:14 Заголовок сообщения: |
|
|
Например, формируется приказ (не стандартный), нужен список ФИО в дательном (или другом) падеже. Сотрудники стандартно имеют именительный падеж в табл. CARD. Желательно в тексте SELECTа вставить функцию и получить желаемый набор данных. |
|
Вернуться к началу |
|
 |
Eng Site Admin
Зарегистрирован: 13.05.2008 Сообщения: 160
|
Добавлено: Чт Апр 30, 2009 12:23 Заголовок сообщения: |
|
|
Кто там говорил, что сиквел лучше оракла?
Ну а если серьезно, можно использовать UDF падеж, строка;
Но в селекте такая конструкция не работает.
Соответственно для того, чтобы использовать склоненные фио в селекте потребуется написать скан, в нем создать временную табличку с фио в нужном падеже, а потом ее использовать в отчете...
Вот пример программы для произвольного отчета:
Код: |
Local fio = '';
if object_id('tempdb..#card_dat') IS NOT NULL THEN DROP TABLE #card_dat;
CREATE TABLE "#card_dat" (auto_card INTEGER,
fdat varchar (250));
scan @ss select auto_card, card.Name + ' ' + Name_i + ' ' + Name_o, (CASE WHEN Card.Sex = 0 then 'М' else 'Ж' END) from card
execute {
let fff = @ss:3+' '+@ss:2;
UDF dat fff;
insert into #card_dat (auto_card, fdat)
select @ss:1, fio[''];
};
browser {select * from #card_dat};
|
Приведенный код работает около 3-х секунд для 200 человек... Если у Вас значительно больше работников и такая производительность Вас не устраивает, наверно имеет смысл создать постоянную табличку склонений заполнить ее первый раз сканом, а потом добавить пару строчек в создание личной карточки, чтобы при создании ЛК Ваша табличка заполнялась...
Последний раз редактировалось: Eng (Чт Апр 30, 2009 12:28), всего редактировалось 1 раз |
|
Вернуться к началу |
|
 |
Eng Site Admin
Зарегистрирован: 13.05.2008 Сообщения: 160
|
Добавлено: Чт Апр 30, 2009 12:27 Заголовок сообщения: |
|
|
И еще немного из документации:
Цитата: | UDF
Назначение:
данное ключевое слово предлагает языковое рассширение функциональности (определяемые пользователем процедура). Примером является Z-язык. Вызов этого языка происходит следующим образом:
UDF z или UDF Z
Описание z-языка выходит за рамки данного описания.
Дополнительно обрабатываются переключатели.
Склонение по падежам.
VIN (винительный)
DAT (дательный)
ROD (родительный)
TVO (творительный)
PRE (предложный)
Вариант вызова:
UDF падеж, строка;
Значения параметров для данных переключателей:
строка - исходная строка вида "П фамилия имя отчество", где П задает род - М или Ж, разделенные пробелами или запятыми.
Возвращаемое значение помещается в переменную FIO. Также можно вернуть значение вызовом @@{UDF…}.
Пример:
UDF dat М Иванов Иван Иванович;
Return Fio;
-- возвращает Иванову Ивану Ивановичу
--или
return @@{UDF dat М Иванов Иван Иванович}; |
|
|
Вернуться к началу |
|
 |
svd_key
Зарегистрирован: 28.04.2009 Сообщения: 10
|
Добавлено: Чт Апр 30, 2009 12:30 Заголовок сообщения: |
|
|
Спасибо.  |
|
Вернуться к началу |
|
 |
Eng Site Admin
Зарегистрирован: 13.05.2008 Сообщения: 160
|
Добавлено: Чт Апр 30, 2009 12:56 Заголовок сообщения: |
|
|
Пожалуйста
Забыл еще написать, что есть X процедурки типа pr_dat_padej, pr_rod_padej им на входе можно давать только auto_card, все остальное они сами найдут, но не уверен, что будет быстрее работать... |
|
Вернуться к началу |
|
 |
svd_key
Зарегистрирован: 28.04.2009 Сообщения: 10
|
Добавлено: Чт Апр 30, 2009 13:14 Заголовок сообщения: |
|
|
Если бы эти процедурки были хранимыми процедурами на сервере, то цены бы им не было. Вопрос как раз и заключается в том, чтобы можно было делать запросы к базе данных на SQLSERVER из других приложений. |
|
Вернуться к началу |
|
 |
svd_key
Зарегистрирован: 28.04.2009 Сообщения: 10
|
Добавлено: Чт Апр 30, 2009 13:24 Заголовок сообщения: |
|
|
Для получения падежей наименований подразделений, например, есть хранимая функция на сервере.
К примеру:
SELECT Lite.dbo.UDF_padeg(Struct_Name,2) as struct_name_r FROM Lite.dbo.card
В зависимости от 2-го параметра получаем наименования подразделений в указанном падеже.
Для ФИО сотрудников она к сожалению не подходит (работает не корректно). |
|
Вернуться к началу |
|
 |
Eng Site Admin
Зарегистрирован: 13.05.2008 Сообщения: 160
|
Добавлено: Чт Апр 30, 2009 13:59 Заголовок сообщения: |
|
|
Для доступа из других приложений ИМХО стоит сделать отдельную табличку склонений и на прямую к ней обращаться. В форме hr_dlg_card (личная карточка) внести изменения в триггеры insert, update, delete для работы с этой табличкой.
Либо пересмотреть необходимость использования ФИО в других падежах  |
|
Вернуться к началу |
|
 |
Alexander
Зарегистрирован: 18.10.2012 Сообщения: 37
|
Добавлено: Вт Сен 13, 2016 18:12 Заголовок сообщения: |
|
|
Подниму опять тему склонений.
UDF DAT/VIN/...
Если в отчестве 2 слова, ФИО склоняется неверно,
запись в Сложные варианты склонения не помогает. |
|
Вернуться к началу |
|
 |
RVV Большой шоколадный орден

Зарегистрирован: 14.01.2010 Сообщения: 449
|
Добавлено: Ср Сен 14, 2016 12:09 Заголовок сообщения: |
|
|
Отчеств у иностранцев нет
А у Россиян отчетсво одно |
|
Вернуться к началу |
|
 |
matchk
Зарегистрирован: 18.05.2015 Сообщения: 188
|
Добавлено: Чт Сен 15, 2016 07:06 Заголовок сообщения: |
|
|
RVV писал(а): | Отчеств у иностранцев нет
А у Россиян отчетсво одно |
Вы по поводу одного слова в отчестве у россиян явно погорячились.
Например, а нас работает гражданин РФ, который родился в России.
Имя "Мамедали"
Отчество "Ибрагим оглы"
И поверьте, два слова в отчестве не такая уж редкость. |
|
Вернуться к началу |
|
 |
Volod Большой шоколадный орден

Зарегистрирован: 11.02.2015 Сообщения: 252
|
Добавлено: Чт Сен 15, 2016 09:18 Заголовок сообщения: |
|
|
У нас 56 кызы все с паспортами гражданок РФ. -)
В тюркских отчествах слова "оглы" и "кызы" являются элементами, образующими отчество, подобно русским -ович, евич, -овна, -евна.
оглы (улы, уулу) для сыновей и кызы (гызы) для дочерей (слова сын и дочь (девочка) в притяжательной форме 3 лица единственного числа). |
|
Вернуться к началу |
|
 |
DUCKKK Большой шоколадный орден

Зарегистрирован: 16.09.2009 Сообщения: 1690
|
Добавлено: Чт Сен 15, 2016 11:08 Заголовок сообщения: |
|
|
Можно привести пример неправильного склонения после занесения в справочник сложных ФИО? |
|
Вернуться к началу |
|
 |
|