1С удаление дублей

Как послать базу 1С через интернет программисту оглавление Настройка пользователей и их прав доступа

Поиск и удаление дублей в 1С:Бухгалтерия 8.3 (редакция 3.0)

2017-04-17T11:25:19+00:00

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

В 1С:Бухгалтерия 8.3 уже встроен механизм для поиска и устранения дублей. Это универсальная обработка «Поиск и удаление дублей», которая подходит для поиска дубликатов не только в номенклатуре и контрагентах, но и в других справочниках.

Рассмотрим её использование на примере справочника «Контрагенты».

Ситуация

1. Итак, у нас есть контрагент «Аэрофлот» в папке покупатели.

2. И его дубликат (полная копия), случайно заведенная в папке поставщики. ИНН у обоих элементов совершенно одинаковый.

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

Открываем обработку

3. Чтобы открыть обработку для поиска дублей нужно зайти в меню «Все функции»( Если у вас его нет — вам сюда. ).

И выбрать среди всех обработок «Поиск и удаление дублей».

Настраиваем условия

4. Форма обработки перед нами. Укажем область для поиска дублей, нажав на три точки в поле «Искать в».

5. Выберем «Контрагенты» и нажмем кнопку «Выбрать».

6. Нажмем на кнопку троеточие в поле «Пометка удаления равно нет»:

7. И добавим ещё одно правило отбора (кнопка «Добавить новый элемент»).

8. В качестве поля для отбора выберем …

9. … выберем ИНН.

10. В качестве вида сравнения укажем «Заполнено» и нажмём кнопку ОК:

Таким образом мы будем осуществлять поиск среди всех контрагентов, у которых заполнен ИНН.

11. Осталось задать критерий для сравнения. Нажмите пункт «Наименование совпадает по похожим словам».

12. В открывшихся правилах поиска дублей снимите галку рядом с полем «Наименование».

13. И установите галку рядом с полем «ИНН» и выберите в качестве правила для ИНН пункт «Совпадает». Нажмите кнопку «Выбрать».

Ищем дубли

14. Внизу окна нажмите кнопку «Найти дубли».

15. А вот и наш аэрофлот. Вернее два аэрофлота. И места использования каждого из них. Тот аэрофлот, рядом с которым зеленая стрелка, 1С считает главным и при удалении дублей останется именно он. Если выбор 1С оказался ошибочен — выделите другой элемент и нажмите кнопку «Отметить как оригинал». Установите галки рядом с элементами, которые по-вашему мнению являются дублями главных элементов. Теперь нажмите кнопку «Удалить дубли».

16. Обработка рапортует нам, что дубли объединены в один элемент и теперь вместо двух аэрофлотов у нас один, что и требовалось получить!

Мы молодцы, на этом всё

Кстати, подписывайтесь на новые уроки…

Важное замечание

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

Обработка позволяет сравнивать поля друг с другом всего по двум правилам (пункт «Сравнивать»):

  • полное совпадение
  • совпадение по похожим словам, причём мы не можем настраивать эту похожесть

Всё. Других вариантов нет.

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

Например, нам не удастся настроить её так, чтобы она посчитала дублями все элементы, в которых встречается нужное нам слово.

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

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

То есть, если вы в поле «Отбирать» поставили «Все элементы» и дубли не нашлись — смысл в настройке поля «Отбирать» нет. Оно позволяет только сузить результаты, но не расширить.

Уфф.., надеюсь я кому-то помог сэкономить время. До меня самого почти час доходило что же я делаю не так.

А тем кому нужен более настраиваемый поиск по дублям я советую подсистему «Инструменты разработчика».

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

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

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

Как послать базу 1С через интернет программисту оглавление Настройка пользователей и их прав доступа

Если в программе произошло задвоение элементов, необходимо объединить их с помощью обработки «Поиск и удаление дублей»

Первым шагом необходимо перейти в меню «Все функции». Для этого открываем главное меню и переходим в пункт «Сервис-Параметры»

Далее устанавливаем галочку «Отображать команду «Все функции»», нажимаем «Применить» и «ОК»

Затем опять открываем главное меню и у нас появляется возможность перейти в меню «Все функции»
В открывшемся списке раскрываем пункт «Обработки»
И в списке, по алфавиту, находим обработку «Поиск и удаление дублей»
Далее у нас открывается окошко самой обработки, где в поле «Искать в» нужно выбрать справочник или документ, в котором необходимо найти и удалить дубли. В поле «Отбирать» можно установить дополнительные параметры отбора, а в поле «Сравнивать» можно выбрать параметры для сравнения.
После выбора всех параметров поиска дублей необходимо нажать кнопку «Найти дубли» и в форме ниже программа отобразит дубли (если таковые имеются) по критериям поиска.
На данном рисунке видно, что в справочнике «Физические лица» есть 2 дубля (это 2 одинаковых физ. Лица). Для того, чтобы удалить ненужный элемент, необходимо определить, какой является оригиналом, выделить его и по кнопке «Отметить как оригинал» отметить его. После этого, при нажатии кнопки «Удалить дубли», все отмеченные элементы будут помечены на удаление и заменены во всех местах использования на оригиналы (отмечены стрелкой)

При работе с программой 1С может так случиться, что пользователь по ошибке вносит одинаковые элементы в справочники программы. Это создает неудобства в работе и путаницу в данных. Чаще всего подобные накладки случаются со справочниками «Контрагенты» и «Номенклатура». Они достаточно объемные, поэтому в них могут и кроются такие недочеты.

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

Для поиска и удаления дублей, в программе 1С Бухгалтерия 8.3 предусмотрена одноименная обработка. Рассмотрим принцип ее работы.

Обработка поиск и удаление дублей

Открыть обработку можно в разделе меню «Администрирование» — «Обслуживание» перейдя по гиперссылке «Поиск и удаление дублей».

Рис.1 Обслуживание

В открывшемся окне необходимо указать область поиска, заполнив поле «Искать в:».

Рис.2 Поиск по контрагентам

Из предложенного списка выбираем нужную область поиска дублей. В нашем примере проверим сначала справочник «Контрагенты».

Рис.3 Установка правил поиска

Перейдя по гиперссылке в поле «Сравнить», задаем правила поиска дублей для выбранного объекта. По умолчанию установлен поиск по наименованию – по схожим словам. Но пользователь может написать разные наименования, например, полное и сокращенное – ИП или Индивидуальный предприниматель, полные данные контрагента (физического лица) – фамилию, имя, отчество, или указать только инициалы.

В этом случае можно сопоставить элементы по каким-то другим реквизитам. Для справочника «Контрагенты» – это ИНН, КПП, для справочника «Номенклатура» – Артикул и т.п.

Рис.4 Установка области поиска

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

Рис.5 Отметка дублирующих записей

Элемент с наибольшим количеством записей программа автоматически определяет как оригинал, выделив его синей стрелочкой. Если какой-то из объектов мы обрабатывать не будем, галочку с него надо снять. Или если мы хотим изменить объект, на который будут перенесены все данные с другого объекта при его удалении, то отметим его, нажав кнопку «Отметить как оригинал».

Рис.6 Поиск оригинальных записей

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

Рис.7 Результат объединения контрагентов

Мы можем закрыть обработку или, нажав кнопку «Новый поиск», повторить поиск дулей в других местах программы.

Для примера найдем дубли элементов в справочнике «Номенклатура», проведя сравнение по артикулу и наименованию.

Рис.8 Поиск и удаление дублей в списках номенклатуры

Аналогично предыдущему описанию ищем и удаляем дубли.

Рис.9 Результат удаления

