Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 21:23

Как получить последнее значение ресурса при 3 измерениях?

Автор Лакорд, 30 мая 2016, 17:52

0 Пользователей и 1 гость просматривают эту тему.

Лакорд

Добрый день!

Прошу ногами не пинать, только учусь...
Есть периодический РегистрСведений с 3 измерениями (Направление, ТипОплаты, Продолжительность) и 1 ресурс (Цена). Помогите, пожалуйста, в таблицу справочника получить значение последней цены на текущую дату при определенной комбинации измерений?

mixqn

Срез последних на дату по вашим измерениям.
Добавлено: 30 мая 2016, 17:56


примерно так будет выглядеть текст запроса:
"ВЫБРАТЬ
|   ВашРегистрСведений.Цена
|ИЗ
|   РегистрСведений.ВашРегистрСведений.СрезПоследних(&ДатаСреза, Направление = &Направление И ТипОплаты = &ТипОплаты И Продолжительность = &Продолжительность ) КАК ВашРегистрСведений"

Лакорд

А подробнее можно, а то пока это темный лес...

mixqn

Какой именно аспект описать подробнее? :)
Если вы совсем не понимаете, о чем идет речь, то нужно сначала какие-то базовые навыки по программированию изучить по книжкам ну или курсы какие пройти. Научиться программировать на форуме вряд ли возможно.

Rasty

Радченко советую почитать, очень подробно и доступно :)
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Лакорд

Да, вот и изучаю книжки. Но чтобы было более продуктивно, взял конкретную задачу и пытаюсь реализовать, но попадаю в в некоторые информационные пустоты которые пока сам не могу догнать как преодолеть. Вот последний вариант моего кода:

&НаКлиенте
Процедура СтоимостьНаправлениеПриИзменении(Элемент)
   СтрТаб = Элементы.Стоимость.ТекущиеДанные;
   НашаДата = ТекущаяДата();
   СтрТаб.Цена = ПолучитьЦену(СтрТаб.Направление,СтрТаб.ТипОплаты,СтрТаб.Продолжительность,НашаДата);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьЦену(НашеНаправление,НашТипОплаты,НашаПродолжительность,ТекДата)
   Запрос = Новый Запрос;
   Запрос.Текст = "Выбрать *
   | ИЗ РегистрСведений.Цены.ПолучитьПоследнее(ТекДата, Направление = &Направление И ТипОплаты = &ТипОплаты И Продолжительность = &Продолжительность ) КАК Цены";
   Запрос.УстановитьПараметр("Направление", НашеНаправление);
   Запрос.УстановитьПараметр("ТипОплаты", НашТипОплаты);
   Запрос.УстановитьПараметр("Продолжительность", НашаПродолжительность);
   Результат = Запрос.Выполнить();
   Возврат Результат.Цена;
   
КонецФункции

Подскажите как заставить закинуть Цену в справочник?

Rasty

Запрос.Выполнить() - Это результат запроса, чтоб получить данные надо Результат.Выбрать() и потом обходить выборку или Результат.Выгрузить() вернет вам табличку
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

vitasw

+
Цитата: Лакорд от 30 мая 2016, 18:16| ИЗ РегистрСведений.Цены.ПолучитьПоследнее(ТекДата, Направление =

Это что за ноу-хау? Пользуйтесь конструктором запросов.

TytovV

Да человек спрашивает как из 4 строк выбрать например 3 строку, со своим значением, если я правильно понял, если это так, то запросом вы выбираете все значения и в это момент поставить условие для того чтобы поймать эту строку обычным Если "вашастрока" = Выборка.Значение Тогда
Возврат Выборка.значение;
КонецЕсли; -это условие сработает в цикле, если без функции и делаете в процедуре то передайте в переменную глобальную в начало всей процедуры и можете ловить это значение в любой другой процедуре.


Отправлено с моего iPhone используя Tapatalk

Лакорд

Я все со своим вопросом. Никак не могу побороть. Ай нид хелп... :dfbsdfbsdf:

Функция ПолучитьСтоимость(НашаДата,НашеНаправление,НашТипОплаты,НашаДлительность)
   
   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("ТекДата", НашаДата);
   Запрос.УстановитьПараметр("Направление", НашеНаправление);
   Запрос.УстановитьПараметр("ТипОплаты", НашТипОплаты);
   Запрос.УстановитьПараметр("Продолжительность", НашаДлительность);
   Запрос.Текст = "ВЫБРАТЬ 
   |СтоимостьЗанятий.Направление,
   |СтоимостьЗанятий.ТипОплаты,
   |СтоимостьЗанятий.Продолжительность,
   |СтоимостьЗанятий.Цена
   |ИЗ
   |РегистрСведений.СтоимостьЗанятий.СрезПоследних(&ТекДата, Направление=&Направление И ТипОплаты=&ТипОплаты И Продолжительность=&Продолжительность) КАК СтоимостьЗанятий";
     ЗначениеСтоимости = Запрос.Выполнить().Выбрать();
   
   Возврат ЗначениеСтоимости.Цена;

КонецФункции

Никаких ошибок не выдает, но и значение не вытягивает. Что не так?
Мне нужно по известной комбинации трех измерений получить цену.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск