В начало

Исправление ФИО контрагентов

 

            Есть справочник «нсиУниверсальныйФункциональныйСправочник», нужно исправить ФИО контрагентов с видом контрагента «Физическое лицо».

            Имена реквизитов нужно смотреть в справочнике «нсиВидыСправочников», данные контрагентов находятся в регистре сведений «нсиХранилищеСтрока».

 

Листинг. Модуль формы внешней обработки

 

&НаСервере

Функция ОтобратьНаСервере()

            Запрос = Новый Запрос;

            Запрос.Текст =

                        "ВЫБРАТЬ

                        |           спрУФС.Ссылка КАК Ссылка,

                        |           спрУФС.Наименование КАК Наименование,

                        |           спрУФС.Владелец КАК ВидСправочника,

                        |           спрУФС.Идентификатор КАК ИдЭлемента,

                        |           тчРеквизиты.Идентификатор КАК ИдРеквизита,

                        |           тчРеквизиты.Наименование КАК РеквНаименование,

                        |           рсДанные.Значение КАК Значение

                        |ИЗ

                        |           РегистрСведений.нсиХранилищеСтрока КАК рсДанные

                        |                       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.нсиУниверсальныйФункциональныйСправочник КАК спрУФС

                        |                       ПО рсДанные.ВидСправочника = спрУФС.Владелец

                        |                                   И рсДанные.Элемент = спрУФС.Идентификатор

                        |                       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.нсиВидыСправочников.Реквизиты КАК тчРеквизиты

                        |                       ПО рсДанные.ВидСправочника = тчРеквизиты.Ссылка

                        |                                   И рсДанные.Реквизит = тчРеквизиты.Идентификатор

                        |ГДЕ

                        |           спрУФС.Владелец.Наименование = ""Контрагенты""

                        |           И тчРеквизиты.Наименование = ""Вид контрагента""

                        |           И рсДанные.Значение = ""ФизическоеЛицо""";

           

            Результат = Запрос.Выполнить();

            Выборка = Результат.Выбрать();

                       

            СЗ = Новый СписокЗначений;

           

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

                        Если Выборка.Наименование <> ТРег(Выборка.Наименование) Тогда

                                   СЗ.Добавить(Выборка.Ссылка, Выборка.Наименование, Ложь);

                        КонецЕсли;   

            КонецЦикла;

           

            Возврат СЗ;

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

 

&НаКлиенте

Процедура Отобрать(Команда) 

 

            ЭтаФорма.СЗ = ОтобратьНаСервере();

           

КонецПроцедуры

 

&НаСервере

Процедура ИсправитьРеквизитВРегистре(Знач СсылкаНаВидСправочника, Знач УидЭлемента, Знач УидРеквизита)

           

            НЗ = РегистрыСведений.нсиХранилищеСтрока.СоздатьНаборЗаписей();

            НЗ.Отбор.ВидСправочника.Установить(СсылкаНаВидСправочника);

            НЗ.Отбор.Элемент.Установить(УидЭлемента);

            НЗ.Отбор.Реквизит.Установить(УидРеквизита);

            НЗ.Прочитать();

           

            Для Каждого Запись из НЗ Цикл

                        Запись.Значение = Трег(Запись.Значение);

            КонецЦикла;                            

           

            НЗ.Записать(Истина);         

           

КонецПроцедуры    

 

&НаСервере

Процедура ИсправитьНаСервере()

            //8167e13c-66fd-4b24-802d-f11fcffb2d3c - Ссылка на элемент справочника

            //Эл.Значение.Владелец.Реквизиты

            //8c54aa34-50ab-4b66-93b0-13de677f2b92 - Фамилия Контрагентов в РС [нсиХранилищеСтрока]

            //1194cd67-ba53-456d-8616-f81feda01c6b - Имя Контрагентов в РС

            //f1d61c8a-ad8d-4ae0-81b7-73cbdb0901b6 - Отчество Контрагентов в РС

            //ecd4d5f9-5fa4-4b88-88cb-00840ff3010d - ФИО Контрагентов в РС

            //fdc8f1b8-ec65-478f-a1e5-a5c1e36276e0 - Полное наименование в РС

            Для Каждого Эл Из СЗ Цикл

                        Если Эл.Пометка = Истина Тогда       

                                   Если ЗначениеЗаполнено(Эл.Значение) Тогда

                                               Об = Эл.Значение.ПолучитьОбъект();      

                                               Об.Наименование = ТРег(Об.Наименование);

                                               Об.ПолноеНаименование = ТРег(Об.ПолноеНаименование);

                                               Об.ОбменДанными.Загрузка = Истина;

                                               Об.Записать();

                                              

                                               //Полное наименование в регистре          

                                               ИсправитьРеквизитВРегистре(Эл.Значение.Владелец,

                                                           Эл.Значение.Идентификатор,

                                                           Новый УникальныйИдентификатор("fdc8f1b8-ec65-478f-a1e5-a5c1e36276e0"));                                          

 

                                               //ФИО в регистре

                                               ИсправитьРеквизитВРегистре(Эл.Значение.Владелец,

                                                           Эл.Значение.Идентификатор,

                                                           Новый УникальныйИдентификатор("ecd4d5f9-5fa4-4b88-88cb-00840ff3010d"));

                                              

                                               //Фамилия в регистре

                                               ИсправитьРеквизитВРегистре(Эл.Значение.Владелец,

                                                           Эл.Значение.Идентификатор,

                                                           Новый УникальныйИдентификатор("8c54aa34-50ab-4b66-93b0-13de677f2b92"));

                                                          

                                               //Имя в регистре       

                                               ИсправитьРеквизитВРегистре(Эл.Значение.Владелец,

                                                           Эл.Значение.Идентификатор,

                                                           Новый УникальныйИдентификатор("1194cd67-ba53-456d-8616-f81feda01c6b"));

                                                          

                                               //Отчество в регистре         

                                               ИсправитьРеквизитВРегистре(Эл.Значение.Владелец,

                                                           Эл.Значение.Идентификатор,

                                                           Новый УникальныйИдентификатор("f1d61c8a-ad8d-4ae0-81b7-73cbdb0901b6"));

                                                          

                                   КонецЕсли;

                        КонецЕсли;   

            КонецЦикла;

                       

            ЭтаФорма.СЗ = ОтобратьНаСервере();

КонецПроцедуры

 

&НаКлиенте

Процедура Исправить(Команда)

            ИсправитьНаСервере();

КонецПроцедуры