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

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

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

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

Ermak1985

Цитата: Rasty от 04 фев 2016, 10:14
дайте базу свою
Базу дать не могу, перенес документы, справочники и т.д на чистую базу. Запускайте обработку, а там заполните поля которые доступны. Если что напишите мне в skype: ermakov80
Залил базу сюда: http://zalil.su/3997197

Спасибо большое за помощь!
Добавлено: 04 фев 2016, 11:08


По идеи нужно чтобы находил свободную дату с временем

Ermak1985

Я уже подошел к концу своего кода, выдает ошибку, как можно по другому сделать?
{Форма.Форма.Форма(98)}: Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)
      Если КоличествоЗаявок >= КоличествоРЗ Тогда   


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

ЗапросП.УстановитьПараметр("Участок",Участок);
ЗапросП.УстановитьПараметр("ВидЗаявки",ВидЗаявки);
РезультатП = ЗапросП.Выполнить().Выгрузить();
ПерваяДата=ТекДат;
ПоследняяДата=РезультатП[0].Период;
РазницаДат=(НачалоДня(ПоследняяДата)-НачалоДня(ПерваяДата))/(60*60*24);

Для Счетчик = 0 По РазницаДат Цикл
ДатаТ=НачалоДня(ТекДат+86400*Счетчик);

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

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

Пока РезультатВремени.Следующий() Цикл
ВремяЗ=РезультатВремени.ВремяЗаявки;



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

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

Запрос.УстановитьПараметр("Участок",Участок);
Запрос.УстановитьПараметр("ВидЗаявки",ВидЗаявки);
Запрос.УстановитьПараметр("Статус",Перечисления.СтатусЕдиноеОкно.Открыта);
Запрос.УстановитьПараметр("ВремяЗаявки",ВремяЗ);
Запрос.УстановитьПараметр("ДатаНач",НачалоДня(ДатаТ));
Запрос.УстановитьПараметр("ДатаКон",КонецДня(ДатаТ));
Результат = Запрос.Выполнить().Выбрать();

Пока Результат.Следующий() Цикл             
КоличествоЗаявок=Результат.Количество;
КонецЦикла;

Если КоличествоЗаявок >= КоличествоРЗ Тогда

Если КоличествоЗаявок=Неопределено или КоличествоЗаявок <= КоличествоРЗ или КоличествоРЗ=Неопределено Тогда
Сообщить(ДатаТ);
Сообщить(ВремяЗ);
Иначе
Возврат
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;

Теги:

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

Рейтинг@Mail.ru

Поиск