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