Имя: Пароль:
1C
1C 7.7
v7: Чтение из EXCEL
,
0 mcwolf
 
06.11.13
12:22
Добрый день! Есть код загрузки цен в 1с из екселя, но проблема в том, что создается новый тип цены а нужно что б редактировало существующую
вот собственно код:
//Создаем ОЛЕ подключение к Excel
  Excel = СоздатьОбъект("Excel.Application");  
  
  //Открываем файл
  Excel.Workbooks.Open("C:\load.xls");
  
  //Открываем активную книгу
  Книга = Excel.ActiveWorkbook;
    
  //Получааем количество строк в книге
  Строк = Excel.Cells.CurrentRegion.Rows.Count;
    
  //Создадим заранее объект справочника ТМЦ
  СпрТМЦ = СоздатьОбъект("Справочник.Номенклатура");
  СпрЦены = СоздатьОбъект("Справочник.Цены");  
  
  СпрКатЦены = СоздатьОбъект("Справочник.КатегорииЦен");  
  
  СпрКатЦены.НайтиПоНаименованию("Закупочная");
  ТекКатЦены = СпрКатЦены.ТекущийЭлемент();
        
  
  //Перебираем строки и обрабатываем данные
  Для х = 1 По Строк Цикл
    
    //Зная типы значений в колонках и перебирая строки получаем
    //необходимые значения и обрабатываем их  
    КодТМЦ       = СокрЛП(Строка(Excel.Cells(х, 1).Value));  
    НаименованиеТМЦ = СокрЛП(Строка(Excel.Cells(х, 2).Value));
    ЦенаТМЦ     = Число(Excel.Cells(х, 3).Value);  
  
    //Сначала ищем товар по коду, если не нашли по наименованию  
    Если СпрТМЦ.НайтиПоКоду(КодТМЦ) = 1 Тогда
      НайдТовар = СпрТМЦ.ТекущийЭлемент();
    Иначеесли СпрТМЦ.НайтиПоНаименованию(НаименованиеТМЦ) = 1 Тогда  
      НайдТовар = СпрТМЦ.ТекущийЭлемент();
      
    Иначе
      //Товар не нашли, продолжаем
      //здесь можно создавать товар если надо
      Продолжить;
    Конецесли;
    
    //записываем цену

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


  
  //После загрузки зарываем соединение с Excel
  Excel.Workbooks.Close();
1 Нуф-Нуф
 
06.11.13
12:23
раскомментируй несколько строк в коде
2 Стрелок
 
06.11.13
12:23
не вижу "НайтиПоНаименованию" в справочнике цен (поиск закупочной цены) ну или найти по реквизиту
3 Rie
 
06.11.13
12:23
(0) Ты ж сам всегда создаёшь Новый().
Открой для себя НайтиПоКоду() или НайтиЭлемент().
4 Стрелок
 
06.11.13
12:24
да и даты установки цены нету
5 Rie
 
06.11.13
12:40
(4) Таки есть - "СпрЦены.ИСпользоватьДату(РабочаяДата());"
6 mcwolf
 
06.11.13
18:42
(1) Когда раскомментирую строки тогда:

Если СпрЦены.НайтиПоРеквизиту("ТипЦен", ТекКатЦены,0)=1 Тогда     //ТипЗакупочнойЦены
{C:\DB\EXTFORMS\EXEL_TEST.ERT(47)}: Неверное имя реквизита!
7 borozavr
 
06.11.13
18:45
Не установлен флажок "сортировка" у ревизита
8 mcwolf
 
06.11.13
19:05
(7) ??? Какой флажок?
9 Mister-X07
 
06.11.13
19:19
(8) в конфиге, в свойствах реквизита "ТипЦен"
10 mcwolf
 
06.11.13
19:58
(9) Не могу что-то найти "ТипЦен" может это "Справочники"->"КатегорииЦен"
11 Тьма
 
06.11.13
20:23
(10)Может. В разных типовых этот справочник имеет разные идентификаторы. Но суть одна. Но тебе нужен не справочник КатегорииЦен, а реквизит справочника Цены, скорее всего называющийся КатегорияЦены и имеющий тип Справочник.КатегорииЦен
12 mcwolf
 
06.11.13
23:34
(11) А здесь то все правильно
Если СпрЦены.НайтиПоРеквизиту("КатегорииЦен", ТекКатЦены,0)=1 Тогда
или нет?
13 Злопчинский
 
06.11.13
23:38
912) хз.. мы ж не видим структуры твоего справочника СпрЦены. имя конфиги ты тоже не написал
.
так и хочется послать на добро wiki:Файл:Glagolitic_dobro.svg
14 mcwolf
 
07.11.13
00:13
(13) )) Конфигурация Торговля+Склад для Украины
http://s006.radikal.ru/i214/1311/02/cba1d1d538fb.jpg
15 mcwolf
 
07.11.13
00:21
16 Злопчинский
 
07.11.13
00:54
(12) проверь реквизит КатегорииЦен - стоит ли на нем крыжик "сортировка" - если не стоит - найтиПоРеквизиту обломится..
.
проверь что ТекКатЦены - имеет тип Спр.КатегорииЦен
.
обрати внимание на третий параметр
.