ВЫБРАТЬ Администратор, Компютер, НачалоСеанса, ОкончаниеСеанса, Тариф, Сумма, ТипЦен, РСТипЦен.НачалоТарифа КАК НачалоТарифа, РСТипЦен.ОкончаниеТарифа КАК ОкончаниеТарифа, Цена
ИЗ Документ.ДокументОплаты КАК ДокОп ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТипЦен.СрезПоследних КАК РСТипЦен ПО ДокОп.Тариф = РСТипЦен.ТипЦен ГДЕ ВЫБОР ТипЦен КОГДА МЕЖДУ НачалоТарифа И НачалоСеанса И ТипЦен МЕЖДУ ОкончаниеТарифа И ОкончаниеСеанса ТОГДА Сумма = 1 КОНЕЦ
После в консоли все поля пустые.
В конечном варианте ЗАПРОС должен считать Сумму сеанса при том что сеанс может сразу проходить через разные тарифы.К примеру с часа до двух один тариф, с двух до 3 другой. Сеансы и Тарифы имеют тип дата. Помогите с задачей пожалуйста
РСТипЦен.ТипЦен это имя тарифа, тариф имеет имя, временной промежуток(к примеру с 08:00:00 до 20:00:00) и цену.
Цитата(logist @ 10.10.12, 16:58)
Неправильно поняли, читайте хотя бы встроенную справку по использованию.
ВЫБОР КОГДА 'УСЛОВИЕ' ТОГДА 'ЕСЛИ УСЛОВИЕ ИСТИНА' ИНАЧЕ 'ЕСЛИ УСЛОВИЕ ЛОЖЬ' КОНЕЦ Пример: ВЫБОР КОГДА 2=2 ТОГДА 2 ИНАЧЕ 0 КОНЕЦ
Понял,СПАСИБО.
Тогда какой параметр должен быть перед МЕЖДУ? я это тоже не понял. Из справки Оператор МЕЖДУ позволяет проверить, входит ли значение выражения, указанного справа от него, в диапазон, указанный слева (вместе с границами диапазона). Если входит – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.
Тут ничего не написано про параметр который должен быть перед между, без параметра консоль выдает ошибку.
Не, так долго гадать можно... Опишите, плиз, структуры данных, участвующих в приведенном запросе. в см - реквизиты Документ.ДокументОплаты, РегистрСведений.ТипЦен с типами данных.
А то пока видится такое решение:
... ИЗ Документ.ДокументОплаты КАК ДокОп ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТипЦен.СрезПоследних КАК РСТипЦен ПО ДокОп.Тариф = РСТипЦен.ТипЦен И ДокОп.НачалоСеанса МЕЖДУ РСТипЦен.НачалоТарифа И РСТипЦен.ОкончаниеТарифа
Оно, конечно, сильно упрощенное, но жизнеспособное при определенных условиях
Пример: ВЫБОР КОГДА (2 МЕЖДУ 1 И 2) И (2 МЕЖДУ 2 И 3) ТОГДА 2 ИНАЧЕ 0 КОНЕЦ
Понял
Цитата(kivals @ 10.10.12, 17:14)
Не, так долго гадать можно... Опишите, плиз, структуры данных, участвующих в приведенном запросе. в см - реквизиты Документ.ДокументОплаты, РегистрСведений.ТипЦен с типами данных.
А то пока видится такое решение:
... ИЗ Документ.ДокументОплаты КАК ДокОп ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТипЦен.СрезПоследних КАК РСТипЦен ПО ДокОп.Тариф = РСТипЦен.ТипЦен И ДокОп.НачалоСеанса МЕЖДУ РСТипЦен.НачалоТарифа И РСТипЦен.ОкончаниеТарифа
Оно, конечно, сильно упрощенное, но жизнеспособное при определенных условиях
[необходимо зарегистрироваться для просмотра ссылки]
Выгрузка, думаю так ясней всего будет.
Цитата(kivals @ 10.10.12, 17:14)
Не, так долго гадать можно... Опишите, плиз, структуры данных, участвующих в приведенном запросе. в см - реквизиты Документ.ДокументОплаты, РегистрСведений.ТипЦен с типами данных.
А то пока видится такое решение:
... ИЗ Документ.ДокументОплаты КАК ДокОп ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТипЦен.СрезПоследних КАК РСТипЦен ПО ДокОп.Тариф = РСТипЦен.ТипЦен И ДокОп.НачалоСеанса МЕЖДУ РСТипЦен.НачалоТарифа И РСТипЦен.ОкончаниеТарифа
Оно, конечно, сильно упрощенное, но жизнеспособное при определенных условиях
Да так, когда понял до конца как работает между.
ВЫБОР КОГДА НачалоТарифа МЕЖДУ НачалоСеанса И ОкончаниеСеанса И ОкончаниеСеанса МЕЖДУ НачалоСеанса И ОкончаниеСеанса ТОГДА РАЗНОСТЬДАТ Сумма=(НачалоСеанса - ОкончаниеСеанса,МИНУТА) * Цена ИНАЧЕ РАЗНОСТЬДАТ Сумма = (НачалоСеанса - ОкончаниеТарифа)* Цена + (НачалоСеанса - ОкончаниеТарифа)* Цена Конец
Цитата(VolandMaster @ 10.10.12, 17:37)
Понял
[необходимо зарегистрироваться для просмотра ссылки]
Выгрузка, думаю так ясней всего будет.
Да так, когда понял до конца как работает между.
ВЫБОР КОГДА НачалоТарифа МЕЖДУ НачалоСеанса И ОкончаниеСеанса И ОкончаниеСеанса МЕЖДУ НачалоСеанса И ОкончаниеСеанса ТОГДА РАЗНОСТЬДАТ Сумма=(НачалоСеанса - ОкончаниеСеанса,МИНУТА) * Цена ИНАЧЕ РАЗНОСТЬДАТ Сумма = (НачалоСеанса - ОкончаниеТарифа)* Цена + (НачалоСеанса - ОкончаниеТарифа)* Цена Конец
Примерно так должно быть, но я опять не доконца все понял походу
Стоимость задается через документ СозданиеТарифа,данные сохраняются в регистре сведений.В запросе мне нужно узнать под какой тариф попадает сеанс,попадает под один или несколько, и рассчитать сумму оплаты, ЦенаТарифа*ВремяСеанса.
ДокументОплаты имеет реквизиты Наименование(название тарифа) ВремяНачало(Дата.Время) ВремяОкончания(Дата.Время) Цена(Число)
Итак: 1.Запрос надо будет формировать динамически (по-большому счету) ; секции запроса через Объединить количество секций равно количеству тарифов. Приблизительно так: (для двух тарифов)
выбрать // здесь лирика (&КонецТарифа1 - выбрать когда НачалоРаботы<&НачалоТарифа1 тогда &НачалоТарифа1 иначе НачалоРаботы конец ) как ПродолжительностьРаботы из документа где док.НачалоРаботы<&Конецтарифа1 или конецРаботы>&началоТарифа1
объединить
выбрать // здесь лирика (&КонецТарифа2 - выбрать когда НачалоРаботы<&НачалоТарифа2 тогда &НачалоТарифа2 иначе НачалоРаботы конец ) как ПродолжительностьРаботы из документа где док.НачалоРаботы<&Конецтарифа2 или конецРаботы>&началоТарифа2
и т.д . до упора
итог: выбираем из регистра все тарифы проходя по выборке, строим текст запроса, устанавливаем параметры выполняем запрос, получаем И-строк (по количеству тарифов) если не надо И-строк - группируем инфо в запросе
Сообщение отредактировал Vofka - 11.10.12, 10:30
Причина редактирования: Выделяйте, пожалуйста, код.
Тарифы создаются документом. Хранятся в РС. Мы же здесь строим запрос, чтобы получить информацию из документов оплаты (или в документе,что не прописано) по продолжительности работы в разных тарифных периодах для расчета к-примеру Суммы оплаты или получения отчета по работе пользователя
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!