• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Как выгрузить тип цен

  • Автор темы Автор темы cacti
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
C

cacti

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

ВЫБРАТЬ
Ном.Код,
Ном.Наименование,
ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
Справочник.Номенклатура КАК Ном
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО Ном.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
ГДЕ
ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен
 
Процедура Построитель(Построитель) Экспорт

Построитель.Текст = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ

| Товары.Наименование КАК Наименование,
| Товары.Артикул КАК Артикул,
и тд.

потом в форме прописывается

Построитель(ПостроительОтчетаКаталог);
ПостроительОтчетаКаталог.Отбор.Добавить("Номенклатура");

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

Так пойдет? или параметры программно надо устанавливать?
 
"ВЫБРАТЬ
| Ном.Код,
| Ном.Наименование,
| ЦеныНоменклатурыСрезПоследних.Цена,
| ЦеныНоменклатурыСрезПоследних.ТипЦен
|ИЗ
| Справочник.Номенклатура КАК Ном
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
| ПО Ном.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
|{ГДЕ
| (ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен) КАК ТипЦен}";

Так пойдет? или параметры программно надо устанавливать?
Зачем использовать "ЛЕВОЕ СОЕДИНЕНИЕ" когда номенклатура в регистре есть? и проще платформе и проще писать/читать запрос потом.

Вариант 2, использование объектной модели, если цена нужна для одной номенкдатуры:

Код:
ОтборНоменклатуры = Новый Структура;
ОтборНоменклатуры.Вставить("Номенклатура,ТипЦен", Номенклатура, ТипЦен);
Цена = РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследне([ДатаНаКоторуюНадо], ОтборНоменклатуры).Цена;

Если не использовать ".Цена", то метод вернет структуру соответствующую структуре регистра.
 
получилось добавить ТицЦен в отбор, только когда я выбираю ТицЦен у меня предлагаются два варианта истина или ложь, а мне нужно чтобы переходил в справочник ТипыЦенНоменклатуры..чтобы была возможность выбора по каким типам цен выгружать данные
 
Чето не особо понятен вопрос, но если я правильно думаю то надо так:
Код:
Запрос = новый Запрос;

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

Запрос.УстановитьПараметры("ДатаСреза", Дата); //Дата на которую получаешь цены
Запрос.УстановитьПараметры("ТипЦен", ТипЦен); //Тип цены которую хочешь получить

Это вот запрос как получить цены по типу цен.

Или ты не знаешь как вынести параметр на форму, чтобы его впоследствии задать?
Если так, то на форму выносишь Поле ввода, указываешь у него тип, например: "СправочникСсылка.ТипыЦен", а далее в код вставляешь текст:
Код:
ПостроительОтчета.Параметры.Вставить("ТипЦен", ИмяДанныхПоляВвода);
Если я тебя правильно понял :)
 
а каким образом работает Запрос.УстановитьПараметры("ТипЦен", ТипЦен); ? я в форме добавила ПостроительОтчета.Отбор.Вставить("ТипЦен"); но отбор не происходит по типуцен. и нужно чтобы в форме ТипЦен был не в отдельным поле, а все было в таблице ПостроительОтчетаОтбор. я новичок в этом, одной сложно разобраться.
 
cacti
А по моему в отбор в построителе попадают все поля, которые получаются в результате запроса.
Если вы используете конструктор, то надо на закладке "Выходная форма", далее закладка "Форма настройки построителя отчета" и там поставить галку напротив "Отбор".
Таким образом в режиме 1С:Предприятие, вы можете зайти в настройки отчета, перейти на закладку "Отбор", там нажать кнопку "Добавить" и увидите на выбор все доступные поля для отбор, а к доступным полям как я уже описал выше относятся все те, которые вы получаете в результате запроса.

Что касается Запрос.УстановитьПараметры("ТипЦен", ТипЦен), то на этот счет я бы вам посоветовал почитать книгу например Радченко "Пособие разработчика", очень хорошая книжка для начинающих :P

З.Ы. Построитель штука не простая ;)

З.З.Ы. А параметры, которые мы накладываем на Запрос обязательны в указании на форме, например такой параметр как "ДатаСреза", отбором такое точно не делается :ithx:
 
Вариант 1 (без запросов):
Если не нужен отбор по номенклатуре, то можно сделать так:

Код:
ОтборНоменклатуры = Новый Структура;
ОтборНоменклатуры.Вставить("ТипЦен", ТипЦен);
ВыборкаЗаписей = РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследне([ДатаНаКоторуюНадо], ОтборНоменклатуры);

Пока ВыборкаЗаписей.Следующий() Цикл
...
[делаем что надо и что не надо]
КонецЦикла;

Вариант 2 (с помощью построителя) - параметры должны устанавливаться до выполнения запроса, иначе ERROR'ами завалит

Вариант 3 (с помощью СКД) - куда проще, чем построитель, но и мороки больше чем с построителем.

З.Ы. Дату для регистра можно не указывать, тогда платформа возьмет последнее на сегодня.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab