0. rebuzx 146 17.03.20 09:58 Сейчас в теме

Ошибка при вызове метода контекста (Записать): Значение поля "Номер" не уникально

Если сбилась нумерация документов и при записи нового выдается ошибка (Ошибка при вызове метода контекста (Записать): Значение поля "Номер" не уникально), используя эту обработку можно восстановить нумерацию.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Xershi 957 25.03.20 15:54 Сейчас в теме
Есть ещё реестр документов в УТ например.
Из-за него обработка может не помочь.
2. Tarlich 86 25.03.20 17:57 Сейчас в теме
А что с префиксами (префиксами по организации , риб и т.д)? за какой период будет изменение ?
Автор ! предлагаю глянуть поиском сколько тут аналогов ....
8.3.17.1037 - на других ни как ?
для какой конфигурации? (как пропустила модерация)
4. rebuzx 146 25.03.20 19:46 Сейчас в теме
(2)
8.3.17.1037 - на других ни как ?
для какой конфигурации? (как пропустила модерация)

На любых которые поддерживают функцию ОбновитьНумерациюОбъектов().
И именно "модерация" просила указать конкретную платформу на которой проверялась обработка. )
3. -vito- 451 25.03.20 18:38 Сейчас в теме
Коллеги, всё что делает метод ОбновитьНумерациюОбъектов() - это сбрасывает "заготовленные" номера в сервисе нумерации кластера.
То есть никаких манипуляций с данными не происходит. Ни конфигурация, ни версия платформы, ни какие-либо реестры для данного метода не имеют ровным счетом никакого значения.

Чаще всего ошибка "Значение поля "Номер" не уникально" возникает, когда в тестовую базу залили копию из рабочей, средствами СУБД, а не загрузкой через dt-файл. Или после восстановления из бэкапа, тоже средствами СУБД.

По большому счету, выбор типа объекта для "исправления" нумерации тоже не имеет значения, т.к. по сути - это просто закешированные номера. Никто ведь не чистит кеш базы выборочно. Здесь тоже достаточно просто вызвать метод ОбновитьНумерациюОбъектов() без параметров. Просто номера для новых объектов будут сгенерированы заново когда потребуются.

Вообще, желательно после загрузки базы из бэкапа СУБД всегда выполнять такой метод, не дожидаясь ошибки.
user1351147; Batman; +2 Ответить
5. rebuzx 146 25.03.20 19:49 Сейчас в теме
(3)
Круто. Спасибо!
Собственно весь код:
&НаКлиенте
Процедура ВыполнитьОбновление(Команда)
	Для Каждого СтрокаСписка ИЗ СписокМетаданных Цикл
		Если СтрокаСписка.Пометка Тогда	
			ВыполнитьОбновлениеНаСервере(ТипМетаданных, СтрокаСписка.Значение);
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ВыполнитьОбновлениеНаСервере(ТипМетаданны, ИмяМетаданных)
	ОбновитьНумерациюОбъектов(Метаданные[ТипМетаданны][ИмяМетаданных]); // пример параметра Метаданные.Документы.ПриходныйКассовыйОрдер
КонецПроцедуры
Показать
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Специалист 1 категории (Методист-аналитик 1С)
Фрязино
зарплата от 100 000 руб.
Полный день

Главный архитектор 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С
Новороссийск
зарплата от 70 000 руб.
Полный день

Ведущий программист 1С
Санкт-Петербург
зарплата от 130 000 руб.
Полный день

Специалист 1 категории (Программист 1С ФЗД)
Фрязино
зарплата от 110 000 руб.
Полный день