Две записи в непериодическом регистре сведений

1. ilialin 04.02.19 16:19 Сейчас в теме
Платформа: 1С:Предприятие 8.3 (8.3.12.1790)
Конфигурация: 1С:Комплексная автоматизация 2 (2.4.6.189)
Работает в клиент-серверном варианте, сервер PostgreSQL 9.6.7 (pgsql-9.6.7-1.1c-x64).

При создании документа "Прием на работу" получаем сообщение об ошибке:

Запись не верна! Набор записей, принадлежащий менеджеру записи должен содержать ровно 1 запись.

Ошибка возникает при открытии формы документа, сам документ окольными путями (например, через обработку редактирование объекта базы данных из комплекта Инструменты разработчика) создать можно.
Отладчиком выяснили, что проблема в регистре сведений НастройкиШтатногоРасписания
в котором почему-то 2 записи вместо одной (регистр непериодический без регистратора).
Как такое могло произойти, и самое главное - что теперь делать?
Пробовали открыть таблицу в pgAdmin III - таблица открывается, но редактировать не дает - пишет, что нет первичного ключа (его действительно не должно быть в таблице этого регистра, в норме там одна запись, чей первичный ключ образуется совокупностью полей).
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. sergathome 4 04.02.19 16:30 Сейчас в теме
Тестирование и исправление должно спасти смертельно раненого кота. Какую оно запись грохнет из двух - одному аллаху известно. Может и обе.
3. dim_1c 10.02.19 16:10 Сейчас в теме
Удалить эти две записи через набор записей и добавить одну.
4. user884894 06.12.19 11:50 Сейчас в теме
Не могу удалить эти две записи из регистра.
При программной очистке регистра - опять таже ошибка.

Очищаю регистр через
  НаборЗаписей = РегистрыСведений.НастройкиУчетаВремени.СоздатьНаборЗаписей();
		//НаборЗаписей.Прочитать();
		//НаборЗаписей.Очистить();
		НаборЗаписей.Записать();

Все комбинации перепробовала.

Платформа 8.3.15.1700
База серверная КА 2.4.10.75
5. oleg-x 22 06.12.19 12:27 Сейчас в теме
(4) Так пробовали?
НаборЗаписей = РегистрыСведений.НастройкиУчетаВремени.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();
НаборЗаписей.Записать();


И что за ошибку пишет?
6. oleg-x 22 06.12.19 12:28 Сейчас в теме
Этот код должен очистить полностью регистр сведений.
7. user884894 06.12.19 12:29 Сейчас в теме
Пробовала . Пишет:

Запись не верна! Набор записей, принадлежащий менеджеру записи должен содержать ровно 1 запись.
8. oleg-x 22 06.12.19 12:37 Сейчас в теме
(7) Тогда добавьте отбор
НаборЗаписей = РегистрыСведений.НастройкиУчетаВремени.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.НужныйРеквизитИзмерения.Установить(ЗначениеИзмерения);
//Возможно отбор по нескольким измерениям, суть таков, что бы была только одна запись.
НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();
НаборЗаписей.Записать();
9. user884894 06.12.19 12:38 Сейчас в теме
(8) В регистре 2 абсолютно одинаковые записи. Из-за этого и очищать пробую программно.
10. user884894 06.12.19 12:39 Сейчас в теме
Около 10 регистров сведений оказались задвоены. 9 из 10 очистились этим кодом, а 1 никак не хочет.
11. oleg-x 22 06.12.19 12:41 Сейчас в теме
Там программная проверка стоит.
Два варианта, закомментировать программную проверку.
Или так:
НаборЗаписей = РегистрыСведений.НастройкиУчетаВремени.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
НаборЗаписей.Удалить(0); //очищаем не полностью, а только одну запись.
НаборЗаписей.Записать();
12. user884894 06.12.19 12:42 Сейчас в теме
13. vkozak 26.03.20 13:02 Сейчас в теме
Такая же ошибка, не могу отладчиком вычислить какой из регистров глючит. Как у вас это получилось?
14. gouranga 2 03.04.24 22:00 Сейчас в теме
После распроведения кадровых документов в ЗУП появилась эта ошибка.
Обошел все регистры, где нет измерений. Если там 2 записи, то это явно дубли, и одну запись можно удалить.
	
Для Каждого Рег Из Метаданные.РегистрыСведений Цикл		
		Если Рег.Измерения.Количество() = 0 Тогда			
			НаборЗаписей = РегистрыСведений[Рег.Имя].СоздатьНаборЗаписей();	
			НаборЗаписей.Прочитать(); 			
			Если НаборЗаписей.Количество() = 2 Тогда
				НаборЗаписей.Удалить(НаборЗаписей[0]); 
				НаборЗаписей.ОбменДанными.Загрузка = Истина;
				НаборЗаписей.Записать(Истина); 
			КонецЕсли;			
		КонецЕсли;
	КонецЦикла;	
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот