Некоторые картинки не загружаются из РФ и РК, используйте VPN.

среда, 27 мая 2020 г.

1СОшибка Нет юр адресов у контрагентов


Обратились с проблемой: нет юр адресов у контрагентов. Кнопки "Заполнить" также нету. При нажатии на кнопку "История" выходит ошибка:

Недопустимое значение параметра (параметр номер '2')
{ОбщаяФорма.РедактированиеИсторииКонтактнойИнформации.Форма(23)}: ЗаполнитьЗначенияСвойств(СтрокаКИ, Параметры.ТекущийАдрес);
{ОбщийМодуль.УправлениеКонтактнойИнформациейКлиентБП.Модуль(72)}: ОткрытьФорму("ОбщаяФорма.РедактированиеИсторииКонтактнойИнформации", ПараметрыФормы, Форма);
{Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(759)}: ПредопределенноеЗначение("Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента"));

по причине:
Недопустимое значение параметра (параметр номер '2')

Версия БП 3.0.77.95
Сначала проверил по классике:
  1. Очитить кэш
  2. Перезагрузить базу в новое расположение
  3. Обновить платформу
  4. Проверить при помощи Тестирование и исправление
  5. Проверить базу при помощи chdbfl.exe
Решил проверить, а какие данные вообще есть в базе. В этой конфигурации контактная информация хранится в элементе справочника Контрагенты, а не отдельно. Кидаем запрос в консоль запросов:

ВЫБРАТЬ ПЕРВЫЕ 100
	КонтрагентыКонтактнаяИнформация.Ссылка КАК Ссылка,
	КонтрагентыКонтактнаяИнформация.НомерСтроки КАК НомерСтроки,
	КонтрагентыКонтактнаяИнформация.Тип КАК Тип,
	КонтрагентыКонтактнаяИнформация.Вид КАК Вид,
	КонтрагентыКонтактнаяИнформация.Представление КАК Представление,
	КонтрагентыКонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей,
	КонтрагентыКонтактнаяИнформация.Страна КАК Страна,
	КонтрагентыКонтактнаяИнформация.Регион КАК Регион,
	КонтрагентыКонтактнаяИнформация.Город КАК Город,
	КонтрагентыКонтактнаяИнформация.АдресЭП КАК АдресЭП,
	КонтрагентыКонтактнаяИнформация.ДоменноеИмяСервера КАК ДоменноеИмяСервера,
	КонтрагентыКонтактнаяИнформация.НомерТелефона КАК НомерТелефона,
	КонтрагентыКонтактнаяИнформация.НомерТелефонаБезКодов КАК НомерТелефонаБезКодов,
	КонтрагентыКонтактнаяИнформация.ВидДляСписка КАК ВидДляСписка,
	КонтрагентыКонтактнаяИнформация.Значение КАК Значение
ИЗ
	Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
Увидел не много, но в списке не оказалось ни одного юр адреса, а они важнее фактических

Решил глянуть в справочник "Виды контактной информации", а там половина помечена на удаление. Отмечу, что почти все элементы являются предопределенными и в ручном режиме их нельзя пометить на удаление и удалить. Соответственно единственное решение - снять поментки программно. Создаем обработку, кидаем кнопку, команда на Клиент+Сервер, содержимое:

Запрос = Новый Запрос;
Запрос.Текст = 
	"ВЫБРАТЬ
	|	ВидыКонтактнойИнформации.Ссылка КАК Ссылка
	|ИЗ
	|	Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
	|ГДЕ
	|	ВидыКонтактнойИнформации.Предопределенный = ИСТИНА
	|	И ВидыКонтактнойИнформации.ПометкаУдаления = ИСТИНА";

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

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

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	Сообщить(ВыборкаДетальныеЗаписи.Ссылка);
	НашЭлемент=ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
	НашЭлемент.ПометкаУдаления=Ложь;
	Попытка
		НашЭлемент.Записать();
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
КонецЦикла;
Все. Для успокоения себя, я еще написал вторую команду, проверить, а нет ли еще помеченных на удаление предопределенных элементов?


МассивЭлементов=Метаданные.Справочники;
НайденыДоки=Ложь;

Для каждого СтрМас Из МассивЭлементов Цикл 
	СпрТип=СтрМас.Имя;
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	"+СпрТип+".Ссылка
	|ИЗ
	|	Справочник."+СпрТип+" КАК "+СпрТип+"
	|ГДЕ
	|	"+СпрТип+".Предопределенный = ИСТИНА
	|	И "+СпрТип+".ПометкаУдаления = ИСТИНА";
	РезультатЗапроса = Запрос.Выполнить();

	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Сообщить(ВыборкаДетальныеЗаписи.Ссылка);
		//НашЭлемент=ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
		//НашЭлемент.ПометкаУдаления=Ложь;
		//Попытка
		//	НашЭлемент.Записать();
		//Исключение
		//	Сообщить(ОписаниеОшибки());
		//КонецПопытки;
	КонецЦикла;
КонецЦикла;


Комментариев нет:

Отправить комментарий