AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.03.2011, 13:47   #1  
Starling is offline
Starling
Участник
Дети Юза
 
530 / 76 (4) ++++
Регистрация: 20.10.2005
Адрес: Kiev
Уникальный индекс в журнале накладных поставщиков
Меня уже давно мучает вопрос, почему в таблице «Журнал накладных поставщиков» нет уникального индекса (RecId не в счет)?
Связь между таблицами строки накладных поставщиков и журналом накладных идет по полям, которые не являются уникальным индексом таблицы журнал накладных поставщиков, т.е. может возникнуть ситуация, когда у одна и таже строка будет ссылаться на несколько накладных.
Очень хочется сделать уникальный индекс по полю «Внутренняя накладная» - InternalInvoiceId.

Но почему этого нет в стандарте?

Пока у меня единственное предположение, разработчики сочли, что использование групп номерных серий может привести к получению одинаковых внутренних номеров.

Как по мне, так получить одну строку в двух накладных куда опаснее.
Старый 14.03.2011, 13:55   #2  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Цитата:
Сообщение от Starling Посмотреть сообщение
Очень хочется сделать уникальный индекс по полю «Внутренняя накладная» - InternalInvoiceId...
...которое необязательно к заполнению.
__________________
С уважением,
Олег.
Старый 14.03.2011, 14:40   #3  
Starling is offline
Starling
Участник
Дети Юза
 
530 / 76 (4) ++++
Регистрация: 20.10.2005
Адрес: Kiev
Цитата:
Сообщение от oip Посмотреть сообщение
...которое необязательно к заполнению.
мдя... и как с этим жить теперь?)

Если допустить, что у нас поле пустое (на сколько, я понимаю это возможно, если номерная серия имеет активный признак Вручную), то данный скрипт всегда будет сбоить:
1. Сделали по закупке накладную, но ошиблись в цене. Поле InternalInvoiceId пустое.
2. Делаем кредит-ноту, через немедленной получение.
3. В этой же закупке корректируем цену и делаем новую накладную с тем же номером. Поле InternalInvoiceId пустое.
4. В результате строки накладной по шагу 1 и шагу 4 будут отображаться в обеих накладных.

Если я прав, то это поле лучше сделать обязательным. Или для таких ситуаций существует некий дополнительный контроль? И что будет, если помимо индекса я еще и обязательность заполнения поля активирую.

З.Ы.: О проверке использования номера накладной я знаю, может еще что-то есть.
Старый 14.03.2011, 14:48   #4  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Цитата:
Сообщение от Starling Посмотреть сообщение
мдя... и как с этим жить теперь?)

Если допустить, что у нас поле пустое (на сколько, я понимаю это возможно, если номерная серия имеет активный признак Вручную), то данный скрипт всегда будет сбоить:
1. Сделали по закупке накладную, но ошиблись в цене. Поле InternalInvoiceId пустое.
2. Делаем кредит-ноту, через немедленной получение.
3. В этой же закупке корректируем цену и делаем новую накладную с тем же номером. Поле InternalInvoiceId пустое.
4. В результате строки накладной по шагу 1 и шагу 4 будут отображаться в обеих накладных.

Если я прав, то это поле лучше сделать обязательным. Или для таких ситуаций существует некий дополнительный контроль? И что будет, если помимо индекса я еще и обязательность заполнения поля активирую.

З.Ы.: О проверке использования номера накладной я знаю, может еще что-то есть.
А если попробовать в индекс добавить дату накладной?
Старый 14.03.2011, 14:52   #5  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,486 / 408 (16) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
А какой смысл вообще в необязательности поля InternalInvoiceId? Это наш внутренний регистрационный номер накладной. Так же, как и SalesId в заказе или InventTransId в проводке. По-моему он просто обязан быть Mandatory.
__________________
С уважением,
Вячеслав
Старый 14.03.2011, 15:15   #6  
Starling is offline
Starling
Участник
Дети Юза
 
530 / 76 (4) ++++
Регистрация: 20.10.2005
Адрес: Kiev
Цитата:
Сообщение от kornix Посмотреть сообщение
А если попробовать в индекс добавить дату накладной?
В моем примера и дата и номер совпадают, т.е. это не решит проблему. Или я не так понял?
Старый 14.03.2011, 15:16   #7  
Starling is offline
Starling
Участник
Дети Юза
 
530 / 76 (4) ++++
Регистрация: 20.10.2005
Адрес: Kiev
Цитата:
Сообщение от pitersky Посмотреть сообщение
А какой смысл вообще в необязательности поля InternalInvoiceId? Это наш внутренний регистрационный номер накладной. Так же, как и SalesId в заказе или InventTransId в проводке. По-моему он просто обязан быть Mandatory.
Ну мне тоже так кажется, только разработчики так не сделали. Вопрос почему?
Может при формировании проформы инвойса - внутренний номер не выделяется?
Старый 14.03.2011, 15:46   #8  
Starling is offline
Starling
Участник
Дети Юза
 
530 / 76 (4) ++++
Регистрация: 20.10.2005
Адрес: Kiev
Цитата:
Сообщение от Starling Посмотреть сообщение
Может при формировании проформы инвойса - внутренний номер не выделяется?
Похоже, это действительно так - при печати накладной без разноски создаются записи, для которых это поле не заполнено.
Настройка обязательности поля на этот механизм не повлияла, так как в коде идет инсер без валидейтов.

В общем, откажусь я от этой идеи, так как судя по коду это может быть не единственный случай, когда у нас создается накладные с пустым значением в этом поле.
З.Ы.: я так понимаю, все эти рассуждения справедливы и для других документов по закупкам (счетам на оплату, отборочным накладным).
Старый 14.03.2011, 16:07   #9  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Цитата:
Сообщение от Starling Посмотреть сообщение
В моем примера и дата и номер совпадают, т.е. это не решит проблему. Или я не так понял?
Не совсем осознал чего нужно добиться.. Нужна уникальность по каким-то полям для накладных поставщика? Или нужен быстрый поиск по InternalInvoiceId?

Я имел ввиду создать индекс из нескольких полей, включив туда в т.ч. дату.
Старый 14.03.2011, 16:26   #10  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от Starling Посмотреть сообщение
Если допустить, что у нас поле пустое (на сколько, я понимаю это возможно, если номерная серия имеет активный признак Вручную), то данный скрипт всегда будет сбоить...
Начиная с DAX4 не будет - вылетит до этого . Там появилась история аналитик и, в случае отсутствия InternalInvoiceId ошибка уникальности в момент создания новой накладной вылезет там.
За это сообщение автора поблагодарили: Starling (1).
Старый 14.03.2011, 16:59   #11  
Starling is offline
Starling
Участник
Дети Юза
 
530 / 76 (4) ++++
Регистрация: 20.10.2005
Адрес: Kiev
Цитата:
Сообщение от kornix Посмотреть сообщение
Не совсем осознал чего нужно добиться.. Нужна уникальность по каким-то полям для накладных поставщика? Или нужен быстрый поиск по InternalInvoiceId?

Я имел ввиду создать индекс из нескольких полей, включив туда в т.ч. дату.
На самом деле мне нужно было сделать ссылку в новой таблице на накладную. Можно конечно сделать связь по RecId, но я не люблю такие связи, в первую очередь при миграции данных.
Искал способ как это правильно сделать, вот и решил задать на форуме вопрос, который меня давно интересовал.
Дата накладной в этом случае не спасает, так как в моем примере все критерии, в том числе и дата будут совпадать, т.е. опять же одна строка ссылается на две накладных.
В общем случае, добиться от системы такого поведения как я написал в скрипте не так уж и просто, так как необходимо чтобы:
1. Была отключена нумерация внутренних номеров накладных.
2. Была отключена проверка на совпадения внешних номеров накладных.
Ни 1-ое, ни 2-ое я на реальных проектах не видел и экспериментировать желания у меня нет)
Свою задачу решил просто – так как связь между накладной и новой таблицей 1 к 1, то я решил создать новое поле для связи на уровень накладной
Старый 14.03.2011, 17:02   #12  
Starling is offline
Starling
Участник
Дети Юза
 
530 / 76 (4) ++++
Регистрация: 20.10.2005
Адрес: Kiev
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Начиная с DAX4 не будет - вылетит до этого . Там появилась история аналитик и, в случае отсутствия InternalInvoiceId ошибка уникальности в момент создания новой накладной вылезет там.
Спасибо, учту на будущее, но пока решил индексов и обязательности не добавлять, так как нешел другое решение - см. выше.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
RecId и уникальный индекс York DAX: Программирование 4 25.08.2008 10:47
Корректно ли списывать в Журнале платежей Поставщиков затраты на Услуги банка ? Aquarius DAX: Функционал 6 13.04.2007 21:59
Уникальный индекс по Dimension DreamCreator DAX: Программирование 5 26.05.2006 12:57
счета в журнале одобрения накладных sev DAX: Функционал 3 19.09.2005 12:15
Как включить контроль изменений в журнале накладных ? NEO DAX: Функционал 0 17.06.2004 12:30
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:38.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.