Помощь - Поиск - Пользователи - Календарь
Полная версия: Время и дата в 1С
1C-PRO - Форум по 1С > Форумы по платформе "1С:Предприятие 7.7" > (7.7) Форум по общим вопросам "1С:Предприятие 7.7"
AUS
Вобщем такое дело была написана БД для учета Гостиничного комплекса...

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

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

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

как можно извернуться ? есть прициденты ?
Хряк
Делаешь отдельный док и в нем фиксируешь все движения
WaRDeR
Использовать тип метаданный "Периодический"
и при проведении документа используешь метод
Цитата

УстановитьРеквизитСправочника(<?>,,,,,,);
Синтаксис:
УстановитьРеквизитСправочника(<ЭлементСправочника>,<НазваниеРеквизита>,<Значение>,<ДатаУстановки>,<ИмяТипа>,<Длина>,<Точность>)
Назначение:
Записать значение периодического реквизита справочника с привязкой к проведению документа.
Параметры:
<ЭлементСправочника> - элемент справочника, в который будет запись;
<НазваниеРеквизита> - название периодического реквизита справочника;
<Значение> - новое значение периодического реквизита;
<ДатаУстановки> - дата установки нового значения периодического реквизита. Дата установки имеет смысл только для не оперативных документов.
<ИмяТипа> - необязательный параметр. Строковое выражение - название типа данных (или Вид субконто);
<Длина> - необязательный параметр. Число - длина числового или строкового значения;
<Точность> - необязательный параметр. Число знаков после десятичной точки.
Замечание:
Параметры <ИмяТипа>, <Длина> и <Точность> следует указывать при установке значения периодического реквизита справочника, имеющего неопределенный тип.
Замечание:
Метод доступен только в Модуле документа в предопределенной процедуре ОбработкаПроведения.
AUS
Цитата(Хряк @ 12.12.2008, 17:12) *

Делаешь отдельный док и в нем фиксируешь все движения


примерчик можно ?
AUS
2 WaRDeR может я вижу но не понимаю о чем ты... вот часть кода...

Код
Контр.НайтиЭлемент(Гость);

РазмещениеДок = Контр.РазмещениеДок.Получить(Дата_з);
РазмещениеДок = НомерДок;
РазмещениеДата = Контр.РазмещениеДата.Получить(Дата_з);
РазмещениеДата = ДатаДок;

НомерZ = Контр.Номер.Получить(Дата_з);
НомерZ = Номер;

Признак = Перечисление.признак.Занят;
КолМест = КолМест-Кол_чел;

Эл = Спр.ТекущийЭлемент();
УстановитьРеквизитСправочника(Эл,"Цена",Цена,_ДатаДанных);
УстановитьРеквизитСправочника(Эл,"Тариф",Тариф,_ДатаДанных);
УстановитьРеквизитСправочника(Эл,"Гость",Эле,_ДатаДанных);
УстановитьРеквизитСправочника(Эл,"Кол_мест",КолМест,_ДатаДанных);

Если (СокрЛП(Тариф) = "бронь")ИЛИ(СокрЛП(Тариф) = "бронь номера")
ИЛИ(СокрЛП(Тариф) = "бронь комнаты")ИЛИ(СокрЛП(Тариф) = "номер бронь")
ИЛИ(СокрЛП(Тариф) = "бронь койко-места") Тогда

ИначеЕсли КолМест = 0 Тогда
УстановитьРеквизитСправочника(Эл,"Признак",Признак,_ДатаДанных);
КонецЕсли;
УстановитьРеквизитСправочника(Эле,"РазмещениеДата",РазмещениеДата,_ДатаДанных);
УстановитьРеквизитСправочника(Эле,"РазмещениеДок",РазмещениеДок,_ДатаДанных);
УстановитьРеквизитСправочника(Эле,"Номер",НомерZ,_ДатаДанных);



WaRDeR
Часть кода:
Код

Эл = Спр.ТекущийЭлемент();
УстановитьРеквизитСправочника(Эл,"Цена",Цена,_ДатаДанных);
УстановитьРеквизитСправочника(Эл,"Тариф",Тариф,_ДатаДанных);
УстановитьРеквизитСправочника(Эл,"Гость",Эле,_ДатаДанных);
УстановитьРеквизитСправочника(Эл,"Кол_мест",КолМест,_ДатаДанных);


Это установка значений периодических реквизитов. Значения эти устанавливаются на конкретную позицию документов (читай Дата-Время).
Чтобы перебрать значения реквизита за один день (но на разные значения времени) необходимо использовать тип метаданных "Периодический".
AUS
так вроде и так я использую тип метаданных "периодический"
и соответственно вызываю метод "УстановитьРеквизитСправочника" ведь он используется только для "периодических"

Нажмите для просмотра прикрепленного файла



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

Изменения периодических реквизитов делать только при проведении документа с привязкой документа.
Цитата
Проблемки лезут при бронировании номера на будущее...

Например, бронирование мест делать спец документом, который при проведении устанавливает периодический реквизит в определенное значение (допустим числовой = 1, или перечисление = Занят)

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

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

Цитата
Синтаксис:
ПолучитьВремя(<Часы>,<Минуты>,<Секунды>)
Назначение:
Прочитать время документа. Возвращает время документа в переданные для этого переменные <Часы>, <Минуты>, <Секунды>.
Возвращает:
Строковое значение времени записи документа в виде 'ЧЧ.ММ.СС'.
Параметры:
<Часы> - переменная для приема часа записи документа;
<Минуты> - переменная для приема минут записи документа;
<Секунды> - переменная для приема секунд записи документа.
Замечание:
Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.


ЗЫ подробнее - это сделать самому ;) но это платная услуга....
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2009 Invision Power Services, Inc.