powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Запись данных в регистр сведений
25 сообщений из 26, страница 1 из 2
Запись данных в регистр сведений
    #36247198
Protasoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Подскажите, пожалуйста, как в 1С 8.1 можно решить следующую задачу:
Есть в БД (Firebird) данные о сотрудниках и их ежедневные отметки о входе/выходе на предприятие. Необходимо синхронизировать 1С 8.1 и Firebird так, чтобы в 1С хранились данные о проходах для формирования графиков посещения сотрудников предприятия.
Сопоставление сотрудников будет по табельному номеру, который имеется и в 1С и в Firebird.
Думаю что через регистр сведений было бы оптимально, но как туда правильно записать данные, по мануалам про регистр сведений не все понятно, поэтому прошу подсказать, как правильно нужно организовать?
Обновление при синхронизации нужно по 2 таблицам/справочникам(регистрам): проходы и сотрудники.
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36247216
Protasoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проходы имеют вид: сотрудник, дата, время, тип прохода (вход/выход)
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36247282
semyons
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Регистр сведений должен быть такой: Измерения - сотрудник (или табельный номер) и дата со временем. Ресурсы - тип прохода + можно добавить поле, сколько времени прошло с момента входа для более быстрого получения отчета.
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36247290
semyons
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ можно вообще обойтись одним измерением - время проведенное на рабочем месте. Для типа записи Вход оно равно 0, для типа записи Выход > 0.
Тогда время проведенное на рабочем месте будет определяться тупо суммированием всех записей.
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36247311
Protasoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просят еще чтобы было видно когда человек зашел и когда вышел.
Вопрос: как программно записывать в регистр сведений результат запроса к Firebird?
Думаю через регламентное задание попробывать, но надо будет где-то хранить ID последней записаной в регистр записи. Что для такого хранения наиболее подходит?
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36247700
semyons
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто зашел и кто вышел - кто мешает сделать? Записи то в регистре и для входа и для выхода будут. А с ID - если значение одно, то в принципе, можно в константу, но это, мне кажется, не совсем красиво. Можно добавить ресурс в регистр сведений - ID записи. Тогда всегда можно получить и стопроцентную связь между 1С и базой и те записи, которые не загружены.
А записывать так же, как и в любой другой регистр сведений - через набор записей.
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36247715
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
через набор обычно пишут в регистры подчиненные регистратору. для остальных есть менеджер записи
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36247729
semyons
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Угу, согласен. Через менеджер будет удобней.
Возможно, через набор записей будет быстрее при записи большого количества, но это нужно проверять. И не забывать при записи набора записей ставить флаг на добавление записей, а не на перезапись.
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36248084
Protasoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На примере можно показать как записать корректно?
Записей будет довольно много, около 7-8 тысяч в день.
Читал, что есть еще и ключи записей, это с чем едят?
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36248259
semyons
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше всего почитать ЖКК или help. Рассказать про все тонкости регистра сведений вряд ли получиться.
Для загрузки большого количества записей ИМХО лучше использовать набор записей. Соответственно, делается это так:
НаборЗаписей = РегистрыСведений.zСписаниеЗатратПоИзданиям.СоздатьНаборЗаписей();
Зап = НаборЗаписей.Добавить();
Зап.Сотрудник = Сотр1;
Зап2 = НаборЗаписей.Добавить();
Зап2.Сотрудник = Сотр2;
НаборЗаписей.Записать(Ложь);
При использовании менеджера записи нужно будет записывать отдельно каждую запись, при наборе записей - запись происходит один раз.
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36249299
Protasoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, попробую сделать как вы порекомендовали.
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36252000
Protasoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В регистре сведений, что должно быть уникальным в пределах дня?
Ведь на некоторых сотрудников в придется по входу и выходу за 1 день.
Что должно быть в измерениях? плюс т.к. турникета 3 штуки, некоторые одновременно заходят и выходят.
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36252266
semyons
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ресурсы: Измерения - сотрудник (или табельный номер) + ДатаРегистрации (дата со временем)
Соответственно, уникальным в пределах дня будет сотрудник и дата его прохода.
В ресурсы я бы добавил турникет.
А вообще, структура регистра сведений подбирается исходя из задачи, то бишь какие потом отчеты нужно будет получать.
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36252820
Protasoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотелось бы состоавлять график посещения сотрудником предприятия.
Еще вопрос по типу Дата.
Как в 1С из даты со временем ДДММГГ ЧЧММСС выдернуть отдельно дату и отдельно время?
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36252884
semyons
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выдернуть дату и время можно почитав синтакс-помощник - раздел функций для работы с датами. Там полно функций.
Отдельно дату получить можно через НачалоДня(Дата), ну а со временем сложнее, это зависит от того, что потом с этим нужно делать
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36252914
Protasoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В FireBird дата и время прохода хранятся отдельно. поэтому я и в регистре их хочу отдельно записать, но когда записываю в регистр время имеет формат датавремя а не просто время, тоже самое и с датой, сюда еще время на начало дня записывается автоматически, хотя в свойствах для данных ресурсов указывал что должно быть отдельно дата, отдельно время.
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36253149
semyons
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если тип дата без времени - то и храниться дата без времени. Но в 1С нет типа дата без времени - поэтому всегда в переменной типа дата присутствует время, но оно нулевое.
А хранить отдельно дату и отдельно время смысла нет никакого, потом отчеты будет делать сложнее.
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36253193
Protasoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как тогда сложить дату и время из FireBird, чтобы корректно записать?
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36253254
semyons
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К дате добавляем количество секунд во времени
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36253384
Protasoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДатаПрохода = Строка(День(Дата(НаборЗаписей.Fields(1).Value)))+"."+Строка(Месяц(Дата(НаборЗаписей.Fields(1).Value)))+"."+Строка(Год(Дата(НаборЗаписей.Fields(1).Value)))+" "+Строка(Час(Дата(НаборЗаписей.Fields(2).Value)))+":"+Строка(Минута(Дата(НаборЗаписей.Fields(2).Value)))+":"+Строка(Секунда(Дата(НаборЗаписей.Fields(2).Value)));

Вот так? Только эта зараза год принимает 2 009
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36253535
semyons
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше так:
ДатаПрохода = Дата(НаборЗаписей.Fields(1).Value)+Час(Дата(НаборЗаписей.Fields(2).Value))*3600++Минута(Дата(НаборЗаписей.Fields(2).Value))*60+Секунда(Дата(НаборЗаписей.Fields(2).Value))
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36254893
Protasoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДатаПрохода = Дата(НаборЗаписей.Fields(1).Value)+Час(Дата(НаборЗаписей.Fields(2).Value))*3600++Минута(Дата(НаборЗаписей.Fields(2).Value))*60+Секунда(Дата(НаборЗаписей.Fields(2).Value));
Проход = РегистрыСведений.Проходы.СоздатьМенеджерЗаписи();
Проход.ФизЛицо = Сотрудник.Сотрудник;
Проход.ДатаПрохода = ДатаПрохода;
Если Строка(НаборЗаписей.Fields(3).Value) = "1" Тогда
Проход.ТипПрохода = Перечисления.ТипПрохода.Вход;
Иначе
Проход.ТипПрохода= Перечисления.ТипПрохода.Выход;
КонецЕсли;
Проход.Записать();

Сотрудника записывает, а ДатуПрохода и ТипПрохода игнорирует.
Что не так?
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36254939
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НаборЗаписей.Fields(1).Value)+Час(Дата(НаборЗаписей.Fields(2).Value))*3600++Минута(Дата(НаборЗаписей.Fields(2).Value))*60+Секунда(Дата(НаборЗаписей.Fields(2).Value)

что из себя представляет?
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36255188
Protasoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дата прохода со временем на тот момент.
...
Рейтинг: 0 / 0
Запись данных в регистр сведений
    #36255323
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
йопт... как они выглядит в отладчике?
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / [игнор отключен] [закрыт для гостей] / Запись данных в регистр сведений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]