Имя: Пароль:
1C
 
Как получить цену номенклатуры 1с 7.7 через com объект
0 Eeelena
 
04.12.14
09:25
Делаю обработку по загрузке цен номенклатуры в базу 8.2 из 7.7
подскажите как получить цену номенклатуры, на данный момент код обработки следующий
Процедура КнопкаВыполнитьНажатие(Кнопка)
    База77Открыта = Ложь;
    База77 = Новый COMОбъект("V77.Application");
    //СтрокаПодключения = "/D"""" /N"""" /P""""";
     //Oк = лБазаОле.Initialize(лБазаОле.RMTrade,"/D"""+СокрЛП(псПутьКБазе)+""" /N"+псЛогин+" /P"+псПароль,"NO_SPLASH_SHOW");
     ПутьКБазе="C:\Users\elena\Documents\Клиенты\фирма БАРС\base\DB";
     Пользователь="прог";
     Пароль="123";
     СтрокаПодключения =  "/D"""+СокрЛП(ПутьКБазе)+""" /N"""+СокрЛП(Пользователь)+""" /P"""+СокрЛП(Пароль)+"""";

    Если База77.Initialize(База77.RMTrade,СтрокаПодключения ,"NO_SPLASH_SHOW") = 0 ТОгда
        Сообщить("Ошибка подключения к информационной базе 1С:Предприятие 7.7!", СтатусСообщения.Важное);
    Иначе
        База77Открыта = Истина;
    КонецЕсли;
    
    Если База77Открыта Тогда
        
        Док = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
        
        
        Товары = База77.CreateObject("Справочник.Номенклатура");
        СпрЦен = База77.CreateObject("Справочник.Цены");
        Товары.ВыбратьЭлементы();
        СпрЦен.ВыбратьЭлементы();
        Пока Товары.ПолучитьЭлемент() = 1 Цикл
            
            
            НайднТовар = Справочники.Номенклатура.НайтиПоНаименованию(Товары.Наименование,Истина);
            
                      
          
            Пока СпрЦен.ПолучитьЭлемент()=1 Цикл
                
            Если НайднТовар.Пустая() Тогда
                
                НайднТовар =                       СоздатьНовыйТовар(Товары);
                
                Если НайднТовар = Неопределено Тогда
                    Продолжить;
                КонецЕсли;
                
            
        КонецЦикла;
        
            НоваяСтрока = Док.Товары.Добавить();
            НоваяСтрока.Номенклатура = НайднТовар.Ссылка;
            НоваяСтрока.ЕдиницаИзмерения = НайднТовар.ЕдиницаХраненияОстатков;
            //НоваяСтрока.ТипЦен = Закупочный;
            //НоваяСтрока.Цена = ЦенаЗакуп;
            НоваяСтрока.Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
            
            НоваяСтрока = Док.Товары.Добавить();
            НоваяСтрока.Номенклатура = НайднТовар.Ссылка;
            НоваяСтрока.ЕдиницаИзмерения = НайднТовар.ЕдиницаХраненияОстатков;
            //НоваяСтрока.ТипЦен = Оптовый;
            //НоваяСтрока.Цена = ЦенаОпт;
            НоваяСтрока.Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
            
            НоваяСтрока = Док.Товары.Добавить();
            НоваяСтрока.Номенклатура = НайднТовар.Ссылка;
            НоваяСтрока.ЕдиницаИзмерения = НайднТовар.ЕдиницаХраненияОстатков;
            //НоваяСтрока.ТипЦен = Розница;
            //НоваяСтрока.Цена = ЦенаРозн;
            НоваяСтрока.Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
         КонецЕсли;    
        КонецЦикла;
        
        Форма = Док.ПолучитьФорму("ФормаДокумента");
        Форма.Открыть();
        
    КонецЕсли;

КонецПроцедуры
1 Ёпрст
 
04.12.14
09:29
всё в топку
2 Eeelena
 
04.12.14
09:31
(1) ?
3 Ёпрст
 
04.12.14
09:32
(2) клюшки в глаза не видели поди да ?
4 Eeelena
 
04.12.14
09:34
(3) не поняла
5 Wobland
 
04.12.14
09:35
(4) плохой, негодный код. неужели ты наблюдаешь платформу 1С:Предприятие версии 7.7 впервые?
6 Wobland
 
04.12.14
09:36
а без фото всё равно не взлетит
7 VladZ
 
04.12.14
09:37
(0) Эммм....  Код - выкинуть на помойку. Взять букварь по 7.7 и написать красивый и работоспособный код.
8 Spyke
 
04.12.14
09:44
Товары.ВыбратьЭлементы();
Пока Товары.ПолучитьЭлемент() = 1 Цикл
СпрЦен.ИспользоватьВладельца(Товары.ТекущийЭлемент);
СпрЦен.ВыбратьЭлементы();
Пока СпрЦен.ПолучитьЭлемент()=1 Цикл
КонецЦикла;
КонецЦикла;
9 Spyke
 
04.12.14
09:45
Товары.ТекущийЭлемент()
10 Eeelena
 
04.12.14
09:46
(8) спасибо, но ругается на ИспользоватьВладельца говорит метод не найден
11 Spyke
 
04.12.14
09:52
(10) Спр цен подчиненный справочник номенклатуры?
12 Eeelena
 
04.12.14
09:54
(11) да
13 Spyke
 
04.12.14
09:55
(12)
Добавить условие
Товары.ЭтоГруппа() = 0
14 Patrio_
O_Muerte
 
04.12.14
09:57
Как так... нет фотки... и ты думаешь так ты решишь задачу?
15 Eeelena
 
04.12.14
10:05
(13) спасибо большое)))
16 Spyke
 
04.12.14
10:11
(15) Работает как надо?
17 Ёпрст
 
04.12.14
10:11
Если нужны все цены, то перебор справочника Номенклатура не нужен, совсем.

Достаточно выборки по справочнику Цены, где владельцем будет Номенклатура. Всё.
Не забывать, про разный тип цен, что цена - периодический реквизит и про разные единицы измерения.
В общем, до нового года может, успеешь перенести.
18 Eeelena
 
04.12.14
10:18
(13) А подскажите пожалуйста еще, если я пишу вот так
Пока СпрЦен.ПолучитьЭлемент()=1 Цикл

                 Цена=СпрЦен.Цена;
                 ТипЦен=СпрЦен.ТипЦен;
            
        КонецЦикла;
То Цена и ТипЦен это COMОбъект, а как само значение получить цены и типацен?
19 Ёпрст
 
04.12.14
10:51
(18) для начала,
СпрЦен.ИспользоватьДату(НужнаяДата);
Пока СпрЦен.ПолучитьЭлемент()=1 Цикл

на счет типа цен - смотри его наименование (аналогично с единицей измерения)
20 Eeelena
 
04.12.14
11:22
(13) стал почему то ругаться на строку СпрЦен.ИспользоватьВладельца(Товары.ТекущийЭлемент());
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший