Имя: Пароль:
1C
1С v8
Программная установка цен номенклатуры в УТ 11
0 piffoff
 
21.05.12
03:09
Задумка такова. В УТ 11
при проведении "поступлении товаров" автоматом записывались цены номенклатуры
Написал примерно такой код
НовыйДокументУстановкаЦенНоменклатуры = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
НовыйДокументУстановкаЦенНоменклатуры.Дата = ТекущаяДата();
ТаблицаТовары = ЭтотОбъект.Товары;
ВидЦеныНоменклатуры = Справочники.ВидыЦен.НайтиПоНаименованию("Закупочная");
Для Каждого ЭлементТаблицаТовары Из ТаблицаТовары Цикл
НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(НовыйДокументУстановкаЦенНоменклатуры);
НаборЗаписей.Добавить();
НаборЗаписей.Период = НовыйДокументУстановкаЦенНоменклатуры.Дата();
НаборЗаписей.ВидЦены = ВидЦеныНоменклатуры;
НаборЗаписей.Номенклатура = ЭлементТаблицаТовары.Номенклатура;
НаборЗаписей.Характеристика = ЭлементТаблицаТовары.Характеристика;
НаборЗаписей.Цена = ЭлементТаблицаТовары.Цена;
НаборЗаписей.Упаковка = ЭлементТаблицаТовары.Упаковка;
НаборЗаписей.Валюта = ВидЦеныНоменклатуры.ВалютаЦены;
НаборЗаписей.Записать();
КонецЦикла;

выдает ошибку:

{Документ.ПоступлениеТоваровУслуг.МодульОбъекта(1425)}: Поле объекта не обнаружено (Период)
НаборЗаписей.Период = НовыйДокументУстановкаЦенНоменклатуры.Дата();

Как это можно исправить?
1 rphosts
 
21.05.12
03:27
вынести перед циклом:

НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(НовыйДокументУстановкаЦенНоменклатуры);

и за цикл:
НаборЗаписей.Записать();

в цикле сначала:
ЗаписьНабора = НаборЗаписей.Добавить();
а вот потом у неё указываешь всякие измерения, ресурсы и т.п. и период в т.ч.
2 rphosts
 
21.05.12
03:27
у неё = у ЗаписьНабора
3 Мимохожий Однако
 
21.05.12
07:25
В соглашении с поставщиком есть галка "Регистрировать цены поставщика автоматически".. (0)Свой лисапед лучше?
4 piffoff
 
21.05.12
22:04
спасибо заработало
5 mirosh
 
21.05.12
22:06
(4) :)
6 zippygrill
 
21.05.12
22:12
а как ты в регистре добавляешь записи если ТЧ нового дока пустая? что за?
7 zippygrill
 
21.05.12
22:13
оооо все понял. слишком быстро прошелся по топику :)
8 aleks-id
 
21.05.12
22:13
(6) а ему сурпрыз будет когда он документ перепроведет
9 piffoff
 
21.05.12
22:19
(3)
Чет я не совсем понял этот механизм поподробней можно про него?

Да все заебок будет работать!

   НовыйДокументУстановкаЦенНоменклатуры = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
   НовыйДокументУстановкаЦенНоменклатуры.Дата = ТекущаяДата();
   //НужныйДокумент = Документы.УстановкаЦенНоменклатуры.НайтиПоНомеру("ТР-00000001");
   
   ТаблицаТовары = ЭтотОбъект.Товары;
   ВидЦеныНоменклатуры = Справочники.ВидыЦен.НайтиПоНаименованию("Закупочная");
   
   Если ЗначениеЗаполнено(ВидЦеныНоменклатуры) И ТаблицаТовары.Количество() > 0 Тогда
       НовыйДокументУстановкаЦенНоменклатуры.Записать();
       
       Для Каждого ЭлементТаблицаТовары Из ТаблицаТовары Цикл
           
           Если ЭлементТаблицаТовары.Номенклатура.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар Тогда
               НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();                    
               НаборЗаписей.Отбор.Регистратор.Установить(НовыйДокументУстановкаЦенНоменклатуры);
               
               Отбор = Новый Структура();
               Отбор.Вставить("Номенклатура",ЭлементТаблицаТовары.Номенклатура);
               Отбор.Вставить("ВидЦены",ВидЦеныНоменклатуры);
               ЦеныНоменклатуры = РегистрыСведений.ЦеныНоменклатуры;
               ЗначенияРесурсов = ЦеныНоменклатуры.ПолучитьПоследнее(ТекущаяДата(),Отбор);
               ТекущаяЦена = ЗначенияРесурсов.Цена;
               
               Если ТекущаяЦена = 0 Тогда
                   //.................
                   Сообщить(Формат("Установлена цена для " + ЭлементТаблицаТовары + " - " + "ЧДЦ=2", ТекущаяЦена));
               КонецЕсли;
               
               Если НЕ ТекущаяЦена = ЭлементТаблицаТовары.Цена Тогда                    
                   ЗаписьНабора = НаборЗаписей.Добавить();
                   ЗаписьНабора.Период = ТекущаяДата();
                   ЗаписьНабора.ВидЦены = ВидЦеныНоменклатуры;
                   ЗаписьНабора.Номенклатура = ЭлементТаблицаТовары.Номенклатура;
                   ЗаписьНабора.Характеристика = ЭлементТаблицаТовары.Характеристика;
                   ЗаписьНабора.Цена = ЭлементТаблицаТовары.Цена;
                   ЗаписьНабора.Упаковка = ЭлементТаблицаТовары.Упаковка;
                   ЗаписьНабора.Валюта = ВидЦеныНоменклатуры.ВалютаЦены;
                   Сообщить(Формат("Изменена цена для " + ЭлементТаблицаТовары + " - " + "ЧДЦ=2", ТекущаяЦена));
               КонецЕсли;
               
           КонецЕсли;
           
       КонецЦикла;
       НаборЗаписей.Записать();
   Иначе
       Сообщить("Не найдена закупочная цена номенклатуры");
   КонецЕсли;
10 aleks-id
 
21.05.12
22:21
ню-ню
11 piffoff
 
21.05.12
22:23
не ну лучше б подсказали, что не так и в чем я глубоко заблуждаюсь
12 piffoff
 
21.05.12
22:24
а епт и правда
13 aleks-id
 
21.05.12
22:24
в том что у документа установки цен есть табличная часть которую надо заполнять.
14 ULVIMnemoNIK
 
22.05.12
23:25
У меня проблем есть. Kak mojna vse tovar cheni ustanovit odno dokument?


    Для Каждого СтрСП Из Объект.ТаблицаЗначений Цикл
        УстановкаЦенНоменклатурыПоступ = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
        УстановкаЦенНоменклатурыПоступ.Согласован = Истина;
        УстановкаЦенНоменклатурыПоступ.Дата = ТекущаяДата();
        УстановкаЦенНоменклатурыПоступ.Статус = Перечисления.СтатусыУстановокЦенНоменклатуры.Согласован;
        УстановкаЦенНоменклатурыПоступ.Ответственный = ПараметрыСеанса.ТекущийПользователь;
        УстановкаЦенНоменклатурыПоступ.Записать();
        Если СтрСП.Закупочная > 0 Тогда
            СправШтрихНомеЕсть = РегистрыСведений.ШтрихкодыНоменклатуры.Получить(новый структура("Штрихкод",СтрСП.ШтрихкодыНоменклатуры));
            Если СправШтрихНомеЕсть.Номенклатура.Наименование = "" Тогда
                Штрихкод = Истина;
            Иначе
                Штрихкод = Ложь;
            КонецЕсли;
            Если  Штрихкод = Ложь Тогда
                ЦеныНомен = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
                ЦеныНомен.Отбор.Регистратор.Установить(УстановкаЦенНоменклатурыПоступ.Ссылка);
                ЗаписьНабора = ЦеныНомен.Добавить();
                ЗаписьНабора.Период = ТекущаяДата();
                ЗаписьНабора.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Цена поступления");
                ЗаписьНабора.Номенклатура = СправШтрихНомеЕсть.Номенклатура.Ссылка;
                //ЗаписьНабора.Характеристика = ЭлементТаблицаТовары.Характеристика;
                ЗаписьНабора.Цена = СтрСП.Закупочная;
                //ЗаписьНабора.Упаковка = ЭлементТаблицаТовары.Упаковка;
                ЗаписьНабора.Валюта = Константы.ВалютаУправленческогоУчета.Получить();
                ЦеныНомен.Записать();
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
15 zak555
 
22.05.12
23:29
> У меня проблем есть. Kak mojna...

купи букварь
16 ULVIMnemoNIK
 
22.05.12
23:36
Sorry ya niznayu po russkiy))