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

Тема в разделе "1C и всё что с ней связано", создана пользователем cacti, 1 май 2010.

Статус темы:
Закрыта.
  1. cacti

    cacti Гость

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

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

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Запрос.установитьПараметр() ?
     
  3. cacti

    cacti Гость

    Процедура Построитель(Построитель) Экспорт

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

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

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

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

    как в построителе прописать чтобы можно добавить еще строку ТипЦен?
     
  4. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    В отбор или в выводимые поля?
     
  5. cacti

    cacti Гость

    в отбор
     
  6. unknown181538

    unknown181538 НеГуру
    1C Team

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

    Так пойдет? или параметры программно надо устанавливать?
     
  7. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Зачем использовать "ЛЕВОЕ СОЕДИНЕНИЕ" когда номенклатура в регистре есть? и проще платформе и проще писать/читать запрос потом.

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

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

    cacti Гость

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

    Buster Гость

    Чето не особо понятен вопрос, но если я правильно думаю то надо так:
    Код ( (Unknown Language)):
    Запрос = новый Запрос;

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

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

    Или ты не знаешь как вынести параметр на форму, чтобы его впоследствии задать?
    Если так, то на форму выносишь Поле ввода, указываешь у него тип, например: "СправочникСсылка.ТипыЦен", а далее в код вставляешь текст:
    Код ( (Unknown Language)):
    ПостроительОтчета.Параметры.Вставить("ТипЦен", ИмяДанныхПоляВвода);
    Если я тебя правильно понял :)
     
  10. cacti

    cacti Гость

    а каким образом работает Запрос.УстановитьПараметры("ТипЦен", ТипЦен); ? я в форме добавила ПостроительОтчета.Отбор.Вставить("ТипЦен"); но отбор не происходит по типуцен. и нужно чтобы в форме ТипЦен был не в отдельным поле, а все было в таблице ПостроительОтчетаОтбор. я новичок в этом, одной сложно разобраться.
     
  11. Buster

    Buster Гость

    cacti
    А по моему в отбор в построителе попадают все поля, которые получаются в результате запроса.
    Если вы используете конструктор, то надо на закладке "Выходная форма", далее закладка "Форма настройки построителя отчета" и там поставить галку напротив "Отбор".
    Таким образом в режиме 1С:Предприятие, вы можете зайти в настройки отчета, перейти на закладку "Отбор", там нажать кнопку "Добавить" и увидите на выбор все доступные поля для отбор, а к доступным полям как я уже описал выше относятся все те, которые вы получаете в результате запроса.

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

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

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

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Вариант 1 (без запросов):
    Если не нужен отбор по номенклатуре, то можно сделать так:

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

    Пока ВыборкаЗаписей.Следующий() Цикл
    ...
    [делаем что надо и что не надо]
    КонецЦикла;
    Вариант 2 (с помощью построителя) - параметры должны устанавливаться до выполнения запроса, иначе ERROR'ами завалит

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

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

Поделиться этой страницей