7.7 Время и дата в 1С

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем AUS, 12 дек 2008.

  1. TopicStarter Overlay
    AUS
    Offline

    AUS

    Регистрация:
    4 июн 2007
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Вобщем такое дело была написана БД для учета Гостиничного комплекса...

    Но лезут проблемы... Всё дело в том что за одни сутки может смениться несколько переодических реквизитов, к примеру такой как "количество свободных мест в номере"

    Проблемки лезут при бронировании номера на будущее...
    Вобщем нужно как то объяснить 1С что например номер освободиться не просто 1 декабря 2008 а скажем 01.12.2008 в 12:15

    кароче не хватает мне типа данных в других языках называемых datatime

    как можно извернуться ? есть прициденты ?
  2. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    Делаешь отдельный док и в нем фиксируешь все движения
  3. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Использовать тип метаданный "Периодический"
    и при проведении документа используешь метод
  4. TopicStarter Overlay
    AUS
    Offline

    AUS

    Регистрация:
    4 июн 2007
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    примерчик можно ?
  5. TopicStarter Overlay
    AUS
    Offline

    AUS

    Регистрация:
    4 июн 2007
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    2 WaRDeR может я вижу но не понимаю о чем ты... вот часть кода...

    Код:
    Контр.НайтиЭлемент(Гость);
    
    РазмещениеДок = Контр.РазмещениеДок.Получить(Дата_з);
    РазмещениеДок = НомерДок;
    РазмещениеДата = Контр.РазмещениеДата.Получить(Дата_з);
    РазмещениеДата = ДатаДок;
    
    НомерZ = Контр.Номер.Получить(Дата_з);
    НомерZ = Номер;
    
    Признак = Перечисление.признак.Занят;
    КолМест = КолМест-Кол_чел;
    
    Эл = Спр.ТекущийЭлемент();
    УстановитьРеквизитСправочника(Эл,"Цена",Цена,_ДатаДанных);
    УстановитьРеквизитСправочника(Эл,"Тариф",Тариф,_ДатаДанных);
    УстановитьРеквизитСправочника(Эл,"Гость",Эле,_ДатаДанных);
    УстановитьРеквизитСправочника(Эл,"Кол_мест",КолМест,_ДатаДанных);
    
    Если (СокрЛП(Тариф) = "бронь")ИЛИ(СокрЛП(Тариф) = "бронь номера")
    ИЛИ(СокрЛП(Тариф) = "бронь комнаты")ИЛИ(СокрЛП(Тариф) = "номер бронь")
    ИЛИ(СокрЛП(Тариф) = "бронь койко-места") Тогда
    
    ИначеЕсли КолМест = 0 Тогда 
    УстановитьРеквизитСправочника(Эл,"Признак",Признак,_ДатаДанных);
    КонецЕсли;
    УстановитьРеквизитСправочника(Эле,"РазмещениеДата",РазмещениеДата,_ДатаДанных);
    УстановитьРеквизитСправочника(Эле,"РазмещениеДок",РазмещениеДок,_ДатаДанных);
    УстановитьРеквизитСправочника(Эле,"Номер",НомерZ,_ДатаДанных);
    
    
  6. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Часть кода:
    Код:
    Эл = Спр.ТекущийЭлемент();
    УстановитьРеквизитСправочника(Эл,"Цена",Цена,_ДатаДанных);
    УстановитьРеквизитСправочника(Эл,"Тариф",Тариф,_ДатаДанных);
    УстановитьРеквизитСправочника(Эл,"Гость",Эле,_ДатаДанных);
    УстановитьРеквизитСправочника(Эл,"Кол_мест",КолМест,_ДатаДанных);
    
    
    Это установка значений периодических реквизитов. Значения эти устанавливаются на конкретную позицию документов (читай Дата-Время).
    Чтобы перебрать значения реквизита за один день (но на разные значения времени) необходимо использовать тип метаданных "Периодический".
  7. TopicStarter Overlay
    AUS
    Offline

    AUS

    Регистрация:
    4 июн 2007
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    так вроде и так я использую тип метаданных "периодический"
    и соответственно вызываю метод "УстановитьРеквизитСправочника" ведь он используется только для "периодических"

    Посмотреть вложение 1452

    Вложения:

    • s1.jpg
      s1.jpg
      Размер файла:
      95,2 КБ
      Просмотров:
      69
  8. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Попробую пояснить:
    Изменения периодических реквизитов делать только при проведении документа с привязкой документа.
    Например, бронирование мест делать спец документом, который при проведении устанавливает периодический реквизит в определенное значение (допустим числовой = 1, или перечисление = Занят)

    Когда хочешь просмотреть на определенную дату изменения этого реквизита, то создаешь метаданное "Периодический", делаешь выборку на определенную дату, перебираешь все вошедшие элементы и спроверяешь возвращенное значение методом "ТекущийДокумент()". У документа есть методы определения времени "ПолучитьВремя()".

    ЗЫ подробнее - это сделать самому ;) но это платная услуга....

Поделиться этой страницей