Получить значение переодического реквизита в чем проблема
Просьба подсказать в чем проблема ???
конфа смописка, справочник тарифы - реквизит ЦенаРаботы - переодический (изменяется документами + ручное изм)
конфа смописка, справочник тарифы - реквизит ЦенаРаботы - переодический (изменяется документами + ручное изм)
Функция ПолучитьТариф(Конт)
Трф=СоздатьОбъект("Справочник.Тарифы");
Ц=0;
Если Трф.НайтиПоКоду(Число(Конт.ПолныйКод()),0)=1 Тогда
Ц=Трф.ЦенаРаботы.Получить(); // сдесь только по 2 позициям есть значения остальные =0
// хотя при просмотре истории значения >0
Возврат(Строка(Ц));
Иначе
Возврат("");
КонецЕсли;
КонецФункции
ПоказатьОтветы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
// кусок моей древней 100% работавшей обработки по переносу цен из 77 в 8.1
ОлеНоменклатура=ОЛЕ.CreateObject("Справочник.Номенклатура");
ОлеЦены = ОЛЕ.CreateObject("Справочник.Цены");
ОлеНоменклатура.ВыбратьЭлементы(1);
Пока ОлеНоменклатура.ПолучитьЭлемент() = 1 Цикл
ОлеЦены.ИспользоватьДату(Дата); //после этой команды работаем
//как будто все реквизиты непериодические
ОлеЦены.ВыбратьЭлементы(1);
Пока ОлеЦены.ПолучитьЭлемент() = 1 Цикл
НоваяСтрока = ТЗЦен.Добавить();
НоваяСтрока.Ном = НайтиНоменклатуру(ОлеЦены.Владелец);
НоваяСтрока.Цена = ОлеЦены.Цена; //Этот реквизит периодический
КонецЦикла;
КонецЦикла;
ОлеНоменклатура=ОЛЕ.CreateObject("Справочник.Номенклатура");
ОлеЦены = ОЛЕ.CreateObject("Справочник.Цены");
ОлеНоменклатура.ВыбратьЭлементы(1);
Пока ОлеНоменклатура.ПолучитьЭлемент() = 1 Цикл
ОлеЦены.ИспользоватьДату(Дата); //после этой команды работаем
//как будто все реквизиты непериодические
ОлеЦены.ВыбратьЭлементы(1);
Пока ОлеЦены.ПолучитьЭлемент() = 1 Цикл
НоваяСтрока = ТЗЦен.Добавить();
НоваяСтрока.Ном = НайтиНоменклатуру(ОлеЦены.Владелец);
НоваяСтрока.Цена = ОлеЦены.Цена; //Этот реквизит периодический
КонецЦикла;
КонецЦикла;
// кусок моей древней 100% работавшей обработки по переносу цен из 77 в 8.1
ОлеНоменклатура=ОЛЕ.CreateObject("Справочник.Номенклатура");
ОлеЦены = ОЛЕ.CreateObject("Справочник.Цены");
ОлеНоменклатура.ВыбратьЭлементы(1);
Пока ОлеНоменклатура.ПолучитьЭлемент() = 1 Цикл
ОлеЦены.ИспользоватьДату(Дата); //после этой команды работаем
//как будто все реквизиты непериодические
ОлеЦены.ВыбратьЭлементы(1);
Пока ОлеЦены.ПолучитьЭлемент() = 1 Цикл
НоваяСтрока = ТЗЦен.Добавить();
НоваяСтрока.Ном = НайтиНоменклатуру(ОлеЦены.Владелец);
НоваяСтрока.Цена = ОлеЦены.Цена; //Этот реквизит периодический
КонецЦикла;
КонецЦикла;
просто получить(дата) и все больше ничего не нужно у него
ОлеНоменклатура=ОЛЕ.CreateObject("Справочник.Номенклатура");
ОлеЦены = ОЛЕ.CreateObject("Справочник.Цены");
ОлеНоменклатура.ВыбратьЭлементы(1);
Пока ОлеНоменклатура.ПолучитьЭлемент() = 1 Цикл
ОлеЦены.ИспользоватьДату(Дата); //после этой команды работаем
//как будто все реквизиты непериодические
ОлеЦены.ВыбратьЭлементы(1);
Пока ОлеЦены.ПолучитьЭлемент() = 1 Цикл
НоваяСтрока = ТЗЦен.Добавить();
НоваяСтрока.Ном = НайтиНоменклатуру(ОлеЦены.Владелец);
НоваяСтрока.Цена = ОлеЦены.Цена; //Этот реквизит периодический
КонецЦикла;
КонецЦикла;
просто получить(дата) и все больше ничего не нужно у него
(4) пробовал результат <0>
Вот еще вариант
Может кто чего подскажет???
Вот еще вариант
Функция ПолучитьТариф(Конт)
Трф=СоздатьОбъект("Справочник.Тарифы");
ЦТрф=СоздатьОбъект("Периодический");
Ц=0;
Если Трф.НайтиПоКоду(Число(Конт.ПолныйКод()),0)=1 Тогда
ЦТрф.ИспользоватьОбъект("ЦенаРаботы",Трф.ТекущийЭлемент()); // сдесь если на некоторых позициях выкидывает на ЦенаРаботы не является константой или периодическим параметром!
ЦТрф.выбратьзначения() ;
Если ЦТрф.получитьзначение()=1 тогда
Ц=строка(ЦТрф.значение);
//Ц=ЦТрф.ЗначениеНаДату(ТекущаяДата());
//Ц=Трф.ЦенаРаботы.Получить();
Возврат(Строка(Ц));
Иначе
Возврат("");
КонецЕсли;
Иначе
Возврат("");
КонецЕсли;
КонецФункции
ПоказатьМожет кто чего подскажет???
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот