|
|
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Подскажите, пожалуйста, как в 1С 8.1 можно решить следующую задачу: Есть в БД (Firebird) данные о сотрудниках и их ежедневные отметки о входе/выходе на предприятие. Необходимо синхронизировать 1С 8.1 и Firebird так, чтобы в 1С хранились данные о проходах для формирования графиков посещения сотрудников предприятия. Сопоставление сотрудников будет по табельному номеру, который имеется и в 1С и в Firebird. Думаю что через регистр сведений было бы оптимально, но как туда правильно записать данные, по мануалам про регистр сведений не все понятно, поэтому прошу подсказать, как правильно нужно организовать? Обновление при синхронизации нужно по 2 таблицам/справочникам(регистрам): проходы и сотрудники. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2009, 10:29 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
Проходы имеют вид: сотрудник, дата, время, тип прохода (вход/выход) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2009, 10:37 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
Регистр сведений должен быть такой: Измерения - сотрудник (или табельный номер) и дата со временем. Ресурсы - тип прохода + можно добавить поле, сколько времени прошло с момента входа для более быстрого получения отчета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2009, 10:52 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
+ можно вообще обойтись одним измерением - время проведенное на рабочем месте. Для типа записи Вход оно равно 0, для типа записи Выход > 0. Тогда время проведенное на рабочем месте будет определяться тупо суммированием всех записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2009, 10:54 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
Просят еще чтобы было видно когда человек зашел и когда вышел. Вопрос: как программно записывать в регистр сведений результат запроса к Firebird? Думаю через регламентное задание попробывать, но надо будет где-то хранить ID последней записаной в регистр записи. Что для такого хранения наиболее подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2009, 10:58 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
Кто зашел и кто вышел - кто мешает сделать? Записи то в регистре и для входа и для выхода будут. А с ID - если значение одно, то в принципе, можно в константу, но это, мне кажется, не совсем красиво. Можно добавить ресурс в регистр сведений - ID записи. Тогда всегда можно получить и стопроцентную связь между 1С и базой и те записи, которые не загружены. А записывать так же, как и в любой другой регистр сведений - через набор записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2009, 12:37 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
через набор обычно пишут в регистры подчиненные регистратору. для остальных есть менеджер записи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2009, 12:41 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
Угу, согласен. Через менеджер будет удобней. Возможно, через набор записей будет быстрее при записи большого количества, но это нужно проверять. И не забывать при записи набора записей ставить флаг на добавление записей, а не на перезапись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2009, 12:44 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
На примере можно показать как записать корректно? Записей будет довольно много, около 7-8 тысяч в день. Читал, что есть еще и ключи записей, это с чем едят? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2009, 14:43 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
Лучше всего почитать ЖКК или help. Рассказать про все тонкости регистра сведений вряд ли получиться. Для загрузки большого количества записей ИМХО лучше использовать набор записей. Соответственно, делается это так: НаборЗаписей = РегистрыСведений.zСписаниеЗатратПоИзданиям.СоздатьНаборЗаписей(); Зап = НаборЗаписей.Добавить(); Зап.Сотрудник = Сотр1; Зап2 = НаборЗаписей.Добавить(); Зап2.Сотрудник = Сотр2; НаборЗаписей.Записать(Ложь); При использовании менеджера записи нужно будет записывать отдельно каждую запись, при наборе записей - запись происходит один раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2009, 15:29 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
Спасибо, попробую сделать как вы порекомендовали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2009, 07:24 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
В регистре сведений, что должно быть уникальным в пределах дня? Ведь на некоторых сотрудников в придется по входу и выходу за 1 день. Что должно быть в измерениях? плюс т.к. турникета 3 штуки, некоторые одновременно заходят и выходят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 07:14 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
Ресурсы: Измерения - сотрудник (или табельный номер) + ДатаРегистрации (дата со временем) Соответственно, уникальным в пределах дня будет сотрудник и дата его прохода. В ресурсы я бы добавил турникет. А вообще, структура регистра сведений подбирается исходя из задачи, то бишь какие потом отчеты нужно будет получать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 10:13 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
Хотелось бы состоавлять график посещения сотрудником предприятия. Еще вопрос по типу Дата. Как в 1С из даты со временем ДДММГГ ЧЧММСС выдернуть отдельно дату и отдельно время? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 12:35 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
Выдернуть дату и время можно почитав синтакс-помощник - раздел функций для работы с датами. Там полно функций. Отдельно дату получить можно через НачалоДня(Дата), ну а со временем сложнее, это зависит от того, что потом с этим нужно делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 12:52 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
В FireBird дата и время прохода хранятся отдельно. поэтому я и в регистре их хочу отдельно записать, но когда записываю в регистр время имеет формат датавремя а не просто время, тоже самое и с датой, сюда еще время на начало дня записывается автоматически, хотя в свойствах для данных ресурсов указывал что должно быть отдельно дата, отдельно время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 13:03 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
Если тип дата без времени - то и храниться дата без времени. Но в 1С нет типа дата без времени - поэтому всегда в переменной типа дата присутствует время, но оно нулевое. А хранить отдельно дату и отдельно время смысла нет никакого, потом отчеты будет делать сложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 13:56 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
как тогда сложить дату и время из FireBird, чтобы корректно записать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 14:07 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
К дате добавляем количество секунд во времени ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 14:25 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
ДатаПрохода = Строка(День(Дата(НаборЗаписей.Fields(1).Value)))+"."+Строка(Месяц(Дата(НаборЗаписей.Fields(1).Value)))+"."+Строка(Год(Дата(НаборЗаписей.Fields(1).Value)))+" "+Строка(Час(Дата(НаборЗаписей.Fields(2).Value)))+":"+Строка(Минута(Дата(НаборЗаписей.Fields(2).Value)))+":"+Строка(Секунда(Дата(НаборЗаписей.Fields(2).Value))); Вот так? Только эта зараза год принимает 2 009 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 15:03 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
Лучше так: ДатаПрохода = Дата(НаборЗаписей.Fields(1).Value)+Час(Дата(НаборЗаписей.Fields(2).Value))*3600++Минута(Дата(НаборЗаписей.Fields(2).Value))*60+Секунда(Дата(НаборЗаписей.Fields(2).Value)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2009, 15:52 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
ДатаПрохода = Дата(НаборЗаписей.Fields(1).Value)+Час(Дата(НаборЗаписей.Fields(2).Value))*3600++Минута(Дата(НаборЗаписей.Fields(2).Value))*60+Секунда(Дата(НаборЗаписей.Fields(2).Value)); Проход = РегистрыСведений.Проходы.СоздатьМенеджерЗаписи(); Проход.ФизЛицо = Сотрудник.Сотрудник; Проход.ДатаПрохода = ДатаПрохода; Если Строка(НаборЗаписей.Fields(3).Value) = "1" Тогда Проход.ТипПрохода = Перечисления.ТипПрохода.Вход; Иначе Проход.ТипПрохода= Перечисления.ТипПрохода.Выход; КонецЕсли; Проход.Записать(); Сотрудника записывает, а ДатуПрохода и ТипПрохода игнорирует. Что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2009, 10:34 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
НаборЗаписей.Fields(1).Value)+Час(Дата(НаборЗаписей.Fields(2).Value))*3600++Минута(Дата(НаборЗаписей.Fields(2).Value))*60+Секунда(Дата(НаборЗаписей.Fields(2).Value) что из себя представляет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2009, 10:48 |
|
||
|
Запись данных в регистр сведений
|
|||
|---|---|---|---|
|
#18+
Дата прохода со временем на тот момент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2009, 11:54 |
|
||
|
|

start [/forum/topic.php?fid=28&startmsg=36247198&tid=1523200]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
138ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 400ms |

| 0 / 0 |
