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

Вытащить данные из регистра сведений

Автор Sergejj, 20 апр 2017, 12:50

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

Sergejj

Здравствуйте! Помогите пожалуйста!
Есть периодический (по дням) регистр сведений ЦенаЗа1КГ. В нем отражены сведения: на какую дату, какая марка конфет, и сколько стоит 1 кг конфет этой марки.
Есть Документ ЗаказыКонфет, и в его форме элемента есть табличная часть Заказ, с полями: Вид, Количество, ЕдиницаИзмерения, Стоимость. Не получается написать корректно работающую процедуру, в которой она количество умножает на цену данной марки из регистра сведений. Я пробовал пройтись циклом по записям в регистре, в котором перебирались записи в регистре сведений ЦенаЗа1КГ, бралось оттуда значение цены, чтобы и значению Стоимость в табличной части Заказы присваивалось: Заказы.Количество*РегистрыСведений.ЦенаЗа1КГ.Цена. Но возникает ошибка - Итератор для значения не определен. Помогите пожалуйста! Может быть, я не так данные извлекаю из регистра, или запись неправильна. Подскажите пожалуйста!

ilyay

надо только сделать запрос:
Вытащить цены по номенклатуре срезом последних с регистра сведений с отбором в виртуальной таблице по только той номенклатуре, что в документе. Потом соединить эти данные с табличной частью и выполнить умножение цены на количество.


ilnur75

а использовать функцию например в общ.модуле, которая возвращает значение последней цены номенклатуры типа

Возврат РесгистрыСведений.ЦенаЗа1Кг.ПолучитьПоследнее(Дата,Номенклатура)

не то будет?

alex0402

Цитата: ilnur75 от 21 апр 2017, 17:03Возврат РесгистрыСведений.ЦенаЗа1Кг.ПолучитьПоследнее(Дата,Номенклатура)

Возврат РесгистрыСведений.ЦенаЗа1Кг.ПолучитьПоследнее(Дата,Новый Структура("Номенклатура",Номенклатура))
и вернет не число, а структуру.
Спасибо за Сказать спасибо

Kironten

Цитата: alex0402 от 21 апр 2017, 17:21
Цитата: ilnur75 от 21 апр 2017, 17:03Возврат РесгистрыСведений.ЦенаЗа1Кг.ПолучитьПоследнее(Дата,Номенклатура)

Возврат РесгистрыСведений.ЦенаЗа1Кг.ПолучитьПоследнее(Дата,Новый Структура("Номенклатура",Номенклатура))
и вернет не число, а структуру.
Ну и что?
А так написать религия не позволяет?
Возврат РесгистрыСведений.ЦенаЗа1Кг.ПолучитьПоследнее(Дата,Новый Структура("Номенклатура",Номенклатура)).Значение;

ilnur75

Цитата: alex0402 от 21 апр 2017, 17:21и вернет не число, а структуру
в таком виде возвращается значение:
Функция РозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт 
// Создать вспомогательный объект "Отбор".
Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);
// Получить актуальные значения ресурсов регистра.
ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);
Возврат ЗначенияРесурсов.Цена;
КонецФункции


Sergejj

Цитата: ilyay от 20 апр 2017, 13:03
надо только сделать запрос:
Вытащить цены по номенклатуре срезом последних с регистра сведений с отбором в виртуальной таблице по только той номенклатуре, что в документе. Потом соединить эти данные с табличной частью и выполнить умножение цены на количество.
Спасибо за ваш ответ! Я создал запрос, но только не могу понять, как отобрать только по  той номенклатуре, что есть в конкретном документе, и как соединить данные с табличной частью? Скидываю то, что у меня получилось

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

Рейтинг@Mail.ru

Поиск