Как переподчинить единицу цены другому элементу Номенклатуры
noviptr
13.06.2009 - 08:56
|
После предположительно сбоя в базе, для некоторых элементов номенклатуры при выписке документов стало выскакивать "Единица цены принадлежит другому элементу" написал обработку для проверки проверяющую совпадение владельца единицы цены с владельцем цены, получил список товаров с типом цены и владельцем ед.изм этой цены. Как програмно исправить? (используются только базовые цены, товар в метрах или штуках. поробовал: Спр = СоздатьОбъект("Справочник.Номенклатура"); Еиз = СоздатьОбъект("Справочник.Единицы"); Цен= СоздатьОбъект("Справочник.Цены"); ТЦен= СоздатьОбъект("Справочник.ТипыЦен"); СпрВл = СоздатьОбъект("Справочник.Номенклатура"); СпрОКЕИ = СоздатьОбъект("Справочник.ОКЕИ"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент()=1 Цикл Если Спр.ЭтоГруппа()=1 Тогда Продолжить; КонецЕсли; Наимен=Спр.Наименование; БазЕд=""+Спр.БазоваяЕдиница; Цен.ИспользоватьВладельца(Спр.ТекущийЭлемент()); Цен.ВыбратьЭлементы(); Цен.ИспользоватьДату(ТекущаяДата()); Пока Цен.ПолучитьЭлемент()=1 Цикл ЕДЦены=Цен.Единица; ТЦ=Цен.ТипЦен; СпрВл.НайтиЭлемент(Цен.Единица.Владелец); ВлЕд=СпрВл.ТекущийЭлемент(); НаимВл=СпрВл.Наименование; Если Наимен<>НаимВл Тогда Сообщить ("наимен "+наимен+" ЕИ "+ЕДЦены+" ТипЦ "+ТЦ+" принадлежит "+НаимВл); Цен.ИспользоватьВладельца(Спр.ТекущийЭлемент()); Еиз.ИспользоватьВладельца(Спр.ТекущийЭлемент()); Если СокрЛП(БазЕд)="м" Тогда КодЕд="006"; иначе КодЕд="796"; КонецЕсли; Если СпрОКЕИ.НайтиПоКоду(КодЕд, 0) = 1 Тогда КодОк = СпрОКЕИ.ТекущийЭлемент(); КонецЕсли; Если Еиз.НайтиПоРеквизиту("ОКЕИ",КодОК, 1) = 1 Тогда Цен.Единица = Еиз.ТекущийЭлемент(); Цен.Записать(); КонецЕсли; Спр.Записать(); Результат не изменился |