| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Почему при отсутствии денег в кассе или на р/с Navision позволяет учитывать расходные кассовые операции, что в итоге приводит к отрицательному балансу кассы или р/с? Даже при указании минимального баланса по кассе или по р/с система не дает никаких предупреждений при учете операций.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Поле "Миним. баланс" - это так, для красоты. Оно нигде в системе  не контролируется. 
		
		
		
		
		
		
			В справке абсолютно правильно написано: "Здесь можно ввести минимальный баланс для данного банковского счета." Можете вводить, можете не вводить. ![]() Никто не обещал, что это на что-то повлияет. Совет: Добавьте в учетный кодюнит пару волшебных строк и контроль заработает. 
				__________________ 
		
		
		
		
	Должен остаться только один.  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от NeNavision
			 
 
			Поле "Миним. баланс" - это так, для красоты. Оно нигде в системе  не контролируется. 
		
	В справке абсолютно правильно написано: "Здесь можно ввести минимальный баланс для данного банковского счета." Можете вводить, можете не вводить. ![]() Никто не обещал, что это на что-то повлияет. Совет: Добавьте в учетный кодюнит пару волшебных строк и контроль заработает.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от NeNavision
			 
 
			Поле "Миним. баланс" - это так, для красоты. Оно нигде в системе  не контролируется. 
		
	В справке абсолютно правильно написано: "Здесь можно ввести минимальный баланс для данного банковского счета." Можете вводить, можете не вводить. ![]() Никто не обещал, что это на что-то повлияет. Совет: Добавьте в учетный кодюнит пару волшебных строк и контроль заработает.  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Ну и по поводу строчек - тоже. Например, просто можно написать простую проверку по данному полю и выводить ERROR, Message, доп. ветку или так далее..  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от RedFox
			 
 
			По поводу кодеюнита - все зависит от того, что именно Вам нужно. Я бы поставил проверку значение по условию к полю в 11 или 12 (на запуск процедуры PostBankAcc) 
		
	Ну и по поводу строчек - тоже. Например, просто можно написать простую проверку по данному полю и выводить ERROR, Message, доп. ветку или так далее.. Привидите пожалуйста пример как это можно реализовать  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вроде все должно выглядеть так: 
		
		
		
		
		
		
		
	Код: IF GenJnlLine."Bal. Account Type"= Acc::"Bank Account" THEN GenJnlLine."Bal. Account Type" :=4;
 IF GenJnlLine."Bal. Account Type"=4 THEN BEGIN
   IF BankAccount.FIND('-') THEN
	REPEAT
	  IF BankAccount."No." =  GenJnlLine."Bal. Account No." THEN
	  if BankAccount."Min. Balance" > BankAccount.Balance - GenJnlLine.Amount THEN EXIT;
	UNTIL BankAccount.NEXT =0;
END; | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Побыстренькому можно так: CodeUnit 11, trigger RunCheck(VAR GenJnlLine : Record "Gen. Journal Line";VAR JnlLineDim : Record "Journal Line Dimension") "Account Type"::"Bank Account": ... TESTFIELD("Job No.",''); IF BankAcc.GET("Account No.") THEN IF {Вычисления, которые можно сделать раньше} < BankAcc."Min. Balance" THEN ERROR("Учитывать нельзя по определению - или нужное сообщение"); ELSE ERROR("сообщение типа - Номер банкосвского счета не существует"); P.S. Условие было записано так:{Вычисления, которые можно сделать раньше}, потому что могут быть различные критерии, например счет с овердрафтом, в которым можно ходить только в исключительных случаях или признак для деления суммы, например, деление по приоритету измерений, приоритетам проплат и т.д.  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Цитата: 
	Код: REPEAT IF BankAccount."No." = GenJnlLine."Bal. Account No." THEN if BankAccount."Min. Balance" > BankAccount.Balance - GenJnlLine.Amount THEN EXIT; UNTIL BankAccount.NEXT =0; END; Цитата: 
	
		
			вот только я не пойму почему при любых значениях поле BankAccount.Balance принимает значение 0 ?!
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Код: IF GenJnlLine."Bal. Account Type"=4 THEN BEGIN а этой строкой: Код: IF GenJnlLine."Bal. Account Type"= Acc::"Bank Account" THEN GenJnlLine."Bal. Account Type" :=4; Буду очень рад, если ты напишешь, как это сделать гораздо правельней! Я так и не разобрался с Get. Цитата: 
	
