Имя: Пароль:
1C
 
Поиск и замена дублирующихся елементов справочников в 1С 7.7
0 burrya
 
11.02.08
12:08
Есть ли обработки в 7.7 аналогичные обработке Поиск и замена дублирующихся елементов справочников в 1С 8. Спасибо.
1 lea_220400
 
11.02.08
12:10
в стандартной нет, фпоиск, если БД SQL вот примерчег с мисты, ходи фконец
Книга знаний: Эффективное использование MSSQL с помощью ВК 1C++
2 Dm81
 
11.02.08
12:10
Можно через ТЗ, как вариант
3 burrya
 
11.02.08
14:01
А что иммеется ввиду под ТЗ?
4 КонецЦикла
 
11.02.08
14:02
Вот это можно переделать на свой вкус
http://infostart.ru/projects/1096/
5 sapphire
 
11.02.08
14:04
Чума... Тупейший запрос на встроенном языке.
regprint
6 Альберт_Уфа
 
11.02.08
14:36
на 8.0 легко можно написать свой запрос по поиску дублей. на вскидку так:
ВЫБРАТЬ
   Номенклатура1.Ссылка,
   Номенклатура2.Ссылка КАК Ссылка1
ИЗ
   Справочник.Номенклатура КАК Номенклатура1
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура2
       ПО Номенклатура1.Ссылка <> Номенклатура2.Ссылка
           И Номенклатура1.Наименование = Номенклатура2.Наименование
7 Альберт_Уфа
 
11.02.08
14:37
тьфу ты блин.... ты хочешь в 7.7 сделать? сейчас напишу, на прошлой неделе делал.
8 Альберт_Уфа
 
11.02.08
14:44
спр=СоздатьОбъект("Справочник.Дисконты");
   ТЗ=СоздатьОбъект("ТаблицаЗначений");
   ТЗ.НоваяКолонка("Количество");
   ТЗ.НоваяКолонка("Наименование");
   спр.выбратьЭлементы();
   Пока спр.получитьЭлемент()=1 цикл
       Если Лев(СокрЛП(спр.Наименование),2) = "66" Тогда
           ТЗ.НоваяСтрока();
           ТЗ.Наименование = Спр.Наименование;
           ТЗ.Количество   = 1;
       КонецЕсли;
   КонецЦикла;              
   Всего = 0;
   ТЗ.Свернуть("Наименование","Количество");  
   ТЗ.Сортировать("Наименование");
   Для сч = 1 по ТЗ.КоличествоСтрок() цикл
       Наименование = ТЗ.ПолучитьЗначение(сч,"Наименование");
       Количество = ТЗ.ПолучитьЗначение(сч,"Количество");
       Если Количество > 1 Тогда
           Сообщить("Дисконт: " + СокрЛП(Наименование) + " в количестве: " + СокрЛП(Количество) + " шт.");
           Всего = Всего + 1;
       КонецЕсли;
   КонецЦикла;  
   Сообщить("Всего " + Всего + " одинаковых");
9 burrya
 
11.02.08
14:59
Ребята давайте внесем поправочку. Кто знаком с обработкой "Поиск и замена дублирующихся елементов справочников" в 1С 8, знает, что эта обработка позволяет:
1. Отискать все элементы справочника с одинаковым реквизитом, к примеру поиск осуществляется по одинаковому наименованию. Например ищем в справочнике контрагентов всех контрагентов с наименованием "Василий".
2. Из всех найденных элементов мы помечаем один как "Правильный".
3. Дальше выполняем замену всех "неправильных" элементов на "правильный" по всем объектам системы(документам, спрамвочникам, операциям и т.д).
10 Ёпрст2
 
11.02.08
15:00
repval.ert + небольшая заточка напильником ...
11 sapphire
 
11.02.08
15:04
(9) Поиск дублей - тупейший запрос,
дальше, берешь repval.ert с диска итс, переписываешь по открытие извне
(добавляешь Форма.Параметр и всё!
12 sapphire
 
11.02.08
15:04
(10) у дураков мысли сходятся:)
13 sapphire
 
11.02.08
15:12
Поиск дублей - тупо запросом с группировками по уникальному полю и элементам, функцией Счетчик() - выгружаем запрос в ТЗ, добавляем Колонку - КоличествоСсылок.
Делаем копию ТЗ ТЗ1, очищаем, для записи элементов.
Проверяем счетчик на не нуль для верхней группировки,
для нижней группировки (Элемент) получаем все ссылки через
НайтиСсылки(<?>,) заполняем ТЗ
Если Счетчик верхней группировки=1 - пропускаем!
14 Торин
 
11.02.08
15:25
м-да...
Можно уважаемые коллеги и мои три копейки. Я делал это так:
1.на форму кладется элемент диалога типа "список с пометками" который через объект "метаданные" заполняется перечнем реквизитов справочника  
2. справочник выгружается в ТЗ(таблицу значений).
3. Добавляется колонка - "счетчик"
4. в эту колонку записывается число "1"
5. В зависимости от выбранного в списке таблица сворачивается по совокупности колонок.
6. все строки в которых значение счетчика равно "1"  удаляются
7. оставшиеся строки - это и есть дубли. Значение счетчика - количество повторений.

ВСЕ!
15 burrya
 
11.02.08
15:46
repval.ert - то что надо спасибо друзья, это то, чего я хотел :)
16 rcs
 
11.02.08
15:52
Главная проблема подобной обработки в 7.7 - в ней невозможно заменить ссылки в движениях документа, как в 8, нужно перепроводить документы, а это не есть хорошо.
17 burrya
 
19.02.08
12:52
(16) Да, это серьезная проблема. А какие способы есть для "полной замены", т.е. и по ссылкам в движениях тоже.
18 Mikeware
 
19.02.08
13:07
(14) тот ли это Торин, с которым я знаком? Хня написана.
19 Mikeware
 
19.02.08
13:08
(17) Прямой запрос. Только итоги потом пересчитывать приходится...
20 burrya
 
19.02.08
13:11
(19) Имеешь ввиду 1С++