Як у 1с схиляти прізвища. Вихідний код модулів

При роботі в 1С користувач стикається з питанням відміни прізвища або посади співробітника в друкованих формах документів, тобто з ситуацією, коли треба виконати відміну прізвищ по відмінках.

Для відмінювання ПІБ у програмах 1С передбачена зовнішня компонента - NameDecl.dll, в якій міститься функція відмінювання. Її можна взяти на диску ІТС і, скопіювавши в папку із встановленою платформою 1С – bin, зареєструвати її в операційній системі. Ця процедура виконується за допомогою команди resvr32 NameDecl.dll (під обліком адміністратора). Для цього необхідно викликати команду "Виконати" через кнопку "Пуск", скориставшись пошуком або поєднанням клавіш Windows + R.

Рис.1 Вікно пошуку. Пошук команди «Виконати»

У вікні вводимо команду resvr32.exe і вказуємо шлях до бібліотеки, що підключається, використовуючи кнопку «Огляд».


Рис.2 Вікно команди «Виконати»

Після натискання «Ок» з'явиться повідомлення, що бібліотека успішно зареєстрована.


Рис.3 Вікно повідомлення

Опис методу відмінювання в 1С

Прохиляти (ПІБ, Падіж, Підлога) за параметрами:

  • ПІБ (обов'язковий), тип – рядок
  • Відмінок (обов'язковий), тип – число

Відмінок, який необхідно поставити ПІБ, задається числом від 1 до 6.

Таблиця відмінків: питання, прийменники та їх значення у програмному коді

Трапляється, що виникає неоднозначна ситуація, коли програмі необхідно визначити приналежність прізвища до підлоги, наприклад, Сігіда, Чепка, Сушко, Оганезян тощо.

У цьому випадку використовують додатковий параметр:

  • Підлога (необов'язкова), тип – число

Він показує, схиляти чи не схиляти прізвище. В інших випадках цей параметр опускають або використовують значення 0 (авто), т.к. неправильна вказівка ​​підлоги може вплинути на правильність відмінювання. Тут можливі значення: 0 – авто, 1 – чоловічий, 2 – жіночий.

Сервіс «Схиляння відмінків»

У програмах 1С 8.3 вже включений сервіс для відмінювання даних співробітників або контрагентів відповідно до відмінків, що застосовуються в документі.



Фрагмент 1

#Область Програмний Інтерфейс // Схиляє ПІБ // Тільки для роботи на ОС Windows. // // Параметри: // ПІБ - Рядок - Рядок, в якому міститься ПІБ для відмінювання. // Відмінок - Число - відмінок, в який необхідно прохиляти уявлення об'єкта. // 1 - Називний. // 2 - Родовий. // 3 - Давальний. // 4 - Знахідний. // 5 - Творчий. // 6 - Прийменниковий. // Об'єкт - СбъехтСклонения - Посилання об'єкт, реквізит якого схиляється // Пол - Число - Число - стать фізичного ліда, // 1 - чоловічий, // 2 - жіночий. // // Значення, що повертається: // Рядок - Результат відмінювання ПІБ в відмінку. // Функція Просхиляти ПІБ (ПІБ, Відмінок, Об'єкт = Невизначено, Стать = Невизначено) Експорт // Схиляє уявлення об'єкта. Функція ПросхилятиПредставлекі(Уявлення, Відмінок, Об'єкт = Невизначено) Експорт // Виконує з формою дії, необхідні для підключення підсистеми Відмінювання.

Рис.4 Вікно конфігуратора



Фрагмент 2

// Схиляє уявлення об'єкта. Функція СхилятиУявлення(Уявлення, Відмінок, Об'єкт = Невизначено) Експорт Повернення Прохиляти(Уявлення, Відмінок, Об'єкт); Кінецьфункції // Виконує з формою дії, необхідні для підключення підсистеми Відмінювання Процедура ПриСтворенніНаСервері(Форма, Подання, Ім'яОсновногоРеквізитуФорми = "Об'єкт") Експорт // Обробник події ПриЗаписуНаСервері керованої форми об'єкту для відхиленняПроцедур = Брехня , Стать = Невизначено) Експорт // Встановлює ознаку доступності сервісу відмінювання Процедура ВстановитиДоступністьСервісаВідміни(Доступність) Експорт ВстановитиПривілейованийРежим (Істина); ПоточніПараметри = Новий Відповідність(ПараметриСеансу.ПараметриКлієнтаНаСервері); ПоточніПараметри.Вставити("ДоступнийСервісСхиляння", Доступність); ПараметриСеанса.ПараметриКлієнтаНаСервері = Новий ФіксованеСвітловідповідь(ПоточніПараметри); УстановитиПривілейованийРежим(Брехня); КінецьПроцедури

Рис.5 Використання функції «Прохиляти»

Використовуючи в документі реквізити, що вибираються з довідника, в якому вони представлені в називному відмінку, у друковану форму документа вони будуть виведені з потрібним відмінюванням.

Розглянемо функцію відмінювання з прикладу договору в «1С:Бухгалтерія» 3.0. (1С:Підприємство 8.3). Тут передбачено відхилення ПІБ та посади.



Рис.6 Вікно форми договору. Налаштування відмінювання прізвища та посади

У друковану форму програма автоматично поставить правильний варіант.



Рис.7 Вікно програми – «Схиляння відмінків»

Приклад відмінювання відмінками можна побачити в «Наказі про прийом на роботу». У картці співробітника його ПІБ зазначено в називному відмінку, а в друкованій формі – у родовому.



Рис.8 Приклад відмінювання ПІБ у друкованій формі «Наказ про прийом на роботу»

Програма 1С, враховуючи вимоги законодавства та стандартів, дозволяє відповідати затвердженому порядку оформлення документації та формування друкованих форм.

Відмінювання відмінками зумовлено і стандартами ділового обороту, які передбачають, що будь-який документ має бути оформлений не тільки грамотно, а й естетично грамотно, що відображає статус організації.

Крім цього, використання таких функцій у програмі, як автовідмінювання, значно знижує ймовірність помилок у складанні документів.

Відмінювання ПІБ в 1С 8.3

У ході експлуатації комплексу програмного забезпечення 1С у користувачів часто виникають питання щодо відмінювання ПІБ 1С 8.3. 1С функція відмінювання ПІБ здійснюється спеціальною компонентою, яка називається як "NameDecl.dll". Для початку використання компоненту необхідно скопіювати з диска інформаційно-технічного супроводу в папку, де розташована основна платформа bin, а також зареєструвати її в операційній системі. Здійснюється копіювання через команду resvr32 NameDecl.dll. З цією метою відкриваємо "Пуск" викликаємо директиву "Виконати", як це показано на малюнку.

Відкриваємо вікно та прописуємо «resvr32.exe», вказуючи шлях до потрібної бібліотеки. Бібліотека вибирається за допомогою кнопки «Огляд». Далі потрібно вибрати «ОК» та підтвердити реєстрацію бібліотеки.

1с відмінювання ПІБ виконується за 2 параметрами:

  • Відмінок, тип - число. Це обов'язковий параметр.
  • ПІБ, тип - рядок. Також є обов'язковим параметром.

Так як у російській мові є шість відмінків, відмінку присвоюється число від 1 до 6 відповідно до таблиці, поданої нижче:

Також виділяють третій, необов'язковий параметр компоненти відмінювання ПІБ 1С - стать (тип - число). Тут є 3 варіанти: 0 – авто, 1 – чоловік, 2 – дружин.

Сервіс 1С 8 відмінювання ПІБ

Програми версії 1С 8.3 мають спеціальний сервіс для відмінювання ПІБ по відмінках 1С 8.3, який працює через конфігуратор. Тому, щоб прохиляти ПІБ, відкриваємо вікно конфігуратора і використовуємо функцію «Прохиляти», як це показано нижче:

Реквізити вводимо з довідника, де вони відображені в називному відмінку. На друк документи виводяться та відображаються у формах вже у бажаному відмінюванні. Як приклад, ось це виглядає у формі договору:



Як приклад нижче поданні наказ про наймання на роботу, де у картки фахівця його прізвище, ім'я та по батькові прописані в І.П., а ось у друкованій формі вони відображаються у Р.П.

1С автоматично дає можливість складати друковані форми та документацію з урахуванням чинних вимог законодавства. Необхідність відмінювання за відмінками, пологами та числами продиктована стандартами ділового документообігу, згідно з якими будь-який документ складається естетично, грамотно та відповідає статусу компанії.

Застосування функції автоматичного відхилення мінімізує ймовірність помилок при формуванні документів, що захищає від негативних наслідків у майбутньому. Особливо актуально це для тих випадків, коли формується одразу велика кількість документів. Автосхиляння раціоналізує роботу з документацією та економить час, що позитивно позначається на результативності.

Ми розібрали 2 способи відмінювання прізвища, ім'я по-батькові за відмінками, числами та пологами - за допомогою спеціальної компоненти відмінювання ПІБ 1С 8.3 і через сервіс конфігуратора. Спробуйте обидва та визначте, який більше підходить для вас.

Пропонована розробка надає програмістам 1С функцію відмінювання відмінків слів та словосполучень російською та українською мовами, а також функцію формування пропису чисел у заданому відмінку. Програма вміє схиляти прізвища, імена та по батькові, а також посади, назви відділів та юридичних осіб (українською поки що лише ПІБ). Вказівка ​​підлоги не потрібна. Навпаки, програма автоматично визначає та видає граматичний рід словосполучення, за яким визначається стать. Алгоритм демонструє високу якість відмінювання, а для випадків, коли програма все ж таки помиляється, передбачений сервіс оперативного виправлення помилок. Програма реалізована у вигляді веб-сервісу, доступного безкоштовно всім охочим (до 1000 запитів на добу). Для виклику функції відмінювання з 1С 8.2 достатньо 3 рядків коду, при цьому не потрібно включати до конфігурації жодних додаткових DLL. Приклад обробки мовою 1С додається.

Реалізовані функції

Веб-сервіс «Морфер» призначений для відмінювання відмінків слів та словосполучень російською та українською мовами. Вхідне словосполучення може бути в однині або множині, але обов'язково в називному відмінку. На виході генерується однина і множина у всіх відмінках і автоматично визначається рід.

Наприклад, на вході:

На виході:

І. провідний інженер-програміст ІІІ категорії провідні інженери-програмісти ІІІ категорії
Р.
Д. провідному інженеру-програмісту III категорії провідним інженерам-програмістам III категорії
Ст. провідного інженера-програміста ІІІ категорії провідних інженерів-програмістів ІІІ категорії
Т. провідним інженером-програмістом ІІІ категорії провідними інженерами-програмістами ІІІ категорії
П. про провідного інженера-програміста III категорії про провідних інженерів-програмістів III категорії
Рід: чоловічий

Кількість підтримуваних типів словопоєднань не обмежена прізвищами та посадами. Програма вміє схиляти також назви підрозділів, юридичних осіб, географічні назвита багато іншого. Висока якістьвідмінювання забезпечується використанням словників, зокрема, «Словника власних назв» Ф.Л. Агєєнко на 38 000 одиниць. За 9 років роботи над «Морфером» було складено понад 27 000 прикладів відмінювання для російської та понад 11 000 для української мови. База прикладів постійно поповнюється і використовується контролю якості продукту.

Веб-сервіс також реалізує функцію пропису чисел та грошових сум у довільному відмінку, що дозволяє формувати такі фрази як: «протягом 7 (Семи) календарних днів» («21 календарного дня»), «у розмірі 1000 (Однієї тисячі) рублів» ( "десяти тисяч рублів") і т.п. Відмінювання одиниці вимірювання також здійснюється автоматично. Немає необхідності вказувати заздалегідь всі відмінкові форми ("рубль", "рубля", "рублів").

Швидкий старт: відміна посади

Програма для відмінювання посади виглядатиме так:

Морфер = Обробки.Морфер.Створити(); Результат = Морфер.СклонятьРусский("Генеральний директор"); Повідомити("Батьківщина (кого?): " + Результат.Р); Повідомити("Дальний (кому?): " + Результат.Д); Повідомити("Звинувачувальний (кого?): " + Результат.В); Повідомити("Творчий (кем?):" + Результат.Т);

Щоб перевірити, як працює цей код, завантажте і встановіть зовнішню збірку з файлу .epf (Обробки, правий клік, вставити зовнішню обробку), скопіюйте приклад у Конфігуратор (Конфігурація, правий клік, «Відкрити модуль звичайної програми», Вставити) і вставте, наприклад, у процедуру ПриПочаткуРоботиСистеми. Після запуску програми (F5) у вікні повідомлень з'явиться директор у всіх відмінках:

Родовий (кого?): Генерального директора Давальний (кому?): Генеральному директору Знахідний (кого?): Генерального директора Творчий (ким?): Генеральним директором Прийменник (про кого?): про Генерального директора

Для української мови функція відмінювання називається Схиляти

Результат = Морфер.СхилятиУкраїнський("Лук"янченко Леонід Аркадійович"); Знахідний (кого?): " + результат.З); Повідомити("Орудний (ким?): " + результат.О); : + результат.К);

Результат:

Родовий (кого?): Лук'янченко Леоніда Аркадійовича Давальний (кому?): Лук'янченку Леоніду Аркадійовичу Знахідний (кого?): Лук'янченка Леоніда Аркадійовича Орудний (ким?): Лук'янченку Леоніду Аркадійовичу Місцевий (на кому : Лук'янченко Леоніді Аркадійовичі Кличний: Лук'янченко Леоніде Аркадійовичу

Українська версія поки що найкраще справляється з прізвищами, іменами та по-батькові. Робота з іншими типами словосполучень ведеться.

Для покращення якості відмінювання можна передавати ознаки.

Ознаки = Новий Масив(); Ознаки.Додати("name"); Ознаки.Додати("feminine"); результат = Морфер.СклонятьРусский("Щукина Ольга Олександрівна", Ознаки);

на даний моментдоступні слід. ознаки: name, feminene, masculine, neuter, animate, inanimate, common, plural.

Функція побудови пропису числа в будь-якому відмінку

Функція ПрописРусский (ПрописУкраинский) вирішує дві родинні завдання: отримання пропису числа (1125) і узгодження одиниці виміру з попереднім числом (1 папуга, 2 папуги, 5 папуг). Приклад:

// Приклад написання грошової суми прописом у родовому відмінку: пропис = Морфер.ПрописРусский(235, " карбованець " ); Повідомити(пропис.n.І + " " + пропис.unit.І); Повідомити ("у розмірі" + пропис.n.Р + "" + пропис.unit.Р);

Результат:

Двісті тридцять п'ять карбованців на суму двісті тридцять п'ять карбованців

Функція приймає два аргументи:

n- Ціле позитивне число.

unit– одиниця виміру – слово чи словосполучення у називному відмінку однини: "рубль", "долар США", "календарний день", "новий лист" і т.п. Якщо слово вживається лише у множині, то вказується форма називного відмінка множини: «добу», «штани», «ножиці»

Результат, що повертається функцією Прописруський, містить два набори відмінкових форм: один для числа (n), інший для одиниці виміру (unit). Комбінуючи відповідні відмінкові форми n і unit, можна отримати висновок «суми прописом» на будь-який смак:

235 рублів Двісті тридцять п'ять рублів 235 (двісті тридцять п'ять) рублів і т.п.

Комбінувати має сенс лише відповідні відмінкові форми nі unit- Називний з називним, родовий з родовим і т.д. Наприклад, для отримання фрази "у розмірі N рублів (доларів, євро...)" беремо родовий відмінок(Р): у розмірі + 235 + рублів.

Відмінювання прикметників за пологами

Функція Схиляти Прикметник По Родах схиляє цей прикметник, перетворюючи його з чоловічого родуу жіночий, середній та у множину:

Результат = Морфер. Повідомити("Жіночий: " + результат.feminine); Повідомити("Середній: + результат.neuter); Повідомити("Множ. число: + результат.plural);

Жіночий: шановна
Середній: шановне
Множ.число: шановні

Авторизація

Для отримання доступу до тегів рід, звідки, куди, де, а також зняти обмеження на кількість запитів на добу, потрібно купити підписку на сайті http://morpher.ru/ws3/І передати токен так:

Обробка помилок

Помилка ініціалізації модуля: Модуль Керованого Додатку через: (Обработка.Морфер.МодульОбъекта(138)): Помилка: Не знайдено російських слів. Викликати Виняток("Помилка:" + Дані.message);

У даному випадку помилка виникла через те, що рядок, що схиляється, не містить жодного російського слова. Інший можливий випадок – коли рядок, що схиляється, містить кількісне числове («тридцять три корови»). Такі словосполучення програма не обробляє, видається помилка.

Сумісність та усунення несправностей

Модуль випускається у двох варіантах для 8.3.16 та 8.2.?. Версії відрізняються тим, що версія 8.3.16 використовує вбудований десеріалізатор JSON.

Оперативне виправлення помилок відмінювання

Відмінювання як мовний феномен рясніє неоднозначностями, особливо в області власних назв. У місті Москва чи місті Москві? У республіці Корея чи республіці Кореї? У Тушино чи Тушині? Власники «дивовижних» прізвищ часто не люблять, щоб їх схиляли. Скажімо, якщо у людини прізвище Груздь, він вимагатиме, щоб його прізвище не схиляли, часто всупереч правилам російської мови та загальної думки. Але якщо він ваш начальник, то невідомо ще, хто залишиться Грузде, якщо ви дозволите собі схиляти його в договорі.

Не секрет, що алгоритм автоматичного відмінювання теж може помилятися – не знати будь-якого слова чи заплутатися у складній синтаксичній структурі. Що робити, якщо машина схиляє не так, як треба, а документ має бути на столі у начальника за 10 хвилин? Добре, якщо система дозволяє вручну виправляти документ після його видачі. Але виправляти прізвище начальника у кожному наказі теж не діло. Традиційне вирішення цієї проблеми (якщо руки дійдуть до його реалізації) – зберігання відмінкових форм у таблиці-довіднику, яка заповнюється вручну.

Веб-сервіс відмінювання надає саме таке «табличне» вирішення проблеми помилок у відмінюванні – тільки вам для цього нічого не потрібно робити, все вже реалізовано за вас – і база даних, і інтерфейс для її редагування для двох мов, і перевірка введених вами даних професійним лінгвістом. Достатньо зайти на сторінку виправлення помилок та ввести потрібні вам відмінкові форми (або виправити результат автоматичного відмінювання). Після цього веб-сервіс відразу ж схилятиме так, як ви вказали – але тільки для вас. Після перевірки введеного вами прикладу адміністратором він стане доступним іншим користувачам веб-сервісу. Введені виправлення також використовуються для вдосконалення алгоритму відмінювання. Таким чином якість відмінювання покращується самими користувачами.

Встановлення веб-сервісу у вашій локальній мережі

Багато користувачів веб-сервісу висловлювали бажання мати «такий самий сервіс, тільки в себе», тобто. мати можливість розгорнути веб-сервіс у своїй локальній мережі. Це вирішило б проблему з використанням веб-сервісу на робочих місцях, де немає доступу до Інтернету, а також проблему із законом «Про захист персональних даних», який вимагає забезпечення конфіденційності таких даних.

У відповідь на ці побажання було створено варіант веб-сервісу, який припускає встановлення на сервері в локальній мережі підприємства або безпосередньо на машині користувача, якщо користувач один. Новий продукт отримав назву"Морфер.Сервер". Він реалізує ті ж функції, що і загальнодоступний веб-сервіс, включаючи функцію підтримки словника користувача, і працює в сотні разів швидше через те, що локальна мережа швидше за Інтернет.

Для перемикання з «глобального» на«локальний» сервісдостатньо змінити код наступним чином:

Морфер = Обробки.Морфер.Створити(); Морфер.ЗмінитиСервер("comp001", false);

Тут comp001– це ім'я мережі комп'ютера, де встановлено веб-сервіс.У другому рядку змінювати нічого не потрібно.

Як придбати та встановити у себе локальний веб-сервіс, описано на сторінці продукту: "Морфер.Сервер".

Початковий код модулів.

Вихідний код модулів повністю відкритий та доступний. https://github.com/morpher-ua/1C.WebService.Client

Альтернативи

Автор «Морфера» займається питанням автоматичного відмінювання професійно з 2003 року та постійно стежить за аналогічними розробками. Одним із помітних аналогів є веб-сервіс Яндекс.Склонятор, але він схиляє лише «імена, прізвища та ніки». Ось список ще кількох рішень, розроблених для платформи 1С:

Дата публікації Назва Автор Тип Мова +/-
2002 Відмінок. Версія "Крохотулька" Юрія Железнякова SuperJur рус
01.10.2008 e.kogan рус +142/-0
27.02.2007 NDeclin ВК рус +59/-0
21.11.2010 director04 ВК+1С рус +53/-0
06.02.2012 fixin рус +16/-0
16.06.2009 (Ivon) Ivon укр +16/-0
08.11.2007 tarasenkov ВК укр +15/-3

* Кількість плюсів та мінусів дано на момент публікації.

У «Морфері» враховано багато побажань до подібних систем, а саме:

  1. Можливість безкоштовного використання функцій відмінювання – є до 1000 запитів на добу. Цієї кількості більш ніж достатньо для приватних осіб та малого бізнесу. Для більших клієнтів є платний доступ.
  2. Простота розгортання. Не потрібно включати до конфігурації жодних додаткових бібліотек, реєструвати їх у реєстрі та постачати користувачам. Не потрібні права адміністратора на машинах користувача.
  3. Можливість оперативного виправлення помилок. Багато користувачів відзначали як недолік DLL неможливість оперативного виправлення помилок відмінювання. Навіть у випадку з «відкритим кодом» мовою 1С, щоб виправити одне прізвище, розбиратися в цьому коді (відразу згадується «Крохотулька») не у всіх програмістів знайдеться час та бажання. Веб-сервіс вирішує цю проблему, надаючи користувачам веб-сторінку для оперативної зміни відмінювання окремих словосполучень. Для цього не потрібно втручання програміста - виправити помилку зможе будь-який грамотний користувач комп'ютера.
  4. Зміна за числами (). Реалізовано.

Крім того, відмінними рисами"Морфера" є:

  1. Простий API: відмінювання всіх типів словосполучень виконується однією функцією. Немає необхідності вказувати тип словосполучення (ПІБ, посада, підрозділ...)
  2. Не потрібно вказівка ​​підлоги. Навпаки, програма автоматично визначає та видає граматичний рід словосполучення, за яким однозначно визначається стать.
  3. Висока якість відмінювання, що досягається використанням комбінованого підходу – алгоритми для кодування правил та словники для обліку винятків. «Морфер» увібрав у себе кілька багатотисячних словників, роки копіткої роботи, обліку зауважень та побажань користувачів.

Чекаю нових ваших побажань та зауважень. Саме вони мотивують мене розвивати продукт далі.