Ого, я и не мог предположить... =( Пока у меня выходит так: Код: IF GenJnlLine."Bal. Account Type"= Acc::"Bank Account" THEN GenJnlLine."Bal. Account Type" :=4;
 IF GenJnlLine."Bal. Account Type"=4 THEN BEGIN
  IF BankAccount.FIND('-') THEN
   REPEAT
	IF BankAccount."No." =  GenJnlLine."Bal. Account No." THEN
	 IF (BankAccount.CALCFIELDS(Balance) = TRUE) AND (BankAccount.Balance <> 0) THEN
	  IF BankAccount."Min. Balance" >= BankAccount.Balance - GenJnlLine.Amount THEN
	  ERROR(Text010);
   UNTIL BankAccount.NEXT =0;
END; | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ну если честно делать, нужно писать проверки в 13 кодеюните (Gen. Jnl.-Post Batch). Ибо представляю реакцию пользователя, когда тестовый отчет показывает положительный баланс на банк. счете после учета, а самописные проверки требуют в первую очередь ввода приходных операций.  
		
		
		
		
		
		
		
	Ну а для более строгого контроля можно анализировать еще и весь фин. журнал, да и еще можно проверки добавить на валидэйте значимых полей в фин. журнале  .Имхо, бесполезная и ненужная фича. Для касс есть отчет кассира да и физически больше денег чем есть в кассе не отдадут, а для р/с обычно вводят данные по факту автоматом либо через клиент-банк либо через банковские выписки.  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			RedFox Я сделал как ты указал в 11 кодеюните =)) 
		
		
		
		
		
		
		
	Мне хватило 6 строк: Код:   IF BankAccount.FIND('-') THEN
   REPEAT
	IF BankAccount."No." =  GenJnlLine."Bal. Account No." THEN
	 IF (BankAccount.CALCFIELDS(Balance) = TRUE) AND (BankAccount.Balance <> 0) THEN
	  IF BankAccount."Min. Balance" >= BankAccount.Balance - GenJnlLine.Amount THEN ERROR(Text010);
   UNTIL BankAccount.NEXT =0; | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			by_HT - Вам жирная ДВОЙКА за такой код код. Представьте себе что у Вас 200 банковских счетов и учитывается 500 строк фин. журнала, ни в одном из которых нет банк. счета, сколько раз выполнится Calcfields? Кроме того банк. счет может быть в левой стороне проводки. 
		
		
		
		
		
		
		
	PS. Строк действительно немного, если это самоцель  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Смысл присваивания действительно не ясен. Чтобы убедиться в том, что счет правильного типа достаточно: Код: IF GenJnlLine."Bal. Account Type"=GenJnlLine."Bal. Account Type"::"Bank Account" THEN Код: IF BankAccount.GET(GenJnlLine."Bal. Account No." ) THEN PS Документация Где найти документацию? Книги книги по Navision  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			TO RMV - Ну тогда милости просим написать свой код, а не ставить оценки.. Или Вы сразу тоже начали писать код без проблем, огрех или ошибок? Может все-таки вспомните себя!?!? И человеку с чего-то начинать нужно? 
		
		
		
		
		
		
		
	Согласен, что этот код, извините by_HT, не совсем корректен (нельзя анализировать только 1 строку журнала (и при этом тем более писать "4" или строки типа IF GenJnlLine."Bal. Account Type"= Acc::"Bank Account" THEN GenJnlLine."Bal. Account Type" :=4, которые переприсваювают сами себя), а нужно весь журнал вцелом по отдельному счету без использования FIND('-'). Нужно рассматривать "Account Type" и "Bal. Account Type"). В данном коде так же не верно выбрана последовательность поиска - сначала источник информации (а именно строки жунала), а потом то, что мы хотим проверить (банковские счета). Цитата: 
	
		
			Представьте себе что у Вас 200 банковских счетов и учитывается 500 строк фин. журнала, ни в одном из которых нет банк. счета, сколько раз выполнится Calcfields? Кроме того банк. счет может быть в левой стороне проводки.
		
	 
ежедневных приходов и расходов (движения по расчетному счету) с различными приоритетами по платежам, где каждый счет может быть мультивалютным и некоорые овердафтные. При этом нужно помнить, что для SQL Calcfields это просто тяжелая задача, а Native Calcfields это типа фича NAV. Это было в "условиях задачи"? Цитата: 
	
		
			Имхо, бесполезная и ненужная фича. 
PS. Строк действительно немного, если это самоцель Или здесь указаны точные требования к функционалу для разработки? Спецификации? Если я правильно понял, то человек учится (иначе бы прекрасно знал про GET, CALCFIELDS, отличие от CALSCUMS и т.д.). И например, мое желание, просто помочь ему научиться анализировать и программить. P.S. Извините форумчане за лирическое отступление, но нужно опускаться на уровень собеседника для общения.  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			2 Redfox. Полегче и на полтона ниже. 
		
		
		
		
		
		
		
	Не хочется заниматся флудераторством, но все же Вам отвечу по порядку: 1. Если выложил на форум свой код - будь готов к тому что его начнут оценивать. Моя оценка - два, By_HT стоит просто поучится программированию. Надеюсь что он работает не в консалтинге, а действительно учится для себя. Вы Redfox наверно никогда не сталкивались с подобных вот кодом на своих проектах, а мне пришлось. Что же, от души пожелаю Вам проявить свои таланты наставника не только на форуме. 2. По поводу "усложненной задачи". Если есть конкретные предложения - прошу в PM. Иначе попрошу не флудить. 3. Лезем на гугл и ищем что означает слово "Имхо". PS. Не стоит извинений  . Иногда действительно стоит опускаться до уровня собеседника, но при этом не стоит забывать что те советы которые Вы даете By_HT могут оказать ему медвежью услугу. Нет ничего проще чем залезть 12 кодеюнит и поправить "пару" строк, вместо того чтобы проанализировать проблему всесторонне.
		 | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Каждый читает так, как ему хочется читать - таково восприятие чиловеком информации. Но я учту ваши пожелания. Цитата: 
	
		
			1. Если выложил на форум свой код - будь готов к тому что его начнут оценивать. Моя оценка - два, By_HT стоит просто поучится программированию. Надеюсь что он работает не в консалтинге, а действительно учится для себя. Вы Redfox наверно никогда не сталкивались с подобных вот кодом на своих проектах, а мне пришлось. Что же, от души пожелаю Вам проявить свои таланты наставника не только на форуме.
		
	 
TO MAZZY - Может сделать подветрку для вопросов новичков, чтобы старшие не тюкали? Цитата: 
	
		
			2. По поводу "усложненной задачи". Если есть конкретные предложения - прошу в PM. Иначе попрошу не флудить.
		
	 
В данном случае это кусок реального примера, который делали. Цитата: 
	
		
			3. Лезем на гугл и ищем что означает слово "Имхо".  
PS. Не стоит извинений  . Иногда действительно стоит опускаться до уровня собеседника, но при этом не стоит забывать что те советы которые Вы даете By_HT могут оказать ему медвежью услугу. Нет ничего проще чем залезть 12 кодеюнит и поправить "пару" строк, вместо того чтобы проанализировать проблему всесторонне.
		
	Еще раз приношу извинения за мои уточнения.  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо конечно всем.... особое спасибо RedFoxу! 
		
		
		
		
		
		
		
	если "Account Type"::"Bank Account": то Код: IF GenJnlLine."Account Type" = GenJnlLine."Account Type"::"Bank Account" THEN BEGIN IF (BankAccount.CALCFIELDS(Balance) = TRUE) AND (BankAccount.Balance <> 0) THEN IF BankAccount."Min. Balance" >= BankAccount.Balance - GenJnlLine.Amount THEN ERROR(Text013); END; Код: IF GenJnlLine."Bal. Account Type" = GenJnlLine."Bal. Account Type"::"Bank Account" THEN BEGIN IF (BankAccount.CALCFIELDS(Balance) = TRUE) AND (BankAccount.Balance <> 0) THEN IF BankAccount."Min. Balance" >= BankAccount.Balance - GenJnlLine.Amount THEN ERROR(Text013); END;  | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			rmv, на 3 с минусом покатит????   
		
		
		
		
		
		
		
	 
		 | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от by_HT
			 
 
			Спасибо конечно всем.... особое спасибо RedFoxу! 
		
	если "Account Type"::"Bank Account": то Код: IF GenJnlLine."Account Type" = GenJnlLine."Account Type"::"Bank Account" THEN BEGIN IF (BankAccount.CALCFIELDS(Balance) = TRUE) AND (BankAccount.Balance <> 0) THEN IF BankAccount."Min. Balance" >= BankAccount.Balance - GenJnlLine.Amount THEN ERROR(Text013); END; Код: IF GenJnlLine."Bal. Account Type" = GenJnlLine."Bal. Account Type"::"Bank Account" THEN BEGIN IF (BankAccount.CALCFIELDS(Balance) = TRUE) AND (BankAccount.Balance <> 0) THEN IF BankAccount."Min. Balance" >= BankAccount.Balance - GenJnlLine.Amount THEN ERROR(Text013); END; Цитата: 
	
		
			В случае 200 банковских счетов и 500 строк фин. журнала..... здесь я понятие и не имею что мне делать =(
		
	 
Но в таком случае лучше вынести проверку в отдельную процедуру. P.S. Еще раз уточню - случай такой абстрактный может быть, а может и не быть  | 
| 
	
 |