Помогите удалить дубли штрих-кодов

1. habzpo 30.01.12 23:03 Сейчас в теме
помогите разобраться с кодом, что то не работает как надо!!!

НМ = СоздатьОбъект("Справочник.Номенклатура");
НМ.ВыбратьЭлементы();
Пока НМ.ПолучитьЭлемент() =1 Цикл
ЕИ = СоздатьОбъект("Справочник.Единицы");
БЕ = НМ.БазоваяЕдиница;
ЕИ.ИспользоватьВладельца(НМ.ТекущийЭлемент());
ЕИ.ВыбратьЭлементы();
Пока ЕИ.ПолучитьЭлемент() = 1 Цикл
Если (ЕИ.ШтрихКод = БЕ.ШтрихКод) и (ЕИ.Код<>БЕ.Код) Тогда
ЕИ.Удалить(1);
КонецЕсли;
КонецЦикла;
КонецЦикла;

(не выполняется условие!)
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. dusha0020 1120 30.01.12 23:30 Сейчас в теме
Запомните код номенклатуры в котором точно есть дубль допустим "555555555"
Дальше так:
НМ = СоздатьОбъект("Справочник.Номенклатура"); 
НМ.ВыбратьЭлементы(); 
Пока НМ.ПолучитьЭлемент() =1 Цикл 
ЕИ = СоздатьОбъект("Справочник.Единицы"); 
БЕ = НМ.БазоваяЕдиница;
Если НМ.Код = "55555555" Тогда
ЕИ = ЕИ;//В этом месте ставьте точку останова в отладчике.
КонецЕсли; 
ЕИ.ИспользоватьВладельца(НМ.ТекущийЭлемент()); 
ЕИ.ВыбратьЭлементы(); 
Пока ЕИ.ПолучитьЭлемент() = 1 Цикл 
Если (ЕИ.ШтрихКод = БЕ.ШтрихКод) и (ЕИ.Код<>БЕ.Код) Тогда 
ЕИ.Удалить(1); 
КонецЕсли; 
КонецЦикла; 
КонецЦикла;
Показать

Поймайте Вашу позицию в точке останова, а затем по F8 шагами пройдитесь по коду выведя значения переменных ЕИ.ШтрихКод, БЕ.ШтрихКод, ЕИ.Код, и БЕ.Код в оконо отладки. Там и увидите почему...
10. habzpo 31.01.12 00:37 Сейчас в теме
вот то что получилось, но при таком условии удаляется основная еденица и повтор штрихкода!

//*******************************************
Процедура Сформировать()
НМ = СоздатьОбъект("Справочник.Номенклатура");
НМ.ВыбратьЭлементы();
Пока НМ.ПолучитьЭлемент() =1 Цикл
ЕИ = СоздатьОбъект("Справочник.Единицы");
БЕ = НМ.БазоваяЕдиница;
Сообщить("БЕ "+ БЕ );
ЕИ.ИспользоватьВладельца(НМ.ТекущийЭлемент());
Сообщить(НМ.ТекущийЭлемент());
ЕИ.ВыбратьЭлементы();
Пока ЕИ.ПолучитьЭлемент() = 1 Цикл
Сообщить("ЕИ.ШтрихКод =" + ЕИ.ШтрихКод + "***** " + БЕ.ШтрихКод+ "---ЕИ.код=" + ЕИ.код + "--- БЕ.код=" + БЕ.код );
Если СокрЛП(ЕИ.ШтрихКод) = СокрЛП(БЕ.ШтрихКод) Тогда
//Если (ЕИ.ШтрихКод = БЕ.ШтрихКод) и (ЕИ.Код<>БЕ.Код) Тогда
Сообщить("Удалить");
ЕИ.штрихКод = "";
ЕИ.Записать();
//ЕИ.Удалить(1);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
11. dusha0020 1120 31.01.12 00:48 Сейчас в теме
НМ = СоздатьОбъект("Справочник.Номенклатура"); 
НМ.ВыбратьЭлементы(); 
Пока НМ.ПолучитьЭлемент() =1 Цикл 
ЕИ = СоздатьОбъект("Справочник.Единицы"); 
БЕ = НМ.БазоваяЕдиница; 
ЕИ.ИспользоватьВладельца(НМ.ТекущийЭлемент()); 
ЕИ.ВыбратьЭлементы(); 
Пока ЕИ.ПолучитьЭлемент() = 1 Цикл 
Если (ЕИ.ШтрихКод = БЕ.ШтрихКод) и (ЕИ.ТекущийЭлемент()<>БЕ) Тогда 
ЕИ.Удалить(1); 
КонецЕсли; 
КонецЦикла; 
КонецЦикла;
Показать
12. habzpo 31.01.12 02:03 Сейчас в теме
(11) dusha0020, Данный код ничего не меняет с этими долбаными штрихкодами. как было их два одинаковых так и осталось! Я уже башкой об стену начинаю биться, утро уже скоро, а база не готова!! HELP
2. Oracll 30.01.12 23:16 Сейчас в теме
Сделайте 2 условия:

Если (ЕИ.ШтрихКод = БЕ.ШтрихКод) тогда
Если (ЕИ.Код<>БЕ.Код) Тогда
...

и вы поймете какое не выполняется. а еще пользуйтесь отладчиком, там вам будет еще понятнее.
4. habzpo 31.01.12 00:27 Сейчас в теме
ЕИ.Код<>БЕ.Код таких вообще нет кодов!!!
5. MaxDavid 127 31.01.12 00:29 Сейчас в теме
Частенько сравнение строк не срабатывает из-за того, что не используется СокрЛП()
7. habzpo 31.01.12 00:31 Сейчас в теме
(5) MaxDavid, Это я уже исправил, поставил СокрЛП()
6. habzpo 31.01.12 00:29 Сейчас в теме
смысл в том, что в справочнике еденицы записалось двойное значение штрихкода для каждой позиции номенклатуры, и мне их надо програмно удалить, я не могу удалить повторное значение основоного штрихкода, получается что удаляется сразу оба значени и остается только то что было третье или вообще пустое место!
8. habzpo 31.01.12 00:33 Сейчас в теме
я только не пойму для чего такое условие ЕИ.Код<>БЕ.Код тут нет кода у справочника единиц! как быть в подобной ситуации, чтобы удалить именно дубль штрихкода и он остался как основная еденица , модет вам мою базу надо?
9. habzpo 31.01.12 00:34 Сейчас в теме
вот ссылка на базу http://file.sibnet.ru/get/?id=1061313 пароль ("https://forum.infostart.ru") или ("forum.infostart.ru")
13. Quick_Loader 31.01.12 09:40 Сейчас в теме
Обработка была уже готовая на инфостарте, поищи
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот