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