Изменение не уникальных кодов справочников

01.12.18

Задачи пользователя - Корректировка данных

Обработка предназначена для поиска не уникальных кодов справочников в базах на платформе 1С 8.3. Может быть подключена как внешняя дополнительная обработка - работает с БСП 2.3.2.43. Работает в управляемом приложении, на управляемых формах.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
ChangeCatalogesCodes
.epf 19,63Kb ver:1.1
33 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Иногда, вследствие обменов или неосторожных действий, возникают проблемы не уникальности кодов групп или элементов справочников. При обновлении конфигурации выводятся предупреждения "Код справочника стал неуникальным:...". 

Эта обработка предназначена для поиска и замены таких не уникальных (дублирующихся) кодов справочников уникальными. Обработка выполняет поиск дублирующихся кодов только для тех справочников, у которых установлен признак контроля уникальности кодов. При этом учитывается вариант серий кодов - если серии кодов должны быть уникальны во всём справочнике, то и дубли будут искаться во всём справочнике, если серии должны быть уникальны в пределах подчинения - то дубли ищутся в пределах подчинения родителю, если серии должны быть уникальны в пределах подчинения владельцу - то дубли ищутся в пределах владельцев.

Обработка заменяет дублирующиеся коды свободными кодами, беря их "снизу". То есть, если для справочника заняты коды "001", "004", "005" - то дублирующиеся коды будут заменены на "002", "003", "006" и так далее. В этом отличие обработки от применения метода "УстановитьНовыйКод()", который устанавливает код, следующий за максимальным - то есть берёт код "сверху".

Внимание!

Перед применением обработки рекомендуется сделать резервную копию базы!

Обработка не учитывает прикладную логику используемого решения - она просто ищет дубли кодов по описанным выше правилам и заменяет их на уникальные. Прежде, чем установить галочку "Исправлять коды", убедитесь, что в итоге данные будут согласованы и система будет работать "как надо".

Для строковых кодов обработка не учитывает возможные префиксы - коды ищутся в виде "[0-9][0-9]....[0-9]", соответственно длине кода справочника.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Корректировка данных Системный администратор Программист 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Незаменимая обработка для сопровождения конфигураций: ERP, УТ, КА. Позволяет вычистить многие ошибки в ключах аналитики, в ключевых справочниках конфигурации.

3600 руб.

10.02.2017    115406    694    176    

734

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    38707    114    152    

82

Взаиморасчеты Корректировка данных Бухгалтер Пользователь 1С v8.3 1C:Бухгалтерия Бухгалтерский учет Управленческий учет Платные (руб)

Вы наконец разобрались с закрытием месяцев и пора начать контролировать сроки оплаты поставщикам и задолженности клиентов, но в базе расчеты не идут из-за развернутого сальдо? Не беда, есть решение!

12000 руб.

02.11.2020    8263    6    3    

9

Закрытие периода Корректировка данных Системный администратор Бухгалтер Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Налоговый учет НДС Платные (руб)

Обработка для диагностики и устранения ошибочных состояний ключей аналитики при использовании новой методики раздельного учета НДС в "Бухгалтерии предприятия ред. 3.0"

6000 руб.

27.01.2015    58584    31    14    

40

Банковские операции Корректировка данных Бухгалтер Пользователь 1С v8.3 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Платные (руб)

Корректировка банковской выписки после загрузки из клиент-банка (статья, корреспонденция, вид операции, валюта и зарплата)

4800 руб.

25.12.2023    1976    4    0    

4

Розничная торговля Кассовые операции Корректировка данных Бухгалтер 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Бухгалтерский учет Управленческий учет Платные (руб)

Создание, редактирование и удаление документов "Выемка ДС из Кассы ККМ" в конфигурации 1С:Розница 2. Групповая обработка Выемок. Редактирование регистра накопления "Денежные средства в кассе ККМ".

2000 руб.

20.09.2017    42021    174    24    

27

Печатные формы Корректировка данных Учет документов 1С v8.3 1C:Бухгалтерия 1С:Управление нашей фирмой 3.0

Данная обработка позволяет работать со справками об оплате медицинских услуг в любой конфигурации 1С 8.3 Решение выполнено в виде внешней обработки, поэтому будет работать так же на базовых версиях конфигураций 1С, где нет возможности добавить расширение.

3600 руб.

28.01.2025    1017    0    0    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. razmochaev 15.11.18 16:39 Сейчас в теме
Добрый день.

На платформе 8.3.12.1595 выдает следующую ошибку:
{ВнешняяОбработка.ИзменениеНеУникальныхКодовСправочников83.Форма.Форма.Форма(297)}: Ошибка при вызове метода контекста (Выполнить)
ДублиПоРодителямВладельцам = ЗапросДублейПоРодителямВладельцам.Выполнить().Выгрузить();
по причине:
{(17, 24)}: Поле не найдено "Справочник.Родитель"
КОЛИЧЕСТВО(Справочник.<<?>>Родитель) > 1
2. kirabr 13 18.11.18 11:12 Сейчас в теме
(1) Добрый день! Мне не удалось воспроизвести эту ошибку на указанной платформе, надо на Ваших данных смотреть. Если можете отправить мне Вашу базу, договоримся о способе передачи, посмотрю в чём проблема. Если не можете (база очень большая, опасаетесь передачи конфиденциальных данных и т.п.) - давайте я к вам подключусь по TeamViewer.
3. kirabr 13 01.12.18 10:39 Сейчас в теме
Информация для всех, кто скачал обработку до 01.12.2018.
1 декабря 2018 я выложил новую версию этой обработки и скачавшим прежнюю версию готов предоставить новую версию бесплатно. Для подтверждения скачивания прежней версии будет достаточно скриншота письма о скачивании, либо Вашего ника на Инфостарте.

В целом в ней улучшена внутренняя логика - исправление дублей учитывает варианты нумерации: во всём справочнике, в пределах подчинения или в пределах подчинения владельцу. В двух последних вариантах свободные коды генерируются с учётом подчинения, таким образом существенно увеличивается количество этих свободных кодов. Устранён источник проблемы, указанной в комментарии (1). А также в интерфейсе добавилась колонка "Группа или владелец", показывающая при необходимости группу или владельца, в рамках которого есть дубли кодов; в интерфейсе улучшена логика проставления галок "Исправлять коды" - автоматически проставляются галки на верхних уровнях группировок при установке всех галок на вложенных уровнях.
Прикрепленные файлы:
4. Xershi 1540 21.02.19 10:46 Сейчас в теме
Выпишите
Иногда, вследствие обменов

А затем
Для строковых кодов обработка не учитывает возможные префиксы

Какой в этом смысл?
Код элемента при обмене всегда формируется с префиксами:
ПрефиксБазы + ПрефиксОрганизации + "-" + ЧислоКода
В таком варианте работы алгоритм криво отработает?
5. kirabr 13 24.02.19 13:10 Сейчас в теме
(4) Здравствуйте!
Не всегда код обмена формируется по указанным правилам - не все правила обмена написаны одинаково. Особенно нетиповые правила. Где-то может встретится хардкод, где-то просто неучтённые нюансы. Что касается префиксов, то именно для справочников зачастую префикс организации вообще не имеет смысла, если не используется разделение данных по организациям.
6. Xershi 1540 24.02.19 13:49 Сейчас в теме
(5) как это не имеет: видно, кто и когда создавал элемент. Без анализа ЖР. Поэтому в типовых это актуально, а не в типовых и без этого алгоритма все поправят.
7. kirabr 13 04.03.19 12:40 Сейчас в теме
(6) Скажите пожалуйста, каким образом по номеру элемента справочника можно без анализа ЖР понять кто и когда его создавал?
8. Xershi 1540 04.03.19 14:00 Сейчас в теме
(7) точную дату либо ЖР либо через ГУИД. А косвенно, из какой организации пользователь и по номеру как давно элемент был создан. Если речь идет о элементах которые создает пользователь ручками.
9. Mord_ent 4 26.02.24 14:49 Сейчас в теме
Добрый день.

Ошибка:
Ошибка при вызове метода контекста (Выполнить)
{ВнешняяОбработка.ИзменениеНеУникальныхКодовСправочников83.Форма.Форма.Форма(468)}:Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(0);
{ВнешняяОбработка.ИзменениеНеУникальныхКодовСправочников83.Форма.Форма.Форма(280)}:СправочникиСНеуникальнымиКодами = СправочникиСНеуникальнымиКодами();
{ВнешняяОбработка.ИзменениеНеУникальныхКодовСправочников83.Форма.Форма.Форма(7)}:ПолучитьДеревоНеУникальныхКодов();

[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
{(2742, 10)}: Поле не найдено "Спр.Владелец"
ПО Спр.<<?>>Владелец = Спр1.Владелец


Файл приложен.
Прикрепленные файлы:
Ошибка_20240226144626.zip
10. kirabr 13 26.02.24 22:18 Сейчас в теме
(9) Добрый день!
Нужен доступ к вашей базе, чтобы воспроизвести и отладить ошибку.
Mord_ent; +1 Ответить
11. Mord_ent 4 27.02.24 11:42 Сейчас в теме
(10) Добрый день. Еще раз.
Разобрался. Стоит "надстройка" от БитФинанс. Видимо, с их справочниками какая-то беда была.
добавил условие в начало цикла в функции "СправочникиСНеуникальнымиКодами"
Если СтрНайти(мтдСправочник.Имя, "бит_") > 0 Тогда
			Продолжить;
		КонецЕсли;

теперь все ок.
спасибо.
12. kirabr 13 27.02.24 17:49 Сейчас в теме
(11) Интересно, что же там за "надстройка", что штатное поле "Владелец" прибили?
И надо понимать, что с таким решением вы пропускаете проверку справочников от БИТ_.
13. Mord_ent 4 28.02.24 09:33 Сейчас в теме
(12) без понятия) бухгалтерия использует.
я пробовал сперва отсекать связь по "владельцу". обработка отрабатывала и выводила бит-овские справочники с непонятными полями. как и что они там собрали - не было желания разбираться, поэтому просто отрезал их.
обработка нужна, в первую очередь, чтобы не вылезали предупреждения про "неуникальный код" во время обновления конфы)
14. Mord_ent 4 28.02.24 10:15 Сейчас в теме
(12) у меня вопрос возник.
при "исправлении кодов" из обработки как именно назначается код? я обратил внимание (на тестовой базе), что берется числовой (видимо ближайший свободный) без префикса.
не получится ли, что после переназначения Новые добавленные, например, банковские счета начнут задваиваться с "переназначенными"?

Спасибо.
15. kirabr 13 29.02.24 08:07 Сейчас в теме
(14)
как именно назначается код?
Обработка заменяет дублирующиеся коды свободными кодами, беря их "снизу". То есть, если для справочника заняты коды "001", "004", "005" - то дублирующиеся коды будут заменены на "002", "003", "006" и так далее.

не получится ли, что после переназначения Новые добавленные, например, банковские счета начнут задваиваться с "переназначенными"?
Зависит от того, какой логике назначаются новые коды. Вероятнее всего штатным образом - берётся максимальный из имеющихся кодов и назначается следющий за ним. В этом случае новых дублей не возникнет. Если логика назначения кодов новым элементам иная, то надо понимать её алгоритм и исходя из этого понимания делать вывод о возможности появления новых дублей по кодам.
Для отправки сообщения требуется регистрация/авторизация