Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
19 Сен 2017, 20:16
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Вывести свободную дату  (Прочитано 3082 раз)

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

Оффлайн Ermak1985

  • **
  • Сообщений: 61
  • РЕПУТАЦИЯ: -6
  • Регистрация: 2016-02-01
  • Сайт: 
  • Профессия: Ученик 1С
Добрый день! Встала такая задача разработать планирование. Был создан регистр ПланировщикРемонтныхЗаявок, где заносится информация Участок, ВремяЗаявки, ВидЗаявки, Количество. Когда создаем документ Заявки, они записывают в регистр сведений ИсторияЗаявкиЕдиноеОкно, с чем я и сравниваю сколько еще я могу добавить заявок. У меня сделано, если заявку добавить можно выдается Предупреждение("Дата и время свободно!"); ,а если уже нельзя тогда выдается Предупреждение("На этот день и время количество заявок закончились!"+Символы.ПС+"Выберите другую дату или время.");.
Можете подсказать как, чтобы выводилась ближайшая свободная дата.
Фильтр = Новый Структура();     
    Фильтр.Вставить("Участок",ЛицевойСчет.Участок);
    Фильтр.Вставить("ВремяЗаявки",ВремяЗаявки);
    Фильтр.Вставить("ВидЗаявки",ВидЗаявки);
    КоличествоРЗ=РегистрыСведений.ПланировщикРемонтныхЗаявок.ПолучитьПоследнее(КонецДня(ДатаЗаявки),Фильтр).Количество;
   
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ИсторияЗаявкиЕдиноеОкно.Период КАК Период,
                   |    ИсторияЗаявкиЕдиноеОкно.Участок КАК Участок,
                   |    КОЛИЧЕСТВО(ИсторияЗаявкиЕдиноеОкно.Статус) КАК Количество,
                   |    ИсторияЗаявкиЕдиноеОкно.ВремяЗаявки КАК ВремяЗаявки,
                   |    ИсторияЗаявкиЕдиноеОкно.ВидЗаявки КАК ВидЗаявки
                   |ИЗ
                   |    РегистрСведений.ИсторияЗаявкиЕдиноеОкно КАК ИсторияЗаявкиЕдиноеОкно
                   |ГДЕ
                   |    ИсторияЗаявкиЕдиноеОкно.Период МЕЖДУ &ДатаНач И &ДатаКон
                   |    И ИсторияЗаявкиЕдиноеОкно.Участок = &Участок
                   |    И ИсторияЗаявкиЕдиноеОкно.ВремяЗаявки = &ВремяЗаявки
                   |    И ИсторияЗаявкиЕдиноеОкно.ВидЗаявки = &ВидЗаявки
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    ИсторияЗаявкиЕдиноеОкно.Период,
                   |    ИсторияЗаявкиЕдиноеОкно.Участок,
                   |    ИсторияЗаявкиЕдиноеОкно.ВремяЗаявки,
                   |    ИсторияЗаявкиЕдиноеОкно.ВидЗаявки";
   
    Запрос.УстановитьПараметр("Участок",ЛицевойСчет.Участок);
    Запрос.УстановитьПараметр("ВидЗаявки",ВидЗаявки);
    Запрос.УстановитьПараметр("ВремяЗаявки",ВремяЗаявки);
    Запрос.УстановитьПараметр("ДатаНач",НачалоДня(ДатаЗаявки));
    Запрос.УстановитьПараметр("ДатаКон",КонецДня(ДатаЗаявки));
    Результат = Запрос.Выполнить().Выбрать();
 
    Пока Результат.Следующий() Цикл             
        КоличествоЗаявок=Результат.Количество;     
    КонецЦикла;
   
    Если ЗначениеЗаполнено(КоличествоРЗ) Тогда
 
    Если КоличествоЗаявок=Неопределено или КоличествоЗаявок < КоличествоРЗ или КоличествоРЗ=Неопределено Тогда
        Предупреждение("Дата и время свободно!");   
    Иначе
        Предупреждение("На этот день и время количество заявок закончились!"+Символы.ПС+"Выберите другую дату или время.");
 
    КонецЕсли;
    КонецЕсли;
Вот пример

Вот пример РегистрыСведений.ПланировщикРемонтныхЗаявок

Дата           Участок   ВремяЗаявки   ВидЗаявки   Количество
26.01.2016   Иванова   08:00-12:00   ИГБУ             2
26.01.2016   Петрова   08:00-12:00   ИГБУ             2
26.01.2016   Иванова   12:00-17:00   ИГБУ             3
26.01.2016   Петрова   12:00-17:00   ИГБУ             6
27.01.2016   Иванова   08:00-12:00   ИГБУ             2
27.01.2016   Петрова   08:00-12:00   ИГБУ             2
28.01.2016   Иванова   08:00-12:00   ИГБУ             2
28.01.2016   Петрова   08:00-12:00   ИГБУ             2
Начинаем добавляться заявки . Выбираем дату 26.01.2016, участок Иванова, при выборе время 08:00-12:00 начинаем искать дату, если выбранная дата свободна (отбор идет по дате, участку, видзаявки, времязаявки) тогда добавляем, если не свободна тогда должен предложить согласно таблице дату 27.01.2016, если и здесь даты уже заняты тогда 28.01.2016, если и эта дата занята и таблица дальше не заполнена тогда 29.01.2016


Оффлайн Rasty

  • *****
  • Сообщений: 976
  • РЕПУТАЦИЯ: 137
  • КПД: 14%
  • Регистрация: 2015-03-25
    • Skype: alex1cbit
  • Сайт: 
  • Профессия: Программист 1С
сортируйте по времени заявки и уже там смотри время
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Оффлайн Ermak1985

  • **
  • Сообщений: 61
  • РЕПУТАЦИЯ: -6
  • Регистрация: 2016-02-01
  • Сайт: 
  • Профессия: Ученик 1С
В запросе отсортировал, как потом дальше найти нужную дату?

Оффлайн Rasty

  • *****
  • Сообщений: 976
  • РЕПУТАЦИЯ: 137
  • КПД: 14%
  • Регистрация: 2015-03-25
    • Skype: alex1cbit
  • Сайт: 
  • Профессия: Программист 1С
По возрастанию или убыванию?
Добавлено: 01 Фев 2016, 12:47

только не выбрать() а выгрузить() тогда уж
если убыванию то Результат[0].ВремяЗаявки, вы получите время последней заявки
если возрастанию Результат[Результат.Количество()-1]
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Оффлайн Ermak1985

  • **
  • Сообщений: 61
  • РЕПУТАЦИЯ: -6
  • Регистрация: 2016-02-01
  • Сайт: 
  • Профессия: Ученик 1С
Ругается
{Форма.Форма.Форма(47)}: Значение не является значением объектного типа (ВремяЗаявки)
      ПоследняяЗ=Результат[0].ВремяЗаявки;

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

Оффлайн Rasty

  • *****
  • Сообщений: 976
  • РЕПУТАЦИЯ: 137
  • КПД: 14%
  • Регистрация: 2015-03-25
    • Skype: alex1cbit
  • Сайт: 
  • Профессия: Программист 1С
а зачем вы устанавливаете параметры время заявки?
писал же
 Результат = Запрос.Выполнить().Выбрать();
 
    Пока Результат.Следующий() Цикл             
        КоличествоЗаявок=Результат.Количество;
        ПоследняяЗ=Результат[0].ВремяЗаявки;
    КонецЦикла;
 Результат = Запрос.Выполнить().Выгрузить();
 ВремяЗаявки = Результат[0].ВремяЗаявки
 
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Оффлайн Ermak1985

  • **
  • Сообщений: 61
  • РЕПУТАЦИЯ: -6
  • Регистрация: 2016-02-01
  • Сайт: 
  • Профессия: Ученик 1С
Получил, только теперь как получить КоличествоЗаявок, я получал так
    Результат = Запрос.Выполнить().Выбрать();
 
    Пока Результат.Следующий() Цикл             
        КоличествоЗаявок=Результат.Количество;
    КонецЦикла;
а теперь через выгрузку делаем. И что дальше, мне не понятно что то

Оффлайн Rasty

  • *****
  • Сообщений: 976
  • РЕПУТАЦИЯ: 137
  • КПД: 14%
  • Регистрация: 2015-03-25
    • Skype: alex1cbit
  • Сайт: 
  • Профессия: Программист 1С
Так зачем вы в параметрах к запросу устанавливаете время заявки, получается то, что из запроса вы получаете то время заявки, которое вы устанавливаете в параметре т.е. получается
ВремяЗаявки = Результат[0].ВремяЗаявки

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

Оффлайн Ermak1985

  • **
  • Сообщений: 61
  • РЕПУТАЦИЯ: -6
  • Регистрация: 2016-02-01
  • Сайт: 
  • Профессия: Ученик 1С
Я так и сделал, мне нужно получить свободную Дату на которую можно занести заявку
	
Фильтр = Новый Структура();     
    Фильтр.Вставить("Участок",Участок);
    Фильтр.Вставить("ВидЗаявки",ВидЗаявки);
    КоличествоРЗ=РегистрыСведений.ПланировщикРемонтныхЗаявок.ПолучитьПоследнее(КонецДня(ДатаЗаявки),Фильтр).Количество;
   
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   | ИсторияЗаявкиЕдиноеОкно.Период КАК Период,
                   | ИсторияЗаявкиЕдиноеОкно.Участок КАК Участок,
                   | КОЛИЧЕСТВО(ИсторияЗаявкиЕдиноеОкно.Статус) КАК Количество,
                   | ИсторияЗаявкиЕдиноеОкно.ВремяЗаявки КАК ВремяЗаявки,
                   | ИсторияЗаявкиЕдиноеОкно.ВидЗаявки КАК ВидЗаявки
                   |ИЗ
                   | РегистрСведений.ИсторияЗаявкиЕдиноеОкно КАК ИсторияЗаявкиЕдиноеОкно
                   |ГДЕ
                   | ИсторияЗаявкиЕдиноеОкно.Период МЕЖДУ &ДатаНач И &ДатаКон
                   | И ИсторияЗаявкиЕдиноеОкно.Участок = &Участок
                   | И ИсторияЗаявкиЕдиноеОкно.ВидЗаявки = &ВидЗаявки
                   |
                   |СГРУППИРОВАТЬ ПО
                   | ИсторияЗаявкиЕдиноеОкно.Период,
                   | ИсторияЗаявкиЕдиноеОкно.Участок,
                   | ИсторияЗаявкиЕдиноеОкно.ВидЗаявки,
                   | ИсторияЗаявкиЕдиноеОкно.ВремяЗаявки
                   |
                   |УПОРЯДОЧИТЬ ПО
                   | ВремяЗаявки УБЫВ";
   
    Запрос.УстановитьПараметр("Участок",Участок);
    Запрос.УстановитьПараметр("ВидЗаявки",ВидЗаявки);
    Запрос.УстановитьПараметр("ДатаНач",НачалоДня(ДатаЗаявки));
    Запрос.УстановитьПараметр("ДатаКон",КонецДня(ДатаЗаявки));

Результат = Запрос.Выполнить().Выгрузить();
ВремяЗаявки = Результат[0].ВремяЗаявки;


Оффлайн Rasty

  • *****
  • Сообщений: 976
  • РЕПУТАЦИЯ: 137
  • КПД: 14%
  • Регистрация: 2015-03-25
    • Skype: alex1cbit
  • Сайт: 
  • Профессия: Программист 1С
ваш код ведь
Ругается
{Форма.Форма.Форма(47)}: Значение не является значением объектного типа (ВремяЗаявки)
      ПоследняяЗ=Результат[0].ВремяЗаявки;

                   |ГДЕ
                   | ИсторияЗаявкиЕдиноеОкно.Период МЕЖДУ &ДатаНач И &ДатаКон
                   | И ИсторияЗаявкиЕдиноеОкно.Участок = &Участок
                   | И ИсторияЗаявкиЕдиноеОкно.ВремяЗаявки = &ВремяЗаявки
                   | И ИсторияЗаявкиЕдиноеОкно.ВидЗаявки = &ВидЗаявки
                   |
                   |СГРУППИРОВАТЬ ПО
                   | ИсторияЗаявкиЕдиноеОкно.Период,
                   | ИсторияЗаявкиЕдиноеОкно.Участок,
                   | ИсторияЗаявкиЕдиноеОкно.ВидЗаявки,
                   | ИсторияЗаявкиЕдиноеОкно.ВремяЗаявки
                   |
                   |УПОРЯДОЧИТЬ ПО
                   | ВремяЗаявки УБЫВ";
   
    Запрос.УстановитьПараметр("Участок",Участок);
    Запрос.УстановитьПараметр("ВидЗаявки",ВидЗаявки);
    Запрос.УстановитьПараметр("ВремяЗаявки",ВремяЗаявки);
    Запрос.УстановитьПараметр("ДатаНач",НачалоДня(ДатаЗаявки));
    Запрос.УстановитьПараметр("ДатаКон",КонецДня(ДатаЗаявки));
    Результат = Запрос.Выполнить().Выбрать();
 
    Пока Результат.Следующий() Цикл             
        КоличествоЗаявок=Результат.Количество;
ПоследняяЗ=Результат[0].ВремяЗаявки;
    КонецЦикла;
   
    Если ЗначениеЗаполнено(КоличествоРЗ) Тогда
 
    Если КоличествоЗаявок=Неопределено или КоличествоЗаявок < КоличествоРЗ или КоличествоРЗ=Неопределено Тогда
        Предупреждение("Дата и время свободно!");   
    Иначе
        Предупреждение("На этот день и время количество заявок закончились!"+Символы.ПС+"Выберите другую дату или время.");
 
    КонецЕсли;
    КонецЕсли;
Сообщить(ДатаЗаявки);
Добавлено: 01 Фев 2016, 15:55

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


Теги:
 

не могу вывести отображение цен в "подборе" документ "Заявка покупателя" УТ 10.3

Автор Виталий ЕмельяновРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 3412
Последний ответ 05 Окт 2015, 19:22
от Виталий Емельянов
Как при помощи СКД при формировании макета отчета данные связанного набора данных вывести в Параметр через ";"

Автор sveta CРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 0
Просмотров: 878
Последний ответ 01 Мар 2016, 14:33
от sveta C
вывести макет с внешн. отчета в табличную часть отчета..

Автор sergei82Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 7
Просмотров: 4786
Последний ответ 28 Янв 2010, 09:07
от Slin
Вывести флажок из формы на табличный документ печатной формы

Автор Space_minusРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 1822
Последний ответ 06 Июн 2016, 10:03
от Space_minus
Как вывести документ в список из журнала "Ввод на основании"?

Автор jeck122Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 2878
Последний ответ 22 Сен 2011, 15:40
от jeck122

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

oleg-x
176 Сообщений
alex0402
82 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
81 Сообщений
AsadRoman
36 Сообщений
Kironten
34 Сообщений
ilyay ilyay
30 Сообщений
Golickoff Golickoff
29 Сообщений
AIFrame
27 Сообщений
BuhRust
26 Сообщений
Варвар
20 Сообщений

* Кто онлайн

  • Точка Гостей: 378
  • Точка Скрытых: 0
  • Точка Пользователей: 8
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal