Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 сен 2024, 03:17

Подстановка даты в предыдущую запись регистра

Автор Алексей_1985_06, 19 июл 2020, 17:31

0 Пользователей и 1 гость просматривают эту тему.

Алексей_1985_06

Знатоков, прошу помочь! Суть вопроса:
1. Есть периодический регистр накопления "ПослужнойСписок"
2. Необходимо при новой записи в данный регистр, подставлять значение "ДатаНачала" в предыдущую запись этого же регистра в поле "ДатаОкончания".
3. Данную процедуру необходимо реализовать при записи новых данных в регистр сведений.
Помогите, кто знает как это реализовать!!!
Для понимания, во вложении имеется скрин.

Вадим Иванцив


Алексей_1985_06

Цитата: Вадим Иванцив от 19 июл 2020, 19:19
Подписка на событие "ПередЗаписью"?

Ну да, это нужно сделать в событии перед записью

alexandr_ll

Цитата: Алексей_1985_06 от 19 июл 2020, 17:31
Знатоков, прошу помочь! Суть вопроса:
1. Есть периодический регистр накопления "ПослужнойСписок"
2. Необходимо при новой записи в данный регистр, подставлять значение "ДатаНачала" в предыдущую запись этого же регистра в поле "ДатаОкончания".
3. Данную процедуру необходимо реализовать при записи новых данных в регистр сведений.
Помогите, кто знает как это реализовать!!!
Для понимания, во вложении имеется скрин.
Так регистр накопления или регистр сведений?

LexaK

Алексей_1985_06,
Цитировать1. Есть периодический регистр накопления "ПослужнойСписок"
прикольно!!! :lol:

вообще так не делают, на две даты
правильно так.
фиксируется дата события и к ней сопутствующие данные
в вашем случае,пример
ДатаПриказа, к ней Кто(Сотрудник), Что(Звание), Почему(Приказ) и др.
для получения интервала(ов)
делаете запрос с сортировкой по дате, при обходе строчек результата у вас легко получаются интервалы.
дата текущей записи - это Начало, дата следующей записи - Конец

ваш случай это избыточное дублирование данных,
если помогло нажмите: Спасибо!

Алексей_1985_06

Цитата: alexandr_ll от 20 июл 2020, 08:07
Цитата: Алексей_1985_06 от 19 июл 2020, 17:31
Знатоков, прошу помочь! Суть вопроса:
1. Есть периодический регистр накопления "ПослужнойСписок"
2. Необходимо при новой записи в данный регистр, подставлять значение "ДатаНачала" в предыдущую запись этого же регистра в поле "ДатаОкончания".
3. Данную процедуру необходимо реализовать при записи новых данных в регистр сведений.
Помогите, кто знает как это реализовать!!!
Для понимания, во вложении имеется скрин.
Так регистр накопления или регистр сведений?
Да извините, ошибся! Конечно регистр сведений!
Добавлено: 20 июл 2020, 21:03


Цитата: LexaK от 20 июл 2020, 12:40
Алексей_1985_06,
Цитировать1. Есть периодический регистр накопления "ПослужнойСписок"
прикольно!!! :lol:

вообще так не делают, на две даты
правильно так.
фиксируется дата события и к ней сопутствующие данные
в вашем случае,пример
ДатаПриказа, к ней Кто(Сотрудник), Что(Звание), Почему(Приказ) и др.
для получения интервала(ов)
делаете запрос с сортировкой по дате, при обходе строчек результата у вас легко получаются интервалы.
дата текущей записи - это Начало, дата следующей записи - Конец

ваш случай это избыточное дублирование данных,
LexaK Подскажите, а полученный интервал есть возможность записать в доп.реквизит "Время в должности" в регистре сведений? Т.е при новой записи в регистр, этот интервал (новая дата приказа-предыдущая дата приказа) записывается в реквизит "Время в должности". И как тогда в этом случае получить запись вида: лет..месяцев...дней....

LexaK

Алексей_1985_06, ну это же такая-же элементарная задача как, например, возраст сотрудников,
ни в одной базе не хранится (нет такого реквизита) как ВозврастСтрудника !!! есть дата рождения, вот от нее каждый раз рассчитывается  лет месяце дней
так и в вашем случае, должна быть общая функция
ПродолжительностьСтажа(ДатаНачала, ДатаКонца)
возвращает Лет, месяцев, дней
а на вход подаете ДатаНачала - Дата текущего приказа,
ДатаКонца - Дата следующего приказа (а вот если его нет то ТекущаяДата())
хранить в каких-то записях интервалы стажа, это непрофессионально и геморройно,

например, вы завели несколько приказов, они прекрасно рассчитали каждый свой интервал и куда-то записали,
а теперь вы задним числом вводите новый (сам приказ старый, ранее пропущенный, ну затерялся, сплошь и рядом такое) приказ
как у вас в этом случае должны измениться интервалы?

вот еще случай, те-же приказы с уже рассчитанными интервалами, и вдруг оказывается какой-то ранее введенный приказ ввели с ошибкой
и его надо удалить (тоже сплошь и рядом такие ситуации бывают),
что с какими интервала надо делать?

вот и получается что для всех этих случаев, самое простое когда приказ пишет (или удаляет) только свою инфу
ДатаПриказа, Кому, Что, Почему, др.
а уже все остальные обработки, документы, отчеты - на лету, динамически рассчитывают все нужные интервалы
если помогло нажмите: Спасибо!

Алексей_1985_06

Цитата: LexaK от 20 июл 2020, 22:05
Алексей_1985_06, ну это же такая-же элементарная задача как, например, возраст сотрудников,
ни в одной базе не хранится (нет такого реквизита) как ВозврастСтрудника !!! есть дата рождения, вот от нее каждый раз рассчитывается  лет месяце дней
так и в вашем случае, должна быть общая функция
ПродолжительностьСтажа(ДатаНачала, ДатаКонца)
возвращает Лет, месяцев, дней
а на вход подаете ДатаНачала - Дата текущего приказа,
ДатаКонца - Дата следующего приказа (а вот если его нет то ТекущаяДата())
хранить в каких-то записях интервалы стажа, это непрофессионально и геморройно,

например, вы завели несколько приказов, они прекрасно рассчитали каждый свой интервал и куда-то записали,
а теперь вы задним числом вводите новый (сам приказ старый, ранее пропущенный, ну затерялся, сплошь и рядом такое) приказ
как у вас в этом случае должны измениться интервалы?

вот еще случай, те-же приказы с уже рассчитанными интервалами, и вдруг оказывается какой-то ранее введенный приказ ввели с ошибкой
и его надо удалить (тоже сплошь и рядом такие ситуации бывают),
что с какими интервала надо делать?

вот и получается что для всех этих случаев, самое простое когда приказ пишет (или удаляет) только свою инфу
ДатаПриказа, Кому, Что, Почему, др.
а уже все остальные обработки, документы, отчеты - на лету, динамически рассчитывают все нужные интервалы
LexaK Спасибо Вам большое за подробное и грамотное разъяснение!!!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск