| View previous topic :: View next topic   | 
	
	
	
		| Author | 
		Message | 
	
	
		Egor_M
 
 
  Joined: 20 Jun 2002 Posts: 10
 
 
 
  | 
		
			
				 Posted: 26 Jun 2002 13:07    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Здравствуйте.
 
Возникло несколько вопросов:
 
 
Как правильно заполнить поле CRC которое встречается практически во всех таблицах?
 
 
Как БЭСТ узнает какой номер присвоить новому заказу?
 
Например:
 
Много пользователей делают заказы, он каждому новому заказу выдает номер последнего КОНСТРУИРУЕМОГО +1, т.е. если последний записанный заказ 100, 5 пользователей делают заказы и заходит 6-й, то ему он выдаст номер 106. 
 
 
 
Где хранит информацию о новом заказе в процессе его создания (пока его не записали)?
 
 
Дело в том, что мне на Дельфе нужно написать добавление заказов прямо из приложения. | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		MasMas
 
 
  Joined: 11 May 2002 Posts: 19 Location: Малюков Александр
 
 
  | 
		
			
				 Posted: 26 Jun 2002 17:38    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Quote: | 	 		  
 
Как БЭСТ узнает какой номер присвоить новому заказу?
 
Где хранит информацию о новом заказе в процессе его создания (пока его не записали)?
 
 | 	  
 
Посмотри /каталогбазы/SCKAD/00000000.000 или 00000000.мем | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Egor_M
 
 
  Joined: 20 Jun 2002 Posts: 10
 
 
 
  | 
		
			
				 Posted: 27 Jun 2002 08:18    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Какой у него формат?
 
Я понял что в конце идет последний номер, а что идет до нег | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		NDG
 
 
  Joined: 10 Jun 2002 Posts: 13
 
 
 
  | 
		
			
				 Posted: 27 Jun 2002 08:37    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				| CRC код не нужен заполняеш на шару подходяшей последовательностью и в | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		OlgaLeonova
 
  
  Joined: 14 Mar 2002 Posts: 112 Location: Леонова
 
 
  | 
		
			
				 Posted: 28 Jun 2002 12:38    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				__________________________
 
 Как БЭСТ узнает какой номер присвоить   новому заказу? 
 
________________________________
 
 
А вот прикол с новым номером:
 
В справочнике партнеров уже есть код "9999  " и "10000 ". При сортировке по кодам последний -"9999  ",т.е. сортировка символьная
 
 F4- дает "10000 " , т.е. алгоритм поиска следующего номера - последний символьный+еденица к числу.
 
Ну если уж символьные номера, то следующий "99991 " хотя бы.  
 
Теперь страдаем. Последний номер ручками ищем ;(
 
 | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		ksenya
 
 
  Joined: 01 Feb 2002 Posts: 112
 
 
 
  | 
		
			
				 Posted: 04 Oct 2004 15:05    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | NDG wrote: | 	 		  | CRC код не нужен заполняеш на шару подходяшей последовательностью и всё | 	  
 
Вопрос достаточно часто поднимался на форуме, перечитала все обсуждения на эту тему, но... Внятного ответа кроме этого не нашла.
 
Подскажие пожалуйста (очень нужно сейчас, в связи с прописыванием импорта-экспорта с внешними прогами) - Заполнение или незаполнение CRC как-то на что-нибудь влияет??? Если да, то как его заполнить? | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		grey
 
 
  Joined: 12 Jan 2004 Posts: 297 Location: Родионов С.Г. Occupation: ООО Бухгалтер, программист Interests: Набережные Челны
  | 
		
			
				 Posted: 05 Oct 2004 10:37    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				| На работу не влияет. Просто будет ругать "физический сбой" при контроле целостности. | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		ksenya
 
 
  Joined: 01 Feb 2002 Posts: 112
 
 
 
  | 
		
			
				 Posted: 05 Oct 2004 10:50    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | grey wrote: | 	 		  | На работу не влияет. Просто будет ругать "физический сбой" при контроле целостности. | 	  
 
Спасибо, если так. Значит, надо просто заполнять это поле какой-то левой последовательностью? Или можно вообще пустым оставлять? | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Krosh
 
  
  Joined: 13 Oct 2003 Posts: 97 Location: КИА Occupation: СТ Interests: Москва
  | 
		
			
				 Posted: 05 Oct 2004 10:52    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Уж сколько раз твердили ... ИС - надо счетчики номеров через БД раздавать, в не через идиотскую систему сохранения переменных.
 
 
Моё решение такое - написал прогу на Clipper, которая мониторит:
 
1. номера из Книги заказов (REAL\RBOOK.DBF)
 
2. номера из архивной Книги заказов (SCLAD\ARC\ARBOOK.DBF)
 
3. счётчик номеров заказов - файл SCLAD\00000000.000
 
( Нормально? счётчик номеров ЗАКАЗОВ в директории склада!!!!
 
 Боремся со здравым смыслом???   )
 
 
По обеим БД строится БД "дырок", то есть диапазоны свободных номеров.
 
Далее прога берёт текущий номер из счётчика и пытается (довольно успешно, надо сказать) мониторить:
 
1. Запись заказа в Книгу заказов
 
2. Изменение счётчика
 
 
Т.о. отслеживается "раздача" номеров из "дырок". Если дырка становиться маленькой, то прога принудительно переставляет счётчик на следующую подходящую дырку.
 
Подходящей считается дырка с не менее чем 3 номера.
 
 
Обеспечивается практически 95% утилизация номеров заказов. | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Bestovichek
 
  
  Joined: 22 Mar 2002 Posts: 257
 
 
 
  | 
		
			
				 Posted: 05 Oct 2004 14:45    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				| из БД номер заказа это хорошо, а вот если в один момент времени выписывают 5 счетов? совпадение номера неизбежно | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Krosh
 
  
  Joined: 13 Oct 2003 Posts: 97 Location: КИА Occupation: СТ Interests: Москва
  | 
		
			
				 Posted: 06 Oct 2004 09:33    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Заказов (не счетов, будем точными, т.к. по заказу можно много счетов сделать и напечатать) одновременно может делаться гораздо больше 5, но:
 
1. Всё же события в сети никогда не будут ОДНОВРЕМЕННЫМИ, хотя бы потому, что протокол работы это всёже не постоянный двунаправленный поток, а "порционный". Т.е. всегда кто-то будет раньше, кто-то позже.
 
2. В БЭСТ при создании заказа сразу берётся номер из счётчика и счётчик делает инкремент. Поэтому (теоретически) пято хакахов - пять номеров. Но это было бы именно так, если бы не одно НО. ИС сделали систему нумерации на механизме считывания из файла в память значения переменной счётчика. Между считыванием и записью на диск значения+1 есть временной лаг, определяемый как сетевыми операциями, так и загрузкой конкретного компа и т.д. Итог - ВОЗМОЖНО ПОВТОРНОЕ считывание одного и того же номера.
 
 Итог ясен - конфликт при записи заказа ("такой номер есть и пользователь вводит номер ручками. Почему же опять не взять номер из счётчика, ИС, а?)
 
Далее ИМХО, т.к. особо не замудрялся и не анализировал досконально.
 
Когда пользователь отказывается от записи заказа, БЭСТ помещает не нужный номер опять в файл счётчика. Типа recycling.
 
 
ИС! Когда же наконец на замечания будут аргументированные ответы?
 
ПОЧЕМУ НЕЛЬЗЯ СДЕЛАТЬ НУМЕРАЦИЮ ЧЕРЕЗ БД? | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		 |