1С:Повторяющиеся ключи (duplicate key) и потерянные проводки

Повторяющиеся ключи (duplicate key) и потерянные проводки Сначала определения. Повторяющиеся ключи это значения из набора столбцов некоторой таблицы, которые встречаются в данной таблице более одного раза. Потерянные проводки это строки таблицы _1SENTRY или _1SOPER. Вы спросите – «Почему данные термины используются в заголовке темы вместе?». Потому, что часто (хотя и не всегда) потерянные проводки проявляются как строки с повторяющимися ключами.

Сначала определения.

Повторяющиеся ключи это значения из набора столбцов некоторой таблицы, которые встречаются в данной таблице более одного раза.

Потерянные проводки это строки таблицы _1SENTRY или _1SOPER.

Вы спросите – «Почему данные термины используются в заголовке темы вместе?». Потому, что часто (хотя и не всегда) потерянные проводки проявляются как строки с повторяющимися ключами.

В одной из моих статьей я уже писал как бороться с повторяющимися ключами. Теперь же рассмотрим ситуации, при которых возникают сообщения об ошибках в результате появления повторяющихся ключей. А таковых бывает несколько. Набираем в известном всем Books Online (BOL) сочетание «duplicate key», сортируем по колонке «Местонахождение» и перемещаемся на строки с разделом «Troubleshooting». Получаем:

Native error Код ошибки SQL Severity Уровень «серьезности» ошибки Текст ошибки
1505 14 CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID %d. Most significant primary key is '%S_KEY'.
Невозможно создать уникальный индекс так как в талибце найдены повторяющиеся ключи
1508 14 CREATE INDEX terminated because a duplicate row was found. Primary key is '%S_KEY'.
Невозможно создать кластерный индекс так как в таблице найдены повторяющиеся ключи
2601 14 Cannot insert duplicate key row in object '%.*ls' with unique index '%.*ls'.
Невозможно вставить строки (обновить строки) в таблице, так как для нее создан уникальный индекс и строка с таким ключом уже есть в таблице

Первые две ошибки случаются когда предпринимается попытка создания индекса (уникального или кластерного). Третья ошибка происходит при попытке вставки записи (либо изменении поля существующей записи) и при этом нарушается уникальность уже существующего индекса.

В том же BOL в качестве способа нахождения повторяющихся ключей указан такой оператор:

Select field,…, fieldN form table group by field,…, fieldN,

здесь field,…, fieldN – набор полей таблицы, по которому создан индекс, уникальный которого нарушается. Это конечно неудобно, так как приходится пролистывать весь запрос для нахождения повторяющихся ключей. Удобнее будет использовать следующий запрос:

select field,…, fieldN, "Count"=count(*) from Table Group by field,…, fieldN having count(*)>1

После получения списка повторяющихся ключей, остается решить какие из них нужно оставить, а какие удалить.

Теперь вернемся к потерянным проводкам. Часто такие сообщения появляются для таблиц _1SENTRY и _1SOPER. Поэтому метод описанные выше также подходит для исправления данных в таблице проводок и операций. Однако кроме этого существуют специфичные для 1С методы борьбы с потерянными проводками:

  • Поставить признак для документа, создающего бухгалтерские проводки, «Всегда создавать операцию». Данный способ лучше всего применять для конфигураций, которые еще не «в бою», то есть только на этапе создания. При разработке конфигурации для SQL платформы всегда ставьте признак «Всегда» ;) для уменьшения вероятности возникновения потерянных проводок.
  • Отмена проведения + проведение документа (ов). Обычно не помогает документам, у которых не стоит признак создавать операцию всегда. И именно при проведении документа возникает данная ошибка.
  • Выгрузка – загрузка данных. Очень действенный метод, но очень долгий.
  • Тестирование + исправление конфигурации. Иногда помогает.

Что рекомендую. Сначала пробуйте отменить проведение документа и провести его заново. Иногда бывает трудно определить у какого документа потерялись проводки. В этом случае данная операция может занять столько же (если не больше) времени сколько загрузка и выгрузка. Если не поможет – тестирование + исправление конфигурации. Если не поможет – почистить проводки с помощью метода борьбы с повторяющимися ключами, провести документ(ы). Крайняя мера – загрузка – выгрузка. Изменение признака операции на «создавать всегда» приведет к пересчету бухгалтерских итогов, поэтому данная операция сравнима по времени с выгрузкой – загрузкой и тестированием с пересчетом итогов. Данную операцию я не применял, но думаю, что ее можно использовть вместо тестирования – исправления конфигурации. В любом случае если вы исправили положение, то для всех бухгалтерских документов лучше поставить признак создавать операцию всегда.

