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

Автор Тема: Не могу получить цены номенклатуры  (Прочитано 5087 раз)

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

Оффлайн 3d_killer

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-01-14
  • Сайт: 
  • Профессия: Ученик 1С
Написал обработку экспорта в xml и необходимо выгрузить помимо разные типы цен и никак не могу это сделать. Сама обработка:

Перем ДОМ;  // XML instace

Процедура Сохранить()
  ДОМ.save("c:\1.xml");     
КонецПроцедуры    // Сохранить




//**********************************************************************
// УстановитьАтрибут(Узел, ИмяАтрибута, ЗначениеАтрибута)
// Описание
// Добавляет атрибут к узлу
// Узел - тип IXMLDOMNode
// ИмяАтрибута - строка
// ЗначениеАтрибута - любое, приводится к строке
Процедура УстановитьАтрибут(Узел, ИмяАтрибута, ЗначениеАтрибута)
  Атрибут = ДОМ.createAttribute(ИмяАтрибута);
  Атрибут.Value = Строка(ЗначениеАтрибута);
  Узел.setAttributeNode(Атрибут);
КонецПроцедуры    // УстановитьАтрибут(Имя, Значение)   




//Выборка элементов
Процедура ДобавитьЭлементы(ИзГруппы,ВУзел,В_ДОМ)
    ЭлСпр = СоздатьОбъект("Справочник.Номенклатура"); 
    //Рекурсия
    Если СокрЛП(ИзГруппы)<>"" Тогда
        ЭлСпр.ИспользоватьРодителя(ИзГруппы);
    КонецЕсли;
    //Выбираем элементы
    ЭлСпр.ВыбратьЭлементы();
       //Цикл перебора товаров
       Пока ЭлСпр.ПолучитьЭлемент(0) = 1 Цикл 
        Если ЭлСпр.ЭтоГруппа() = 1 Тогда
            //Это группа
            //Сообщить("Группа");
           
            Группа = В_ДОМ.createNode(1,"Группа","");
            УстановитьАтрибут(Группа, "Код", ЭлСпр.Код);
            УстановитьАтрибут(Группа, "Наименование", Строка(ЭлСпр.Наименование));
            УстановитьАтрибут(Группа, "ПолноеНаименование", Строка(ЭлСпр.ПолнНаименование));
            УстановитьАтрибут(Группа, "Родитель", Строка(ЭлСпр.Родитель.Код));
            ВУзел.appendChild(Группа);
           
            ДобавитьЭлементы(ЭлСпр.ТекущийЭлемент(),Группа,В_ДОМ);
        Иначе
                //Это товар
            //Сообщить("Товар");
           
           
           
            //Необходимо вытащить цену товара
            //*******************************************
            СпрЦены = СоздатьОбъект("Справочник.Цены");
            СпрЦены.ИспользоватьВладельца(ЭлСпр);   
           
            СпрЦены.НайтиПоНаименованию("Минимальные");   
           
            //СпрЦены.ВыбратьЭлементы();
            Цена = СпрЦены.Цена.Получить();
           
            //Запись элемента номенклатуры
            Элемент = В_ДОМ.createNode(1,"Элемент","");
            УстановитьАтрибут(Элемент, "Код", ЭлСпр.Код);
            УстановитьАтрибут(Элемент, "Наименование", Строка(ЭлСпр.Наименование));
            УстановитьАтрибут(Элемент, "ПолноеНаименование", Строка(ЭлСпр.ПолнНаименование));       
            УстановитьАтрибут(Элемент, "Родитель", Строка(ЭлСпр.Родитель.Код));
            УстановитьАтрибут(Элемент, "Цена", Строка(Цена));
            ВУзел.appendChild(Элемент);
            Сообщить(Цена);   
        КонецЕсли;   
    КонецЦикла; 
КонецПроцедуры
//*******************************************
Процедура Сформировать() 
    Спр = СоздатьОбъект("Справочник.Номенклатура");
       ДОМ    = СоздатьОбъект("MSXML2.DOMDocument");
    //Create a processing instruction targeted for xml.
    Узел = ДОМ.createProcessingInstruction("xml", "version='1.0' encoding='windows-1251'");
    ДОМ.appendChild(Узел);                                // добавляем новый подчиненный узел. Это тэг <?xml version="1.0" ?>
    Корень = ДОМ.createElement("Справочник_"+Спр.Вид());             // создаем корневой элемент
    УстановитьАтрибут(Корень, "ВерсияФормата", "1.0");
    УстановитьАтрибут(Корень, "ДатаВыгрузки", ""+ДатаЧисло(ТекущаяДата())+"."+ДатаМесяц(ТекущаяДата())+"."+ДатаГод(ТекущаяДата()));
    ДОМ.appendChild(Корень);                              // добавляем корневой элемент в структуру ДОМ
    Состояние("Выгружается . . .");   
    ДобавитьЭлементы("",Корень,ДОМ);
    Сохранить();
    Сообщить("Выгружено в C:\1.xml");   
КонецПроцедуры



тут цена выгружается тут только одного типа который идет первый по списку а надо несколько других, помогите решить данную проблемку


Оффлайн 3d_killer

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-01-14
  • Сайт: 
  • Профессия: Ученик 1С
вот тут что то не дописал:
СпрЦены = СоздатьОбъект("Справочник.Цены");
СпрЦены.ИспользоватьВладельца(ЭлСпр);   
СпрЦены.НайтиПоНаименованию("Минимальные");
Цена = СпрЦены.Цена.Получить();

Оффлайн Кошки рулят

  • ***
  • Сообщений: 109
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-01-07
  • Сайт: 
СпрЦены = СоздатьОбъект("Справочник.Цены");
СпрЦены.ИспользоватьВладельца(ЭлСпр);   
СпрЦены.ВыбратьЭлементы();
Пока СпрЦены.ПолучитьЭлемент()=1 Цикл
....
КонецЦикла

Оффлайн 3d_killer

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-01-14
  • Сайт: 
  • Профессия: Ученик 1С
написал:

СпрЦены = СоздатьОбъект("Справочник.Цены");
         СпрЦены.ИспользоватьВладельца(ЭлСпр);         
         СпрЦены.ВыбратьЭлементы();
         Пока СпрЦены.ПолучитьЭлемент()=1 Цикл
            Если СпрЦены.НайтиПонаименованию("Розничные",0,1) = 1 Тогда
               Цена = СпрЦены.Цена.Получить();
            КонецЕсли;
         КонецЦикла;

Ошибка не выбран элемент
Добавлено: 05 Июн 2014, 20:33

на эту строку Пока СпрЦены.ПолучитьЭлемент()=1 Цикл
Добавлено: 05 Июн 2014, 22:32

Как вы написали, работает только теперь значение в цикле меняется и я получаю последний тип цен на выходе, условие поставить я не знаю как. Так как в переменной СпрЦены не содержится информации о типе цены, как мне сделать напишите пожалуйста

Последний раз редактировалось: 3d_killer; 05 Июн 2014, 22:32. Причина: Объединение сообщений

Оффлайн Кошки рулят

  • ***
  • Сообщений: 109
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-01-07
  • Сайт: 
Ошибка не выбран элемент

Больной чтоли?
У тебя идет перебор справочника, а ты в нем ищешь какой-то дураций элемент по наименованию, сбивая выборку.
Лечись!
СпрЦены = СоздатьОбъект("Справочник.Цены");
СпрЦены.ИспользоватьВладельца(ЭлСпр);
СпрЦены.ВыбратьЭлементы();

Пока СпрЦены.ПолучитьЭлемент()=1 Цикл
    ТипЦены=СпрЦены.Наименование;
    Цена = СпрЦены.Цена.Получить(РабочаяДата());
КонецЦикла

Оффлайн 3d_killer

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-01-14
  • Сайт: 
  • Профессия: Ученик 1С
Благодарю за помощь, и прошу не судить строго я программист ПХП, 1c практически не знаю.
В данном коде так же я не могу определить тип цены, так как : ТипЦены=СпрЦены.Наименование; Значение пустое.
В справочнике в типе цен забиты названия
Добавлено: 05 Июн 2014, 23:02

В том и проблема что в Справочник.Цены нет такого реквизита как Наименование

Оффлайн Кошки рулят

  • ***
  • Сообщений: 109
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-01-07
  • Сайт: 
В том и проблема что в Справочник.Цены нет такого реквизита как Наименование

Давай ты будешь шифроваться, паясничать и кривляться, а я буду строить из себя телепата и угадывать какая у тебя конфигурация, какой у тебя тип цены?
Ты ведь думаешь, что только у тебя Дела, а все остальные - делишки обтяпывают, да от безделья маются и просто мечтают угадывать твои безграмотные коды?
И ты прав!!! Мир крутится вокруг тебя!!! ...

Оффлайн 3d_killer

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-01-14
  • Сайт: 
  • Профессия: Ученик 1С
Торговля и склад редакция 9.2 версия 1с 7.7
Тип цен который есть это закупочные, мелкооптовые, оптовые, минимальные и розничные
Если смотреть в товаре то забиты 3 цены: закупочные, минимальные, розничные (интересует минимальная цена в обработке)


Добавлено: 06 Июн 2014, 10:27

ТипЦены=СпрЦены.ТипЦен; так правильно

Последний раз редактировалось: 3d_killer; 06 Июн 2014, 10:27. Причина: Объединение сообщений


Теги:
 


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

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

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


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

* Реклама

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

СМОТРЕТЬ >>

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
133 Сообщений
AIFrame AIFrame
124 Сообщений
alexandr_ll
58 Сообщений
pavl_vs
48 Сообщений
alex0402
47 Сообщений
buketov.av buketov.av
43 Сообщений
ilyay ilyay
36 Сообщений
trialex3
24 Сообщений
magnifico61
21 Сообщений
wise wise
15 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal