Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )




>  Як вибрати в запиті один запис із декілька з різницею в 1-2 секунди
kolkovyj
Отправлено: 30.12.24, 19:59


Молчаливый
*

Группа: Пользователи
Сообщений: 8
Регистрация: 16.12.24
Пользователь №: 80721


Зробив по іншому як планувалось. Не в СКД
Запит - цикл-ТЗ-Запит..далі ще в процесі
Як дороблю повністю викладу сюда. Можливо комусь буде цікаво і корисно.
  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #179828 · Ответов: 18 · Просмотров: 516
 

>  Як вибрати в запиті один запис із декілька з різницею в 1-2 секунди
kolkovyj
Отправлено: 18.12.24, 0:05


Молчаливый
*

Группа: Пользователи
Сообщений: 8
Регистрация: 16.12.24
Пользователь №: 80721


Дякую всім за допомогу, є ще одна ідея, для роздумів.
Можливо це спростить завдання.
Тобто фактично потрібно порахувати час між входом і виходом за день ,якщо їх було декілька то додати один до одного .
ну і відповідно це помістити в таблицю
ПІБ РОБОЧИЙ ЧАС
01.12.24 02.12.24
Іваненко 12 10

ось таким кодом я відсіяв дублі з різницею в 1-2 секунди і вибрав дані по взходу і виходу людини

ВЫБРАТЬ различные
    РеєстрСистемиКонтролюДоступу.ФизическоеЛицо КАК ФизическоеЛицо,
    НАЧАЛОПЕРИОДА(РеєстрСистемиКонтролюДоступу.Период, минута) как Период,
    РеєстрСистемиКонтролюДоступу.Вид КАК Вид
    
ИЗ
    РегистрСведений.РеєстрСистемиКонтролюДоступу КАК РеєстрСистемиКонтролюДоступу
ГДЕ
РеєстрСистемиКонтролюДоступу.ФизическоеЛицо = &ФизЛицо  и
    РеєстрСистемиКонтролюДоступу.Период МЕЖДУ &началоПериода И &КонецПериода


Тут скрін вибірки.
Можливо так буде легше вибрати і порахувати робочий час/ як думаєте.
  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #179762 · Ответов: 18 · Просмотров: 516
 

>  Як вибрати в запиті один запис із декілька з різницею в 1-2 секунди
kolkovyj
Отправлено: 17.12.24, 12:43


Молчаливый
*

Группа: Пользователи
Сообщений: 8
Регистрация: 16.12.24
Пользователь №: 80721


Profi_1C77 @ Сегодня, 12:38 * ,
Так теж не йде(
ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(РеєстрСистемиКонтролюДоступу.Период, МИНУТА) КАК Период1,
    РеєстрСистемиКонтролюДоступу.Вид КАК Вид1,
    РеєстрСистемиКонтролюДоступу.ФизическоеЛицо КАК ФизическоеЛицо1,
    ВЫБОР
        КОГДА РеєстрСистемиКонтролюДоступу.Вид = ЗНАЧЕНИЕ(Перечисление.ВходящееИсходящееСобытие.Входящее)
            ТОГДА РеєстрСистемиКонтролюДоступу.Период
        ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    КОНЕЦ КАК ВремяВходящее1
ПОМЕСТИТЬ ВТВходящие
ИЗ
    РегистрСведений.РеєстрСистемиКонтролюДоступу КАК РеєстрСистемиКонтролюДоступу
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(РеєстрСистемиКонтролюДоступу.Период, МИНУТА) КАК Период2,
    РеєстрСистемиКонтролюДоступу.ФизическоеЛицо КАК ФизическоеЛицо2,
    РеєстрСистемиКонтролюДоступу.Вид КАК Вид2,
    ВЫБОР
        КОГДА РеєстрСистемиКонтролюДоступу.Вид = ЗНАЧЕНИЕ(Перечисление.ВходящееИсходящееСобытие.Исходящее)
            ТОГДА РеєстрСистемиКонтролюДоступу.Период
        ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    КОНЕЦ КАК ВремяИсходящее2
ПОМЕСТИТЬ ВТИсходищее
ИЗ
    РегистрСведений.РеєстрСистемиКонтролюДоступу КАК РеєстрСистемиКонтролюДоступу
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТИсходищее.ВремяИсходящее2 КАК ВремяИсходящее3,
    ВЫБОР
        КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.День)
            ТОГДА НАЧАЛОПЕРИОДА(ВТИсходищее.Период2, ДЕНЬ)
        ИНАЧЕ ВЫБОР
                КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Неделя)
                    ТОГДА НАЧАЛОПЕРИОДА(ВТИсходищее.Период2, НЕДЕЛЯ)
                ИНАЧЕ ВЫБОР
                        КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Месяц)
                            ТОГДА НАЧАЛОПЕРИОДА(ВТИсходищее.Период2, МЕСЯЦ)
                        ИНАЧЕ ВЫБОР
                                КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Декада)
                                    ТОГДА НАЧАЛОПЕРИОДА(ВТИсходищее.Период2, ДЕКАДА)
                                ИНАЧЕ ВЫБОР
                                        КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Квартал)
                                            ТОГДА НАЧАЛОПЕРИОДА(ВТИсходищее.Период2, КВАРТАЛ)
                                        ИНАЧЕ ВЫБОР
                                                КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Полугодие)
                                                    ТОГДА НАЧАЛОПЕРИОДА(ВТИсходищее.Период2, ПОЛУГОДИЕ)
                                                ИНАЧЕ ВЫБОР
                                                        КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Год)
                                                            ТОГДА НАЧАЛОПЕРИОДА(ВТИсходищее.Период2, ГОД)
                                                        ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                                                    КОНЕЦ
                                            КОНЕЦ
                                    КОНЕЦ
                            КОНЕЦ
                    КОНЕЦ
            КОНЕЦ
    КОНЕЦ КАК Периодичность3,
    РАЗНОСТЬДАТ(ВТИсходищее.ВремяИсходящее2, ВТВходящие.ВремяВходящее1, ЧАС) КАК РазностьДат3,
    ВТВходящие.ВремяВходящее1 КАК ВремяВходящее3,
    ВТВходящие.ФизическоеЛицо1 КАК ФизическоеЛицо3,
    ВТИсходищее.Период2 КАК Период3
ИЗ
    ВТВходящие КАК ВТВходящие
        ПОЛНОЕ СОЕДИНЕНИЕ ВТИсходищее КАК ВТИсходищее
        ПО ВТВходящие.ФизическоеЛицо1 = ВТИсходищее.ФизическоеЛицо2
            И ВТВходящие.Период1 = ВТИсходищее.Период2
ГДЕ
    ВТИсходищее.Период2 МЕЖДУ &НачалоПериода И &КонецПериода

  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #179757 · Ответов: 18 · Просмотров: 516
 

>  Як вибрати в запиті один запис із декілька з різницею в 1-2 секунди
kolkovyj
Отправлено: 17.12.24, 12:28


Молчаливый
*

Группа: Пользователи
Сообщений: 8
Регистрация: 16.12.24
Пользователь №: 80721


TohaMonster @ Вчера, 18:11 * ,
Разностьдат працює, але різниця в датах виходить між Времявхлод і ДАТАВРЕМЯ(1,1,1,0,0,0), і відповідно між Времявиход і ДАТАВРЕМЯ(1,1,1,0,0,0)
Як це виправити, підкажіть будь ласка?

Фактично потрібно взяти дату-час виходу відняти від дати-часу входу, навіть,якщо дати в різних днях. Якщо це початок місяця, і 1го числа є тільки дата виходу то взнайти різницю між датою виходу і 24:00 годиною. відповідно і кінцем місяця..датою входу і 24:00 годиною якщо не було виходу в цей останній день.
Даний звіт будую на СКД. Чи можна це реалізувати в запиті, чи може в функціоналі СКД це реалізувати?

ось такий вигляд має зараз звіт


  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #179751 · Ответов: 18 · Просмотров: 516
 

>  Як вибрати в запиті один запис із декілька з різницею в 1-2 секунди
kolkovyj
Отправлено: 16.12.24, 17:53


Молчаливый
*

Группа: Пользователи
Сообщений: 8
Регистрация: 16.12.24
Пользователь №: 80721


а як тепер порахувати час між виходом і входом?
РазностьДат(ВремяВыход, ВремяВход,Час) не хоче працювати.
Тобто при створенні поля видає помилку , що неправильні параметри.


  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #179743 · Ответов: 18 · Просмотров: 516
 

>  Як вибрати в запиті один запис із декілька з різницею в 1-2 секунди
kolkovyj
Отправлено: 16.12.24, 15:11


Молчаливый
*

Группа: Пользователи
Сообщений: 8
Регистрация: 16.12.24
Пользователь №: 80721


Зробив осьь так в запиті.
НАЧАЛОПЕРИОДА(РеєстрСистемиКонтролюДоступу.Период, МИНУТА)

і дублі забрало
  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #179741 · Ответов: 18 · Просмотров: 516
 

>  Як вибрати в запиті один запис із декілька з різницею в 1-2 секунди
kolkovyj
Отправлено: 16.12.24, 12:52


Молчаливый
*

Группа: Пользователи
Сообщений: 8
Регистрация: 16.12.24
Пользователь №: 80721


Для прикладу...
це дані із системи входу-виходу працівників
людина зайшла о 9:00:00
система собі добавила два записи
9:00:01
9:00:02
потім людина вийшла о 10:00:00
і
зайшла о 11:00:00
і знов система продублювала
11:00:01
11:00:02
і потім людина знову
вийшла о 15:00:00
потрібно запишити такі записи

зайшла о 9:00:00
вийшла о 10:00:00
зайшла о 11:00:00
вийшла о 15:00:00
  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #179738 · Ответов: 18 · Просмотров: 516
 

>  Як вибрати в запиті один запис із декілька з різницею в 1-2 секунди
kolkovyj
Отправлено: 16.12.24, 12:41


Молчаливый
*

Группа: Пользователи
Сообщений: 8
Регистрация: 16.12.24
Пользователь №: 80721


Всім привіт. є дані. УПП для України 1.3, Платформа 8.3.10, прості форми Як можна в запиті вибрати запис з меншою датою із записів, які відрізняються між собою декількома секундами і залишити один.
Тобто виключити так звані дублі із різницею в 1-2 секунди.



Запит додаю:

ВЫБРАТЬ
    РеєстрСистемиКонтролюДоступу.Период КАК Период,
    РеєстрСистемиКонтролюДоступу.Вид,
    РеєстрСистемиКонтролюДоступу.devName,
    ВЫБОР
        КОГДА РеєстрСистемиКонтролюДоступу.ФизическоеЛицо <> НЕОПРЕДЕЛЕНО
            ТОГДА РеєстрСистемиКонтролюДоступу.ФизическоеЛицо
        ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК ФизическоеЛицо,
    ВЫБОР
        КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.День)
            ТОГДА НАЧАЛОПЕРИОДА(РеєстрСистемиКонтролюДоступу.Период, ДЕНЬ)
        ИНАЧЕ ВЫБОР
                КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Неделя)
                    ТОГДА НАЧАЛОПЕРИОДА(РеєстрСистемиКонтролюДоступу.Период, НЕДЕЛЯ)
                ИНАЧЕ ВЫБОР
                        КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Месяц)
                            ТОГДА НАЧАЛОПЕРИОДА(РеєстрСистемиКонтролюДоступу.Период, МЕСЯЦ)
                        ИНАЧЕ ВЫБОР
                                КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Декада)
                                    ТОГДА НАЧАЛОПЕРИОДА(РеєстрСистемиКонтролюДоступу.Период, ДЕКАДА)
                                ИНАЧЕ ВЫБОР
                                        КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Квартал)
                                            ТОГДА НАЧАЛОПЕРИОДА(РеєстрСистемиКонтролюДоступу.Период, КВАРТАЛ)
                                        ИНАЧЕ ВЫБОР
                                                КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Полугодие)
                                                    ТОГДА НАЧАЛОПЕРИОДА(РеєстрСистемиКонтролюДоступу.Период, ПОЛУГОДИЕ)
                                                ИНАЧЕ ВЫБОР
                                                        КОГДА &Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Год)
                                                            ТОГДА НАЧАЛОПЕРИОДА(РеєстрСистемиКонтролюДоступу.Период, ГОД)
                                                        ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                                                    КОНЕЦ
                                            КОНЕЦ
                                    КОНЕЦ
                            КОНЕЦ
                    КОНЕЦ
            КОНЕЦ
    КОНЕЦ КАК Периодичность,
    ВЫБОР
        КОГДА РеєстрСистемиКонтролюДоступу.Вид = ЗНАЧЕНИЕ(Перечисление.ВходящееИсходящееСобытие.Входящее)
            ТОГДА РеєстрСистемиКонтролюДоступу.Вид
        ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК ВидВхідне,
    ВЫБОР
        КОГДА РеєстрСистемиКонтролюДоступу.Вид = ЗНАЧЕНИЕ(Перечисление.ВходящееИсходящееСобытие.Исходящее)
            ТОГДА РеєстрСистемиКонтролюДоступу.Вид
        ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК ВидВихідне,
    ВЫБОР
        КОГДА РеєстрСистемиКонтролюДоступу.Вид = ЗНАЧЕНИЕ(Перечисление.ВходящееИсходящееСобытие.Входящее)
            ТОГДА РеєстрСистемиКонтролюДоступу.Период
        ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК ВремяВход,
    ВЫБОР
        КОГДА РеєстрСистемиКонтролюДоступу.Вид = ЗНАЧЕНИЕ(Перечисление.ВходящееИсходящееСобытие.Исходящее)
            ТОГДА РеєстрСистемиКонтролюДоступу.Период
        ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК ВремяВыход,
    ДЕНЬ(РеєстрСистемиКонтролюДоступу.Период) КАК ПериодДень
ИЗ
    РегистрСведений.РеєстрСистемиКонтролюДоступу КАК РеєстрСистемиКонтролюДоступу
ГДЕ
    РеєстрСистемиКонтролюДоступу.Период МЕЖДУ &НачалоПериода И &КонецПериода

СГРУППИРОВАТЬ ПО
    РеєстрСистемиКонтролюДоступу.Период,
    РеєстрСистемиКонтролюДоступу.Вид,
    РеєстрСистемиКонтролюДоступу.devName,
    ВЫБОР
        КОГДА РеєстрСистемиКонтролюДоступу.ФизическоеЛицо <> НЕОПРЕДЕЛЕНО
            ТОГДА РеєстрСистемиКонтролюДоступу.ФизическоеЛицо
        ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ
  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #179734 · Ответов: 18 · Просмотров: 516
 


Новые сообщения  Открытая тема (есть новые ответы)
Опрос  Опрос (есть новые голоса)
Нет новых сообщений  Открытая тема (нет новых ответов)
Нет новых голосов  Опрос (нет новых голосов)
Популярная тема  Горячая тема (есть новые ответы)
Закрыта  Закрытая тема
Нет новых  Горячая тема (нет новых ответов) Перемещена  Тема перемещена
 

RSS Текстовая версия Сейчас: 10.02.25, 2:37
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!