Вход | Регистрация

1С:Предприятие ::

Метки:

Цены > Закупочная(руб) > История ... Найти самое давнее непустое значение.

Я
   jetcom
 
07.12.04 - 04:30
Привет, уважаемые!
Сразу поясню, для чего сие нужно.
При формировании остатков на Новом оптовом складе из наличия на старом, учет на котором велся не на 1С, и себестоимость была равна неизвестно чему, в первом приближении посчитали допустимым приравнять Закуп. цену оприходуемых товаров Закуп. цене ближайшей (т.е. самой давней) в истории.
Т.е. на данный момент история цен уже сформировалась, а себестоимость изначальных остатков кое-где осталась "нулевой"...
Вроде доступно пояснил...
Соответствующую обработку "ЗначенияПериодическихРеквизитов()" просмотрел, но простого решения не увидел (меньше по ночам работать нужно ;)
Чувствую, что истина проста, если кому не лень, - подскажите плиииз!
Заранее благодарю.
 
  Рекламное место пустует
   Морозов Александр
 
1 - 07.12.04 - 04:39
Использовать объект Переодический
   Морозов Александр
 
2 - 07.12.04 - 04:40
Периодичекий... вернее
   jetcom
 
3 - 07.12.04 - 11:53
(1+2)Спасибо!
Пойду поиском покопаю...
   jetcom
 
4 - 08.12.04 - 09:38
Вроде накопал, но до конца так и не получилось разобраться:
    Пер = СоздатьОбъект("Периодический");
    Тов = СоздатьОбъект("Справочник.Номенклатура");
    СпрЦен=СоздатьОбъект("Справочник.Цены"); 
    ТипыЦен=СоздатьОбъект("Справочник.ТипыЦен"); 
    Тов.НайтиПоКоду("XXX");
    СпрЦен.ИспользоватьВладельца(Тов.ТекущийЭлемент()); 
    ТипыЦен.НайтиПоНаименованию("Закупочная");
        Пер.ИспользоватьОбъект( ??? , ??? ); 
    Пер.ВыбратьЗначения(,ТекущаяДата()); 
    Пока Пер.ПолучитьЗначение()=1 цикл 
        Ц=Пер.Значение; 
    КонецЦикла;
Что в моем случае нужно вставить вместо "???"
   Valery
 
5 - 08.12.04 - 09:46
В твоем случае необходимо вставить СпрЦен.ТекущийЭлемент(), но в твоем коде он не спозиционирован
   jetcom
 
6 - 08.12.04 - 10:03
Тогда каким образом этот код можно привести в соответствие поставленной задаче?
Т.е. перебрать историю цен для выбранного элемента номенклатуры для типа цены "Закупочная" ?
   Valery
 
7 - 08.12.04 - 10:28
В справочнике цен (спрЦен) есть реквизит "ТипЦен". Элемент с нужным значением и нужно найти.
Можно исп СпрЦен.НайтиПоРеквизиту("ТипЦен",ТипыЦен.ТекущийЭлемент())- если по этому реквизиту есть сортировка
иначе перебором
СпрЦен.ВыбратьЭлементы();
Пока СпрЦен.ПолучитьЭлемент()=1 Цикл
Если СпрЦен.ТипЦен=ТипЦен.ТекущийЭлемнт() тогда
Прервать;
КонецЕсли;
КонецЦикла;
   jetcom
 
8 - 08.12.04 - 10:51
(5+7)Что то не срастается...
 Пер.ИспользоватьОбъект( ??? , ??? ); 
Там два параметра нужно вставить, а с твоих слов только СпрЦен.ТекущийЭлемент()
В этом месте спотыкается выполнение...
   laeg
 
9 - 08.12.04 - 11:34
(8)
Тебе решение рабочее показать ?
   Valery
 
10 - 08.12.04 - 11:46
(8) Ну да.
СпрЦен.ТекущийЭлемент() -это объект. У этого объекта есть реквизиты. Первым параметром нужно указать этот реквизит (он должен быть периодическим,). Скорее всего это будет "Цена". точное название СМ в конфигураторе
 
  Рекламное место пустует
   jetcom
 
11 - 08.12.04 - 12:25
Вот в таком виде заработало:
    Пер = СоздатьОбъект("Периодический");
    Тов = СоздатьОбъект("Справочник.Номенклатура");
    СпрЦен=СоздатьОбъект("Справочник.Цены"); 
    ТипыЦен=СоздатьОбъект("Справочник.ТипыЦен"); 
    ТипыЦен.НайтиПоКоду("00005");
    Тов.НайтиПоКоду("10083");
    СпрЦен.ИспользоватьВладельца(Тов.ТекущийЭлемент()); 
    СпрЦен.ВыбратьЭлементы(); 
    
Пока СпрЦен.ПолучитьЭлемент()=1 Цикл 
Если СпрЦен.ТипЦен=ТипыЦен.ТекущийЭлемент() тогда 
Прервать; 
КонецЕсли; 
КонецЦикла; 
    Пер.ИспользоватьОбъект("Цена",СпрЦен.ТекущийЭлемент()); 
    Пер.ВыбратьЗначения(,ТекущаяДата()); 
    
    Пока Пер.ПолучитьЗначение()=1 цикл 
        Ц=Пер.Значение; 
    КонецЦикла;

Valery, спасибо огромное!
   laeg
 
12 - 08.12.04 - 12:27
(11)
Вот так будет по поставленной задаче

спрНом = СоздатьОбъект("Справочник.Номенклатура");
спрЦен = СоздатьОбъект("Справочник.Цены");
спрТипЦен = СоздатьОбъект("Справочник.ТипыЦен");
спрТипЦен.НайтиПоНаименованию("Закупочные");
Пер = СоздатьОбъект("Периодический");
спрНом.ВыбратьЭлементы();
Пока спрНом.ПолучитьЭлемент() = 1 Цикл
Если спрНом.ЭтоГруппа() = 1 Тогда Продолжить КонецЕсли;
Сообщить("Товар: " + СокрЛП(спрНом));
спрЦен.ИспользоватьВладельца(спрНом.ТекущийЭлемент());
Если спрЦен.НайтиПоРеквизиту("ТипЦен",спрТипЦен.ТекущийЭлемент(),0) = 1 Тогда
Пер.ИспользоватьОбъект("Цена",СпрЦен.ТекущийЭлемент()); 
Пер.ВыбратьЗначения();
нм = 1;
Пока нм = 1 Цикл
Если Пер.ПолучитьЗначение() = 0 Тогда нм = 0
ИначеЕсли ПустоеЗначение(Пер.Значение) = 0 Тогда
нм = 0;
Сообщить("....Тип цены: " + СокрЛП(спрЦен.ТипЦен)+ ", Первая цена:" + СокрЛП(Пер.Значение));
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
   jetcom
 
13 - 08.12.04 - 12:37
(12)Красавчик! Как раз вовремя, дал мне возможность самому разобраться с объектом "Периодический" (не без помощи, конечно Valery), и тут на тебе готовое решение! ;) К которому я только начал подбираться...
Спасибки огромные!!! :)))
   laeg
 
14 - 08.12.04 - 12:39
(13)
Смотри (9)
   jetcom
 
15 - 08.12.04 - 12:43
1С не без добрых людей:)


Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует