Re: Как добавить учетную карточку?

Как добавить учетную карточку, находясь в учетных документах?
Пробую так:
Set BalanceNmkCards = TCSApp.Inventory.BalanceNmkCards(89, 735)
BalanceNmkCards.Refresh                                                 
I = BalanceNmkCards.AddNmkCard(735, "", "", -1, -1, 0) 
Set BalanceNmkCards = Nothing

Выдает ошибку на первой строчке:
Layer is not longer valid!
CSDN.Tcs_Inventory

На сколько я понял в строчке:
Set BalanceNmkCards = TCSApp.Inventory.BalanceNmkCards(89, 735)

Первое число - идентификатор цеха, второе - ID номенклатуры, к которой добавляется учетная карточка.

Подскажите, в чем дело?

Re: Как добавить учетную карточку?

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

I = BalanceNmkCards.AddNmkCard(735, "", "", -1, -1, 0)   
номер карточки строка

Re: Как добавить учетную карточку?

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


Это как? Что значит - должна быть в справочнике цеха?

Re: Как добавить учетную карточку?

У меня выдает ошибку:
Несоответствие типа: 'BalanceNmkCards.AddNmkCard'
Ошибка выполнения Microsoft VBScript

Re: Как добавить учетную карточку?

Не соответствие типа одного или нескольких параметров
которые вы передаете в "BalanceNmkCards.AddNmkCard"

Re: Как добавить учетную карточку?

Спасибо, разобрался

Re: Как добавить учетную карточку?

Возник еще один вопрос: как добавить номенклатуру в какой-либо цех?

Re: Как добавить учетную карточку?

Через этот модуль
TCSApp.Inventory.BalanceNmkCardsByPlantDepartment( DepartmentID )

Re: Как добавить учетную карточку?

Это строка возвращает идентификатор цеха/участка. А как добавлять то?

Re: Как добавить учетную карточку?

Эта страка возвращает модуль в котором
нужно встать на нужный классификатор и добавить 
номенклатуру 
примерно так

Set Department = TCSApp.PlantDepartments
  If Department.ShowModal("Выбирите цех") Then 
     
      DepartmentID = Department.Properties( "ID" ).AsInteger

      Set BalanceNmkCards = TCSApp.Inventory.BalanceNmkCardsByPlantDepartment( DepartmentID )
                         
       
      Call BalanceNmkCards.CreateNew
      BalanceNmkCards.Properties( "NMK_ID" ).Value="10000" ' ваше ID номенклатуры 
      Call BalanceNmkCards.SaveChanges                             
       
  End If

Re: Как добавить учетную карточку?

Спасибо

Re: Как добавить учетную карточку?

Как к учетной карточке прицепить серийный номер?

Re: Как добавить учетную карточку?

I = BalanceNmkCards.AddNmkCard( 
Number: string , 
Comment: string, 
Price: extended, 
NmkPartID: integer,
SerialNumberID: integer, 
ShowDialog: integer, 
DialogCaption: String,
DateOpening: DateTime ): integer;

Re: Как добавить учетную карточку?

На строчку:
I = BalanceNmkCards.AddNmkCard("", "", 0, -1, 264, 0, "", Date())
Выдается ошибка:
SQL Server Error: Syntax error converting the varchar value 'sa' to a column of data type int.
Exception. Выбранная партия не относится к номенклатуре учетной карточки<KeyErr>

Для того, что бы прицепить серийный номер нужно добавить партию, так что ли?

Re: Как добавить учетную карточку?

Exception. Выбранная партия не относится к номенклатуре учетной карточки<KeyErr> 

Серийный номер должен быть от тойже номенклатуры что и карточка!

"Преципить" карточку можно и при редактировании модуля

BalanceNmkCards = TCSApp.Inventory.BalanceNmkCards( DepartmentID, NMkId )

Call BalanceNmkCards.BeginUpdate
BalanceNmkCards.Properties( "SERIALNUMBER_ID" ).Value=222222 ' ваше ID серийного номера
Call BalanceNmkCards.SaveChanges

Re: Как добавить учетную карточку?

А как серийник прицепить с параметрами?

Re: Как добавить учетную карточку?

Наверное к серийнику параметры прицепить
а потом этот серийник прицепить.

Re: Как добавить учетную карточку?

Логично. smile
В итоге у меня получился вот такой скрипт:
Sub FormMacro_Test(TCSModule)   
Set BalanceNmkCards = TCSApp.Inventory.BalanceNmkCardsByPlantDepartment(89)
Call BalanceNmkCards.CreateNew
BalanceNmkCards.Properties("NMK_ID").Value = "735" 
Call BalanceNmkCards.SaveChanges
Set NomenclatureSerialNumbers = TCSApp.Inventory.NomenclatureSerialNumbers(735) 
Call NomenclatureSerialNumbers.CreateNew   
NomenclatureSerialNumbers.Properties("NUMBER").Value = "1234567" 
Set Par = NomenclatureSerialNumbers.Properties("Parameters").AsIDispatch
If Not Par Is Nothing Then 
   R = Par.SetParameterValueByParCode("TCS_WM_EN", "1", 0, True)
End If 
Set Par = Nothing
NumID = NomenclatureSerialNumbers.Properties("ID").AsString 
NomenclatureSerialNumbers.SaveChanges
Set BalanceNmkCards = Nothing
Set BalanceNmkCards = TCSApp.Inventory.BalanceNmkCards(89, 735)
I = BalanceNmkCards.AddNmkCard("", "", 0, -1, NumID, 0, "", Date()) 
Set BalanceNmkCards = Nothing
End Sub

Скрипт полностью выполняется, но на строчке:
I = BalanceNmkCards.AddNmkCard("", "", 0, -1, NumID, 0, "", Date())

вылетает ошибка:
SQL Server Error: The statement has been terminated.
Cannot insert duplicate key row in object 'BLNMK_SERIALNUM' with unique index 'BLNMK_SERIALNUM_NMK_IDX'.

В чем дело, понять не могу, подскажите пожалуйста.

Re: Как добавить учетную карточку?

Посмотрите внимательно
Ошибка 
SQL Server Error: The statement has been terminated.
Cannot insert duplicate key row in object 'BLNMK_SERIALNUM' with unique index 'BLNMK_SERIALNUM_NMK_IDX'. 

может выдаваться только после этой строки
NomenclatureSerialNumbers.SaveChanges

Так?

Re: Как добавить учетную карточку?

Я ошибся, она выдается во время работы скрипта.
И отследить на какой строчке это происходит нельзя

Re: Как добавить учетную карточку?

NomenclatureSerialNumbers.Properties("NUMBER").Value = "1234567" 
болжно быть уникальным 
при повторном запуске скрипта будет ошибка

Re: Как добавить учетную карточку?

Спасибо

Re: Как добавить учетную карточку?

Уникальность серийного номера должна быть в рамках номенклатурной позиции или в рамках всех учетных карточек?

Re: Как добавить учетную карточку?

AlexB писал(а):
Уникальность серийного номера должна быть в рамках номенклатурной позиции или в рамках всех учетных карточек?

Номенклатуры. В учетной карточке серийный номер указывается из списка серийных номеров номенклатурной позиции.
У учетных карточек проверяется только собственно ее (карточки) номер в рамках подразделения, в котором она создается.

Re: Как добавить учетную карточку?

Здравствуйте, уважаемые.
Делаю подобную задачу на Delphi. Пробую создать учетную карточку:

var
  TCS: ITCS;
  App: ITCS_Application;  
  BalanceNmkCards: IBalanceNmkCards;
.....
   BalanceNmkCards:= (App as ITCS_Application2).Inventory.BalanceNmkCards[92, 14010];
   BalanceNmkCards.Refresh;
   If BalanceNmkCards.ClassificatorID = -1 then
     BalanceNmkCards.ClassificatorID:= 92;
  //Здесь создание карточки
.....

На последней строчке кода появляется ошибка о несоответствии типов.
Если делать вариант как из справки:

var
  TCS: ITCS;
  App: ITCS_Application;  
  BalanceNmkCards: IBalanceNmkCards;
  CardClassificator: IBalanceNmkCardClassificator;
.....
      BalanceNmkCards:= (App as ITCS_Application2).Inventory.BalanceNmkCards[92, 14010];
      BalanceNmkCards.Refresh;

      if BalanceNmkCards.ClassificatorID = -1 then
      begin
        CardClassificator:= (App as ITCS_Application2).Inventory.BalanceNmkCardClassificator[92];
        if CardClassificator.ShowModal['Выберите классификатор'] = 1 then
          BalanceNmkCards.ClassificatorID:= CardClassificator.DbTree.Selected.NodeId
      end;
  //Здесь создание карточки
.....

То все нормально, но т.к. цех мне известен, показывать окно не нужно.
Подскажите в чем ошибка?