Имя: Пароль:
1C
 
Получить фамилию, имя, отчество
🠗Ø (Волшебник 11.12.2023 07:15)
,
0 vvs79
 
08.12.23
13:41
1с 8.3 розница 2
Нужно получить из справочника физ лиц фамилию имя отчество (отдельными значениями).
Делаю:
Выборка =   Справочники.ФизическиеЛица.Выбрать();
Пока Выборка.Следующий() Цикл
КонецЦикла;
А что в этом цикле делать , не знаю :-(
Выборка.ПолучитьОбъект().Фамилия ругается.
Прошу помощи зала !
1 mikecool
 
08.12.23
13:50
есть РС ИсторияФИОФизическихЛиц? смотри там
2 mikecool
 
08.12.23
13:51
(0) ты ИИ? чего полез кодить?
3 vvs79
 
08.12.23
14:09
(1) Что то поиск ничего не находит: ИсторияФИОФизическихЛиц.
(2) Какой ИИ.
4 2S
 
08.12.23
14:18
(0) в БСП все за вас придумано
5 vvs79
 
08.12.23
14:34
(4) она платная.
6 yurikmellon2
 
08.12.23
14:35
(5) шта?
7 Tatitutu
 
08.12.23
14:39
(0) ты ТАМ кто ?
8 yurikmellon2
 
08.12.23
14:44
я хз что там в рознице, в стандартной БП это
Общий модуль ФизическиеЛицаКлиентСервер функция ЧастиИмени
9 yurikmellon2
 
08.12.23
14:49
на прям код из типовой

Функция ЧастиИмени(ФамилияИмяОтчество) Экспорт
    
    Результат = Новый Структура("Фамилия,Имя,Отчество");
    
    ЧастиИмени = СтрРазделить(ФамилияИмяОтчество, " ", Ложь);
    
    Если ЧастиИмени.Количество() >= 1 Тогда
        Результат.Фамилия = ЧастиИмени[0];
    КонецЕсли;
    
    Если ЧастиИмени.Количество() >= 2 Тогда
        Результат.Имя = ЧастиИмени[1];
    КонецЕсли;
    
    Если ЧастиИмени.Количество() >= 3 Тогда
        Результат.Отчество = ЧастиИмени[2];
    КонецЕсли;
    
    Если ЧастиИмени.Количество() > 3 Тогда
        ДополнительныеЧастиОтчества = Новый Массив;
        ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'оглы'"));
        ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'улы'"));
        ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'уулу'"));
        ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'кызы'"));
        ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'гызы'"));
        ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'угли'"));
        
        Если ДополнительныеЧастиОтчества.Найти(НРег(ЧастиИмени[3])) <> Неопределено Тогда
            Результат.Отчество = Результат.Отчество + " " + ЧастиИмени[3];
        КонецЕсли;
    КонецЕсли;
    
    Возврат Результат;
    
КонецФункции
10 Tatitutu
 
08.12.23
14:51
(9) теперь расскажи (0) про Запрос
или что

Пока Выборка.Следующий() Цикл

КонецЦикла;
А что в этом цикле делать , не знаю :-(

у него Розница 2 , а ты пример из Бухгалтерии предприятия ему зарядил.

Представляешь, как ему сейчас плохо ?
11 yurikmellon2
 
08.12.23
14:58
(10) лопату дал, дальше пусть сам роет
12 yurikmellon2
 
08.12.23
15:31
глянул темы ТС, похоже совсем начинающий...

вот гляди, допустим у тебя есть в справочники физлица следующие записи
13 yurikmellon2
 
08.12.23
15:32
тогда вот такой код

&НаКлиенте
Процедура Команда1(Команда)
    Команда1НаСервере();
КонецПроцедуры

&НаСервере
Процедура Команда1НаСервере()
    
    
    Выборка =   Справочники.ФизическиеЛица.Выбрать();
    Пока Выборка.Следующий() Цикл
        
        Имя = ЧастиИмени(Выборка).Имя;
        Отчество = ЧастиИмени(Выборка).Отчество;
        Фамилия = ЧастиИмени(Выборка).Фамилия;
        Сообщить(Фамилия);
        Сообщить(Имя);
        Сообщить(Отчество);
    КонецЦикла;    
    
КонецПроцедуры


Функция ЧастиИмени(ФамилияИмяОтчество) Экспорт
    
    Результат = Новый Структура("Фамилия,Имя,Отчество");
    
    ЧастиИмени = СтрРазделить(ФамилияИмяОтчество, " ", Ложь);
    
    Если ЧастиИмени.Количество() >= 1 Тогда
        Результат.Фамилия = ЧастиИмени[0];
    КонецЕсли;
    
    Если ЧастиИмени.Количество() >= 2 Тогда
        Результат.Имя = ЧастиИмени[1];
    КонецЕсли;
    
    Если ЧастиИмени.Количество() >= 3 Тогда
        Результат.Отчество = ЧастиИмени[2];
    КонецЕсли;
    
    Если ЧастиИмени.Количество() > 3 Тогда
        ДополнительныеЧастиОтчества = Новый Массив;
        ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'оглы'"));
        ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'улы'"));
        ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'уулу'"));
        ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'кызы'"));
        ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'гызы'"));
        ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'угли'"));
        
        Если ДополнительныеЧастиОтчества.Найти(НРег(ЧастиИмени[3])) <> Неопределено Тогда
            Результат.Отчество = Результат.Отчество + " " + ЧастиИмени[3];
        КонецЕсли;
    КонецЕсли;
    
    Возврат Результат;
    
КонецФункции
14 yurikmellon2
 
08.12.23
15:33
выдаст вот такой результат
15 yurikmellon2
 
08.12.23
15:35
вроде разжевал проще некуда

А данные из Спр физлица запросом надо вытаскивать.
Есть куда расти.
16 Гость из Мариуполя
 
гуру
08.12.23
17:02
ух у меня у клиента была одна сотрудница. Даже я ее запомнил, не то что клиент :))
Еще из 7.7 тянулась.. и наконец то только в этом году
уволилась, ушла на пенсию. фу-ухх..

ЭЛЬ ХАЖЖ Варвара Леонидовна

ЭЛЬ ХАЖЖ - фамилиё такое. Именно так и написано в паспорте, СНИЛСЕ и всех прочих документах.
Меня еще всегда прикалывало, что при такой фамилии такое имя :)
хрен ваши функции ее обрабатывают правильно.
да, чтобы не быть голословным, к примеру вот:
https://injust.pro/person/782511592752
17 vvs79
 
08.12.23
17:40
(12) вторая программа на 1С :-)
18 vvs79
 
08.12.23
17:41
(13) Буду пробовать.
19 Волшебник
 
08.12.23
18:00
(0) Программирование — это фантазия плюс умение крутить циклы.
20 vvs79
 
08.12.23
18:15
(15) И кабы разрешили запросы использовать :-(
21 Волшебник
 
08.12.23
19:11
(20) Разрешили, да? Ну тогда будет правильнее всего такой запрос:

ВЫБРАТЬ Фамилия, Имя, Отчество
ИЗ РегистрСведений.ФИОФизлиц.СрезПоследних(&Дата, Физлицо = &Физлицо)
22 vvs79
 
08.12.23
19:19
(21) В том то и дело.
"Никакого SQL".
Я сначала на нём делал. Потом сказали, пришлось всё переписывать. Вспомнил молодость :-)
23 vvs79
 
08.12.23
19:21
Но в РегистрСведений же тоже можно искать без SQL. Или нет ?
24 Волшебник
 
08.12.23
20:11
Не морочьте людям голову
25 lEvGl
 
гуру
08.12.23
22:27
(23) где вы в 1С sql видели?
26 vvs79
 
08.12.23
23:17
(13) Это конечно в чём-то выход, только это сделано неправильно.
Она (процедура) разделяет строковое поле Наименование на фамилию имя и отчество.
Хотя в записи физ лица (в интерфейсе) забиваются и сохраняются отдельно атрибуты Фамилия, Имя, Отчество. А в наименовании может быть вообще что угодно.
Как бы до них добраться ?
27 lEvGl
 
гуру
08.12.23
23:20
ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'угли'"));

это кажется на случай Маугли
28 vvs79
 
10.12.23
15:37
Существует какая либо чтения / изменения ФИО в учётной информации. Оно же может отличатся от наименования и там разделено ? Куда-то же оно записывается.
29 Волшебник
 
11.12.23
07:15
(28) Соблюдайте грамматику русского языка.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.