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

Хранилище

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

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



> Условие Между 2 страниц V   1 2 >          
VolandMaster Подменю пользователя
сообщение 10.10.12, 15:21
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Ровно
Спасибо сказали: 3 раз
Рейтинг: 0

Добрый день.Есть ЗАПРОС
ВЫБРАТЬ
        Администратор,
        Компютер,
        НачалоСеанса,
        ОкончаниеСеанса,
        Тариф,
        Сумма,
        ТипЦен,
        РСТипЦен.НачалоТарифа КАК НачалоТарифа,
            РСТипЦен.ОкончаниеТарифа КАК ОкончаниеТарифа,
        Цена

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

После в консоли все поля пустые.

В конечном варианте ЗАПРОС должен считать Сумму сеанса при том что сеанс может сразу проходить через разные тарифы.К примеру с часа до двух один тариф, с двух до 3 другой.
Сеансы и Тарифы имеют тип дата.
Помогите с задачей пожалуйста

sava1 Подменю пользователя
сообщение 10.10.12, 15:40
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Цитата(VolandMaster @ 10.10.12, 16:21) *
ГДЕ
ВЫБОР
ТипЦен КОГДА МЕЖДУ НачалоТарифа И НачалоСеанса И ТипЦен МЕЖДУ ОкончаниеТарифа И ОкончаниеСеанса
ТОГДА
Сумма = 1
КОНЕЦ


и что это за хрень? Выражение в условии должно возвращать БООЛ а не 1 или НУЛЛ

VolandMaster Подменю пользователя
сообщение 10.10.12, 15:47
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Ровно
Спасибо сказали: 3 раз
Рейтинг: 0

Цитата(sava1 @ 10.10.12, 16:40) *
и что это за хрень? Выражение в условии должно возвращать БООЛ а не 1 или НУЛЛ
Насколько понял если в КОГДА истина то переходит в ТОГДА если Лож то в ИНАЧЕ или КОНЕЦ

sava1 Подменю пользователя
сообщение 10.10.12, 15:55
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

тогда написать

ГДЕ
ТипЦен МЕЖДУ НачалоТарифа И НачалоСеанса И ТипЦен МЕЖДУ ОкончаниеТарифа И ОкончаниеСеанса

в результате - вернет записи где типЦен между указанными значениями
(по-мне так там не ТипЦен а какие-то значения должны быть ???)

Описание рС.ТипЦен в студию

logist Подменю пользователя
сообщение 10.10.12, 15:58
Сообщение #5

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(VolandMaster @ 10.10.12, 16:47) *
Насколько понял

Неправильно поняли, читайте хотя бы встроенную справку по использованию.

ВЫБОР КОГДА 'УСЛОВИЕ' ТОГДА 'ЕСЛИ УСЛОВИЕ ИСТИНА' ИНАЧЕ 'ЕСЛИ УСЛОВИЕ ЛОЖЬ' КОНЕЦ
Пример: ВЫБОР КОГДА 2=2 ТОГДА 2 ИНАЧЕ 0 КОНЕЦ


Signature
Личные бесплатные консультации не даю, для этого есть форум!

VolandMaster Подменю пользователя
сообщение 10.10.12, 16:07
Сообщение #6

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Ровно
Спасибо сказали: 3 раз
Рейтинг: 0

РСТипЦен.ТипЦен это имя тарифа, тариф имеет имя, временной промежуток(к примеру с 08:00:00 до 20:00:00) и цену.

Цитата(logist @ 10.10.12, 16:58) *
Неправильно поняли, читайте хотя бы встроенную справку по использованию.

ВЫБОР КОГДА 'УСЛОВИЕ' ТОГДА 'ЕСЛИ УСЛОВИЕ ИСТИНА' ИНАЧЕ 'ЕСЛИ УСЛОВИЕ ЛОЖЬ' КОНЕЦ
Пример: ВЫБОР КОГДА 2=2 ТОГДА 2 ИНАЧЕ 0 КОНЕЦ

Понял,СПАСИБО.

Тогда какой параметр должен быть перед МЕЖДУ? я это тоже не понял.
Из справки
Оператор МЕЖДУ позволяет проверить, входит ли значение выражения, указанного справа от него, в диапазон, указанный слева (вместе с границами диапазона). Если входит – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.

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

kivals Подменю пользователя
сообщение 10.10.12, 16:14
Сообщение #7

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 105
Из: Киев
Спасибо сказали: 27 раз
Рейтинг: 0

Не, так долго гадать можно...
Опишите, плиз, структуры данных, участвующих в приведенном запросе.
в см - реквизиты Документ.ДокументОплаты, РегистрСведений.ТипЦен с типами данных.

А то пока видится такое решение:
...
ИЗ
        Документ.ДокументОплаты КАК ДокОп
        ЛЕВОЕ СОЕДИНЕНИЕ
        РегистрСведений.ТипЦен.СрезПоследних КАК РСТипЦен
ПО
        ДокОп.Тариф = РСТипЦен.ТипЦен И
        ДокОп.НачалоСеанса МЕЖДУ РСТипЦен.НачалоТарифа И РСТипЦен.ОкончаниеТарифа


Оно, конечно, сильно упрощенное, но жизнеспособное при определенных условиях smile.gif

logist Подменю пользователя
сообщение 10.10.12, 16:15
Сообщение #8

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(VolandMaster @ 10.10.12, 17:07) *
Тогда какой параметр должен быть перед МЕЖДУ? я это тоже не понял.

Пример: ВЫБОР КОГДА (2 МЕЖДУ 1 И 2) И (2 МЕЖДУ 2 И 3) ТОГДА 2 ИНАЧЕ 0 КОНЕЦ


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: VolandMaster,

VolandMaster Подменю пользователя
сообщение 10.10.12, 16:42
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Ровно
Спасибо сказали: 3 раз
Рейтинг: 0

Цитата(logist @ 10.10.12, 17:15) *
Пример: ВЫБОР КОГДА (2 МЕЖДУ 1 И 2) И (2 МЕЖДУ 2 И 3) ТОГДА 2 ИНАЧЕ 0 КОНЕЦ

Понял

Цитата(kivals @ 10.10.12, 17:14) *
Не, так долго гадать можно...
Опишите, плиз, структуры данных, участвующих в приведенном запросе.
в см - реквизиты Документ.ДокументОплаты, РегистрСведений.ТипЦен с типами данных.

А то пока видится такое решение:
...
ИЗ
        Документ.ДокументОплаты КАК ДокОп
        ЛЕВОЕ СОЕДИНЕНИЕ
        РегистрСведений.ТипЦен.СрезПоследних КАК РСТипЦен
ПО
        ДокОп.Тариф = РСТипЦен.ТипЦен И
        ДокОп.НачалоСеанса МЕЖДУ РСТипЦен.НачалоТарифа И РСТипЦен.ОкончаниеТарифа


Оно, конечно, сильно упрощенное, но жизнеспособное при определенных условиях smile.gif

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

Выгрузка, думаю так ясней всего будет.

Цитата(kivals @ 10.10.12, 17:14) *
Не, так долго гадать можно...
Опишите, плиз, структуры данных, участвующих в приведенном запросе.
в см - реквизиты Документ.ДокументОплаты, РегистрСведений.ТипЦен с типами данных.

А то пока видится такое решение:
...
ИЗ
        Документ.ДокументОплаты КАК ДокОп
        ЛЕВОЕ СОЕДИНЕНИЕ
        РегистрСведений.ТипЦен.СрезПоследних КАК РСТипЦен
ПО
        ДокОп.Тариф = РСТипЦен.ТипЦен И
        ДокОп.НачалоСеанса МЕЖДУ РСТипЦен.НачалоТарифа И РСТипЦен.ОкончаниеТарифа


Оно, конечно, сильно упрощенное, но жизнеспособное при определенных условиях smile.gif

Да так, когда понял до конца как работает между.
ВЫБОР 
    КОГДА
          НачалоТарифа МЕЖДУ НачалоСеанса И ОкончаниеСеанса И ОкончаниеСеанса МЕЖДУ НачалоСеанса И ОкончаниеСеанса  
    ТОГДА
          РАЗНОСТЬДАТ Сумма=(НачалоСеанса - ОкончаниеСеанса,МИНУТА) * Цена
    ИНАЧЕ
          РАЗНОСТЬДАТ Сумма = (НачалоСеанса - ОкончаниеТарифа)* Цена + (НачалоСеанса - ОкончаниеТарифа)* Цена    
Конец


Цитата(VolandMaster @ 10.10.12, 17:37) *
Понял


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

Выгрузка, думаю так ясней всего будет.


Да так, когда понял до конца как работает между.
ВЫБОР 
    КОГДА
          НачалоТарифа МЕЖДУ НачалоСеанса И ОкончаниеСеанса И ОкончаниеСеанса МЕЖДУ НачалоСеанса И ОкончаниеСеанса  
    ТОГДА
          РАЗНОСТЬДАТ Сумма=(НачалоСеанса - ОкончаниеСеанса,МИНУТА) * Цена
    ИНАЧЕ
          РАЗНОСТЬДАТ Сумма = (НачалоСеанса - ОкончаниеТарифа)* Цена + (НачалоСеанса - ОкончаниеТарифа)* Цена    
Конец

Примерно так должно быть, но я опять не доконца все понял походу

МИНУТА забыл дописать, а матерится на Сумма.

MATEVI Подменю пользователя
сообщение 10.10.12, 16:46
Сообщение #10

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

VolandMaster, ознакомьтесь с правилами.
Особенно обратите внимание на:

 i 

Правила пункт № 13
 


Я уж даже не знаю, что убирать из Вашего последнего поста. Потом буду просто удалять сообщения....

Сообщение отредактировал MATEVI - 10.10.12, 16:48

VolandMaster Подменю пользователя
сообщение 10.10.12, 16:50
Сообщение #11

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Ровно
Спасибо сказали: 3 раз
Рейтинг: 0

Ознакомился,извините .

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

sava1 Подменю пользователя
сообщение 11.10.12, 9:50
Сообщение #12

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

По-мне постановка задачи некорректна - где стоимость тарифа?

Опишите систему ценообразования

VolandMaster Подменю пользователя
сообщение 11.10.12, 10:15
Сообщение #13

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Ровно
Спасибо сказали: 3 раз
Рейтинг: 0

Цитата(sava1 @ 11.10.12, 10:50) *
где стоимость тарифа?

Стоимость задается через документ СозданиеТарифа,данные сохраняются в регистре сведений.В запросе мне нужно узнать под какой тариф попадает сеанс,попадает под один или несколько, и рассчитать сумму оплаты, ЦенаТарифа*ВремяСеанса.

ДокументОплаты имеет реквизиты Наименование(название тарифа)
ВремяНачало(Дата.Время)
ВремяОкончания(Дата.Время)
Цена(Число)

sava1 Подменю пользователя
сообщение 11.10.12, 10:29
Сообщение #14

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Итак:
1.Запрос надо будет формировать динамически (по-большому счету) ;
секции запроса через Объединить
количество секций равно количеству тарифов.
Приблизительно так: (для двух тарифов)

выбрать
     // здесь лирика
     (&КонецТарифа1 - выбрать когда НачалоРаботы<&НачалоТарифа1 тогда  &НачалоТарифа1 иначе НачалоРаботы конец ) как ПродолжительностьРаботы
из документа
где док.НачалоРаботы<&Конецтарифа1 или конецРаботы>&началоТарифа1    

объединить

выбрать
     // здесь лирика
     (&КонецТарифа2 - выбрать когда НачалоРаботы<&НачалоТарифа2 тогда  &НачалоТарифа2 иначе НачалоРаботы конец ) как ПродолжительностьРаботы
из документа
где док.НачалоРаботы<&Конецтарифа2 или конецРаботы>&началоТарифа2


и т.д . до упора

итог:
выбираем из регистра все тарифы
проходя по выборке, строим текст запроса, устанавливаем параметры
выполняем запрос, получаем И-строк (по количеству тарифов)
если не надо И-строк - группируем инфо в запросе

Сообщение отредактировал Vofka - 11.10.12, 10:30
Причина редактирования: Выделяйте, пожалуйста, код.

Спасибо сказали: VolandMaster,

VolandMaster Подменю пользователя
сообщение 11.10.12, 10:37
Сообщение #15

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Ровно
Спасибо сказали: 3 раз
Рейтинг: 0

sava1
При таких условиях пользователь не сможет самостоятельно создавать тарифы

sava1 Подменю пользователя
сообщение 11.10.12, 10:39
Сообщение #16

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

SQl -щики - предложите решение по-красивше

Цитата(VolandMaster @ 11.10.12, 11:37) *
При таких условиях пользователь не сможет самостоятельно создавать тарифы

А каким образом создание тарифов привязано к запросу (выборке результатов работы)?

Сообщение отредактировал sava1 - 11.10.12, 10:40

VolandMaster Подменю пользователя
сообщение 11.10.12, 10:43
Сообщение #17

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Ровно
Спасибо сказали: 3 раз
Рейтинг: 0

Цитата(sava1 @ 11.10.12, 11:39) *
А каким образом создание тарифом привязано к запросу

Условие задачи, сделать при помощи запроса,на встроеном языке было бы легче.

sava1 Подменю пользователя
сообщение 11.10.12, 10:51
Сообщение #18

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Цитата(VolandMaster @ 11.10.12, 11:43) *
сделать при помощи запроса,на встроеном языке

А я о чем здесь распинаюсь - или это на С++ или SQL/PL ?

При таком решении как в конфигураторе - по-другому не получиться

VolandMaster Подменю пользователя
сообщение 11.10.12, 10:52
Сообщение #19

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Ровно
Спасибо сказали: 3 раз
Рейтинг: 0

Цитата(sava1 @ 11.10.12, 11:49) *
А я о чем здесь распинаюсь - или это на С++ или SQL/PL ?

Нет) 1с
Цитата(sava1 @ 11.10.12, 11:39) *
А каким образом создание тарифов привязано к запросу (выборке результатов работы)?

Значит не понял вопроса

Сообщение отредактировал Vofka - 11.10.12, 11:03

sava1 Подменю пользователя
сообщение 11.10.12, 10:57
Сообщение #20

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Тарифы создаются документом.
Хранятся в РС.
Мы же здесь строим запрос, чтобы получить информацию из документов оплаты (или в документе,что не прописано) по продолжительности работы
в разных тарифных периодах для расчета к-примеру Суммы оплаты или получения отчета по работе пользователя

все.Обед

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


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

 

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