Еще в данной статье хотелось бы обратится к другой моей статье , в которой подробно был изложен способ нахождения потерянных проводок. Этот способ основывается на другом предположении, а именно на том, что потерянные проводки (операции) не принадлежат ни одному из документов. В статье был приведен скрипт, с помощью которого можно получить список потерянных проводок. На его основе легко получить другой скрипт, который сможет удалить такие проводки:

-- есть проводки по непроведенным документам
-- такое безобразие нужно "покоцать"
delete from _1sentry (nolock)
where docid in (select iddoc from _1sjourn (nolock)
where closed=0)


-- есть проводки, но нет соответствующих документов
-- такое безобразие нужно "покоцать"
delete from _1sentry (nolock)
where docid not in (select iddoc from _1sjourn (nolock))


-- есть проводки, но нет соответствующих операций
-- такое безобразие нужно "покоцать"
delete from _1sentry (nolock)
where docid not in (select docid from _1soper (nolock))


-- есть операции, но нет соответствующих документов
-- такое безобразие нужно "покоцать"
delete from _1soper (nolock)
where docid not in (select iddoc from _1sjourn (nolock))


-- проверка правильности заполнения DATE_TIME_DOCID в _1sentry
-- вместо проверки - замена на правильный DATE_TIME_DOCID
update _1sentry set DATE_TIME_DOCID=_1sjourn.DATE_TIME_idDOC
from _1sjourn (nolock)
--select _1sentry.DATE_TIME_DOCID,_1sjourn.DATE_TIME_idDOC
from _1sentry (nolock), _1sjourn (nolock)
where _1sentry.DOCID=_1sjourn.idDOC and
      _1sentry.DATE_TIME_DOCID<>_1sjourn.DATE_TIME_idDOC


-- здесь можно сделать установку поля APPCODE, которое содержит
-- флаги, к какой компоненте принадлежит документ (см. статью на
-- hare.ru в разделе Коллективный разум про структуру базы)
-- поле устанавливается для определенного вида документа IDDOCDEF
-- то есть известно какой документ, по какой компоненте делает
-- движения
-- проверка правильности заполнения APPCODE в _1Sjourn
--Update _1Sjourn set appcode=appcode+32
--where appcode<32 and IDDOCDEF<>1356 and
--      iddoc in (select docid from _1sentry (nolock))
-- 32 – заменить на нужный APPCODE
-- 1356 –заменить на нужный IDDOCDEF


-- проверка базы - можно раскомментировать
--dbcc checkdb
-- переиндексация базы данных - можно раскомментировать
--exec _1sp_dbreindex

Запускать этот скрипт лучше всего на копии базы – мало ли что. Важное замечание – если с помощью скрипта удаляются проводки по операции, то восстановить их потом будет очень трудно, в то время как удаление проводок по документам не так страшно (их всегда можно перепровести).

Вот и все. Пишите мне, если у вас есть свои методы борьбы с описанными ситуациями – пополним наш арсенал вашим оружием!

Удачной борьбы с потерянными проводками и повторяющимся ключам – глюками 1С!

Шемякин Павел
1csql@udmnet.ru
http://1csql.virtualave.net/1csql/

Начать дискуссию

НДФЛ

При продаже квартиры вдова может учесть расходы умершего мужа на ее покупку

Ситуация: будучи в браке мужчина купил квартиру на свое имя. Через 2 года он умер, квартира перешла по наследству его жене, и она ее продала.

Курсы повышения
квалификации

20
Официальное удостоверение с занесением в госреестр Рособрнадзора

Суд взыскал с IKEA 12,9 млрд рублей

По заявлению ФНС с дочерней компании IKEA в России взыскали почти 13 млрд рублей.

Маркетплейс Ozon получил предупреждение от ФАС

Предприниматели пожаловались в ФАС на неопределенные условия в договорах с маркетплейсом Ozon, а также на навязчивые предложения поучаствовать в акции «Баллы за скидки».

Лучшие спикеры, новый каждый день

Требования к комплектации укладок, наборов, комплектов и аптечек для оказания первой помощи на 2024 год

Предлагаем ознакомиться со всеми актуальными приказами Минздрава на 2024 год, которые содержат требования к комплектации укладок наборов комплектов и аптечек для оказания первой помощи.

Иллюстрация: freepik/freepik
НДФЛ

Налоговики сложат зарплату и доход от брокеров и доначислят НДФЛ 15%

За 2023 год налоговые агенты отдельно считают НДФЛ по каждой налоговой базе, а ФНС потом все суммирует и пересчитывает налог с дохода свыше 5 млн рублей.

Спрос на акции «МТС банка» в 15 раз превысил объем выпуска

Размещение акций «МТС банка» на Мосбирже стало рекордным по числу заявок от инвесторов.

Опытом делятся эксперты-практики, без воды

Как один бизнес снизил налоги в 11 раз и еще четыре кейса законной оптимизации

Компания работает в ноль и владелец сидит без дохода, бухгалтер постоянно косячит, а ФНС доначислила миллионы из-за сомнительной налоговой схемы? Кажется, что легче закрыть фирму, чем постоянно латать финансовые дыры. На самом деле в большинстве случаев можно не только решить проблему с деньгами, но и найти ресурсы на развитие бизнеса.

Иллюстрация: создано с помощью ИИ OpenAI © Вера Ревина/Клерк.ру

Перевод на удаленку: не все так просто

Согласно статье 312.1 Трудового Кодекса РФ, удалённо может работать любой сотрудник организации, в том числе занимающие руководящие должности и генеральный директор. Но для этого должно быть достаточно оснований, а также технических возможностей, чтобы обеспечить дистанционную работу сотрудника.

В ОАЭ завершился международный бизнес-форум «Мир возможностей»

Участники форума нашли точки соприкосновения для дальнейшего сотрудничества России и ОАЭ в медицине, образовании, спорте, торговле и деятельности по развитию искусственного интеллекта.

Создать объявление

Командировка на майские праздники: оплачиваем правильно

Командировка работника может выпасть на майские праздники или «захватить» несколько выходных дней. Оплачивать такие дни нужно по особым правилам.

Иллюстрация: Coworking Bansko/pexels

Учет офисных расходов при УСН

Офис — это не только место, в котором трудятся сотрудники. Это еще и дополнительные обязательные расходы, которые несет регулярно компания. Причем таких затрат бывает куда больше, чем может показаться на первый взгляд. В статье разъяснено, какие расходы на содержание офиса может понести налогоплательщик, если он находится на упрощенной системе налогообложения (УСН). Также прописано, как при данной системе учитывать подобные затраты.

Иллюстрация: Вера Ревина/Клерк.ру

Акция 3+1 только до конца мая!

Оформи рекламную кампанию на 3 месяца и получи дополнительный месяц гарантированных лидов в подарок!

Акция 3+1 только до конца мая!
Миникурсы, текстовые и видеоинструкции для бухгалтеров

Какая сумма предельной базы для начисления взносов в 2024 году

Корректировка предельной базы для исчисления страховых взносов осуществляется ежегодно. 2024 год исключением не стал. В ее размер вновь были внесены изменения. Чтобы не столкнуться со сложностями, необходимо знать размер установленного лимита, а также правила, в соответствии с которыми происходит исчисление размера взносов. Расскажем, про сумму предельной базы для начисления взносов в 2024 году.

Иллюстрация: Вера Ревина/Клерк.ру

💥 Путин анонсировал второй масштабный этап расчистки нормативной базы

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

Бесплатно с Фиксированные взносы ИП

Как теперь уменьшать налог по УСН на взносы ИП: разъяснения ФНС с примером

Временные прошлогодние правила по взносам 1% стали постоянными.

Как теперь уменьшать налог по УСН на взносы ИП: разъяснения ФНС с примером
7

При оплатах через СБП продавец должен применять ККТ: можно ли удаленно

Если клиент платит через систему быстрых платежей, то нужно применить ККТ. Но иногда эта ККТ может быть удаленная, иногда – находиться по месту расчетов.

К вопросу об оформлении договоров. Как нагляднее и удобнее оформлять введение и реквизиты

Данная статья посвящена оформлению договоров. Советы от нашей компании.

1
3-НДФЛ

Не делайте этих ошибок при заполнении 3-НДФЛ

До 2 мая включительно физлица должны сдать 3-НДФЛ за 2023 год, если в прошлом году была продажа имущества, получение недвижимости в дар не от близких родственников и т. д.

Центробанк сохранил ключевую ставку 16%

Банк России не будет снижать ключевую ставку до тех пор, пока не будет достигнута цель по инфляции вблизи 4%.

Интересные материалы

ВЭД

Президент поддержал создание координационного центра для работы российского бизнеса на новых рынках

Сейчас все министерства работают с новыми рынками, все крупные компании работают с новыми рынками, но это все происходит в рамках каждого из направлений, за которое отвечает то или иное ведомство или компания.