Реквизит vin не уникален 1с

Обновлено: 06.07.2024

Механизм сопоставления данных при обмене через универсальный формат

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

Для решения этой задачи как раз и предназначен механизм сопоставления данных.

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

На практике соблюдать данное требование не всегда возможно, особенно в случае настройки синхронизации между приложениями, работа в которых велась независимо. Это связано с тем, что у двух одинаковых объектов, созданных параллельно в каждом приложении, будет два разных GUID.

В некоторых случаях данные не могут быть сопоставлены по GUID по причине его отсутствия (особые случаи, которые не рассматриваются в данной статье).

Для успешного сопоставления объектов с разными GUID должно быть место для хранения информация об их соответствии. Таким местом является регистр сведений Публичные идентификаторы синхронизируемых объектов (далее РПИ ). Структура регистра представлена в таблице:

Узел информационной базы ПланОбменаСсылка Ссылка на узел плана обмена (настройку обмена), для которой хранится соответствие. Ссылка

СправочникСсылка,
ПланВидовХарактеристикСсылка,
ДокументСсылка Ссылка на объект текущего приложения. Идентификатор Строка (36) GUID объекта, полученного от приложения-корреспондента.

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


Рисунок 1. Этапы, на которых могут быть сделаны записи в РПИ

Этапы, помеченные пунктиром, опциональные: при выполнении сеанса обмена в автоматическом режиме отсутствуют этапы 1 и 2, при выполнении в интерактивном режиме этап 2 может быть пропущен пользователем.

В процессе обмена данные РПИ обеспечивают следующую функциональность:

  1. Сопоставление объектов при получении данных (см. рисунок 2-а).
  2. Обработка получаемых данных (замена ссылок) с целью обеспечения ссылочной целостности (см. рисунок 2-b).
  3. Обработка отправляемых данных (замена ссылок) для исключения повторного сопоставления на стороне приложения-корреспондента уже сопоставленных данных (см. рисунок 2-b).


Рисунок 2. Использование данных РПИ при получении и при отправке данных.

Прикладная логика, определяющая порядок автоматического сопоставления объектов при получении, содержится в правилах конвертации объектов (ПКО), предназначенных для получения данных.

Все компоненты (правила обработки данных, правила конвертации объектов и т.д.), определяющие прикладную логику обработки данных в процессе их получения, либо отправки (подробнее в статье Методика работы с конфигурацией "Конвертация данных 3.0" ) формируют так называемый менеджер обмена . Код менеджера обмена разрабатывается в общем модуле (подробное описание см. в документации по БСП , в разделе Обмен через универсальный формат ). Модуль создается автоматически с помощью КД3.0 на основе настроенных правил обмена либо вручную в конфигураторе (см. пример - общий модуль _ДемоМенеджерОбменаЧерезУниверсальныйФормат демо-конфигурации БСП ).

Вариант автоматического сопоставления (идентификации) объектов при получении задается с помощью свойства ВариантИдентификации ПКО и может принимать одно из трех значений:

  1. ПоУникальномуИдентификатору - идентификация по GUID,
  2. СначалаПоУникальномуИдентификаторуПотомПоПолямПоиска - идентификация по GUID и полям поиска,
  3. ПоПолямПоиска - идентификация по полям поиска,

Еще одним свойством, определяющим логику сопоставления, является массив полей поиска, определяемый в свойстве ПоляПоиска ПКО.


Рисунок 3. Настройки идентификации в модуле менеджера и в КД3.0.

В таблице 1 представлено описание использования данных настроек при автоматическом сопоставлении на разных этапах получения данных:

Этап анализа данных (при загрузке через помощник синхронизации данных)

Ручное сопоставление (при загрузке через помощник синхронизации данных)

Идентификация по РПИ .

Идентификация по GUID.

Запись соответствий в РПИ: делается, если соответствие нашлось при выполнении п.3.

Сопоставлять можно со всеми объектами соответствующего типа, для которых нет соответствий в РПИ .

Запись соответствий в РПИ: делается по результатам сопоставления.

Идентификация по РПИ .

Идентификация по GUID среди объектов, отсутствующих в РПИ .

Запись соответствий в РПИ: делается для либо с исходным GUID, либо с вновь сгенерированным, п. 1 не дал результата но объект с таким GUID уже есть в РПИ .

По GUID и полям поиска

Аналогично варианту "По GUID".

Идентификация по РПИ .

Идентификация по GUID.

Запись соответствий в РПИ: см. выше.

См. колонку "Загрузка данных"

Запись соответствий в РПИ: не делаются.

Таблица 1. Правила работы настроек идентификации.

Происходит последовательное применение вариантов поиска, заданных в свойстве ПоляПоиска ПКО, используемого при загрузке объекта.

Ограничение.
При сопоставлении на этапе анализа данных применяется только 1-й вариант поиска.

Переход к следующему варианту осуществляется в двух случаях:

  1. У загружаемого объекта не заполнено какое-либо из полей, которое указано в варианте поиска.
  2. Вариант поиска не дал результата.

Если в загружаемом объекте есть информация об исходном GUID и вариант идентификации для объекта "По GUID" или "По GUID и полям поиска", то поиск выполняется среди всех объектов заданного типа, кроме тех, для которых в РПИ уже установлены соответствия.

В остальных случаях поиск осуществляется среди всех объектов информационной базы соответствующего типа.

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

Особенность.
На этапе анализа данных соответствие будет установлено только в том случае, когда для одного объекта отправителя был найден один объект получателя.
На этапе загрузки данных соответствие будет установлено и в том случае, когда для одного объекта отправителя нашлось несколько объектов получателя. В такой ситуации соответствие будет установлено с одним из них.

Особенность.
На этапе загрузки данных вариант поиска Номер + Дата для документов работает следующим образом: номер искомого документа проверяется на точное соответствие, дата определяет интервал, в котором проводится поиск по номеру. Сам интервал определяется как период уникальности номеров документа, в который входит указанная дата. Например, если номера документов уникальны в пределах месяца и задана дата 10 декабря 2001 года, то поиск будет проводиться в интервале с 01 по 31 декабря 2001 года.
На этапе анализа данных этот вариант поиска будет работать как обычно: оба поля будут проверяться на точное соответствие.

Здравствуйте!
При проведении документа прием на работу возникла проблема, программа выдает предупреждение: "Значение "0000-00005к" поля "Номер" не уникально, хотя в самом документе значение стоит 8к. Проверила нумерацию всех кадровых документов "Значение "0000-00005к" нет вообще, перезагрузка программы с последующ. обновление проблему тоже не решили.

Подскажите пожалуйста в чем причина и как ее устранить.

Наталья , пробуем, предварительно создав копию базы:

1 - если документ создавали копированием, удалите его и создайте вновь вчистую;
2 - очистите кэш;
3 - проведите тестирование и исправление базы (ТИИ штатное + chdbfl.exe).

На каждом шаге см. результат.

Valentin46 , документ создавала вновь. Подскажите как очистить кэш и где найти "тестирование и исправление базы (ТИИ штатное + chdbfl.exe)"

Если у вас файловый режим базы (об этом см. в Справке о программе).

1. Очистка кэша: удаляем базу, затем добавляем её же в окне запуска 1С Предприятия.
2. ТИИ: открываем конфигуратор, в меню выбираем "Администрирование - Тестирование и исправление. ".
3. chdbfl.exe: тест-утилита 1С, которая находится в bin-папке платформы (C:\Program Files (x86)\1cv8\8.3.16.1502\bin\).

Valentin46 , проделала все перечисленные манипуляции, проблема не решилась.

Высылаем ответ отдела разработки:
Откройте кадровый документ и по кнопке "Еще изменить форму" выведите реквизит "Рег.номер". Это системный номер документа.
Нумерация в программе – 11 символов: 2 символа – префикс базы, 2 символа – префикс организации, спецсимвол тире «-», 6- символов – порядковый номер.
Изменив рег. номер Вы сбили нумерацию. Восстановите ее – в документах уберите последний буквенный символ и добавьте в номерной части «0 (чтобы сохранилась 11 символьная нумерация) - например, если было 0000-00043к, должно стать 0000-000043. Сделать это надо для всех кадровых документов.
Номер кадрового документа, соответствующий Вашей внутренней нумерации следует указывать в соответствующем поле «Номер».

В организации на протяжении всей деятельности кадровые документа нумеровались так: прием на работу: 1к,2к, 3к и т.д, отпуск 00000001-ОТ, 00000002-ОТ и д.т., перевод 1, 2, 3 и т.д. до сегодняшнего дня проблем не было. Открыла регистрационные номера, номер 0000-00005к занят, но за ним был успешно проведен 0000-00007к

Ошибка возникает при создании нового документа. При записи программа 1С 8.3 автоматически присваивает элементу новый номер, но сохранить новые данные не может, где-то в журнале документов уже есть объект с таким же номером.

Причиной этой ошибки чаще всего служит ручное исправление номеров документов.


Программа 1С сообщает пользователю, что номер 0000-0006 уже существует.

Нумерация документов в программе осуществляется автоматически. При этом, каждому новому документу присваивается номер в хронологическом порядке, который состоит из определенного количества цифр.

В 1С:Бухгалтерия предприятия 3.0, номер состоит из двух частей:

  • префикс информационной базы — может быть задан, если есть обмен с другими базами 1С;
  • сам номер документа.

В том случае, если пользователь начинает изменять нумерацию вручную или случайно изменил номер, сбив при этом нумерацию документов, программа продолжает нумерацию от номера, содержащего меньшее количество знаков. Изначально, мы видим, что в 1С заложено для номера документа:

Таким образом, сам номер может принимать значение от 0000-000001 до 0000-999999. Если пользователь вручную сокращает длину номера, то она продолжает нумерацию от нового значения. При внесении изменения в префикс, нумерация все равно продолжается от последнего номера, содержащего наименьшее количество знаков. В нашем примере при сбое в нумерации она продолжилась, используя под номер 4 знака: 0000-0005, 0000-0006 и т.д.


Рассмотрим ситуацию далее.

Что произойдет, если пользователь сократит числовой резерв для номера до двух или, куда хуже, до одного знака?

Программа 1С будет присваивать номера до тех пор, пока не будет пройден последний максимальный номер. Например, изменив вручную в документе номер на 0000-01, программа сможет автоматически присвоить всего 99 номеров. После номера 0000-99 возможность автоматической нумерации документов закончится и придется каждый раз исправлять номер вручную



Когда пользователь сокращает длину номера документа (договора и т.п.) — это приводит к сбою нумерации. Поэтому, если возникает необходимость изменить номер документа вручную, надо использовать максимально допустимое число символов.


После этого добавляем нули перед значением номера.


После приведения в порядок нумерации, ошибка появляться не будет.

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

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Похожие публикации

    .У вас нет доступа на просмотр Чтобы получить доступ:Оформите коммерческую.Конфигурация 1С состоит из объектов: Константы, Документы, Регистры и ряда.В совместном Письме Минфина и ФНС от 28.08.2019 N БС-4-11/17090@.

Карточка публикации

(3 оценок, среднее: 4,67 из 5)

Данную публикацию можно обсудить в комментариях ниже.
Обратите внимание! В комментариях наши кураторы не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно по ссылке >>
Вы можете задать еще вопросов

Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8

Вы можете оформить заявку от имени Юр. или Физ. лица Оформить заявку

Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>

Считаю, что этот вебинар надо просто выучить наизусть как стихотворение. Столько информации, самостоятельно не смогла бы все это осмыслить. Спасибо большое Марине Аркадьевне.

Вы можете задать еще вопросов

Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8

Вы можете оформить заявку от имени Юр. или Физ. лица Оформить заявку

Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>

Глобальный контекст (Global context)
ОбновитьНумерациюОбъектов (RefreshObjectsNumbering)
Синтаксис:

Тип: Массив; Объекты метаданных.
Объект метаданного или массив объектов метаданных, для объектов которого будет выполнено обновление. Если значение параметра не указано, то обновление будет выполнено для всех типов объектов.
Описание:

Выполняет обновление номеров в соответствии с номерами, записанными в базе данных. После вызова данного метода все выданные, но не записанные номера, становятся невалидными, т.к. не гарантируется их уникальность. Данный метод разрешено вызывать только администратору системы.

Сервер, толстый клиент, внешнее соединение.

Тоже помогло ОбновитьНумерациюОбъектов(). Кассовая смена не открывалась в УТ 11, указал метаданные только для этого документа, закрылась нормально. Пробовал все способы.
НЕ помогло и ОбновитьНумерациюОбъектов().
Сделал следующим образом.
Двинул документ на год вперёд. Записал.
Двинул на год назад. Присвоил новый номер. Записал и провёл. Номер присвоен.
Кривовато, конечно, номер перескакивает через 1, но по-другому не выходит. (20) cargobird, значит не все пробвали, но этот способ говорит о кривом создании и изменении документа! (21) Xershi, весь интернет перешерстил, ничего не помогло.
Где-то в базе что-ли косяк.
Потому что реально нет документа с этим номером в текущем году.
Документ создается в коде самым стандартным способом.
Вручную, при этом документ записывается.
То есть не создается с этой ошибкой только в коде.

(плюс заполнение всех необходимых реквизитов, не стал писать)
И до некоторых пор это работало без сбоев.

Да, и сбой проявлялся последовательно.
Сначала в одной из обработок создавалась пара Списание-Оприходование, Оприходование стало отказывать в записи с этой ошибкой.
Затем еще одна обработка, которая создавала Реализацию-Поступление, Реализация стала вылетать.
Закономерность не ясна.
Оприходование после подобного передергивания глючить перестало. Надо попробовать, может и реализацию тоже уже не нужно так дергать.

(21) Xershi, ДА!
Передергивание помогло. Реализация тоже глючить перестала при записи в коде.
Знать бы еще почему. Вероятно была доработка в конфигурации, важно проверить не обрезались ли номера, если с номерами все нормально, то скорее всего при переносе как-то что-то занеслось или был контроль уникальности снят (24) Sangre1999, в базу ничего извне не попадает. Контроль уникальности не менялся. (26) cargobird, ну так приведите скриншоты корня конфигурации и настроек нумерации документа. Так же важно почистить кэш и чтобы с этим типом документов не работали при проверке пользователи! (27) Xershi, в части реализации и её нумерации конфа стандартная, УТ 10.3.
В базе сидел я один с почищенным кэшем.
Делали восстановление копии предыдущего дня в другую базу - то же самое.

Коллеги, столкнулся с этим и нашел возможное решение.

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

Читайте также: