Главная страница » 1с как получить имя отчество

1с как получить имя отчество

Получить имя и отчество из ФИО в 1С можно разными способами, в зависимости от того, в каком формате хранится ФИО и какая точность вам нужна. Вот несколько вариантов:

1. Если ФИО хранится в одной строке (Наиболее распространенный случай):

Это самый распространенный случай, когда ФИО хранится в одном текстовом поле.

    Самый простой способ (с использованием встроенных функций):

· Функция ПолучитьИмяОтчество(ФИО)

·

· МассивФИО = СтрРазделить(ФИО, " ", Ложь);

·

· Если МассивФИО. Количество() >= 2 Тогда

· Имя = МассивФИО[1];

· Отчество = "";

· Если МассивФИО. Количество() >= 3 Тогда

· Отчество = МассивФИО[2];

· КонецЕсли;

· Иначе

· Имя = "";

· Отчество = "";

· КонецЕсли;

·

· Возврат Новый Структура("Имя, Отчество", Имя, Отчество);

·

· КонецФункции

      Описание кода:

        СтрРазделить(ФИО, " ", Ложь): Разделяет строку ФИО на массив подстрок, используя пробел в качестве разделителя. Параметр Ложь указывает, что пустые строки не включаются в массив. МассивФИО[1] и МассивФИО[2] – это второй и третий элементы массива (индексация начинается с 0). Создается структура с полями “Имя” и “Отчество”, которые заполняются полученными значениями. Это удобный способ вернуть несколько значений из функции.

      Использование:

O ФИО = "Иванов Иван Иванович";

O Результат = ПолучитьИмяОтчество(ФИО);

O

O Сообщить("Имя: " + Результат. Имя); // Выведет: Имя: Иван

O Сообщить("Отчество: " + Результат. Отчество); // Выведет: Отчество: Иванович

    Более надежный способ (с учетом возможных ошибок в ФИО):

· Функция ПолучитьИмяОтчество(ФИО)

·

· МассивФИО = СтрРазделить(ФИО, " ", Ложь);

· КоличествоЭлементов = МассивФИО. Количество();

·

· Имя = "";

· Отчество = "";

·

· Если КоличествоЭлементов >= 1 Тогда

· // Считаем, что фамилия всегда есть

· Если КоличествоЭлементов >= 2 Тогда

· Имя = МассивФИО[1];

· КонецЕсли;

·

· Если КоличествоЭлементов >= 3 Тогда

· Отчество = МассивФИО[2];

· КонецЕсли;

· КонецЕсли;

·

· Возврат Новый Структура("Имя, Отчество", Имя, Отчество);

·

· КонецФункции

      Этот вариант более устойчив к случаям, когда в ФИО указано только фамилия и имя.

    С использованием регулярных выражений (более сложный, но может быть полезен для более сложного анализа):

· Функция ПолучитьИмяОтчествоРегВыражение(ФИО)

·

· РегВыражение = Новый COMОбъект("VBScript. RegExp");

· РегВыражение. Pattern = "^(\S+)\s+(\S+)\s+(\S+)$"; // Фамилия Имя Отчество

· РегВыражение. IgnoreCase = Истина;

· РегВыражение. Global = Ложь;

·

· Совпадения = РегВыражение. Execute(ФИО);

·

· Имя = "";

· Отчество = "";

·

· Если Совпадения. Count > 0 Тогда

· Имя = Совпадения. Item(0).Submatches. Item(1); // Индекс 1 — Имя

· Отчество = Совпадения. Item(0).Submatches. Item(2); // Индекс 2 — Отчество

· КонецЕсли;

·

· Возврат Новый Структура("Имя, Отчество", Имя, Отчество);

·

· КонецФункции

      Этот вариант использует регулярное выражение для разбора ФИО. Он предполагает, что ФИО состоит из трех слов, разделенных пробелами. Этот вариант может быть более полезен, если вам нужно выполнить более сложный анализ ФИО (например, проверить правильность написания). Важно: Для использования COMОбъекта “VBScript. RegExp” необходимо, чтобы на компьютере был установлен Internet Explorer.

2. Если ФИО хранится в разных полях (Фамилия, Имя, Отчество):

Если у вас уже есть отдельные поля для фамилии, имени и отчества, то вам не нужно ничего разделять. Просто используйте значения этих полей:

Имя = Объект. Имя;

Отчество = Объект. Отчество;

Важные моменты:

    Обработка исключений: Во всех примерах кода не предусмотрена обработка исключений (например, если строка ФИО пустая или содержит недопустимые символы). В реальном коде следует добавить обработку исключений, чтобы избежать ошибок. Формат ФИО: Убедитесь, что вы знаете формат ФИО, который используется в вашей базе данных. Некоторые базы данных могут использовать другой порядок слов (например, “Фамилия, Имя Отчество”). Тестирование: Тщательно протестируйте код на разных примерах ФИО, чтобы убедиться, что он работает правильно во всех случаях. Протестируйте на:

      ФИО, состоящих из трех слов. ФИО, состоящих из двух слов (например, “Иванов Иван”). ФИО, состоящих из одного слова (например, “Иванов”). ФИО с двойными фамилиями или именами (например, “Иванов-Петров Иван”).

    Локализация: Если ваша система используется в разных странах, учитывайте различия в форматах ФИО.

Рекомендации:

    Предпочтительно хранить ФИО в отдельных полях: Если у вас есть возможность изменить структуру базы данных, лучше всего хранить фамилию, имя и отчество в отдельных полях. Это упростит обработку ФИО и позволит избежать ошибок. Используйте простые функции: Если вам нужно только получить имя и отчество, используйте простые функции, основанные на СтрРазделить. Они достаточно надежны для большинства случаев. Регулярные выражения – для сложных случаев: Используйте регулярные выражения только в том случае, если вам нужно выполнить более сложный анализ ФИО или если вам нужно работать с нестандартными форматами ФИО.

Выбор способа получения имени и отчества зависит от ваших конкретных требований и от структуры базы данных. Начните с самого простого способа и переходите к более сложным, если это необходимо.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх