Имя: Пароль:
1C
 
Интерактивные операции недоступны
,
0 Filkkore
 
06.07.20
08:01
ЗУП 3.1

Необходимо через внешнюю обработку воспользоваться типовыми механизмами изменения ФИО Физ лица.
1 Filkkore
 
06.07.20
08:02
(0)

&НаКлиенте
Функция ПолучитьФормуЭлемента(Сотрудник)
    
    Форма = ПолучитьФизЛицо(Сотрудник);
    
    Возврат Форма;
    
КонецФункции


&НаСервере
Функция ПолучитьФизЛицо(Сотрудник)
    
    Возврат Справочники.ФизическиеЛица.НайтиПоКоду(Сотрудник.Код).ПолучитьФорму("ФормаЭлемента");
    
КонецФункции


&НаКлиенте
Процедура Восстановить()
    
    ДополнительныеПараметры = Новый Структура;
    ДополнительныеПараметры.Вставить("ОповещениеЗавершения", "ОписаниеОповещения");
    Результат = Новый Структура;
    Для Каждого Стр Из Объект.ФИО Цикл
        ДополнительныеПараметры.Вставить("Форма", ПолучитьФормуЭлемента(Стр["ФизическоеЛицо"]));
        Результат.Вставить("ДатаИзменения", Стр["Период"]);
        Результат.Вставить("Имя", Стр["Имя"]);
        Результат.Вставить("Инициалы", "");
        Результат.Вставить("Отчество", Стр["Отчество"]);
        Результат.Вставить("Фамилия", Стр["Фамилия"]);
        Результат.Вставить("НовоеНаименование", "");
        Результат.Вставить("ИзменениеЗаднимЧислом", "");
        Результат.Вставить("ДатаТекущейЗаписи", "");
    КонецЦикла;

    СотрудникиКлиент.ИзменитьФИОФизическогоЛицаЗавершение(Результат, ДополнительныеПараметры);
    
КонецПроцедуры
2 Волшебник
 
модератор
06.07.20
08:02
Нужны права на интерактивные действия - просмотр, редактирование
3 acht
 
06.07.20
08:05
(1) На сервере нельзя получать форму
4 Filkkore
 
06.07.20
08:10
(2) Можно ли как-то заполучить эти права? Или может есть иной способ изменить ФИО Физ лица? У меня это изначально было реализованно просто путём записи в регистр ФИОФизическихЛиц, но в таком случае, к примеру, ФИО на печать никак не изменяется, потому вот ищу варианты...
5 Filkkore
 
06.07.20
08:11
(3) Да там не в этом дело, форму то в итоге на Клиенте получаю, в первой функции
6 acht
 
06.07.20
08:11
(5) Не звезди. У тебя внутри функции ПолучитьФизЛицо это написано. Русским языком.
7 Filkkore
 
06.07.20
08:31
(6) А ну да, сейчас так. Просто я уже с этими двумя функциями как только не игрался.

При таком раскладе:
&НаКлиенте
Функция ПолучитьФормуЭлемента(Сотрудник)
    
    Форма = ПолучитьФизЛицо(Сотрудник).ПолучитьФорму("ФормаЭлемента");
    
    Возврат Форма;
    
КонецФункции

&НаСервере
Функция ПолучитьФизЛицо(Сотрудник)
    
    ФизЛицо = Справочники.ФизическиеЛица.НайтиПоКоду(Сотрудник.Код);
    
    Возврат ФизЛицо;
    
КонецФункции


Метод объекта не обнаружен ПолучитьФорму

Страдаю от непонимания так скажем)
Может есть какие другие варианты?
8 craxx
 
06.07.20
08:32
(5) ОткрытьФорму("Справочник.Сотрудники.Форма.ФормаЭлемента",Новый Структура("Ключ",СсылкаНаСотрудника));
9 acht
 
06.07.20
08:36
(7) В синтакс-помощнике кое-что написано про возвращаемое значение метода НайтиПоКоду.
ТыкДрайвенДевелопмент - прикольная штука.
10 Filkkore
 
06.07.20
08:38
(8) Спасибо большое, продвижение есть.
11 Filkkore
 
06.07.20
08:42
(9) Да возможно я спешу со всем этим, от недостаточного понимания возможностей языка, из-за чего застреваю надолго по глупым причинам, думая: "Ну вот вроде же всё нормально сделал, а не работает". Буду стараться конечно избавить форум от своих тупых вопросов... Не знаю насколько получится)
12 Волшебник
 
модератор
06.07.20
08:44
(4) Надо записывать с правильной датой
13 Filkkore
 
06.07.20
08:54
(12) Правильная = текущая? Я записывал с датой предыдущей записи, ибо при изменении даты создаётся новая запись, а не перезаписывается старая.
При такой записи в регистр меняется ФИО только в ГруппаПолноеИмя в реквизитах Фамилия, Имя и Отчество, при этом Полное имя и Представление сотрудника в отчетах остаётся неизменным, пока не нажмёшь Изменить ФИО в форме элемента.
14 Волшебник
 
модератор
06.07.20
09:16
(13) Если ФИО меняется, то правильная дата указана в первичных документах из ЗАГСа
15 Волшебник
 
модератор
06.07.20
09:16
Кроме изменения ФИО в регистре, надо изменить наименование элемента справочника ФизическиеЛица и Сотрудники
16 Filkkore
 
07.07.20
10:00
Сделал в итоге так:

Процедура Восстановить()
    
    Для Каждого Стр Из Объект.ФИО Цикл
        
        Если Стр["Выбор"] = Истина Тогда
            
             ИзменитьФИО(Стр["ФизическоеЛицо"], Стр["Фамилия"], Стр["Имя"], Стр["Отчество"], Стр["Период"]);
             ИзменитьФИО2(Стр["ФизическоеЛицо"],Стр["Фамилия"]+" "+Стр["Имя"]+" "+Стр["Отчество"]);

         КонецЕсли;
                  
    КонецЦикла;
    
    ОбновлениеФИО();
    
КонецПроцедуры


&НаСервере
Процедура ИзменитьФИО2(Сотрудник,ФИО)
    
    ФизЛицо = Справочники.ФизическиеЛица.НайтиПоКоду(Сотрудник.Код).ПолучитьОбъект();
    ФизЛицо.Наименование = ФИО;
    ФизЛицо.ФИО = ФИО;
    ФизЛицо.Записать();
    
КонецПроцедуры



&НаСервере
Процедура ИзменитьФИО(Сотрудник, Фамилия, Имя, Отчество, Период)
    
    ОбъектСотрудник = Сотрудник;
    МенеджерЗаписи = РегистрыСведений.ФИОФизическихЛиц.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.ФизическоеЛицо = Справочники.ФизическиеЛица.ПустаяСсылка();
    МенеджерЗаписи.ФизическоеЛицо = ОбъектСотрудник;
    МенеджерЗаписи.Имя = Имя;
    МенеджерЗаписи.Фамилия = Фамилия;
    МенеджерЗаписи.Отчество = Отчество;
    МенеджерЗаписи.Период = Период;
    МенеджерЗаписи.Записать();
    
КонецПроцедуры


Процедура ОбновлениеФИО()
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ФИОФизическихЛиц.Период КАК Период,
        |    ФИОФизическихЛиц.Фамилия КАК Фамилия,
        |    ФИОФизическихЛиц.Имя КАК Имя,
        |    ФИОФизическихЛиц.Отчество КАК Отчество,
        |    ФИОФизическихЛиц.ФизическоеЛицо КАК ФизическоеЛицо,
        |    Сотрудники.ФизическоеЛицо КАК ФизическоеЛицо1
        |ИЗ
        |    РегистрСведений.ФИОФизическихЛиц КАК ФИОФизическихЛиц
        |        ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
        |        ПО ФИОФизическихЛиц.ФизическоеЛицо.Ссылка = Сотрудники.ФизическоеЛицо
        |
        |УПОРЯДОЧИТЬ ПО
        |    Период УБЫВ";
    
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    Объект.ФИО.Загрузить(РезультатЗапроса);
    
КонецПроцедуры


Всем спасибо за помощь