Тема: Добавление данных в лимитно-заборную карту

Необходимо в лимитно-заборную карту кроме номенклатуры материала ещё и размер заготовки.
Пытался добавить размеры добавить в качестве параметра строки спецификации расчетного документа, но через апи не даёт, говорит модуль не допускает редактирования.
Может подскажете как решить эту задачу?

Re: Добавление данных в лимитно-заборную карту

Ну тут бы все решение знать конечно, в стандартной поставке такого расширения нет.

Но для работы  с параметрами есть интерфейc https://help.technologics.ru/7.7/TCSAPI … Values.htm, а там функции https://help.technologics.ru/7.7/TCSAPI … ode_13.htm, https://help.technologics.ru/7.7/TCSAPI … rId_13.htm.

Параметры создаются с их помошью.

Если в TechnologiCS есть возможность присоеденить схему поиска, то как правило этот модуль реализует https://help.technologics.ru/7.7/TCSAPI … Params.htm. Тогда записать можно осуществлять прямо в этом модуле вызывая https://help.technologics.ru/7.7/TCSAPI … alue_9.htm.

Re: Добавление данных в лимитно-заборную карту

За справку спасибо, но в целом работа с параметрами проблем не вызывает, ощущение что нет API у модуля CalculateDocumentSpecification

Const NMKSZ = "SS_NMKSIZE"
CalcDocID = 1234

    Set Calc_Doc = TCSApp.Inventory.SingleCalculateDocFromID(CalcDocID)
    Set Spec_Doc = Calc_Doc.Properties("CalculateDocumentSpecification").AsIDispatch

    Call Spec_Doc.CancelChanges
    Call Spec_Doc.CreateNeW

    Spec_Doc.Properties("NMK_ID").Value = UsrGm.Properties("MAT_ID").AsInteger
    Spec_Doc.Properties("QUANTITY").Value = UsrGm.Properties("MAT_QUAN").AsFloat

    If Not Spec_Doc.IsParamAttached(NMKSZ) Then Spec_Doc.AttachParams(NMKSZ)
    Call Spec_Doc.SetParameterValue(NMKSZ, UsrGm.Properties("NMK_ZAG_SIZE").AsSafeString)

    Call Spec_Doc.SaveChanges

Этот код вываливает следующую ошибку при попытке записать параметр:
"Не могу выполнить операцию Нет прав?
CSDN.CalcDocSpecification"
И в апи-эксплорере редактировать параметры получается только если вызвать саму форму (showmodal), иначе пишет "Модуль данных не допускает редактирования"

Re: Добавление данных в лимитно-заборную карту

Вот так попробуйте

Const NMKSZ = "SS_NMKSIZE"
CalcDocID = 1234

    Set Calc_Doc = TCSApp.Inventory.SingleCalculateDocFromID(CalcDocID)
    Set Spec_Doc = Calc_Doc.Properties("CalculateDocumentSpecification").AsIDispatch

    Call Spec_Doc.CancelChanges
    Call Spec_Doc.CreateNeW

    Spec_Doc.Properties("NMK_ID").Value = UsrGm.Properties("MAT_ID").AsInteger
    Spec_Doc.Properties("QUANTITY").Value = UsrGm.Properties("MAT_QUAN").AsFloat
    Call Spec_Doc.SaveChangesEx


    Call Spec_Doc.SetParameterValue(NMKSZ, UsrGm.Properties("NMK_ZAG_SIZE").AsSafeString)

Re: Добавление данных в лимитно-заборную карту

Ошибки нет, но и параметра тоже нет, не записался.

Re: Добавление данных в лимитно-заборную карту

Const NMKSZ = "SS_NMKSIZE"
CalcDocID = 1234

    Set Calc_Doc = TCSApp.Inventory.SingleCalculateDocFromID(CalcDocID)
    Set Spec_Doc = Calc_Doc.Properties("CalculateDocumentSpecification").AsIDispatch
    Spec_Doc.AttachParams(NMKSZ)

    Call Spec_Doc.CancelChanges
    Call Spec_Doc.CreateNeW

    Spec_Doc.Properties("NMK_ID").Value = UsrGm.Properties("MAT_ID").AsInteger
    Spec_Doc.Properties("QUANTITY").Value = UsrGm.Properties("MAT_QUAN").AsFloat
    Call Spec_Doc.SaveChangesEx


    Call Spec_Doc.SetParameterValue(NMKSZ, UsrGm.Properties("NMK_ZAG_SIZE").AsSafeString)

Эх недоработочка небольшая похоже. Вот так думаю сработает

Спасибо сказали: mtrc731

Re: Добавление данных в лимитно-заборную карту

Сработало! У меня что-то в голове не укладывается, почему мы делаем атач параметра до создания строки спецификации?

Re: Добавление данных в лимитно-заборную карту

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

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

Ну или в общем случае взять объект праметры и изменять уже там через https://help.technologics.ru/7.7/TCSAPI … Values.htm (обычное редактирование там не доступно, так как методами проще).

Спасибо сказали: mtrc731