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

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

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

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

Оффлайн Ermak1985

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

Оффлайн Rasty

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

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

Оффлайн Ermak1985

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

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

Оффлайн Rasty

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

Оффлайн Ermak1985

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

Оффлайн Rasty

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

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

Оффлайн Ermak1985

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

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


Оффлайн Rasty

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

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

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


Теги:
 

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
145 Сообщений
ilyay ilyay
63 Сообщений
alex0402
50 Сообщений
AIFrame
50 Сообщений
andron81_81
44 Сообщений
oleg-x
42 Сообщений
BuhRust
32 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal