[РЕШЕНО] Изменить запись в регистре сведений

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Peroman, 17 ноя 2014.

  1. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Доброго времени суток, форумчане!
    Платформа 8.3
    Конфа: Розница 1.0

    Есть регистр сведений, переодический, период в пределах секунды. Одно измерение сотрудник, вида Спр.ФизЛица и 1 ресурс, вида число (НомерМетки). Регистр не подчинен, регистратору.
    Нужно чтобы в этот регистр по сотруднику, записывалось НомерМетки+1.
    Но так же необходимо выполнить условие, если на данный день еще не было записи то НомерМетки = 1
    Не могу ( не хватает знаний) . Каким мне методом воспользоваться.
    Если использовать ПолучитьПоследнее(), то я получаю только значение ресурса и не могу в этом случае отработать второе условие.
    Если использовать СрезПоследних(), то я не понимаю как мне вытащить оттуда значения колонок.
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Запросом получить срез последних и обработать в коде.

    что-то вроде этого:
    Код:
    ........
    Если НачалоДня(Выборка.Период) < НачалоДня(ТекущаяДата()) Тогда
    НомерМетки = Выборка.НомерМетки + 1;
    Иначе
    НомерМетки = 1;
    КонецЕсли;
    
    МенеджерЗаписи = РегистрыСведений.<ИмяРегистра>.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Период = ТекущаяДата();
    МенеджерЗаписи.ФизЛицо = Выборка.Физлицо;
    МенеджерЗаписи.НомерМетки = НомерМетки;
    МенеджерЗаписи.Записать();
    ........
    Peroman нравится это.
  3. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29

    Чтобы было понятно что я пытаюсь сделать, вот мой код:

    Код:
        Режим = РежимДиалогаВопрос.ДаНет;
        ТекстВопроса = "Выполнить идентификацию?";
        Ответ = Вопрос(ТекстВопроса, Режим, 0);
        Пока Ответ <> КодВозвратаДиалога.Нет Цикл
            Идентификация = _Anviz.ВызватьИдентификацию();
            Если Идентификация.Сотрудник = Неопределено Тогда
                Предупреждение("Идентификация не удалась, необходимо повторить процедуру!");
                Продолжить;
            Иначе
                Сообщить("Сотрудник: " + Идентификация.Сотрудник);
                ВремяИдентификацииAnviz = РегистрыСведений.ВремяИдентификацииAnviz;
                Запись = ВремяИдентификацииAnviz.СоздатьМенеджерЗаписи();
                Запись.Период = ТекущаяДата();
                Запись.Сотрудник = Идентификация.Сотрудник;
                Отбор = Новый Структура("Сотрудник",Идентификация.Сотрудник);
                НомерПоследнейМетки = ВремяИдентификацииAnviz.ПолучитьПоследнее(ТекущаяДата(), Отбор);
                Запись.НомерОтметки = НомерПоследнейМетки.НомерОтметки+1;
                Запись.Записать();
            КонецЕсли;
            Режим = РежимДиалогаВопрос.ДаНет;
            ТекстВопроса = "продолжить идентификацию?";
            Ответ = Вопрос(ТекстВопроса, Режим, 0);
            Если Ответ = КодВозвратаДиалога.Да Тогда
                Продолжить;
            Иначе
                Возврат;
            КонецЕсли;
        КонецЦикла;  
    
  4. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Что мне вообще в принципе нужно -
    Есть биометрическая система сканирования пальцев.
    Мне нужно в Рознице организовать, что-то на вроде учета рабочего времени.
    Каким путем я пошел?
    Создал регистр сведений.
    Создал регламентное задание, с интервалом 20 минут. В этом задание вызываю как раз код написанный выше.
    Кодом хочу, писать в регистр идентифицированного сотрудника. Номер метки, нужен в принципе чтобы потом легче было в отчете посчитать отработанное время.
    Регистр сделал периодический, для того чтобы сотрудник не мог взять отметиться за весь день и уйти гулять))). Чтобы в отчете потом можно было задать, что интервал должен быть не менее 20 минут.
    Но мне кажется что из-за моей схемы, регистр будет очень быстро пухнуть, в дальнейшем будет более 100 сотрудников ежедневно отмечаться каждые 20 минут.
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    а какой смысл каждые 20 минут проходить идентификацию? Если человек пришёл на рабочее место - фиксируем дату, ушёл с рабочего места - фиксируем дату, основная сложность в определении движения человека: пришёл или ушёл.
  6. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    В торговой точке 2 сотрудника. Приходят, оба - отметились, один работает, второй ушел домой, пришел вечером и отметился. Смена есть,а он целый день гулял!
    Другой вариант. считаем в конце месяца ЗП, по сотруднику, сотрудник "отличился" штрафом, но руководителю, сотрудник данного магазина симпатизирует.
    Руководитель при учете ЗП, ставит ему рабочие дни, в которые он не работал, дабы закрыть штраф.
  7. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Ну хорошо, пусть будет каждые 20 минут отмечаться.
    В любом случае, я пока не очень понимаю, к чему все эти трудности с меткой, если простая выборка из реальной таблицы РС покажет всю картину присутствия/отсутствия человека с точностью до 20 минут?
  8. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    В принципе особо-то не зачем. Чисто для удобства, при графике 12 часов, при интервале 20 минут, последняя метка будет равна 36.
  9. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    В общем, метка - не нужна.
    Остальное вроде и так работает. Тупо пишем текущее время "идентификации".
  10. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Я в принципе, тоже так подумал. Если понадобится метка, всегда можно будет потом добавить.
    тему можно считать закрытой
Похожие темы
  1. Berezin
    Ответов:
    4
    Просмотров:
    765
  2. rockedit
    Ответов:
    26
    Просмотров:
    12.273
  3. Pentыch
    Ответов:
    9
    Просмотров:
    2.052
  4. MyNameNoName
    Ответов:
    2
    Просмотров:
    337
  5. alexser94
    Ответов:
    1
    Просмотров:
    325
Загрузка...

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