Добрый день!
В этой статье расскажу момент как бороться с ситуацией, когда вроде-бы как справочники перенесли из УТ 10.3 в УТ 11.5, знаем что контрагент есть в базе и в справочнике партнеры и в справочнике контрагенты, а через список "Клиенты", раздела "Продажи", найти не можем контрагента.
Пример контрагент демо базы "1С-СОФТ ООО" (ИНН 7730643014)
Поиск в справочнике "Контрагенты"
Тут, что по ИНН, что по наименованию, контрагент находится без проблем
Но стоит перейти в список "Клиенты"
То здесь ни по ИНН, ни по наименованию, клиент не находится.
Сразу озвучу причину
Отсутствие необходимой записи в регистре сведений "Иерархия партнеров"
Варианты решений подобной задачи:
1. Самое простое, зайти в карточку "проблемного" партнера и закрыть карточку через кнопку "Записать и закрыть"
В момент записи данного контрагента, как раз производится создание той саой записи в регистре сведений "Иерархия партнеров"
2. Если таких моментов много в вашей базе, то, нужна обработка которая отберет всех партнеров у которых нет записей в регистре "Иерархия партнеров" и отрабjтает код по каждому подобному партнеру, создавая тем самым запись в регистре
Этот вариант как программно сделать запись для одного партнера.
&НаСервере
Процедура ЗаполнитьИерархиюПоВыбрКонтрагенту()
Если НашПартнер.Пустая() Тогда Возврат; КонецЕсли;
МассивПартнеров = Новый Массив;
МассивПартнеров.Добавить(НашПартнер);
ПартнерыИКонтрагенты.ВыполнитьЗаписьИерархияПартнеров( МассивПартнеров);
КонецПроцедуры
Этот вариант когда мы отбираем всех подобных партнеров без записи в регистре "Иерархия партнеров" и обрабатываем их.
P.S.: Но с этим вариантом нужно , быть по аккуратнее, т.к. выборка может быть приличной, в одном из моих случаев 65 тыс. позиций :).
&НаСервере
Процедура Заполнить()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Партнеры.Ссылка КАК Ссылка
|ИЗ
| Справочник.Партнеры КАК Партнеры
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИерархияПартнеров КАК ИерархияПартнеров
| ПО Партнеры.Ссылка = ИерархияПартнеров.Партнер
|ГДЕ
| ИерархияПартнеров.Партнер ЕСТЬ NULL";
МассивПартнеров = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(0);
ПартнерыИКонтрагенты.ВыполнитьЗаписьИерархияПартнеров( МассивПартнеров);
КонецПроцедуры
Кому нужно обработка здесь. Но сразу предупреждаю, что предварительно всё что скачиваете из сети интернет пробуйте на копии базы
3. Сделать обработку которая отберет всех партнеров у которых нет записей в регистре "Иерархия партнеров" и произведёт процедуру записи партнера
На этом у меня всё!