Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
18 Янв 2017, 04:38
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Удаление дублирующихся записей в справочнике  (Прочитано 2174 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Electron

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-11-17
  • Сайт: 
Добрый день, помогите пожалуйста разобраться с задачей, а то мозгов уже не хватает))
В общем есть справочник Дисциплины, в котором уже имеются повторяющиеся по наименованию элементы, собственно нужно от них избавиться) Набросал такой код, где на входе формируется массив всех элементов "до", а на выходе получаем массив без лишних элементов "после", но это массивы, а как выбрать тот элемент справочника, который нужно удалить, или сделать сравнение готового массива со справочником - придумать не могу, сможете помочь? Заранее спасибо)

	МассивДисцилин = Новый Массив;
Выборка = Справочники.Дисциплины.Выбрать();
Пока Выборка.Следующий() = 1 Цикл
МассивДисцилин.Добавить(Выборка.Наименование);
КонецЦикла;

Для Каждого ЭлементМассива Из МассивДисцилин Цикл
Сообщить("До: " + ЭлементМассива);
КонецЦикла;

ТекущийИндекс = 0;
ВсегоЭлементов = МассивДисцилин.Количество();
Пока ТекущийИндекс < ВсегоЭлементов Цикл
НовыйИндекс = ТекущийИндекс + 1;
Пока НовыйИндекс < ВсегоЭлементов Цикл
Если МассивДисцилин[НовыйИндекс] = МассивДисцилин[ТекущийИндекс] Тогда
МассивДисцилин.Удалить(НовыйИндекс);
ВсегоЭлементов = ВсегоЭлементов - 1;
Иначе
НовыйИндекс = НовыйИндекс + 1;
КонецЕсли;
КонецЦикла;
ТекущийИндекс = ТекущийИндекс + 1;
КонецЦикла;

Для Каждого ЭлементМассива Из МассивДисцилин Цикл
Сообщить("После: " + ЭлементМассива);
КонецЦикла;

Нынешний результат отработки:

Последний раз редактировалось: Electron; 17 Ноя 2015, 13:48


Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
коды в элементах отличаются?

Оффлайн Electron

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-11-17
  • Сайт: 
коды в элементах отличаются?
vitasw, да - коды разные)

Оффлайн Kironten

  • *****
  • Сообщений: 712
  • РЕПУТАЦИЯ: 153
  • КПД: 21%
  • Регистрация: 2013-08-12
  • Сайт: 
  • Профессия: Ученик 1С
коды в элементах отличаются?
vitasw, да - коды разные)
А как вы планируете определять, какие надо удалять, если наименования одинаковые, а коды разные?

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
В качестве примера:

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

РезультатЗапроса = Запрос.Выполнить();

Оффлайн spinnen.87

  • *
  • Сообщений: 15
  • РЕПУТАЦИЯ: 5
  • КПД: 33%
  • Регистрация: 2015-10-06
    • Skype: Spinnen.87
  • Сайт: 
  • Профессия: Ученик 1С
Если не подходят уже готовые обработки поиска и замены дублей, то почему не открыть ее в конфигураторе и не попробовать подправить под себя?
Получил помощь - скажи СПАСИБО.

Оффлайн Electron

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-11-17
  • Сайт: 
А как вы планируете определять, какие надо удалять, если наименования одинаковые, а коды разные?
Ну так вот для этого и крутил массивы, правда дальше дело не пошло))

В качестве примера:
Завтра повникаю в ваш пример)

Если не подходят уже готовые обработки поиска и замены дублей, то почему не открыть ее в конфигураторе и не попробовать подправить под себя?
Готовые пробовал - слишком сложно что-либо понять, тем более новичку со стажем не более месяца))
Легче наверное по новому написать, но вот вроде суть проста, скорей всего отделаться можно парой строк, но не догоняю)

Оффлайн spinnen.87

  • *
  • Сообщений: 15
  • РЕПУТАЦИЯ: 5
  • КПД: 33%
  • Регистрация: 2015-10-06
    • Skype: Spinnen.87
  • Сайт: 
  • Профессия: Ученик 1С
Раз новичок как и я, то легче воспользоваться помощью знающих. Заплатить за разработку обработки.
Если я правильно понимаю, то на дубли могут ссылаться другие объекты и нужно еще заменить ссылки в этих объектах с удаленных на оставшиеся.

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

Оффлайн Electron

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-11-17
  • Сайт: 
Раз новичок как и я, то легче воспользоваться помощью знающих. Заплатить за разработку обработки.
Если я правильно понимаю, то на дубли могут ссылаться другие объекты и нужно еще заменить ссылки в этих объектах с удаленных на оставшиеся.

Как вариант. Не получал массив нужных элементов, а наоборот тех которые нужно удалить.
Затем прогнать справочник дисциплин, если нашел элемент с полученного массива, то пометить на удаление.
И в массив нужно записывать уникальный ваш код. они же у вас разные.
Что, платить за домашнее задание? Оо Не диплом, ни зачёт, просто одно из многих домашних заданий)))
Насчёт ссылок не думаю, в любом случае пока что нужно только удалить дублирующиеся записи)
Сейчас подумаю над вашими словами)
Добавлено: 18 Ноя 2015, 10:12

В общем покрутил предложенные выше варианты, но ничего не смог сделать...(
Добавлено: 18 Ноя 2015, 12:18

Может вообще всё это можно реализовать один небольшим запросом? Имеется справочник Дисциплины с двумя реквизитами: код и наименование, всё)

Последний раз редактировалось: Electron; 18 Ноя 2015, 12:18. Причина: Объединение сообщений

Оффлайн spinnen.87

  • *
  • Сообщений: 15
  • РЕПУТАЦИЯ: 5
  • КПД: 33%
  • Регистрация: 2015-10-06
    • Skype: Spinnen.87
  • Сайт: 
  • Профессия: Ученик 1С
Аааа... Раз домашнее задание, то конечно...
Добавлено: 18 Ноя 2015, 21:19

Не знаю может и ошибка в коде. Я только постигаю азы, как и Вы.

но типа этого, если сохраните артиклы совпадающих элементов в массив
Выборка2 = Справочники.Дисциплины.Выбрать();

Пока Выборка2.Следующий() Цикл
СправочникДисциплин=Выборка2.ПолучитьОбъект();

Для Каждого ЭлементМассива Из МассивДисцилинАртикул Цикл
Если  ЭлементМассива=СправочникДисциплин.артикул Тогда
СправочникДисциплин.ПометкаУдаления = Истина;
СправочникДисциплин.Записать();
КонецЕсли;

КонецЦикла;

Добавлено: 18 Ноя 2015, 21:30

Опять же незнаю верно или нет
	Выборка = Справочники.Дисциплины.Выбрать();

Пока Выборка.Следующий() Цикл
СправочникДисциплин=Выборка.ПолучитьОбъект();
Пока Выборка.Следующий()+1 Цикл
СправочникДисциплин2=Выборка.ПолучитьОбъект();
Если СправочникДисциплин.наименование=СправочникДисциплин2.наименование Тогда
СправочникДисциплин2.ПометкаУдаления = Истина;
СправочникДисциплин2.Записать();
                         Сообщить(СправочникДисциплин2.наименование+" Помечен на удаление.");
конецЕсли;
КонецЦикла;
КонецЦикла;

Получил помощь - скажи СПАСИБО.

Последний раз редактировалось: spinnen.87; 18 Ноя 2015, 21:30. Причина: Объединение сообщений


Теги:
 

Реквизит "ГоловнойКонтрагент" в справочнике "Контрагенты"

Автор SergWolf07Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 5842
Последний ответ 28 Авг 2011, 19:12
от SergWolf07
Удаление помеченных объектов ("Не удалось записать "Контактная информация"")

Автор SnakeyРаздел Пользователям "1С - Предприятие 8"

Ответов: 5
Просмотров: 5218
Последний ответ 08 Янв 2015, 09:15
от Sanario
Удаление папки "Темп"

Автор TATIZРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1059
Последний ответ 11 Мар 2015, 13:45
от дфтын
Отсутствие документов помеченных на удаление в обработке удаления помеченных

Автор ak47Раздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 2135
Последний ответ 06 Июн 2013, 11:47
от Совёнок
Не могу найти "Удаление помеченных объектов"

Автор LeviathanРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 7
Просмотров: 2277
Последний ответ 14 Янв 2016, 06:03
от cska-fanat-kz

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
155 Сообщений
alex0402
74 Сообщений
alexandr_ll
38 Сообщений
crow1983
31 Сообщений
LexaK
29 Сообщений
MuI_I_Ika MuI_I_Ika
26 Сообщений
sertak sertak
23 Сообщений
BuhRust
18 Сообщений
дфтын дфтын
17 Сообщений
Vzonder
16 Сообщений

* Кто онлайн

  • Точка Гостей: 178
  • Точка Скрытых: 0
  • Точка Пользователей: 1
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 

Dellos Catering - выездной ресторан кейтеринг по всему Миру
SimplePortal 2.3.5 © 2008-2012, SimplePortal