Посмотрим, что же происходит с ними в справочнике. Зайдем в справочник «Контрагенты» (раздел меню «Справочники» — «Покупки и продажи»). Дубль-двойник помечен на удаление. Помимо этого мы видим, что контрагент был внесен дважды, но с разным наименованием. Внимательный пользователь бы заметил, что ИНН у элемента двойника выделен красным цветом. В программе имеется контроль совпадений контрагентов по ИНН.

Рис.10 Результат по контрагентам

Перейдя в справочник «Номенклатура» (раздел меню «Справочники» — «Покупки и продажа»), выполним поиск по наименованию, т.к. зрительно похожее название почему-то не отображалось. Что мы видим? У одного из элементов справочника перед названием стоит пробел – именно поэтому пользователь не может увидеть этот элемент в списке, просматривая его в алфавитном порядке. Все символы идут обычно в начале списка. Не найдя этот элемент, пользователь создал новый. Такая ситуация встречается довольно часто.

Рис.11 Результат по номенклатуре

Так, используя штатный функционал программы, можно очистить справочники от таких элементов-двойников. После установки пометки удаления на них, удаление производится обычным способом, через «Удаление помеченных объектов» в разделе меню «Администрирование» — «Сервис». При больших объемах данных периодически можно проверять справочники во избежание путаницы в учете и захламления информационной базы ненужными элементами.

// Процедура предназначена для преобразования номера документа.
//
// Параметры:
// Документ — (ДокументСсылка), документ, чей номер надо получить для печати.
//
// Возвращаемое значение.
// Строка — номер документа для печати
//
Функция ПолучитьНомерНаПечать(Документ, МассивПрефиксов = Неопределено, ПечатьПрефиксовРИБ = Истина) Экспорт
Если Документ = Неопределено Тогда
Возврат 0;
КонецЕсли;
ПечатьПрефиксовРИБ = ОбщегоНазначения.ПолучитьЗначениеПеременной(«ПечатьПрефиксаРИБ») И ПечатьПрефиксовРИБ;
Номер = СокрЛП(Документ.Номер);
МетаданныеДокумента = Неопределено;
Если ТипЗнч(Документ) <> Тип(«ВыборкаИзРезультатаЗапроса»)
И ТипЗнч(Документ) <> Тип(«Структура») Тогда
МетаданныеДокумента = Документ.Метаданные();
Если МетаданныеДокумента.Реквизиты.Найти(«НомерВходящегоДокумента») <> Неопределено Тогда
Если ЗначениеЗаполнено(Документ.НомерВходящегоДокумента) Тогда
Номер = СокрЛП(Документ.НомерВходящегоДокумента);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПрефиксДоверенности = «»;
Префикс = «»;
Если ПечатьПрефиксовРИБ Тогда
МассивПрефиксовРИБ = ПолучитьМассивПрефиксовРИБ();
КонецЕсли;
Если МассивПрефиксов = Неопределено Тогда
Организация = Неопределено;
Если ТипЗнч(Документ) = Тип(«ВыборкаИзРезультатаЗапроса»)
ИЛИ ТипЗнч(Документ) = Тип(«Структура») Тогда
Организация = Документ.Организация;
Иначе
Если МетаданныеДокумента.Реквизиты.Найти(«Организация») <> Неопределено Тогда
Организация = Документ.Организация;
КонецЕсли;
Если МетаданныеДокумента.Имя = «Доверенность» Тогда
ПрефиксДоверенности = «Д»;
КонецЕсли;
КонецЕсли;
Если ПечатьПрефиксовРИБ Тогда
// если печатаем префиксы РИБ в документах — не добавляем их в массив удаляемых префиксов
МассивПрефиксовДляОбхода = СформироватьМассивПрефиксовПоОрганизации(Организация);
Иначе
МассивПрефиксовДляОбхода = СформироватьМассивПрефиксовДляРИБИОрганизации(Организация);
КонецЕсли;
Иначе
Если ПечатьПрефиксовРИБ Тогда
// если печатаем префиксы РИБ в документах — не добавляем их в массив удаляемых префиксов
Для Каждого ПрефиксИзМассива Из МассивПрефиксов Цикл
Если МассивПрефиксовРИБ.Найти(ПрефиксИзМассива) = Неопределено
И МассивПрефиксовДляОбхода.Найти(ПрефиксИзМассива) = Неопределено Тогда
МассивПрефиксовДляОбхода.Добавить(ПрефиксИзМассива);
КонецЕсли;
КонецЦикла;
Иначе
МассивПрефиксовДляОбхода = МассивПрефиксов;
КонецЕсли;
КонецЕсли;
ПрефиксРИБ = «»;
Если ПечатьПрефиксовРИБ Тогда
// определим, какие префиксы РИБ следует выводить на печать и удалим эти префиксы из номера
Для Каждого ПрефиксРИБИзМассива Из МассивПрефиксовРИБ Цикл
Если Найти(Номер, ПрефиксРИБИзМассива) = 1 Тогда
Номер = Сред(Номер, СтрДлина(ПрефиксРИБИзМассива) + 1);
ПрефиксРИБ = ПрефиксРИБ + ПрефиксРИБИзМассива;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ПрефиксДоверенности <> «» Тогда
МассивПрефиксовДляОбхода.Добавить(ПрефиксДоверенности);
КонецЕсли;
Если НЕ МетаданныеДокумента = Неопределено Тогда
Если МетаданныеДокумента.Имя = «НалоговаяНакладная»
ИЛИ МетаданныеДокумента.Имя = «Приложение2КНалоговойНакладной» Тогда
ТекМесяц = ‘20000101’;
Для Инд = 1 По 12 Цикл
МассивПрефиксовДляОбхода.Добавить(«Н»+ПолучитьМесячныйПрефиксНалоговыхДокументов(ТекМесяц));
МассивПрефиксовДляОбхода.Добавить(«П»+ПолучитьМесячныйПрефиксНалоговыхДокументов(ТекМесяц));
ТекМесяц = ДобавитьМесяц(ТекМесяц, 1);
КонецЦикла;
ТекМесяц = ‘20000101’;
Для Инд = 1 По 12 Цикл
МассивПрефиксовДляОбхода.Добавить(ПолучитьМесячныйПрефиксНалоговыхДокументов(ТекМесяц));
ТекМесяц = ДобавитьМесяц(ТекМесяц, 1);
КонецЦикла;
МассивПрефиксовДляОбхода.Добавить(«Н»);
МассивПрефиксовДляОбхода.Добавить(«П»);
МассивПрефиксовДляОбхода.Добавить(«U»);
МассивПрефиксовДляОбхода.Добавить(«V»);
МассивПрефиксовДляОбхода.Добавить(«W»);
КонецЕсли;
КонецЕсли;
Для Каждого ТекущийПрефикс ИЗ МассивПрефиксовДляОбхода Цикл
// удаление префикса из номера документа
Если Найти(Номер, ТекущийПрефикс)=1 Тогда
Номер = Сред(Номер, СтрДлина(ТекущийПрефикс)+1);
КонецЕсли;
// так же, может остаться «минус» впереди
Если Лев(Номер, 1) = «-» Тогда
Номер = Сред(Номер, 2);
КонецЕсли;
// удаление ведущих нулей
Пока Лев(Номер, 1)=»0″ Цикл
Номер = Сред(Номер, 2);
КонецЦикла;
КонецЦикла;
УдалитьПрефиксОбособленногоПодразделенияИзНомера(Документ, МетаданныеДокумента, Номер);
Если ПечатьПрефиксовРИБ И ПрефиксРИБ <> «» Тогда
Номер = ПрефиксРИБ + Номер;
КонецЕсли;
Возврат Номер;
КонецФункции // ПолучитьНомерНаПечать()

1С удаление дублей

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *