Имя: Пароль:
1C
1С v8
Установка цен номенклатуры из excel
,
0 spapin87
 
02.12.13
10:05
Доброе утро. Подскажите, загружаю данные из excel. Номенклатура добавляется, но новую цену никак не могу прикрутить. То ли надо получать идентификатор типа цен не пойму никак.

&НаКлиенте
Процедура ОткрытьФайл(Команда)
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    
    ДиалогОткрытияФайла.ПолноеИмяФайла = "";
    ДиалогОткрытияФайла.Фильтр = "Файл Excel(*.xls)|*.xls|Файл Excel(*.xlsx)|*.xlsx";
    ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
    ДиалогОткрытияФайла.Заголовок = "Выберите файл Excel для загрузки";
    Если ДиалогОткрытияФайла.Выбрать() Тогда
        ЗагрузитьДанныеИзФайла(СокрЛП(ДиалогОткрытияФайла.ПолноеИмяФайла));
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьДанныеИзФайла(ПутьКФайлу)
    //Открываем xls файл
    Попытка
        Excel      = Новый COMОбъект("Excel.Application");
        WB         = Excel.Workbooks.Open(ПутьКФайлу);
        WS         = WB.Worksheets(1); //указываем номер листа - 1
        arr        = WS.UsedRange.Value;  //передаём таблицу в переменную
        WB.Close(0);
    Исключение
        Предупреждение("Внимание! Файл не открыт."+Символы.ПС+"Попробуйте открыть и пересохранить данный файл программой Excel.");
        Возврат;
    КонецПопытки;
    
    
    
    //Узнаём данные выходные данные об листе ексель    
    МассивКолонок = arr.Выгрузить(); //Выгружаем таблицу в массив
    всегоСтрок   = (МассивКолонок.Получить(0).Количество())-1;
    
    Объект.Товары.Очистить();
    
            НомерСтроки = 2;
        
    Для строкаТП = 1 По всегоСтрок Цикл //Работаем со строкой
        Артикул = СокрЛП(Формат(МассивКолонок.Получить(0).Получить(строкаТП),"ЧГ=0"));
        
        Ном = НайтиНоменклатуру(Артикул);
        Если Ном = "" Тогда
            Сообщить("Не нашли номенклатуру" + Артикул);
        Иначе
            
         //ТабличнаВидаЦен = Объект.ВидыЦен.Добавить();
         //ТабличнаВидаЦен.ВидЦены = ВидЦены;
            
        НовСтрока = ДеревоЦен.ПолучитьЭлементы().Добавить();
        //НовСтрока.ПолучитьИдентификатор();
        НовСтрока.Номенклатура                = Ном;
        
        //ТаблицаЦен = Объект.Товары.Добавить();
        //            ТаблицаЦен.Номенклатура = Ном;
        //            //ТаблицаЦен.ВидЦены = ВидЦены;
        //            //ТаблицаЦен.Цена = 300;
    КонецЕсли;
    КонецЦикла;
КонецПроцедуры
1 dk
 
02.12.13
10:13
проблема-то в чем
как хранить данные о цене в 1с?
возьми любой готовый документ и погляди что где как хранится?
2 spapin87
 
02.12.13
10:19
(2) Как добавить в НовСтрока цену в уже открытом документе Установка цен номенклатуры. Номенклатуру я добавляю только ту, которая есть в базе и не создаю новую если нет ее, но цену в новую строку не могу прикрутить цену
3 spapin87
 
02.12.13
10:32
Может пример у кого есть?
4 razlagator
 
02.12.13
10:36
(3) в документе установки цен две ТЧ, Товары и ТипыЦен, в каждой ТЧ есть реквизит ТипЦены, вот эти реквизиты в обоиз ТЧ должны быть!
5 razlagator
 
02.12.13
10:36
(4)обоих*
6 FIXXXL
 
02.12.13
12:19
(2) конфа какая?
попробуй док создать, правильно заполни, и уже потом открывай его форму
7 spapin87
 
02.12.13
12:23
(7)Управление торговлей, редакция 11.1 (11.1.2.9)
Так я уже в форме документа заполняю ТЧ.
8 FIXXXL
 
02.12.13
12:31
(7) не знаю как в 11, в 10 ТЧ документа и ТЗ на форме документа - разные вещи и заполнение нетиповое идет...
9 spapin87
 
02.12.13
12:33
В 10 проще
10 spapin87
 
02.12.13
12:56
В документе добавляю все в ТЗ и потом циклом вытаскиваю все В ТЧ товары, но ничего не добавляется, объясните глупому что не так

&НаСервере
  Процедура ЗагрузинТовары(ПутьКФайлу)
      
      Попытка
        Excel      = Новый COMОбъект("Excel.Application");
        WB         = Excel.Workbooks.Open(ПутьКФайлу);
        WS         = WB.Worksheets(1); //указываем номер листа - 1
        arr        = WS.UsedRange.Value;  //передаём таблицу в переменную
        WB.Close(0);
    Исключение
        //Предупреждение("Внимание! Файл не открыт."+Символы.ПС+"Попробуйте открыть и пересохранить данный файл программой Excel.");
        Возврат;
    КонецПопытки;
    
    //Узнаём данные выходные данные об листе ексель    
    МассивКолонок = arr.Выгрузить(); //Выгружаем таблицу в массив
    всегоСтрок   = (МассивКолонок.Получить(0).Количество())-1;
    
    Объект.Товары.Очистить();
    
    ТЗ_Excel = Новый ТаблицаЗначений;
    ТЗ_Excel.Колонки.Добавить("Артикул");
    ТЗ_Excel.Колонки.Добавить("Цена");

    
            НомерСтроки = 2;
    
    Для строкаТП = 1 По всегоСтрок Цикл //Работаем со строкой
        НоваяСтрока = ТЗ_Excel.Добавить();
        НоваяСтрока.Артикул = СокрЛП(Формат(МассивКолонок.Получить(0).Получить(строкаТП),"ЧГ=0"));
        НоваяСтрока.Цена = СокрЛП(МассивКолонок.Получить(2).Получить(строкаТП));    
    КонецЦикла;
    
    Для Каждого Строка_Excel Из ТЗ_Excel Цикл
        //ОбработкаПрерыванияПользователя();
        
        Артикул = Строка_Excel.Артикул;
        НоменклатураСсылка =Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
        Если НоменклатураСсылка.Пустая() Тогда
            Сообщить("Артикул не найден в справочнике ""Номенклатура"" " + Артикул + " Строка не подгружена");
            Продолжить;
        КонецЕсли;
        Цена = Строка_Excel.Цена;
        
        
        НоваяСтрока = Объект.Товары.Добавить();
        НоваяСтрока.Номенклатура=НоменклатураСсылка;
        НоваяСтрока.цена = Цена;

    КонецЦикла;    
      
КонецПроцедуры
11 spapin87
 
02.12.13
13:23
Если например сделать так :

НоваяСтрока =               ДеревоЦен.ПолучитьЭлементы().Добавить();
        //НоваяСтрока = Объект.Товары.Добавить();
        НоваяСтрока.Номенклатура = НоменклатураСсылка;

Добавляются позиции, но там цены в виде СтараяЦенаВидЦены8e381db0573711e3b078001e677b0fcb (Это выражение) и цену как к этому присвоить не знаю.
12 andr_andrey
 
02.12.13
19:52
(10) Кто такой "Объект" в Объект.Товары.Добавить()?
13 FIXXXL
 
04.12.13
20:20
Объект
видимо заполнение ТЧ из внешней обработки
14 ProProg
 
04.12.13
20:22
УТ11?