Борьба с дублями (номенклатуры, контрагентов) или чем полезен внутренний идентификатор объекта

05.09.18

База данных - Чистка данных

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Внутренний идентификатор объекта
.epf 6,64Kb
93
93 Скачать (1 SM) Купить за 1 850 руб.

Поводом для написания этой статьи стал очередной звонок бухгалтера с паникой перед сдачей отчетности по НДС. В прошлом квартале потратил много времени на уборку дублей контрагентов. И вновь они, те же самые и новые. Откуда?

Решил потратить время, и разобраться с причиной, а не следствием. Ситуация с основном актуальна при настроенных автоматических выгрузках через планы обмена из управляющей программы (в моем случае УТ 10.3) в бухгалтерию предприятия (в моем случае 2.0).

Несколько лет тому назад были установлены эти конфигурации, и настроен автоматический обмен между ними. Столкнулись с проблемой своеобразности ведения справочника контрагентов отделом продаж, которые начали заводить дубли контрагентов (с тем же ИНН/КПП/Наименованием) по тем или иным причинам (одного и того же контрагента они раскидывали по разным группам). Бухгалтерия высказала свое "фи", и постановила - нам не важно, что там у них, объединяйте карточки при загрузке в одну. Пришлось вмешаться в процесс переноса объектов правилами обмена. Убрали для контрагентов поиск по внутреннему идентификатору, и оставили поиск по ИНН+КПП+Наименование. Однако и тут всплыли свои подводные камни в виде любителей переименовывать наименования контрагентов (в результате создаются дубли в БП уже самими правилами). Собрались все вместе, обсудили, решили, убедили, что в УТ у нас дубли недопустимы, убрали их, вернулись к стандартным правилам.

Вот только после "причесывания" дублей в УТ и в БП - внутренние идентификаторы у многих контрагентов различались. А так как типовые правила обмена осуществляют поиск объектов исключительно по внутреннему идентификатору, то с очередной порцией документов в БП прилетал и новый дубль контрагента (в случае, если эти идентификаторы различались). Но универсальный обмен данными XML не был бы универсальным, если бы эту проблему обойти было невозможно. Т.к. идентификатор существующего объекта штатными средствами изменить невозможно, то можно обойти эту ситуацию при помощи специального регистра сведений "Соответствие объектов для обмена", который имеется во всех типовых конфигурациях от 1С.

Для того, чтобы не возникало новых дублей алгоритм уборки дублей стал следующим:

1. В БП при помощи обработки "Поиск и замена дублирующихся элементов" (она типовая, ее можно взять из конфигурации Управление торговлей или на диске ИТС, либо выбрать наиболее подходящую среди множества вариаций на самом Инфостарте) нахожу дубль, определяю верный элемент, нажимаю выполнить замену.

 Шаг1_1

Шаг1_2

2. Получаю внутренний идентификатор единственного (после замены) объекта нашего дубля (набросал специально простенькую обработку для этого, чтобы внутренний идентификатор автоматически копировался в буфер обмена).

Шаг2

3. Открываю в УТ регистр "Соответствие объектов для обмена", делаю отбор по собственной ссылке.

 Шаг3

4. Заменяю значение ссылки в другой ИБ для нашего узла обмена с БП значением, полученным в п. 2.

Шаг4

 

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

Дубли борьба с дублями удаление дублей внутренний идентификатор объекта

См. также

SALE! 15%

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7888    59    23    

69

Чистка данных Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Розница 3.0 Платные (руб)

Позволяет удалить организации из любых из информационных баз 1С на управляемых формах (БП 3.0, УТ 11, КА 2, ERP 2, ЗУП 3.0, УНФ, Розница 2.0 и пр.). Главное требование - программа должна содержать справочник "Организации". Реализован самый быстрый алгоритм непосредственного удаления объектов. Работает даже на базах большого размера. Для ускорения работы алгоритма не запускается проверка контроля ссылочной целостности. Проверку учета можно запустить отдельно с помощью дополнительной обработки. Необходимо перед удалением самостоятельно проверить базу на наличие перекрестных ссылок разных организаций в одном документе. Эту дополнительную обработку проверки перекрестных ссылок по запросу предоставляем бесплатно нашим покупателям.

3582 руб.

16.03.2015    172461    209    81    

244

Чистка данных Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление торговлей 10 1С:Управление торговлей 11 Платные (руб)

Данные обработки помогут Вам легко и, главное быстро, выполнить удаление любых данных в Ваших базах 1С на платформах 8.1-8.3. Обработки помогут легко просмотреть связи ссылок в виде дерева, выбрать что удалять, а что нет, используя любые отборы. Это позволит уменьшить объем лишней и не нужной информации в справочниках и документах, планах видов характеристик и др. объектах и облегчит работу с данными пользователям и Вам. Понятное расположение команд и настроек, в сочетании с описанием и справкой, еще упростят процесс. (Обновление от 29.06.2023, версия 4.2)

9600 руб.

22.02.2013    138416    258    144    

429

Чистка данных Программист Пользователь Платформа 1С v8.3 Управляемые формы 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Обработка позволяет удобно и выборочно удалить данные из базы 1С. Это могут быть как неиспользуемые элементы справочников, так и неактуальные организации. При этом есть возможность провести анализ пересечений документов с другими организациями и таким образом уберечься от того, что при удалении обороты по другой организации изменятся.

3350 руб.

28.11.2019    25862    59    16    

74

Оптовая торговля Логистика, склад и ТМЦ Чистка данных Программист Бухгалтер Пользователь Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Если вы начали работать в программном продукте Управление Торговлей, редакция 11 или Комплексная Автоматизация редакция 2 и включили механизм учёта серий, то перейти обратно в учёт без серий будет не так-то просто. Сложность заключается в том, что нужно очистить серии в табличной части документа, например, Реализация Товаров и услуг. Предлагаем алгоритм перехода на учет без серий для программного продукта УТ11. (Очистка серий.)

2400 руб.

09.04.2019    29061    43    14    

45

Чистка данных Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

2400 руб.

23.08.2021    9931    19    3    

25

Чистка данных Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

21.01.2022    7704    1    dmbal    6    

12

Чистка данных Инструментарий разработчика Системный администратор Программист Платформа 1С v8.3 Абонемент ($m)

Очередная вариативная очистка кэша 1С с помощью Исполнителя 3.0.2.2.

1 стартмани

25.10.2023    5345    5    SerVer1C    26    

22
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. 3.14159 94 24.12.13 17:21 Сейчас в теме
А почему нельзя просто почистить РС "Соответствия объектов для обмена"?

при очередном обмене этот РС заново начнет заполняться по правилам поиска в правилах обмена
3. insurgut 208 24.12.13 17:55 Сейчас в теме
(1) 3.14159, потому что с его помощью мы настраиваем соответствие одного и того же контрагента с различными внутренними идентификаторами в наших базах.
5. 3.14159 94 24.12.13 18:40 Сейчас в теме
(3) вручную чтоли настраиваете? o_0

я всегда думал, что он при обменах сам заполняется
6. insurgut 208 24.12.13 20:11 Сейчас в теме
(5) 3.14159, все верно, заполняется он изначально автоматически. Но если что-то идет не так в дальнейшем (появление дублей, уборка дублей), в результате чего идентификаторы объектов начинают различаться, в этом регистре может содержаться некорректная информация. Ситуация в большинстве случаев не типовая. Привел решение как раз для случая, если вдруг придется столкнуться с проблемой.

Еще бывают случаи, когда один контрагент (номенклатура, договор и т.п.) при выгрузке встает на другой элемент справочника. При помощи описанных действий можно разобраться "где собака зарыта".
7. 3.14159 94 24.12.13 21:15 Сейчас в теме
(6) в консоли запросов (способ выгрузки дерево:) можно сразу поискать все "проблемные собакой зарытые"

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

СГРУППИРОВАТЬ ПО
СоответствиеОбъектовДляОбмена.СобственнаяСсылка,
СоответствиеОбъектовДляОбмена.УзелОбмена
;
ВЫБРАТЬ
СоответствиеОбъектов.УзелОбмена КАК УзелОбмена,
СоответствиеОбъектов.ТипЗначенияСобственнойСсылки КАК ТипЗначенияСобственнойСсылки,
СоответствиеОбъектов.СобственнаяСсылка КАК СобственнаяСсылка,
СоответствиеОбъектов.СобственнаяСсылка.Код,
СУММА(СоответствиеОбъектов.КолВо) КАК КолВоДублей
ИЗ
СоответствиеОбъектов КАК СоответствиеОбъектов
ГДЕ
СоответствиеОбъектов.КолВо > 1

СГРУППИРОВАТЬ ПО
СоответствиеОбъектов.УзелОбмена,
СоответствиеОбъектов.СобственнаяСсылка,
СоответствиеОбъектов.СобственнаяСсылка.Код,
СоответствиеОбъектов.ТипЗначенияСобственнойСсылки

УПОРЯДОЧИТЬ ПО
УзелОбмена,
СобственнаяСсылка
ИТОГИ
СУММА(КолВоДублей)
ПО
УзелОбмена,
ТипЗначенияСобственнойСсылки

8. insurgut 208 24.12.13 21:19 Сейчас в теме
(7) 3.14159, и что вы увидите этим запросом? :) Двойные записи для одного объекта? Их может и не быть.
2. thenroach 4 24.12.13 17:44 Сейчас в теме
Мы с контрагентами проще сделали. Заставили клиентов в таких дубляж заполнять головного контрагента и в правилах поставили замену на головного контрагента если он есть. И управленцы и клиенты довольны.
4. insurgut 208 24.12.13 17:56 Сейчас в теме
(2) thenroach, интересное решение, возьму на заметку :)
9. 3.14159 94 24.12.13 21:20 Сейчас в теме
10. insurgut 208 24.12.13 21:32 Сейчас в теме
(9) 3.14159, уточню, если не ошибаюсь конечно, регистр Соответствие объектов для обмена заполняется либо при начальной настройке обмена (т.н. ПервыйОбмен = Истина), либо в случае, если поиск элемента происходит не только по внутреннему идентификатору, но и по полям поиска. Однако поиск соответствия по этому регистру происходит при загрузке всегда, несмотря на настройку поиска объекта, установленную в правилах обмена.

Если правила типовые, то для вновь создаваемых новых объектов данные в этот регистр уже записываться не будут, т.к. поиск у нас по внутреннему идентификатору происходит. Однако если мы вручную укажем сопоставление, то обработка обмена данными ее учтет при загрузке.
11. 3.14159 94 24.12.13 21:40 Сейчас в теме
(10) если правила написаны нормально, то можно смело грохнуть дубли, при следующем обмене соответствие запишется опять
12. insurgut 208 24.12.13 21:47 Сейчас в теме
(11) 3.14159, понятное дело, если мы договариваемся с пользователем о полях поиска, и он у нас идеально заводит карточки номенклатуры, контрагентов, без ошибок, сто раз перепроверяя перед записью... Однако не всегда бывает все идеально - бардак не запрограммировать :)
ShantinTD; +1 Ответить
14. ShantinTD 91 26.12.13 09:33 Сейчас в теме
(12) "бардак не запрограммировать :)" экая точная формулировка!
13. skuratov_ab 26.12.13 09:31 Сейчас в теме
Господа! Позвольте подлить намного воды в диалог по поводу контроля обмена.
Во -первых. Обработка полезна.
Во-вторых, потеоретизирую на тему.
лично я с подобной проблемой столкнулся не только с контрагентами, а и с партнёрами в УТ11 - БП 2.0 и УТ11 и Розница 2.0. ( ну про партнёров в УТ 11 разговор отдельный. но и с номенклатурой. И если контрагентов пара тройка сотен, то номенклатуры под 20 000.
Какие возникают проблемы?
1. обмен бывает двухсторонний и односторонний. Если мы просто сливаем инфу из УТ в БП, то решение " много к одному" можно найти. Если есть обратная выгрузка ( например банковских платежей или кассы) то возникает проблема
" один ко многим" а её решить уже гораздо труднее.
В обмене же номенклатурой между УТ и РТ( розницей) желательна полная идентичность справочника номенклатура.
Теперь о проблемах в самом обмене и регистре "Соответствие обмена".
их можно выделить пять:
1. Уже упомянутая проблема "один ко многим" и "многие к одному".
2. просто дубляжи ( при первичной синхронизации ли, при одновременном заведении в двух базах, дубляж в одной базе и тираж на другую с обменом) Здесь автор как раз предлагает решение
3.Нет записи в регистре соответствия. Элемент справочника есть, а записи в регистре нет. Возникает, например при неудачной "ручной" чистке. Или при завале процесса синхронизации при обмене. Тут необходима обработка по элементам справочника и поиску записи в регистре и последующей принудительной выгрузкой незадействованных элементов. Естественно в случае необходимости.
4.Неправильное соответствие. Наиболее вероятно при любимом занятии менеджеров и прочих юзеров переименовывать Существующие карточки товаров. т.к. соответствие в регистре уже есть, и идентификаторы не изменились правила обмена могут пропустить данный кульбит и вы вместо спичек в одной базе будете иметь бульдозер в документах другой. Обмен вроде должен контролировать этот момент, но не факт. Особенно если обмен односторонний, а переименование в подчинённой базе. "Лечиться", во первых, жёстким контролем работы с карточками, а во-вторых... Я так понимаю нужно сравнение регистра соответствия из двух баз. Куда то вываливать и сравнивать. выводя расхождения.
5. Элемент удалён, запись в регистре осталась. По идее тестирование должно эту проблему решить.
Ну и последняя из мною выявленных проблем. Грамотное удаление объектов в обоих базах. Признак " объект не найден" в той или иной базе.
Подчеркну на последок. Это моё видение проблем и ошибок в обменах. Комплексных решений у меня пока нет. Одно из них нашёл автор данной обработки.

15. insurgut 208 26.12.13 09:40 Сейчас в теме
(13) skuratov_ab, спасибо за столь развернутый комментарий. Действительно при использовании автоматических обменов (одно-, двусторонних) бывает много различных нюансов, и нет единственно правильного решения. Зачастую приходится контролировать какие-то моменты вручную.

Есть идея написания обработки сопоставления и настройки регистра соответствия объектов для обмена двух баз (через COM-соединение), как это умеют делать мастера первоначальных настроек обменов (например в БП 3.0), но с более развернутыми возможностями и для уже настроенных соответствий. Думаю было бы хорошим продолжением статьи :)
16. 3.14159 94 26.12.13 10:01 Сейчас в теме
(13) skuratov_ab, а пункт 3 точно проблема?? по-моему, пункт 3 лишний
17. insurgut 208 26.12.13 10:05 Сейчас в теме
(16) 3.14159, 3 пункт проблема, если используются свои правила, в которых поиск осуществляется по полям поиска... Хотя при следующей синхронизации и удачном поиске объекта запись соответствующая в регистр занесется обработкой обмена данными.
18. 3.14159 94 26.12.13 10:12 Сейчас в теме
(17) "кривые" правила - это проблема:) а пункт 3 - не проблема

если свои правила, то в КД есть Обработчик событий "Поля поиска"

Обработчики "Правила конвертации объектов"
Поля поиска
Условия возникновения события
Только для платформы V8.
Событие выполняется при поиске элемента ссылочного типа. Если установлен поиск по уникальнму идентификатору и программа нашла элемент, то поиск прекращается. Если поиск по уникальному идентификатору не дал положительного результата и указано, что нужно продолжить поиск в этом случае или поиск по уникальному идентификатору не проводился, то программа пытается найти элементы по свойствам поиска. В обработчике нужно установить список полей через запятую по которым нужно проводить поиск. Если очередная попытка дала положительный результат, то поиск прекращается.
Поиск возможен только по тем полям у которых на этапе выгрузка был установлен флаг поиска данных!!!

Параметры:
НомерВариантаПоиска - число. Номер попытки поиска. Попыток поиска может быть не больше 10.

т.е. возможно 10 попыток найти ссылку на объект в приемнике :)
19. insurgut 208 26.12.13 10:28 Сейчас в теме
(18) 3.14159, я прекрасно знаю, что такое поля поиска, но только вот переход от поиска по идентификатору к полям поиска может вызвать определенные проблемы (связаны они с переименовываниями, изменениями кодов пользователями). Вот даже в случае ниже умудрялись появляться дубли (хотя вроде предусмотрели все, что можно), либо наоборот заменяться другие элементы справочников.

УстанавливатьУОбъектаВсеСвойстваПоиска = Истина;

//+27.06.2012 не допускаем дублей групп!
ЭтоГруппа = СвойстваПоиска.Получить("ЭтоГруппа");
Если ЭтоГруппа Тогда
	Если НомерВариантаПоиска = 1 Тогда
		СтрокаИменСвойствПоиска = "Наименование, Код, ЭтоГруппа";
	ИначеЕсли НомерВариантаПоиска = 2 Тогда
		СтрокаИменСвойствПоиска = "Наименование, ЭтоГруппа";
	КонецЕсли;
//-27.06.2012
Иначе
//+12.07.2012, добавим строгий поиск по ИНН+КПП+Наименование для контрагентов с одинаковым ИНН/КПП и разным наименованием
	Если ПараметрыОбъекта.Получить("ПоискПриОбменеПоНаименованию") = Истина Тогда
		СтрокаИменСвойствПоиска = "ИНН, КПП, Наименование,ЭтоГруппа";
	Иначе // иначе, ищем как обычно!
		Если НомерВариантаПоиска = 1 и ЗначениеЗаполнено(СвойстваПоиска["ИНН"]) Тогда
			СтрокаИменСвойствПоиска = "ИНН, КПП,ЭтоГруппа";
		ИначеЕсли НомерВариантаПоиска = 2 и значениезаполнено(СвойстваПоиска["ИНН"]) Тогда
			СтрокаИменСвойствПоиска = "ИНН, Наименование,ЭтоГруппа";
		//+09.07.2012, было:
		//ИначеЕсли НомерВариантаПоиска = 3 и значениезаполнено(СвойстваПоиска["ИНН"]) тогда
		//стало:
		ИначеЕсли НомерВариантаПоиска = 3 и значениезаполнено(СвойстваПоиска["ИНН"]) и СвойстваПоиска["ЮрФизЛицо"] = Перечисления.ЮрФизЛицо.ФизЛицо тогда
			СтрокаИменСвойствПоиска = "ИНН, ЮрФизЛицо,ЭтоГруппа";
		ИначеЕсли НомерВариантаПоиска = 4 и СвойстваПоиска["ЮрФизЛицо"] = Перечисления.ЮрФизЛицо.ФизЛицо тогда
		СтрокаИменСвойствПоиска = "Наименование, ЭтоГруппа";
		//Бухгалтер сказал, что у них очень много контрагентов с разным инн и одинаковым названием
		ИначеЕсли НомерВариантаПоиска = 5 Тогда
			СтрокаИменСвойствПоиска = "Наименование, Код, ЭтоГруппа";
		КонецЕсли;
	КонецЕсли;
КонецЕсли;
Показать


Поиск по реквизитам хорош для справочников-классификаторов например. Или для случая, когда данные заведенные раз ни при каких обстоятельствах не изменяются пользователями (по крайней мере поля поиска). Во всех остальных ситуациях его конечно лучше не допускать (оставшись лишь на поиске по идентификатору).
Но очень часто всплывают задачи настройки обменов между базами, учет и в первой и во второй в которых ведется уже давно. Тут конечно же поиск по идентификатору невозможен.
20. 3.14159 94 26.12.13 10:35 Сейчас в теме
(19) поиск по полям происходит после поиска по УИДу, если объект в приемнике не найден по УИД
21. insurgut 208 26.12.13 10:41 Сейчас в теме
(20) 3.14159, можно и после, можно и вместо. Уточню - ситуации бывают различные. Одно дело когда у нас есть УТ и мы создаем первый обмен с базой БП (пустой). Другое дело - когда в БП уже ведется учет и нам необходимо настроить обмен с текущими данными. А бывают ситуации к примеру, когда есть 2 базы (вторая создана путем копирования первой с переименовыванием организации и других справочников), и нужно настроить выгрузку из этих баз в одну (назовем ее консолидированной). Как видите в последнем случае поиск по внутреннему идентификатору нужно уже исключать (иначе данные из одной программы будут перетираться данными другой).
26. skuratov_ab 27.12.13 08:21 Сейчас в теме
(16) 3.14159, в данной теме затронута одна проблема обменов - задвоение. А часто возникает вторая - " объект не найден" пункт 3 относиться больше к данной проблеме. Я утверждать не могу. досконально не копался в этом ещё. Но возникает например с подчинёнными справочниками. Соответствие номенклатур есть, но почему то теряется соответствие единиц измерения. В результате, после обмена в принимающей базе по полям ед. измерений стоит " объект не найден"
28. 3.14159 94 27.12.13 08:51 Сейчас в теме
(26) skuratov_ab, РС Соответствие тут ни при чем. если
после обмена в принимающей базе по полям ед. измерений стоит " объект не найден"
, значит не передался сам объект ед.измерений, хотя ссылка на него в Номенклатуре есть

про
гибнет файл или пакет обмена с новыми элементами справочника
тоже не понял, есть же механизм "квитанции о приеме" при обменах. если <Объект не найден>, опять же есть у него УИД, что мешает его найти в базе-источнике и "ручками" поставить на обмен??
31. skuratov_ab 27.12.13 09:03 Сейчас в теме
(28) 3.14159, в принципе, ничего не мешает. признаю, в 8 опыт ещё не богатый. Хотя озвученные проблемы возникли и в восьмёрке. по опыту 7.7 когда на ТиС крутилось 60 магазинов, и соответственно в одном обмене уходило 60 пакетов искать "ручками" я Вас умоляю. когда одна УТ - одна розница или БП, можно конечно и каждую запись вылезать. Когда сеть... ну может я чего не догоняю... пардон, не бог и не создатель. Будем учиться и изучать.
Я постарался в своём большом посте озвучить круг проблем обмена с которыми реально столкнулся. С той целью, чтобы совместными усилиями создать инструментарий админов для контроля и управления обменом.
Естественно, одну две позиции единиц измерения можно вылечить перезаписав элемент в исходящей базе. он придёт и в принимающую. А если их сотня -другая по 5-6 базам, да и вылезают они только когда в документ попадают... Будем ручками править или доверять самой 1с исправлять?
33. 3.14159 94 27.12.13 09:14 Сейчас в теме
(31) skuratov_ab, если лень ручками искать и на обмен целиком все справочники нереально поставить (по причине объемов файла выгрузки в xml), пишутся "обработки" для поиска ссылок на <объект не найден>, из базы-приемника запись в текст УИДов (dbf,excel,xml - не важно), в базе-источнике - поиск объектов по УИД и регистрация в плане обмена

как искать <Объект не найден> в регистрах и справочниках - всем известно
36. insurgut 208 27.12.13 09:24 Сейчас в теме
(33) 3.14159, кстати нередко подобного рода ошибки возникают при совместной доработке конфигурации группой программистов. Очень часто программисты просто не знают технологии обменов (ну допустим он специализируется на написании отчетов/обработок и никогда не разбирались в обменах в принципе) и в проверках перед записью не ставят "загрушки" в виде:
Если ОбменДанными.Загрузка = Истина Тогда
Возврат;
КонецЕсли;
34. insurgut 208 27.12.13 09:18 Сейчас в теме
(26) skuratov_ab, проблема подчиненных элементов вообще очень больная. Настраивал правила обмена, вроде все красиво для единиц измерения прописано в правилах. И выгрузки тестовые делал все как надо. Но - когда объемы стали превышать тысячи карточек номенклатур при выгрузке за раз, начали непонятные вещи проскакивать в виде "Объект не найден" для единиц измерения номенклатуры.
Долго боролся, и правила менял, и поля поиска (поиск по GUID в принципе не подходил, т.к. 1 база обменивалась с 10-ью разными, в которых учет уже велся, и номенклатура могла заводится и там и там), проблема не решалась. В результате решение было найдено... В ПКО именно единиц измерения ставим галочку "Не запоминать выгруженные объекты". В результате объем выгрузки несколько возрастает, но сами объекты единиц измерения никуда не теряются.
Аналогично решилась проблема с договорами.
И опять же - вроде на начальном этапе все хорошо, и на небольших порциях, но когда на обмен летят огромные порции, и поиск осуществляется не только по GUID, но и по полям поиска - начинают всплывать подводные камни.
27. skuratov_ab 27.12.13 08:39 Сейчас в теме
(16) 3.14159, к примеру, гибнет файл или пакет обмена с новыми элементами справочника. При этом в посылающей базе соответствие уже есть, а в принимающей не возникло. В дальнейшем обмен элементы справочников уже не выгружает. т.к видит соответствие у себя. а у принимающей стороны соотетствия нет - и является как раз " объект не найден". Тоже возникает при НЕ синхронной чистке баз. когда в одной элемент уже удалили и он соответственно ушёл и из регистра, а в другой этот элемент использовали в документе.
Хотя утверждать что именно пункт 3 виноват в этом не стану. Что эта проблема именно в отсутствии записи элемента в регистре соответствия одной и той же базе.
30. 3.14159 94 27.12.13 09:01 Сейчас в теме
(27) skuratov_ab,
При этом в посылающей базе соответствие уже есть, а в принимающей не возникло. В дальнейшем обмен элементы справочников уже не выгружает. т.к видит соответствие у себя. а у принимающей стороны соотетствия нет - и является как раз " объект не найден".


в посылающей базе соответствия нету, пока обратно обмен не придет от приемника. пока подтверждения о приеме от источника не придет, тупо будет опять выгружаться при обмене. в принимающей стороне "объект не найден" - по причине отсутствия самого объекта - ссылка на обеъкт есть - а объекта нету. как в анекдоте по словарь русского языка - ".опа есть, а слова нету"
32. skuratov_ab 27.12.13 09:09 Сейчас в теме
(30) 3.14159, Верите , ли сударь, не исправляется. Обмены гоняются, всё нормально проходит, а " объект не найден" как были так и остаются. Т.е. идеальные конструкции заложенные в саму программу не срабатывают. Вот такое противоречие книг-инструкций и опыта эксплуатации. Нужен инструментарий админа. А то что руки у меня кривые - и спору нет, кривые.
35. 3.14159 94 27.12.13 09:21 Сейчас в теме
(32) skuratov_ab, согласитесь, что у вас "объект не найден" - это единичные случаи в результате каких-то сбоев. если нет, то нужно в первую очередь смотреть механизмы регистрации объектов в планах обмена, тем более если не РИБ, а через com-соединение и по правилам обмена, возможно это "косяки" в правилах или в коде
37. skuratov_ab 27.12.13 09:32 Сейчас в теме
(35) 3.14159, Да я согласен, что единичный, если у меня по номенклатуре 20000 позиций и из них кривых 15 - 20, в 3-4 разных базах, то конечно это единичный случай, но когда в самый неподходящий момент раздаётся визг или писк оператора или манайгера, что .... и надо срочно это исправить, то тогда извините е....вашу ..ть на всю эту конструкцию. Дело не в количестве. проблема есть, надо решать.
38. 3.14159 94 27.12.13 09:47 Сейчас в теме
(37) skuratov_ab, писал недавно "инструментарий" для сравнения ссылочных типов данных между базами РИБ через xml - отмечаются выбранные объекты метаданных (из состава выбранного плана обмена), выгружаются в xml. В базе-источнике ищется по УИД. Справочники, документы ищутся по ссылкам на наличие/отсутствие (сравнение по содержимому справочников и документов пока не допиливал), регистры накопления/сведений сравниваются наборами записей с отбором по всем возможным измерениям

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

как будет время и желание, оформлю в виде статьи
39. skuratov_ab 27.12.13 10:02 Сейчас в теме
(38) 3.14159, Во, это дело! Риба нет пока, но будет. Готов буду оттестировать
40. insurgut 208 27.12.13 10:24 Сейчас в теме
(38) 3.14159, не забудьте в статье описать о вреде полных прав пользователей, когда они любят запускать обработки поиска и удаления помеченных объектов... Ведь база убаленная РИБ может обмениваться только по одной организации, и не иметь множества документов, которые будут ссылаться на помеченную на удаление допустим номенклатуру. В результате удаления (с контролем как положено) в этой удаленной базе удаляться элементы, ссылки на которые есть в центральной базе. И мы легко от таких действий пользователей получим "Объект не найден", т.к. в центральной базе объект будет удален обменом без контроля ссылочной целостности.
41. 3.14159 94 27.12.13 10:30 Сейчас в теме
(40) про вред полных прав писать не буду :) обработка только ищет разницу и регистрирует объекты в плане обмена

"гранаты" пользователям с большим радиусом кривизны рук и удаление документов в главной при обмене с периферийной базой - это другое
42. insurgut 208 27.12.13 10:39 Сейчас в теме
(41) 3.14159, ясно :) Увы, многие имея обмены по риб даже и представления не имеют, что ссылочная целостность в периферийной базе и в центральной - две большие разницы, и уж тем более если периферийная только по определенной организации/подразделению/складу обменивается.
Хорошо бухгалтер там... но многие "программисты" не раз обращались с проблемой, и все говорили ничего не делали, а объекты пропали. Благо журнал регистрации никогда не врет, ну и бэкапы были, они и спасали :)
43. 3.14159 94 27.12.13 11:00 Сейчас в теме
(42) удаление объекта в "приемнике" при обмене в журнал регистрации не пишется), в журнале регистрации можно поискать только в "источнике"
44. insurgut 208 27.12.13 11:17 Сейчас в теме
(43) 3.14159, в базе А (центральная) имею кучу "Объект не найден" в справочнике Номенклатуры, открываю журнал регистрации, делаю отбор только по удалению, вижу, что Автообмен (имя пользователя, под которым обмен проходит) удалил элементы справочника допустим 27.12.2013 в 13:00...
Перехожу в базу Б (периферийная), открываю журнал регистрации, делаю отбор только по удалению, вижу пользователь Иванов сделал удаление объектов 27.12.2013 в 12:15 (позже выясняется, что он запускал обработку удаления помеченных объектов).

Не до конца понятно, что не пишется в журнал регистрации?
45. 3.14159 94 27.12.13 11:55 Сейчас в теме
(44) если база РИБ, то при обмене при удалении объекта в базе-"приемнике" событие в ЖР не пишется. В вашем случае у вас не РИБ, а универсальный обмен данными, хотя в (42) вы про РИБ писали. РИБ и универсальный обмен данными - это не одно и то же.
46. insurgut 208 27.12.13 13:45 Сейчас в теме
(45) 3.14159, может у вас настройки журнала специфические для уменьшения объема? Специально удалил пару внешних обработок в центральной базе. Прогнал обмен (РИБ) - в периферийной базе в журнале имею:
Данные. Удаление Зафиксирована 27.12.2013 15:29:30 (1100911829) Справочник. Внешние обработки <Объект не найден> (30:842d003048d961b811e2b0b22d37bbbb)
48. 3.14159 94 27.12.13 15:38 Сейчас в теме
(46) какая у вас конфигурация?

49. 3.14159 94 27.12.13 18:13 Сейчас в теме
(46) вы правы! событие в ЖР при удалении объектов при обмене пишется
22. 3.14159 94 26.12.13 11:04 Сейчас в теме
А бывают ситуации к примеру, когда есть 2 базы (вторая создана путем копирования первой с переименовыванием организации и других справочников), и нужно настроить выгрузку из этих баз в одну (назовем ее консолидированной). Как видите в последнем случае поиск по внутреннему идентификатору нужно уже исключать (иначе данные из одной программы будут перетираться данными другой)


тогда это уже "свои" правила и каким боком тут РС Соответствия объектов для обмена, если не идет поиск по УИД?
23. insurgut 208 26.12.13 11:07 Сейчас в теме
(22) 3.14159, как каким? Если по правилам успешно находится объект по полям поиска - соответствующая запись создается в регистре соответствия объектов для обмена, чтобы в следующий раз на поиск время не тратить.
24. 3.14159 94 26.12.13 11:09 Сейчас в теме
(23) в следующий раз в бардачной базе опять что-нибудь переименуют и опять будет "кривая" запись РС Соответствий обмена))

надо что-то менять в "консерватории"
25. integragirl 27.12.13 08:04 Сейчас в теме
У нас решено было ввести запрет для переименования контрагентов (в управляющей программе, в вашем случае в ут) для обычных пользователей, если есть движения по взаиморасчетам. Плюс при записи контрагента идет проверка уникальности связки ИНН + КПП.
С введением такого правила сильно пищали обычные пользователи, но потом смирились и теперь бардак в контрагентах сведен к минимому.
29. skuratov_ab 27.12.13 08:51 Сейчас в теме
Господа, а просветите по такому скользкому пункту. Когда я лазил по регистру соответствия, мне показалось что он состоит из 2 частей. "На вход" и " на выход". Т.е. "на выход" слева гуид данной базы, справа принимающей. а где-то ниже такое же соответствие, но наоборот. Гуид входящей - гуид текущей. В идеале, данные обеих строк должны быть идентичны. Я верно понял структуру регистра или мне показалось? Прошу прощения, конечно, у всех, тема реально одна из важнейших, но в данный момент нет возможности включиться в исследования
47. skuratov_ab 27.12.13 13:54 Сейчас в теме
В данном споре соглашусь с insurgut. вот именно так и бывает. И в журнал именно это и пишется. Уже и по 8 такие расследования вёл с жестокой покрой любителей " навести порядок в базе"
50. CheBurator 2712 27.12.13 21:47 Сейчас в теме
фигня какая-то.
у себя сделал просто.
при записи нового контрагента - всегда проверка на уникальность ИНН\КПП.
полный и безоговорочный запрет на создание контрагентов с незаполненым ИНН\КПП.
в резудтате проблема практически исчезла.
51. insurgut 208 28.12.13 21:21 Сейчас в теме
(50) CheBurator, увы, но в реалиях нашего региона - у разных контрагентов могут быть одинаковые ИНН/КПП :)
52. vaxhab 16 17.09.18 17:46 Сейчас в теме
Оставьте свое сообщение