Как переподчинить единицу цены другому элементу Номенклатуры

Форум 1С: Одинэс.Ру

Найти!

Как переподчинить единицу цены другому элементу Номенклатуры

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

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

odines.ru
19.03.2024 - 08:55
Смотри также:
Переход на 959
Возврат от покупателя отражается в Книге покупок. Нужно в Книге продаж.
Единица измерения принадлежит другому элементу справочника номенклатура

Re: Как переподчинить единицу цены другому элементу Номенклатуры

Чучундер
1 - 13.06.2009 - 09:42
Цен.ИспользоватьВладельца(Спр.ТекущийЭлемент());
//
Пока Цен.ПолучитьЭлемент()=1 Цикл
СпрВл.НайтиЭлемент(Цен.Единица.Владелец);
ВлЕд=СпрВл.ТекущийЭлемент();
Если Наимен<>НаимВл Тогда
..
- смысла не имеет, у тебя всегда будет Спр.ТекущийЭлемент()=ВлЕд
можно сравнивать не наименования а объекты и причем сразу
Если Спр.ТекущийЭлемент() = Цен.Единица.Владелец

Re: Как переподчинить единицу цены другому элементу Номенклатуры

noviptr
2 - 13.06.2009 - 10:49
Не совсем так.
Список товаров и типов с кривым владельцем единиц я получил, поменять владельца единицы не получается.

Re: Как переподчинить единицу цены другому элементу Номенклатуры

Чучундер
3 - 13.06.2009 - 10:53
> Список товаров и типов с кривым владельцем единиц я получил,
чегото глаз замылен... где этот кусочек кода?
..
и где в коде ты меняешь владельца единицы измерения?

Re: Как переподчинить единицу цены другому элементу Номенклатуры

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

Re: Как переподчинить единицу цены другому элементу Номенклатуры

Чучундер
5 - 13.06.2009 - 11:35
уюююю, блин...
СпрНоменклатура.ВыбратьЭлементы();
Пока СпрНоменклатура.ПолучитьЭлемент()=1 Цикл
//пропустить группы!
Если СпрНоменклатура.БазоваяЕдиница.Владелец <> СпрНоменклатура.ТекущийЭлемент Тогда
   Сообщить("Ошибка: "+тутвсечтонадо);
   СпрЕдиницы.НайтиЭлемент(СпрНоменклатура.БазоваяЕдиница);
   СпрЕдиницы.Владелец = СпрНоменклатура.ТекущийЭлемент();
   СпрЕдиницы.Записать();
КонецЕсли;
// повторить для основной единицы

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

odines.ru
19.03.2024 - 08:55
Смотри также:
КАК в подборе товара сделать так, чтобы можно было выбирать цену?
один комп и два ФР
Как переподчинить единицу цены другому элементу Номенклатуры

Re: Как переподчинить единицу цены другому элементу Номенклатуры

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

Re: Как переподчинить единицу цены другому элементу Номенклатуры

noviptr
7 - 13.06.2009 - 12:50
разобрался, Чучундеру большое спасибо за помощь
К списку тем К списку форумов

Добавить новое сообщение

Ваше имя:
Тема сообщения:
Сообщение:
« Проблема перепроведения при удалении документов ТИС 956 Авансы выданные Ошибка???????????7 »
© 2009 Форум 1С: Одинэс.Ру