Имя: Пароль:
1C
1C 7.7
v7: Подскажите что не там
0 DeMi4
 
26.03.12
09:43
Необходимо получить цену номенклатуры

Функция ПолучитьЦену(Номен,КодПоиска)
   
   СпрТипыЦен = СоздатьОбъект("Справочник.ТипыЦен");
   Если СпрТипыЦен.НайтиПоКоду(КодПоиска) = 1 Тогда
       ТекТипЦен = СпрТипыЦен.ТекущийЭлемент();
   КонецЕсли;
   
   СпрЦены = СоздатьОбъект("Справочник.Цены");
   СпрЦены.ИспользоватьВладельца(Номен);
   СпрЦены.НайтиПоРеквизиту("ТипЦен",ТекТипЦен,1);
   Цена = СпрЦены.Цена.Получить(ТекущаяДата());
   Возврат Цена;
КонецФункции
1 Джинн
 
26.03.12
09:44
Получайте, разрешаю.
2 Ёпрст
 
26.03.12
09:46
(0)
глПолучитьЦену()
глВернутьЦену()

делов то
3 andrewks
 
26.03.12
09:46
Подскажите что не там, подскажите, кто не здесь
4 DeMi4
 
26.03.12
09:50
Для каждой номенклатуры определяет одну и ту же цену взятую при обработке первого элемента
5 Ёпрст
 
26.03.12
09:52
(4) так и должно быть - ты же передаешь не весь что, и получаешь не весь что + нет ни одной проверки, что что-то найдено в справочнике
6 Ёпрст
 
26.03.12
09:52
если че, .ТекущийЭлемент()
7 0xFFFFFF
 
26.03.12
09:54
(0) Вот нет чтобы посмотреть уже давно изобретенные функции-велосипеды в конфигурации, нет же блин, сразу надо экраны кода плодить...
8 Джинн
 
26.03.12
09:55
См. (2)

Функция глПолучитьЦену(Номенклатура, Тип, НаДату, Единица=0, Валюта=0, Курс=0) Экспорт

//  Функция возвращает цену номенклатуры в указанном типе цен Тип, на дату НаДату,
//  за единицу измерения Единица, пересчитанную в валюту Валюта по курсу Курс
//
9 Джинн
 
26.03.12
09:57
Да, и СпрЦены.ИспользоватьВладельца вместе с СпрЦены.НайтиПоРеквизиту вряд ли работают.
10 DeMi4
 
26.03.12
09:58
Вот так заработало

Функция ПолучитьЦену(Номен,КодПоиска)
   
   СпрТипыЦен = СоздатьОбъект("Справочник.ТипыЦен");
   Если СпрТипыЦен.НайтиПоКоду(КодПоиска) = 1 Тогда
       ТекТипЦен = СпрТипыЦен.ТекущийЭлемент();
   КонецЕсли;
   
   СпрЦены = СоздатьОбъект("Справочник.Цены");
   СпрЦены.ИспользоватьВладельца(Номен.ТекущийЭлемент());
   СпрЦены.ВыбратьЭлементы();
   Пока СпрЦены.ПолучитьЭлемент() = 1 Цикл
       Если СпрЦены.ТипЦен <> ТекТипЦен Тогда
           Продолжить;
       Иначе
           Цена = СпрЦены.Цена.Получить(КонДата);
       КонецЕсли;
   КонецЦикла;
   
   Возврат Цена;
КонецФункции
11 DeMi4
 
26.03.12
09:58
А функция глПолучитьЦену не нашел в глобальнике есть только глВернутьЦену но она возвращает либо 1 0 -1
12 Ёпрст
 
26.03.12
10:00
(10) бредовый код:

если не найден тип цен по коду - привет котёнку
если нет такого типа цен в справочнике - аналогично болтс ошибкой выполнения при возврате неинициализированной переменной.
13 Джинн
 
26.03.12
10:00
(11) Учу читать. Дорого.

ЦенаЦены - переменная, которую надо заполнитиь значением (число) полученной цены
14 Ёпрст
 
26.03.12
10:01
(11) плохо искал - она там есть, это раз,  глВернутьЦену вернет цену, переданную параметром, это два.
15 DeMi4
 
26.03.12
10:08
Функция ПолучитьЦену(Номен,КодПоиска)
   
   Перем Цена;
   
   СпрТипыЦен = СоздатьОбъект("Справочник.ТипыЦен");
   Если СпрТипыЦен.НайтиПоКоду(КодПоиска) = 1 Тогда
       ТекТипЦен = СпрТипыЦен.ТекущийЭлемент();
   КонецЕсли;
   
   глВернутьЦену(Номен,ТекТипЦен,ТекущаяДата(),Цена);
   Возврат Цена;
КонецФункции
16 Aprobator
 
26.03.12
10:14
ужас. В случае не отработки условия - получишь ошибку.
17 idw
 
29.03.12
23:46
(15)  лучше так:

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

   Иначе
        Цена = 0;
   КонецЕсли;
   
   
   Возврат Цена;
КонецФункции
18 idw
 
29.03.12
23:47
(0) читал, что ты настраивал принтер OL-T2300, можешь здесь помочь v8: Настройка принтера OL-T2300  ?
Основная теорема систематики: Новые системы плодят новые проблемы.