Перейти к содержимому

Как получить цену из регистра сведений 1с

  • автор:

Как вытащить Цену из Регистра сведений в документ Реализация Товара

<Документ.РеализацияТоваров.Форма.ФормаДокумента.Форма(24,2)>: Переменная не определена (РегистрСведений)
<<?>>РегистрСведений.ЦеныНоменклатуры = ЦеныНоменклатуры; (Проверка: Тонкий клиент)
<Документ.РеализацияТоваров.Форма.ФормаДокумента.Форма(25,11)>: Переменная не определена (РегистрСведений)
Данные = <<?>>РегистрСведений.ЦеныНоменклатуры.ПолучитьПоследнее( , ЦенаОтбор); (Проверка: Тонкий клиент)
<Документ.РеализацияТоваров.Форма.ФормаДокумента.Форма(24,37)>: Переменная не определена (ЦеныНоменклатуры)
РегистрСведений.ЦеныНоменклатуры = <<?>>ЦеныНоменклатуры; (Проверка: Тонкий клиент)

Подскажите, почему выдает ошибку? Я уже все поперепробовала.

Вытащить цены из регистра сведений
Добрый день! Прошу подсказать, что не так. Перелопатила кучу тем, так и не нашла решения. Ошибка.

Вытащить значения из регистра сведений
Помогите решить проблему: при создании регистра сведений цены, подчиненного регистратору -.

Как "вытащить" цену номенклатуры из регистра Продажи
Пытаюсь вытащить продажную цену из регистра продажи. Система выдает ошибку, что таблица.

вывод количества рабочих часов из регистра сведений в документ
помогите пожалуйста, очень надо как в регистре сведений График работы подсчитать сумму колонки.

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

Сообщение от Шура123

Добавить в отбор поле характеристика из ТЧ, оно в регистре тоже есть

А тумаков раздадут за некропостинг видимо 🙂

Сообщение от Yulunga

Добавлено через 1 минуту
Шура123, когда вы используете функцию ПолучитьПоследнее(), то в отборе должны быть все измерения регистра. Цвет — это измерение? Если заданы не все измерения — используйте запрос к виртуальной таблице периодического регистра сведений — СрезПоследних()

Сообщение от Шура123
Сообщение от GreenkA

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

Получение цен для каждого товара табличной части из периодического регистра сведений
Ребята, помогите! вам наверное это покажется элементарным, но я только учусь, будьте.

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

Как скопировать запись регистра сведений?
Здравствуйте спецы. Вопрос возник. Мне надо скопировать email контрагента и вставить его в новое.

Получить последнюю цену из регистра сведений

Здравствуйте друзья.
Пробую получить цену из регистра сведений. Хотелось бы обойтись без запроса.

Полный код процедуры такой.

&НаСервере
Процедура ДобавитьСтрокуНеИзДокумента(СсылкаНоменклатура)
НовСтрока = Объект.Товары.Добавить();
НовСтрока.Номенклатура = СсылкаНоменклатура;
НовСтрока.Номер = Объект.Товары.Количество();
НовСтрока.Производитель = СсылкаНоменклатура.Производитель;
НовСтрока.Страна = СсылкаНоменклатура.УАС_СтранаПроизводителя;
НовСтрока.ЕдиницаИзмерения = СсылкаНоменклатура.ЕдиницаИзмерения;
НовСтрока.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
НовСтрока.Количество = 1;
//НовСтрока.Цена = 0;
Отбор = Новый Структура;
Отбор.Вставить("Номенклатура", СсылкаНоменклатура);
Дата = ТекущаяДата();
НовСтрока.Цена = РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(Дата, Отбор);
КонецПроцедуры

Однако Цена не получается. Что делаю не так?

(0) Посмотри, что вот это возвращает:

вернет массив записей. тк по этой номенклатуре может быть еще валом записей — типа разные характеристики, типы цен и так далее

РегистрСведенийМенеджер.<Имя регистра сведений> (InformationRegisterManager.<Имя регистра сведений>)
ПолучитьПоследнее (GetLast)
Синтаксис:

ПолучитьПоследнее(<КонецПериода>, <Отбор>)
Параметры:

Тип: Дата; МоментВремени; Граница.
Определяет момент времени, по который необходимо получить значения ресурсов. Может задаваться значениями типа Дата, МоментВремени или Граница. Если параметр не указан, то будут возвращены значения ресурсов самой последней записи регистра.
<Отбор> (необязательный)

Тип: Структура.
Структура, содержащая отбор по измерениям регистра. Имя ключа структуры должно совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры — задает отбираемое по данному измерению значение.
Структура дополнительно может иметь элементы, соответствующие разделителям регистра с уровнем разделения НезависимоИСовместно, в состав которых входит регистр. Если такой элемент структуры задан для используемого в сеансе разделителя, значение для этого элемента должно совпадать со значением разделителя, иначе будет вызвано исключение.
Если параметр не указан, то отбор не используется.
Возвращаемое значение:

Тип: Структура.
Возвращает структуру, содержащую значения ресурсов.

РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(Дата, Отбор).ЦЕНА (или что-то там. ) ?

хотя розничная цена у него 12 руб

(36)И в самом деле, через запрос тоже Null дает,

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

Может из за того что Серии не указываю?

&НаСервере
Процедура ДобавитьСтрокуНеИзДокумента(СсылкаНоменклатура)
НовСтрока = Объект.Товары.Добавить();
НовСтрока.Номенклатура = СсылкаНоменклатура;
НовСтрока.Номер = Объект.Товары.Количество();
НовСтрока.Производитель = СсылкаНоменклатура.Производитель;
НовСтрока.Страна = СсылкаНоменклатура.УАС_СтранаПроизводителя;
НовСтрока.ЕдиницаИзмерения = СсылкаНоменклатура.ЕдиницаИзмерения;
НовСтрока.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
НовСтрока.Количество = 1;

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

НовСтрока.Сумма = НовСтрока.Цена * НовСтрока.Количество;
КонецПроцедуры

Как получить цену из регистра сведений?

Какие есть возможности по работе с регистром сведений, чтобы получить оттуда данные?

Sagittarius's user avatar

Есть два варианта получения данных из РС (регистра сведений):

1. Объектная модель

Почитайте о методе в СП (синтакс-помощнике) введите сюда описание изображения

2. Запросом. Используя виртуальную таблицу "СрезПоследних". В моем примере синонимы регистра, измерений, ресурсов могут отличаться, так как брал данные из УТ 11.4.

Sagittarius's user avatar

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.6.20.43502

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Регистры сведений в 1С (Примеры работы)

РегистрСведенийМенеджерЗаписи.<имя>. Позволяет читать, записывать и удалять отдельную запись регистра сведений. Используется только для регистров сведений, не изменяемых регистраторами, т. е. для которых в конфигураторе установлен режим записи Независимый.

РегистрСведенийЗапись.<имя>. Предоставляет доступ к записи регистра сведений. Объект не создается непосредственно, а предоставляется другими объектами, связанными с регистром сведений. Например, данный объект представляет записи регистра в наборе записей.

РегистрСведенийКлючЗаписи.<имя>. Представляет собой набор значений, однозначно идентифицирующих запись регистра. Объект используется в тех случаях, когда необходимо сослаться на определенную запись. Например, он выступает в качестве значения свойства ТекущаяСтрока табличного поля, отображающего список записей регистра.
Использование объектов:

// РегистрыСведений // Пример: Получить текущую цену из периодического регистра сведений Цены Элемент = Справочники.Номенклатура.НайтиПоКоду(4); Отбор = Новый Структура(«Номенклатура»,Элемент); ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(ТекущаяДата(), Отбор); // .<имя регистра сведений> // [<имя регистра сведений>] // Для Каждого … Из … Цикл … КонецЦикла; // Пример: Открыть форму списка регистра сведений Цены ИмяРегистра = «Цены»; Форма = РегистрыСведений[ИмяРегистра].ПолучитьФормуСписка(); Форма.Открыть(); // СоздатьКлючЗаписи() // Пример: Активизировать требуемую строку списка регистра сведений СтруктураКлючевыхПолей = Новый Структура; СтруктураКлючевыхПолей.Вставить(«Период», Дата(«20040331000000»)); СтруктураКлючевыхПолей.Вставить(«Номенклатура», Справочники.Номенклатура.НайтиПоКоду(«0000006»)); ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока = РегистрыСведений.Цены.СоздатьКлючЗаписи(СтруктураКлючевыхПолей); // СоздатьНаборЗаписей() // Пример: Показать номенклатуру, цена на которую была установлена в заданную дату и время Набор = РегистрыСведений.Цены.СоздатьНаборЗаписей(); Набор.Отбор.Период.Установить(ЗаданнаяДата, Истина); Набор.Прочитать(); Для Каждого ОчереднаяЗапись Из Набор Цикл Сообщить(«Номенклатура = » + ОчереднаяЗапись.Номенклатура + «, цена = » + ОчереднаяЗапись.Цена); КонецЦикла; // СоздатьМенеджерЗаписи() // Пример: Добавить новое значение цены в регистр Цены Запись = РегистрыСведений.Цены.СоздатьМенеджерЗаписи(); Запись.Период = ТекущаяДата(); Запись.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(«0000005»); Запись.Цена = 568; Запись.Записать(); // [<индекс элемента коллекции>] // Для Каждого … Из … Цикл … КонецЦикла; // Пример: Показать номенклатуру, цена на которую была установлена в заданную дату и время Набор = РегистрыСведений.Цены.СоздатьНаборЗаписей(); Набор.Отбор.Период.Установить(ЗаданнаяДата, Истина); Набор.Прочитать(); Для Каждого ОчереднаяЗапись Из Набор Цикл Сообщить(«Номенклатура = » + ОчереднаяЗапись.Номенклатура + «, цена = » + ОчереднаяЗапись.Цена); КонецЦикла; // ПолучитьМенеджерЗаписи() // Пример: Удалить все записи регистра сведений за текущий месяц Выборка = РегистрыСведений.Цены.Выбрать(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата())); Пока Выборка.Следующий() цикл Выборка.ПолучитьМенеджерЗначения().Удалить(); КонецЦикла; // Выбрать() // ВыбратьПоРегистратору() // Пример: Показать изменение цен на элемент номенклатуры в течение года Отбор = Новый Структура(«Номенклатура», Справочники.Номенклатура.НайтиПоКоду(«0000005»)); Выборка = РегистрыСведений.Цены.Выбрать(НачалоГода(ТекущаяДата()),ТекущаяДата(),Отбор); Пока Выборка.Следующий() Цикл Сообщить(«Дата = » + Выборка.Период + «, цена crayon-main» style=»»>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *