Суть проверки сводится к эмулированию нажатия кнопки "Проверить заполнение" на форме ввода адреса сотрудника в цикле по массиву ссылок на сотрудников. Работает тупо и медленно. Благо, пользоваться нужно не часто. Человек 200 минут за 10 должна проверить.
Основная идея работы обработки в коде:
ФормаСотрудника=получитьформу("Справочник.Сотрудники.Форма.ФормаЭлемента",новый Структура("Ключ",текСотрудник)); // получаем форму спр.Сотрудники ЛичныеДанные с нужными параметрами ОписаниеДополнительнойФормы=СотрудникиКлиентСервер.ОписаниеДополнительнойФормы("Справочник.Сотрудники.Форма.ЛичныеДанные"); ПараметрыФормы = ПараметрыДополнительнойФормы(ОписаниеДополнительнойФормы, ФормаСотрудника); ФормаЛичныхДанных=ПолучитьФорму(ОписаниеДополнительнойФормы.ИмяФормы, ПараметрыФормы, ФормаСотрудника,истина); // нужно знать имя поля Адрес по прописки, кликая по которому, открываем форму ввода адреса ИмяПоляАдресПоПрописке=""; Для каждого эл из ФормаЛичныхДанных.Элементы цикл если типзнч(эл)<>тип("ПолеФормы") тогда продолжить КонецЕсли; если не лев(эл.Имя,24)="КонтактнаяИнформацияПоле" тогда продолжить КонецЕсли; если не типзнч(эл.Родитель)=тип("ГруппаФормы") тогда продолжить КонецЕсли; верхнийРодитель=эл.Родитель.Родитель; если не типзнч(верхнийРодитель)=тип("ГруппаФормы") тогда продолжить КонецЕсли; если верхнийРодитель.Заголовок="Адрес по прописке" тогда ИмяПоляАдресПоПрописке=эл.Имя; прервать; КонецЕсли; КонецЦикла; если ИмяПоляАдресПоПрописке="" тогда сообщить("Ошибка проверки "+тексотрудник+", не найдено поле адреса по прописке"); продолжить; КонецЕсли; // получаем форму ввода адреса МодульУправлениеКонтактнойИнформациейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); // процедура формы ЛичныеДанные НачалоВыбора несколько подкорректирована - добавлена ссылка на ФормаЛичныхДанных ФормаАдреса=НачалоВыбора(ФормаЛичныхДанных, Новый Структура("Имя",ИмяПоляАдресПоПрописке), , истина); ПредупреждатьОбОтсутствииОшибок=ложь; ТребуетсяОбновление=ложь; Контекст = КонтекстФормыКлиент(ФормаАдреса); СписокОшибок = СписокОшибокЗаполнения(Контекст, ПредупреждатьОбОтсутствииОшибок, ТребуетсяОбновление);