Показать сообщение отдельно
Старый 28.10.2008, 10:43   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,971 / 3267 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Спасибо за ответы.
Про черновики понятно.

Но все же я думаю что логика простановки ваучера тут другая. У заказов, закупок и производственных заказов - может быть несколько документов (накладных) сформировано - соответственно ваучеров может быть несколько. Несколько ваучеров в одно поле не вобьешь.

А вот для строк складских журналов всегда возможен только один ваучер - вот он и пробивается при разноске (если не был прописано при создании). При том что строки - это тоже черновик. Т.е. система смотрит не на то - является ли строка или шапка черновиком, а на однозначность соответствия.

В накладных на услуги мне не нравится именно неоднозначность из-за отсутствия ваучера. По идее если у нас есть накладная на услуги CustInvoiceTable, то по ней возможна лишь одна запись в CustInvoiceJour. (в отличие от заказов и закупок, где накладных может быть несколько) Поэтому в CustInvoiceTable напрашивается ваучер.

Без него по конкретной CustInvoiceJour метод
\Data Dictionary\Tables\CustInvoiceJour\Methods\custInvoiceTable
X++:
CustInvoiceTable custInvoiceTable(boolean _update = false)
{
    CustInvoiceTable custInvoiceTable;
    ;
    custInvoiceTable.selectForUpdate(_update);

    select custInvoiceTable
        where custInvoiceTable.invoiceId            == this.invoiceId            &&
              custInvoiceTable.invoiceDate          == this.invoiceDate          &&
              custInvoiceTable.numberSequenceGroup  == this.numberSequenceGroup;

    return custInvoiceTable;
}
может вернуть как правильный CustInvoiceTable - так и левый, у которого по несчастливой случайности номер совпал.