Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как получить Срез Последних на Каждую Дату          
Vofka Подменю пользователя
сообщение 19.02.12, 22:00
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

С задачей получения среза последних на каждую дату рано или поздно сталкиваются все. Безусловно, это задача достаточно просто решается запросом с соединением по максимальной дате из меньших или равных дат. Но эту же задачу можно решить и с помощью компоновки данных. Не будем рассуждать о том, какой из способов более производителен, все может зависеть от конкретной задачи.

Первый набор данных:
В качестве примера, создадим отчет по продажам, в котором отдельной колонкой будем выводить цену из прайса на дату продажи.
Создадим набор данных-запрос «ПродажиОбороты»:

ВЫБРАТЬ
    ПродажиОбороты.Период КАК Дата,
    ПродажиОбороты.Контрагент КАК Контрагент,
    ПродажиОбороты.Номенклатура КАК Номенклатура,
    ПродажиОбороты.КоличествоОборот КАК Количество,
    ПродажиОбороты.СтоимостьОборот КАК Стоимость
{ВЫБРАТЬ
    Дата,
    Контрагент.*,
    Номенклатура.*,
    Количество,
    Стоимость}
ИЗ
    РегистрНакопления.Продажи.Обороты({(&НачалоПериода)},
{(&КонецПериода)}, День, ) КАК ПродажиОбороты
{ГДЕ
    ПродажиОбороты.Период,
    ПродажиОбороты.Контрагент.*,
    ПродажиОбороты.Номенклатура.*,
    ПродажиОбороты.КоличествоОборот,
    ПродажиОбороты.СтоимостьОборот}



Рис. 1 Вкладка ресурсы набора данных ПродажиОбороты


Рис. 2 Настройки отчета

Сейчас наш отчет будет иметь следующий вид:


Рис. 3 Формирование отчета с одним набором данных

Теперь необходимо добавить в отчет колонку «Цена по прайсу», которая будет подтягиваться из регистра сведений «Цены номенклатуры» на дату продажи.
Второй набор данных:

Добавим второй набор данных-запрос «Цены», цены будем брать для фиксированного типа цен:

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


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

Соединения наборов:
Приступим к основной «фишке» данного метода – соединениям наборов:



Рис. 4 Соединение наборов данных

Здесь самое основное правильно настроить параметры. Если указан параметр,то СКД передает в приемник связи параметры, указанные в соединении. Значениями этих параметров будут значения соответствующих полей источника связи.

Далее добавим поле цена в ресурсы и в выбранные поля.


Рис. 5 Вкладка ресурсы


Рис. 6 Выбранные поля

Результат:
Теперь можно формировать отчет. Проверим правильность работы отчета на примере «Дивана для отдыха».


Рис. 7 Итоговый отчет

То же самое запросом

[необходимо зарегистрироваться для просмотра ссылки]

Спасибо сказали: craneua, MATEVI, zetovich,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 12:30
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!