Ошибка при попытке вставки записи с неуникальным значением ссылки. (решение)

24.12.12

Задачи пользователя - Адаптация типовых решений

При записи набора записей столкнулся с ошибкой «Ошибка при попытке вставки записи с неуникальным значением ссылки. Таблица AccumReg7604».

Скачать исходный код

Наименование Файл Версия Размер
Обработка исправляет наборы записей по всем регистрам
.epf 6,92Kb
420
.epf 6,92Kb 420 Скачать

При записи набора записей столкнулся с ошибкой «Ошибка при попытке вставки записи с неуникальным значением ссылки. Таблица AccumReg7604». Обратил внимание на «неуникальное значение ссылки», из этого следует, что в регистре накопления (бухгалтерии, расчетов) неуникальная пара значений  «регистратор», «номер строки». Из метода ПолучитьСтруктуруХраненияБазыДанных() видим, что проблема в таблице ПродажиСебестоимость. 

Делаем запрос и убираем задвоения средствами платформы:

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

НаборЗаписей = РегистрыНакопления.ПродажиСебестоимость.СоздатьНаборЗаписей();
НаборЗаписейУдалить = РегистрыНакопления.ПродажиСебестоимость.СоздатьНаборЗаписей();

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НачатьТранзакцию();

НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
НаборЗаписей.Прочитать();

НаборЗаписейУдалить.Отбор.Регистратор.Установить(Выборка.Регистратор);
НаборЗаписейУдалить.Записать();

НаборЗаписей.Записать();
ЗафиксироватьТранзакцию();
КонецЦикла;

 

PS Добавил обработку, которая ищет и исправляет наборы записей еще она показывает неуникальные записи в регистрах сведений. Так-же обработка "ремонтирует" итоги средствами платформы

(по следам http://partners.v8.1c.ru/forum/thread.jsp?id=918745)

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    124918    682    389    

732

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4644    9    5    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    3055    4    0    

19

Запрос 1С copilot

Инструментарий разработчика Запросы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

5 стартмани

15.01.2024    6632    31    mkalimulin    27    

51

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16593    skovpin_sa    14    

101
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. sknarid 24.07.14 15:36 Сейчас в теме
К сожалению выполнение обработки(ремонт таблиц) требует отбросить границу запрета редактирования документов, а с ней и последовательность к началу жизни. А потом всё восстанавливать за годы и рассылать на периферию.... Это гроб.
+
2. Danil.Potapov 516 25.07.14 10:17 Сейчас в теме
(1) sknarid,
Тогда нужно включить у объектов режим ОбменДанными.Загрузка = Истина и другие флаги заложенные в конкретной конфигурации.
+
4. chesnokov-a-v 100 26.05.15 20:47 Сейчас в теме
(1) sknarid, Если я правильно понимаю, то возникшая проблема - это проблема конкретной базы (будь то центральная или дочерняя база). У меня такая проблема возникла в дочерней базе, т.е. в центральной все нормально и из дочерней базы в центральную обмен уходит и центральной загружается. Не проходила только процедура загрузки данных из центральной базы в дочернюю.
Сделал следующее:
0. Сделал копии баз.
1. Выполнил обмен как есть (т.е. без загрузки данных в ДБ) 2 раза. Таким образом из дочерней в центральную выгружено все что зарегистрировано для обмена и дочерняя база об этом знает.
2. Убрал для своего пользователя дату запрета редактирования в дочерней базе.
3. Запустил данную обработку и дождался выполнения.
4. Открыл обработку "Регистрация изменений для обмена" (она стандартная) в дочерней базе и удалил всю регистрацию для центральной базы.
5. На фтп удалил файлы обмена.
6. Запустил обмен в центральной базе - таким образом в дочернюю еще раз ушли данные, которые зарегистрированы для нее.
7. Запустил обмен в дочерней. Все прошло нормально.
+
20. Rans 6 15.05.19 16:21 Сейчас в теме
Да также как Ваш, подставил другой регистр:

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

Похоже проблема все-таки была в данных, которые прилетали из ЦБ.
Пока удалось победить повторным удалением из выгрузки в ЦБ данных этих двух регистров.
+
3. ccserg 63 16.01.15 15:26 Сейчас в теме
{(5, 3)}: Неоднозначное поле "Данные.Регистратор"
<<?>>Данные.Регистратор КАК Регистратор,
ЗИКБУ
+
5. sultbec 9 05.05.16 14:34 Сейчас в теме
Обработка выключает итоги регистров, и не включает их потом.
+
6. Danil.Potapov 516 06.05.16 10:26 Сейчас в теме
(5) sultbec,
не, все включается.
+
7. AlaBait 12.05.16 05:35 Сейчас в теме
У меня подобный косяк ушел после банальной отмены проведения документа и проведения его заново
_LkMaksimka_; VaLerkaBed; alexscamp; Danil.Potapov; magolubev; andogskiy; +6
9. magolubev 11.08.17 09:10 Сейчас в теме
(7) Была ошибка в УТ 11.1 при проведении заказа клиента, что записи в таблице AccumRG6910 (как выяснил с помощью ПолучитьСтруктуруХраненияБазыДанных(), регистр накопления ЗаказыКлиентов)
Аналогично распровел документ и провел повторно - ошибка ушла
VaLerkaBed; usersed; alexscamp; +3
14. VaLerkaBed 19.09.18 00:16 Сейчас в теме
(7)Спасибо! Это решение спасло после трех дней поисков.
+
8. igorbon 02.10.16 09:08 Сейчас в теме
Не работает в УТ11.1
+
10. zoomych 14.12.17 18:22 Сейчас в теме
11. Danil.Potapov 516 15.12.17 18:50 Сейчас в теме
(10)
Не работает в 11.3

что пишет система?
+
12. dragen 07.02.18 15:14 Сейчас в теме
(11)

что пишет система?

При обновлении на ут 11.2.2 грешит на справочник.Упаковки.
Что делать?
Прикрепленные файлы:
+
13. kn8603 9 31.03.18 16:04 Сейчас в теме
Такое еще бывает, если в базе есть документы с пометкой на удаление и движениями по регистрам.
+
15. Сирёга 08.11.18 00:30 Сейчас в теме
не качайте. не работает. верни мне монетку
+
16. Bukaska 140 08.11.18 10:07 Сейчас в теме
(15)Смотрите дату. 2012 год, тогда 8.3 еще не было и в помине. А вы конечно ее открываете на современной конфигурации.
+
17. Danil.Potapov 516 08.11.18 10:57 Сейчас в теме
(15) что не работает?
+
18. Rans 6 07.05.19 17:43 Сейчас в теме
У меня ошибка возникает в Рознице на одном из узлов РИБ при выполнении метода прочитать изменения во время синхронизации. Проверки логической и ссылочной целостности, checkdbfl не помогли. Сначала ругался на регистр ПродажиПоДисконтнымКартам. Запрос не показывает задвоенные записи. Сделал реструктуризацию, удалил из выгрузки в центральной все записи регистров накопления, теперь ругается на регистр БонусныеБаллы. По нему запрос тоже ничего не возвращает. Куда дальше смотреть подскажите плз.
+
19. Danil.Potapov 516 07.05.19 19:46 Сейчас в теме
(18)
как выглядит запрос?
+
21. Brravo 13 11.05.21 11:17 Сейчас в теме
{ВнешняяОбработка.ИсправлениеНеуникальностиЗаписей.Форма.Форма.Форма(80)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(1, 9)}: Синтаксическая ошибка ","
ВЫБРАТЬ <<?>>, СУММА(1) КАК КоличествоДублейЗаписей ИЗ РегистрСведений.БлокировкиСеансовОбластейДанных КАК РС СГРУППИРОВАТЬ ПО ИМЕЮЩИЕ СУММА(1) > 1
+
Оставьте свое сообщение