cro-logo      
Добро пожаловать, Гость. Пожалуйста, выберите Вход

 
 
  ГлавнаяСправкаПоискВход  
 
Страниц: 1 2 3 
Послать Тему Печать
Сквозная нумерация в БД (Прочитано 6 737 раз)
graffserg
Профи
****
Вне Форума



Сообщений: 134
Сквозная нумерация в БД
12.06.2021 :: 16:43:33
 
Всем доброго дня!
Есть СЛОВАРНАЯ База  :Занимаемая должность
0|Системный номер|Ц|10|||
43|Перемещения/назначения|ПО|||МН|Д16
10|Код|Т|7||АП|
20|Понятие|Т|512||ИФ;АП|
45|Является должностью...|ПО|||МН|ДЛ45
44|Подразделения(в/сл)|ПО|||МН|М145
42|Дата создания|Т|20||НК;МН|
41|Дата ликвидации|Т|20||НК|
30|Предки|ПО|||МН|ДЛ40
40|Потомки|ПО|||МН|ДЛ30
в которой должности привязаны к определенному порядковому номеру.

Возможно ли в формулу
Код:
IF (ДЛ10 = "") THEN 
	(
	  @UID := LOAD("record_UID"); 
	  if (@UID < 100) THEN (@UID := 100)
	  @UID := (@UID + 1); 
	  ДЛ10 := @UID; 
	  SAVE("record_UID", @UID)
     )
 


, которая в поле "10|Код|Т|7||АП" автоматически присваивает номер с шагом =1 модернизировать так, чтобы она производила пересчет номеров по условию.
Например, в поле "41|Дата ликвидации|Т|20||НК|" будет стоять дата "ликвидации" должности за п/н 155. Нужно чтобы формула произвела пересчет и номеру, который "ликвидирован" присвоила индекс, допустим "А", а следующему номеру 155.
Спасибо.
Наверх
 
 
IP записан
 
graffserg
Профи
****
Вне Форума



Сообщений: 134
Re: Сквозная нумерация в БД
Ответ #1 - 09.07.2021 :: 12:03:05
 
Всем добрейшего дня!Хочу поднять данную тему для обсуждения.
Вот, к примеру, в excel сквозную нумерацию можно осуществить с помощьюформул:
Код:
=ЕСЛИ((D2="")*(E2="");МАКС($A$1:A1)+1;ЕСЛИОШИБКА(ЕСЛИ(ИЛИ(E2<>"";B2<>"");СЧЁТЕСЛИ($A$1:A1;"?*");"")+1&СИМВОЛ(65);""))
 


или
Код:
=ЕСЛИ((D2="")*(E2="");ЕСЛИ(B2="";"";МАКС($G$1:G1)+1);ЕСЛИОШИБКА(ЕСЛИ(ИЛИ(E2<>"";B2<>"");СЧЁТЕСЛИ($G$1:G1;"?*");"")+1&СИМВОЛ(65);""))
 


или
Код:
=ЕСЛИ((D2="")*(E2="");МАКС($H$1:H1)+1;ЧСТРОК($H$1:H1)&СИМВОЛ(65))
 


Суть формул сводится к одному - сохранить прежний порядковый номер, толькодобавлять к нему индекс, так сказать, сохранить историю. Например, был 155,а стал 155А, был 136, а стал 136А.
Вопрос в cronos возможно ли реализовать данный вариант нумерации.
На прикрепленном файле постарался показать суть задуманного.
Спасибо.
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 041
Санкт-Петербург
Re: Сквозная нумерация в БД
Ответ #2 - 09.07.2021 :: 12:46:09
 
Сквозную нумерацию легко организовать через присвоение полю системного номера записи.
Записи лучше не удалять. При необходимости ввести Статус (категорию), где отмечать необходимые атрибуты.
Реализовывать в нумерации какие то буквенные дополнения - нонсенс, но реализовать можно без проблем.
Лучше сделать множественное поле с историей нумерации. Например, действующий номер - 135, История - 134; 137; 200.
Делать непрерывную нумерацию можно при выдаче.

Наверх
 
 
IP записан
 
graffserg
Профи
****
Вне Форума



Сообщений: 134
Re: Сквозная нумерация в БД
Ответ #3 - 09.07.2021 :: 12:58:18
 
Увадаемый Zuluss! Спасибо за оперативность.
Теперь по делу. Рассмотрим на примере должностей:
- должности имеют свой порядковый номер, который отражается в поле "код" базы "должности". Со временем должности либо "ликвидируются", либо добавляются. Соответственно старые записи в базе остаются и их удаление не планируется, но желательно знать этот самый порядковый номер "ликвидированной" должности.
Вот почему я и предположил, что лучше добавить "ликвидированной" должности, т.е. её порядковому номеру индекс, например "А".

- при наличии "ликвидированых" должностей нумерация должна продолжаться в нарастающей порядке.

- насчёт "При необходимости ввести Статус (категорию), где отмечать необходимые атрибуты" согласен, так и планируется. Своего рода сделать маркер, чтобы формула понимала что вы считывать и по какому условию.

Подскажите пожалуйста, как это реализовать на практике.
Спасибо.
В прикреплённом выше файле, я посторался показать все это.
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 041
Санкт-Петербург
Re: Сквозная нумерация в БД
Ответ #4 - 09.07.2021 :: 13:23:35
 
Я это долго и мучительно рассказывал. Достаточно поля "Дата ликвидации должности". По наличию в нем значения определяется действующая она или нет, а номер не меняется. Так видна вся история.
Наверх
 
 
IP записан
 
graffserg
Профи
****
Вне Форума



Сообщений: 134
Re: Сквозная нумерация в БД
Ответ #5 - 09.07.2021 :: 13:37:12
 
Zuluss писал(а) 09.07.2021 :: 13:23:35:
Я это долго и мучительно рассказывал. Достаточно поля "Дата ликвидации должности". По наличию в нем значения определяется действующая она или нет, а номер не меняется. Так видна вся история.

Уважаемый Zuluss, насчёт этого я с Вами не спорю.
Если можно, подскажите пожалуйста, какую формулу в данной ситуации нужно использовать или как доработать формулу в первом посте.
Спасибо.
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 041
Санкт-Петербург
Re: Сквозная нумерация в БД
Ответ #6 - 09.07.2021 :: 14:21:31
 
Это тупиковый путь.
Предположим есть Отдел А и Отдел Б. В отделе А должности 1, 2, 3, в Б 4, 5, 6. Ликвидируем отдел А и все должности. Они станут 1А, 2А, 3А. Какой номер будет следующий?
Наверх
 
 
IP записан
 
graffserg
Профи
****
Вне Форума



Сообщений: 134
Re: Сквозная нумерация в БД
Ответ #7 - 09.07.2021 :: 14:46:43
 
Zuluss писал(а) 09.07.2021 :: 14:21:31:
Это тупиковый путь.
Предположим есть Отдел А и Отдел Б. В отделе А должности 1, 2, 3, в Б 4, 5, 6. Ликвидируем отдел А и все должности. Они станут 1А, 2А, 3А. Какой номер будет следующий?

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

Если Вы говорите, что это "тупиковый путь", то есть ли альтернатива данному решению вопроса?
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 041
Санкт-Петербург
Re: Сквозная нумерация в БД
Ответ #8 - 09.07.2021 :: 17:11:44
 
Я попросил ответить на вопрос какой номер нужно будет присвоить. Ответа нет. Значит не может быть и алгоритма присвоения номеров в данном случае.
Для использования системного номера достаточно сделать формулу в структуре:
ДЛ10:=@SYSNOMER
Наверх
 
 
IP записан
 
graffserg
Профи
****
Вне Форума



Сообщений: 134
Re: Сквозная нумерация в БД
Ответ #9 - 09.07.2021 :: 17:24:44
 
Я постарался ответить на Ваш вопрос - нумерация пойдёт с 1 в нарастающей порядке.
Наверх
 
 
IP записан
 
graffserg
Профи
****
Вне Форума



Сообщений: 134
Re: Сквозная нумерация в БД
Ответ #10 - 09.07.2021 :: 17:26:37
 
graffserg писал(а) 12.06.2021 :: 16:43:33:
Всем доброго дня!
Есть СЛОВАРНАЯ База  :Занимаемая должность
0|Системный номер|Ц|10|||
43|Перемещения/назначения|ПО|||МН|Д16
10|Код|Т|7||АП|
20|Понятие|Т|512||ИФ;АП|
45|Является должностью...|ПО|||МН|ДЛ45
44|Подразделения(в/сл)|ПО|||МН|М145
42|Дата создания|Т|20||НК;МН|
41|Дата ликвидации|Т|20||НК|
30|Предки|ПО|||МН|ДЛ40
40|Потомки|ПО|||МН|ДЛ30
в которой должности привязаны к определенному порядковому номеру.

Возможно ли в формулу
Код:
IF (ДЛ10 = "") THEN 
	(
	  @UID := LOAD("record_UID"); 
	  if (@UID < 100) THEN (@UID := 100)
	  @UID := (@UID + 1); 
	  ДЛ10 := @UID; 
	  SAVE("record_UID", @UID)
     )
 


, которая в поле "10|Код|Т|7||АП" автоматически присваивает номер с шагом =1 модернизировать так, чтобы она производила пересчет номеров по условию.
Например, в поле "41|Дата ликвидации|Т|20||НК|" будет стоять дата "ликвидации" должности за п/н 155. Нужно чтобы формула произвела пересчет и номеру, который "ликвидирован" присвоила индекс, допустим "А", а следующему номеру 155.
Спасибо.

В принципе я ещё в начале темы постарался описать суть вопроса.
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 041
Санкт-Петербург
Re: Сквозная нумерация в БД
Ответ #11 - 09.07.2021 :: 17:31:59
 
Цитата:
в данном примере следующим номером будет 1, 2, 3,
.
Для меня непонятно, а зачем? Если номер 1 никоим образом не будет связан с номером 1А, и будет следовать по порядку за номером 6.
Наверх
 
 
IP записан
 
graffserg
Профи
****
Вне Форума



Сообщений: 134
Re: Сквозная нумерация в БД
Ответ #12 - 09.07.2021 :: 17:44:42
 
Уважаемый Zuluss, посмотрите пожалуйста пример в Excel.
Я надеюсь, что в примере будет все показано наглядно. Вот именно это я и хочу реализовать в cronos.
Спасибо
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 041
Санкт-Петербург
Re: Сквозная нумерация в БД
Ответ #13 - 09.07.2021 :: 20:21:03
 
В формуле Excel реализован немного другой механизм, отличный от описываемого. Там два вида нумерации ведутся паралельно и всегда пересчитывается весь набор строк. Т.е.  одна нумерация только цифрами, другая нумерация цифрами и буквами.
1            1
2A            2A
3A            3A
2            4A
4A            5A
3            2
5A            6A
6A            7A
4            3
7A            8A
5            4
6            5
8A            9A
7            6
9A            10A
10A            11A
8            7
Первый столбец изначальный. Меняем в 4 строке значение в столбце Е. В результате происходит полный пересчет и мы получаем значения в столбце 2. Т.е. 2 преобразовалось в 4А. Ни о какой истории хранения номеров не может быть и речи. Преобразовались и другие номера. 8 стало 7. Вам нужен такой пересчет? Как то сомневаюсь. Такой вариант вообще даже в голову прийти не мог.
Наверх
 
 
IP записан
 
graffserg
Профи
****
Вне Форума



Сообщений: 134
Re: Сквозная нумерация в БД
Ответ #14 - 09.07.2021 :: 21:59:43
 
Ок. Дабы не дискутировать начнём сначала на примере должностей.
1. Есть база "должности" в которой каждому порядковому номеру соответствует та или иная должность.
2. С течением времени должности имеют свойство добавляться или "ликвидироваться", в связи с чем происходит изменение порядкового номера для действующей должности. Должности которые "ликвидированы" остаются в базе. Т.е. происходит смещение в нумерации для действующих должностей.
Теперь идём далее.
Зная, что каждому порядковому номеру соответствует  та или иная должность оператор просто вводит её номер и при помощи поиска на вводе создаёт связь лица с данной должностью.
Вопрос: Как нужно поступить с должностями, которые ликвидированы и находятся в базе? Какую формулу нужно использовать для пересчета порядковых номеров, зная тот факт, что в базе существует поле "дата ликвидации"?
Вот мне и пришла мысль добавить порядковому номеру ликвидирован ной должности индекс, а для действующих должностей производить пересчет. Нерешительный Например было 1,2,3,4,5,6,7,8,9,10, а с появлением ликвидированых должностей стало 1,2,3А,3,4,5,6А,7А,6,7,8 и т.д.
Наверх
 
 
IP записан
 
Страниц: 1 2 3 
Послать Тему Печать