Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
03 дек 2024, 20:44

Вывести свободную дату

Автор Ermak1985, 01 фев 2016, 12:15

0 Пользователей и 1 гость просматривают эту тему.

Ermak1985

Цитата: Rasty от 02 фев 2016, 13:34
вы из запроса получили дату(когда человек занят) и время заявки(время начала и время конца), следовательно, время когда он станет свободен Дата + время конца заявки
как изменить тип
{Форма.Форма.Форма(74)}: Преобразование значения к типу Число не может быть выполнено
Дата=Строка(Элемент.Период+" "+Элемент.ВремяЗаявки);

Rasty

Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Ermak1985

Что то не так
{Форма.Форма.Форма(76)}: Метод объекта не обнаружен (Дата)
   ДатаОкончанияРаботы = Дата(ЧастиДаты.Дата(Элемент.Период) + ЧастиДаты.Время(СтрПолучитьСтроку(СтрЗаменить(Элемент.ВремяЗаявки,"-",Символы.ПС),2)));

Фильтр = Новый Структура();     
Фильтр.Вставить("Участок",Участок);
//Фильтр.Вставить("ВремяЗаявки",ВремяЗаявки);
Фильтр.Вставить("ВидЗаявки",ВидЗаявки);
КоличествоРЗ=РегистрыСведений.ПланировщикРемонтныхЗаявок.ПолучитьПоследнее(КонецДня(ДатаЗаявки),Фильтр).Количество;

ТЗ=Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Дата");
ТЗ.Колонки.Добавить("Время");
ТЗ.Колонки.Добавить("Количество");

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

Запрос.УстановитьПараметр("Участок",Участок);
Запрос.УстановитьПараметр("ВидЗаявки",ВидЗаявки);
Результат = Запрос.Выполнить().Выгрузить();

Для Каждого Элемент Из Результат Цикл
Стр=ТЗ.Добавить();
Стр.Дата=Элемент.Период;
Стр.Время=Элемент.ВремяЗаявки;
Стр.Количество=Элемент.Количество;
КоличествоЗаявок=Стр.Количество;

Если КоличествоЗаявок < КоличествоРЗ Тогда
КонецЕсли;
КонецЦикла;
Дата=Строка(Элемент.Период)+" "+Строка(Элемент.ВремяЗаявки);
ДатаОкончанияРаботы = Дата(ЧастиДаты.Дата(Элемент.Период) + ЧастиДаты.Время(СтрПолучитьСтроку(СтрЗаменить(Элемент.ВремяЗаявки,"-",Символы.ПС),2)));

Rasty

без даты попробуйте, пробуйте сами и так и сяк
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Ermak1985

Цитата: Rasty от 02 фев 2016, 16:00
без даты попробуйте, пробуйте сами и так и сяк
он все равно ругается
{Форма.Форма.Форма(76)}: Метод объекта не обнаружен (Дата)
   ДатаОкончанияРаботы = ЧастиДаты.Дата(Элемент.Период) + ЧастиДаты.Время(СтрПолучитьСтроку(СтрЗаменить(Элемент.ВремяЗаявки,"-",Символы.ПС),2));


Что это такое ЧастиДаты.Дата, я понять не могу

Rasty

давайте без моего кода, соберите дату из периода и время заявки
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Ermak1985

Цитата: Rasty от 02 фев 2016, 16:23
давайте без моего кода, соберите дату из периода и время заявки
Я не понимаю что значит собрать? Вот я вывел даты в ТЗ которые уже использованные
ТЗ=Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Дата");
ТЗ.Колонки.Добавить("Время");
ТЗ.Колонки.Добавить("Количество");

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

Запрос.УстановитьПараметр("Участок",Участок);
Запрос.УстановитьПараметр("ВидЗаявки",ВидЗаявки);
Результат = Запрос.Выполнить().Выгрузить();

Для Каждого Элемент Из Результат Цикл
Стр=ТЗ.Добавить();
Стр.Дата=Элемент.Период;
Стр.Время=Элемент.ВремяЗаявки;
Стр.Количество=Элемент.Количество;
КоличествоЗаявок=Стр.Количество;
КонецЦикла;


Rasty

отлично, а теперь вам надо получить время когда сотрудник свободен, правильно?
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Ermak1985

Цитата: Rasty от 02 фев 2016, 18:04
отлично, а теперь вам надо получить время когда сотрудник свободен, правильно?
Вот я получаю дату свободную, как время не понимаю

Фильтр = Новый Структура();     
Фильтр.Вставить("Участок",Участок);
Фильтр.Вставить("ВремяЗаявки",ВремяЗаявки);
Фильтр.Вставить("ВидЗаявки",ВидЗаявки);
КоличествоРЗ=РегистрыСведений.ПланировщикРемонтныхЗаявок.ПолучитьПоследнее(КонецДня(ТекДат),Фильтр).Количество;

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

Rasty

у вас есть время заявки, вы можете вытащить время окончания?
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск