|  14.03.2011, 13:47 | #1 | 
| Участник | Уникальный индекс в журнале накладных поставщиков 
			
			Меня уже давно мучает вопрос, почему в таблице «Журнал накладных поставщиков» нет уникального индекса (RecId не в счет)? Связь между таблицами строки накладных поставщиков и журналом накладных идет по полям, которые не являются уникальным индексом таблицы журнал накладных поставщиков, т.е. может возникнуть ситуация, когда у одна и таже строка будет ссылаться на несколько накладных. Очень хочется сделать уникальный индекс по полю «Внутренняя накладная» - InternalInvoiceId. Но почему этого нет в стандарте? Пока у меня единственное предположение, разработчики сочли, что использование групп номерных серий может привести к получению одинаковых внутренних номеров. Как по мне, так получить одну строку в двух накладных куда опаснее. | 
|  | 
|  14.03.2011, 13:55 | #2 | 
| Axapta | |
|  | 
|  14.03.2011, 14:40 | #3 | 
| Участник | 
			
			мдя... и как с этим жить теперь?) Если допустить, что у нас поле пустое (на сколько, я понимаю это возможно, если номерная серия имеет активный признак Вручную), то данный скрипт всегда будет сбоить: 1. Сделали по закупке накладную, но ошиблись в цене. Поле InternalInvoiceId пустое. 2. Делаем кредит-ноту, через немедленной получение. 3. В этой же закупке корректируем цену и делаем новую накладную с тем же номером. Поле InternalInvoiceId пустое. 4. В результате строки накладной по шагу 1 и шагу 4 будут отображаться в обеих накладных. Если я прав, то это поле лучше сделать обязательным. Или для таких ситуаций существует некий дополнительный контроль? И что будет, если помимо индекса я еще и обязательность заполнения поля активирую. З.Ы.: О проверке использования номера накладной я знаю, может еще что-то есть. | 
|  | 
|  14.03.2011, 14:48 | #4 | 
| MCP | Цитата: 
		
			Сообщение от Starling
			   мдя... и как с этим жить теперь?) Если допустить, что у нас поле пустое (на сколько, я понимаю это возможно, если номерная серия имеет активный признак Вручную), то данный скрипт всегда будет сбоить: 1. Сделали по закупке накладную, но ошиблись в цене. Поле InternalInvoiceId пустое. 2. Делаем кредит-ноту, через немедленной получение. 3. В этой же закупке корректируем цену и делаем новую накладную с тем же номером. Поле InternalInvoiceId пустое. 4. В результате строки накладной по шагу 1 и шагу 4 будут отображаться в обеих накладных. Если я прав, то это поле лучше сделать обязательным. Или для таких ситуаций существует некий дополнительный контроль? И что будет, если помимо индекса я еще и обязательность заполнения поля активирую. З.Ы.: О проверке использования номера накладной я знаю, может еще что-то есть. | 
|  | 
|  14.03.2011, 14:52 | #5 | 
| северный Будда | 
			
			А какой смысл вообще в необязательности поля InternalInvoiceId? Это наш внутренний регистрационный номер накладной. Так же, как и SalesId в заказе или InventTransId в проводке. По-моему он просто обязан быть Mandatory.
		 
				__________________ С уважением, Вячеслав | 
|  | 
|  14.03.2011, 15:15 | #6 | 
| Участник | |
|  | 
|  14.03.2011, 15:16 | #7 | 
| Участник | Цитата: Может при формировании проформы инвойса - внутренний номер не выделяется? | 
|  | 
|  14.03.2011, 15:46 | #8 | 
| Участник | Цитата: Настройка обязательности поля на этот механизм не повлияла, так как в коде идет инсер без валидейтов. В общем, откажусь я от этой идеи, так как судя по коду это может быть не единственный случай, когда у нас создается накладные с пустым значением в этом поле. З.Ы.: я так понимаю, все эти рассуждения справедливы и для других документов по закупкам (счетам на оплату, отборочным накладным). | 
|  | 
|  14.03.2011, 16:07 | #9 | 
| MCP | Цитата: Я имел ввиду создать индекс из нескольких полей, включив туда в т.ч. дату. | 
|  | 
|  14.03.2011, 16:26 | #10 | 
| Участник | Цитата:  . Там появилась история аналитик и, в случае отсутствия InternalInvoiceId ошибка уникальности в момент создания новой накладной вылезет там. | 
|  | |
| За это сообщение автора поблагодарили: Starling (1). | |
|  14.03.2011, 16:59 | #11 | 
| Участник | Цитата: Искал способ как это правильно сделать, вот и решил задать на форуме вопрос, который меня давно интересовал. Дата накладной в этом случае не спасает, так как в моем примере все критерии, в том числе и дата будут совпадать, т.е. опять же одна строка ссылается на две накладных. В общем случае, добиться от системы такого поведения как я написал в скрипте не так уж и просто, так как необходимо чтобы: 1. Была отключена нумерация внутренних номеров накладных. 2. Была отключена проверка на совпадения внешних номеров накладных. Ни 1-ое, ни 2-ое я на реальных проектах не видел и экспериментировать желания у меня нет) Свою задачу решил просто – так как связь между накладной и новой таблицей 1 к 1, то я решил создать новое поле для связи на уровень накладной | 
|  | 
|  14.03.2011, 17:02 | #12 | 
| Участник | 
			
			Спасибо, учту на будущее, но пока решил индексов и обязательности не добавлять, так как нешел другое решение - см. выше.
		 | 
|  |