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

1. Iva_Irina_Iva 27.04.20 08:55 Сейчас в теме
Здравствуйте.
Работаем в ERP 2.4.7.107.
В какой-то момент появилась ошибка при открытии кадровых документах (Набор записей, принадлежащий менеджеру записи должен содержать ровно 1 запись). Нашла РС, в котором задублированы записи, это "НастройкиУчетаВремени". У регистра только ресурсы, измерений нет. Запросом к регистру вижу 2 одинаковые записи. При открытии самого регистра в режиме предприятия ошибка, вручную удалить не могу. Программно изменить или удалить одну запись не могу, та же ошибка. ТИИ не помогает.
Подскажите какие еще есть варианты убрать дубли?!
По теме из базы знаний
Найденные решения
14. davealone 166 27.04.20 10:13 Сейчас в теме
(12) Попробуйте набор записать в режиме обмена данными: НЗ.ОбменДанными.Загрузка = Истина;
Iva_Irina_Iva; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ImHunter 315 27.04.20 09:04 Сейчас в теме
(1) Программно перезаполнить - выгрузить в ТЗ, свернуть, очистить РС, заполнить заново из ТЗ.
Iva_Irina_Iva; +1 Ответить
3. Iva_Irina_Iva 27.04.20 09:32 Сейчас в теме
(2) СЧД = РегистрыСведений.НастройкиУчетаВремени.СоздатьНаборЗаписей();

СЧД.Загрузить(РезультатЗапроса);
СЧД.Записать(Истина);


РезультатЗапроса - ТЗ с 1 записью
так тоже не получается, та же ошибка
4. Iva_Irina_Iva 27.04.20 09:39 Сейчас в теме
5. nomad_irk 76 27.04.20 09:41 Сейчас в теме
(4)Если у регистра нет измерений, то работать с ним нужно только через МенеджерЗаписи.
Придется сформировать ТЗ, содержащую ВСЕ записи, которые должны в итоге быть в регистре и записать каждую запись.

Т.е. алгоритм такой:

1. Получаем ТЗ из регистра. Именно ТЗ, а не выборку.
2. Убиваем все записи в регистре.
3. Добавляем каждую запись в регистр из ТЗ в п.1
Iva_Irina_Iva; +1 Ответить
7. Iva_Irina_Iva 27.04.20 09:53 Сейчас в теме
(5) в пункте 2 выходит ошибка

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

	НД = РегистрыСведений.НастройкиУчетаВремени.СоздатьМенеджерЗаписи();
	НД.Записать();
Показать
8. nomad_irk 76 27.04.20 09:56 Сейчас в теме
(7)если ничего не путаю, регистр очищается с помощью объектной модели.

Выборка = РегистрыСведений.<ИмяРегистра>.Выбрать();
Пока Выборка.Следующий() Цикл
Выборка.Удалить();
КонецЦикла;
Iva_Irina_Iva; +1 Ответить
9. Iva_Irina_Iva 27.04.20 10:01 Сейчас в теме
(8) Метод объекта не обнаружен (Удалить)
13. nomad_irk 76 27.04.20 10:11 Сейчас в теме
(9)Побуйте вот так:

Вместо Выборка.Удалить();

Выборка.ПолучитьМенеджерЗаписи().Удалить();
16. Iva_Irina_Iva 27.04.20 10:15 Сейчас в теме
(13) Запись не верна! Набор записей, принадлежащий менеджеру записи должен содержать ровно 1 запись
{ВнешняяОбработка.ЧисткаРегистров.Форма.Форма.Форма(821)}: Выборка.ПолучитьМенеджерЗаписи().Удалить();
17. nomad_irk 76 27.04.20 10:17 Сейчас в теме
(16)База файловая? Если SQL, то как предложили в (15), по другому - никак, видимо.
Iva_Irina_Iva; +1 Ответить
10. ImHunter 315 27.04.20 10:05 Сейчас в теме
(1) (8) Да, объектной моделью. Но совсем не так.
Нужно создать НаборЗаписей без отборов и прочтения. И записать его.
Iva_Irina_Iva; +1 Ответить
11. nomad_irk 76 27.04.20 10:07 Сейчас в теме
(10)Нет, в том и дело. Если у РС нет измерений, то НЗ не будет работать, т.к. в НЗ содержатся две одинаковые записи.
Iva_Irina_Iva; +1 Ответить
12. Iva_Irina_Iva 27.04.20 10:08 Сейчас в теме
(10) НД = РегистрыСведений.НастройкиУчетаВремени.СоздатьНаборЗаписей();
НД.Записать();

так тоже не удаляет, та же ошибка
14. davealone 166 27.04.20 10:13 Сейчас в теме
(12) Попробуйте набор записать в режиме обмена данными: НЗ.ОбменДанными.Загрузка = Истина;
Iva_Irina_Iva; +1 Ответить
18. Iva_Irina_Iva 27.04.20 10:20 Сейчас в теме
(14)
НЗ.ОбменДанными.Загрузка = Истина;


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

вот так получилось удалить. Спасибо большое.
20. nomad_irk 76 27.04.20 10:21 Сейчас в теме
15. ImHunter 315 27.04.20 10:14 Сейчас в теме
(12) Ну значит перейти на темную сторону и удалить на sql-сервере)
Iva_Irina_Iva; +1 Ответить
21. ImHunter 315 27.04.20 10:29 Сейчас в теме
(1) (20) Видимо, еще какие-то подписки химичили
Iva_Irina_Iva; +1 Ответить
6. Iva_Irina_Iva 27.04.20 09:48 Сейчас в теме
В регистре 2 записи всего. Нужно оставить 1, ну или почистить все. В общем хоть что-то с ними сделать.
Прикрепленные файлы:
19. Iva_Irina_Iva 27.04.20 10:21 Сейчас в теме
Всем спасибо большое!!!
22. vkozak 28.04.20 13:58 Сейчас в теме
Тоже пригодилось. Спасибо!
23. nksk 19.06.21 20:06 Сейчас в теме
Как нашли нужный регистр, токая еже ошибка???
Оставьте свое сообщение

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