Имя: Пароль:
1C
1C 7.7
v7: Заполнение реквизитов подчиненного справочника
0 Aldnepr
 
13.09.19
09:14
Здравствуйте.Клепаю обработку для занесения цен выбранного типа из Ексель. Суть- если нет нужной категории цен то создать и заполнить, а если есть- заменить значение у существующей. Так вот новую создает и заполняет, а существующую не меняет.
    Товар=СоздатьОбъект("Справочник.Номенклатура");
    СпрЦен=СоздатьОбъект("Справочник.Цены");
    Т1=Прав((Строка(Excel.Cells(ТекСТрока, СтлбКод).Value)),5);
    Т2="0000"+Т1;
    ХХ=Прав(Т2,5);
    Товар.НайтиПоКоду(ХХ,0);
    ТМЦ=Товар.ТекущийЭлемент();
    ТМЦ.ИспользоватьДату(ТекущаяДата());
    ЦенаХЛ=Окр(Число(СокрЛП(Строка(Excel.Cells(ТекСТрока, СтлбЦена_Розн).Value))),2,1);
    ВвестиКодНаименование(ТМЦ, ТекСтрока, Excel);  
     Если  ЦенаХЛ>0 тогда
     СпрЦен.ИспользоватьВладельца(ТМЦ);
     СпрЦен.ИспользоватьДату(ТекущаяДата());
     Сообщить(ТМЦ.Код+" "+ТМЦ);
    ЕстьВыборка=СпрЦен.ВыбратьЭлементы();    
     Если ЕстьВыборка=0 тогда     //создаем новый
        
        СпрЦен.Новый();
        СпрЦен.Валюта=Константа.БазоваяВалюта;
        СпрЦен.Единица=ТМЦ.ЕдиницаПоУмолчанию;
        СпрЦен.КатегорияЦены=Спис;
        СпрЦен.Цена=ЦенаХЛ;
        
        СпрЦен.Записать();  
        
    ИначеЕсли   ЕстьВыборка=1 тогда    //меняем просто значение цены на текущую дату
        
    
        СпрЦен.Цена=ЦенаХЛ;

        
        СпрЦен.Записать();

      КонецЕсли;
    КонецЕсли;
1 ДенисЧ
 
13.09.19
09:16
ИначеЕсли   ЕстьВыборка=1 тогда    //меняем просто значение цены на текущую дату
об = спрЦен.ПолучитьОбъект();        
об.Цена=ЦенаХЛ;
об.Записать();
2 Василий Алибабаевич
 
13.09.19
09:17
(0) ГЫ. Выборку открыл, но не выбрал ни одной записи.

СпрЦен.ВыбратьЭлементы();
....
Пока СпрЦен.ПолучитьЭлемент() =1 Цикл
...
(1) Это клюшки
3 Василий Алибабаевич
 
13.09.19
09:19
(2) И вообще.
Если СпрЦен.ВыбратьЭлементы() = 0 Тогда
  ...
Иначе
  Пока СпрЦен.ПолучитьЭлемент() = 1 Цикл
    ...
  КонецЦикла;
КонецЕсли;
4 dedmoroz777
 
13.09.19
09:21
И проверки на ТипЦен нигде нет
5 Aldnepr
 
13.09.19
09:38
(2) Спасибо.Зарапортовался точно,и забыл про клюшки, а Вам плюшек сегодня хороших)
6 Злопчинский
 
13.09.19
12:52
Вообще-то в типовой ТиС загрузка цен номенклатуры есть штатно.
что-там клепать-то?
единственное что я туда "доклепал" (пару операторов) - синхронизация по артикулу.
вот картинка этой штатной обработки https://www.screencast.com/t/5Nfwcl9yz4Xp
7 johnnik
 
13.09.19
13:25
(0)
СпрЦен.Цена=ЦенаХЛ;
........
Эээ, если речь про ТиС, то реквизит "Цена" вроде периодический, там надо:

СпрЦен.Цена.Установить(ТекущаяДата(), ЦенаХЛ)


Или речь не о типовой ТиС?
8 dedmoroz777
 
13.09.19
14:05
(7) там есть: СпрЦен.ИспользоватьДату(ТекущаяДата());
9 Злопчинский
 
13.09.19
16:35
(7) ну, с учетом
ТМЦ.ЕдиницаПоУмолчанию
- там адский трэш