(изменено: pavelAgregat73, 23 ноября 2020 14:37:44)

Тема: Редактирование спецификации расчётных документов

Добрый день!

Столкнулся с тем, что при прохождении входного контроля (расширение "входной контроль"), цены из спецификации исходного расчётного документа (Приход ТМЦ) не передаются в спецификации последующих расходных документов, отчего приход и расход(равно как и промежуточные) в "цене" и "сумме", логично, получают ноль. Решил открывать "родительский" документ, его спецификацию AsIDispatch и, сохранив начальное значение PRICE, записывать цену в спецификации созданных на его(Прихода ТМЦ) основе документов.
Обыкновенно работавшее

Spec.CancelChanges -> Spec.Edit -> Spec.p_PRICE = XXX -> Spec.SaveChangesEx

Даёт

Модуль данных не допускает редактирования
CSDN.CalcDocSpecification

Возможно, в самом направлении у меня ошибка, подскажите, пожалуйста

UPD: Невозможность редактирования явно связана была со статусом документа, на этапе ввода данных спецификация может быть изменена.

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

Re: Редактирование спецификации расчётных документов

Здравствуйте! Это наше стандартное расширение входной контроль?

Re: Редактирование спецификации расчётных документов

Олег Зырянов пишет:

Здравствуйте! Это наше стандартное расширение входной контроль?

Да, тот, что в дистрибутивах обретается в папке "Расширения\\Входной контроль"

Re: Редактирование спецификации расчётных документов

Сейчас посмотрим. А они(цены) там разве нужны? Все таки цена по хорощему на первом документе должна появиться, там где от поставщика документ заводится. В остальных документах какой в ней смысл?

Re: Редактирование спецификации расчётных документов

Позциии спецификации копируются с помощью https://help.technologics.ru/7.9/TCSAPI … ions_9.htm.
После этого надо самим добавить копирование цен, там где нужно.

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

Re: Редактирование спецификации расчётных документов

Спасибо, копирование спецификации как раз нашёл, а вот понимания, почему цена не переходит в копию - не было. Получается каждый раз +1 процедура - взять родительскую спецификацию, пройти по ней, каждый раз делая локейт на id нужной номенклатуры уже дочерней и добавляя в неё цену родительской. В принципе, строк немного, но заранее не узнать, что они нужны..

Просто получается при отправке на входной контроль, цены теряются, а значит, в учётных документах прихода/расхода не будет сумм (что логично при нолевых ценах в спецификациях расчётных документов). Отсюда проблема понимания остатков материальной ценности незавершённой продукции.

Потому и нужна цена..

Re: Редактирование спецификации расчётных документов

Просто получается при отправке на входной контроль, цены теряются, а значит, в учётных документах прихода/расхода не будет сумм (что логично при нолевых ценах в спецификациях расчётных документов). Отсюда проблема понимания остатков материальной ценности незавершённой продукции.

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

(изменено: pavelAgregat73, 25 ноября 2020 09:20:49)

Re: Редактирование спецификации расчётных документов

Олег, снова доброго дня и спасибо за терпение!
Раз за разом, всей группой вовлечённых неофитов, вчитываясь в мантры определений

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


и

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

,
мы не смогли разобраться с тонкостями сущностей, стоящими за этими словами.

Как мы полагали, расчётный документ - документ, включающий в себя спецификации, объединяющий номенклатуру, количество, цену. Либо корректирующий документ на основе другого РД. Условно, переменная. (SingleCalculateDocument)
Если учётный документ - это "стэйт", показывающий, что данные из расчётного документа были зафиксированы на складах, именно на его основе мы видим баланс (ISingleBalanceDocument). Его спецификация содержит суммы, как понимаю, расчётных документов. У его спецификации уже нет p_PRICE, но есть не понятная нам "p_BALANCENMKCARD_PRICE".

В какой момент создаётся учётная карточка, в какой момент можно и нужно записывать учётную цену в неё, как с ней взаимодействовать - не ясно...

Re: Редактирование спецификации расчётных документов

Продолжая копать, нашёл интерфейс

Set BalanceCard = theApp.Inventory.BalanceNmkCardFromID( DocSpec.p_BALANCENMKCARD_ID.AsInteger )

У которого уже есть p_PRICE, который как раз "учётная стоимость", который хочу заполнить, используя api.
И здесь кроется дьявол.

if Not BalanceCard is Nothing then
   BalanceCard.CancelChanges
   BalanceCard.Edit
   BalanceCard.p_PRICE.asInteger = DocSpecPrice
   BalanceCard.SaveChanges                         ' <- Ошибка записи. По карточке есть движения.
   Set BalanceCard = Nothing
   ...

Хотя открывая ту же карточку через интерфейс программы я спокойно могу установить ей любую стоимость.
В чём беда? Или я опять не туда копаю?

Re: Редактирование спецификации расчётных документов

Вот на карточку как раз цена должна сама попасть при создании. Этот момент проверю, так как там участие макроса все равно необходимо чтобы учетную цену посчитать.

А по ошибке - думаю у вас все таки это разные карточки учетные. Идентификаторы сравните.

Re: Редактирование спецификации расчётных документов

Олег Зырянов пишет:

А по ошибке - думаю у вас все таки это разные карточки учетные. Идентификаторы сравните.

А карточка, которая правильная, которая с рассчитываемой суммой - должна быть привязана к первому расчётному документу[1 - приход ТМЦ], расчётному документу, который создаётся в цехе-приёмнике по итогу входного контроля [2 - оформление результатов входного контроля] или учётный документ [приход - перемещение] на основании документа [2] ?

Re: Редактирование спецификации расчётных документов

Да они все правильные! У вас в коде просто скорей всего разные карточки, потому и поведение разное.

Re: Редактирование спецификации расчётных документов

pavelAgregat73 пишет:

Если учётный документ - это "стэйт", показывающий, что данные из расчётного документа были зафиксированы на складах, именно на его основе мы видим баланс (ISingleBalanceDocument). Его спецификация содержит суммы, как понимаю, расчётных документов.

Нет коллеги, Вы не правы. Ценообразование в учетных карточках определяется учетной политикой предприятия, которая оформляется отдельным приказом и фиксируется в налоговой инспекции.
В соответствии с налоговым законодательством учетные цены могут быть рассчитаны 2 способами и 3 методами:
1 способ - учет в учетных ценах - это когда из цены прихода отнимаются возвращаемые акцизы и налоги, а разница ставится на приход у каждого прихода своя. Мы для этого используем несколько карточек с разными ценами. Списание при таком учете осуществляется именно по той цене, которая указана в учетной карточке
2 способ - учет по фактической себестоимости. Здесь тоже из цены прихода отнимаются возвращаемые акцизы и налоги, а в учет  ставятся и списываются цены 3-мя методами:
   1. FIFO
   2. LIFO
   3. В средних ценах.

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

Re: Редактирование спецификации расчётных документов

Олег Зырянов пишет:

Да они все правильные! У вас в коде просто скорей всего разные карточки, потому и поведение разное.

Окей, но скажите, пожалуйста, ограничения на изменение учётной цены учётной карточки. Ошибка "по карточке есть движение" есть как при редактировании через API, так и в программном интерфейсе. В справке об этом ни словом не обмолвились.

Отсюда - всё тот же вопрос, на который пока не было ответа:

pavelAgregat73 пишет:

В какой момент создаётся учётная карточка, в какой момент можно и нужно записывать учётную цену в неё, как с ней взаимодействовать - не ясно...

1. Карточка создаётся в момент копирования спецификации из расчётного документа в учётный, в

Call clDocCmd.CopyDocSpecificationPositions( InpCtrlBlDocId, -1, Null,  Array( "CreateNewBalanceCard", _
                                                            "CopyParametersToSpecPos", "Overwrite", _
                                                            "CopyParametersToBalanceNmkCard", "Overwrite", _
                                                            "CopyParametersToBatch", "Overwrite", _
                                                            "CopyParametersToSerialNumber", "Overwrite" ) )

Или ещё в момент создания учётного документа

InpCtrlBlDocId = TCSApp.Inventory.BalanceDocuments.AddBalanceDocument2( "", clDoc.p_DATE.AsDate, clDoc.p_NAME.AsSafeString, InpCtrlBlDocTypeId, clDoc.p_PLANT_DEPATMENT_ID.AsInteger, _
                            Array( "ClientId", clDoc.p_OUT_PLANT_DEPATMENT_ID.AsInteger, "BaseCalculatedDocumentId", InpCtrlCalcDocId, "MasterCalculatedDocumentId", InpCtrlCalcDocId  ) )

2. В какой момент можно редактировать карточку и в какой - это запрещено?

(изменено: pavelAgregat73, 27 ноября 2020 14:56:02)

Re: Редактирование спецификации расчётных документов

pavelAgregat73 пишет:
Олег Зырянов пишет:

Да они все правильные! У вас в коде просто скорей всего разные карточки, потому и поведение разное.

Окей, но скажите, пожалуйста, ограничения на изменение учётной цены учётной карточки. Ошибка "по карточке есть движение" есть как при редактировании через API, так и в программном интерфейсе. В справке об этом ни словом не обмолвились.

Отсюда - всё тот же вопрос, на который пока не было ответа:

pavelAgregat73 пишет:

В какой момент создаётся учётная карточка, в какой момент можно и нужно записывать учётную цену в неё, как с ней взаимодействовать - не ясно...

1. Карточка создаётся в момент копирования спецификации из расчётного документа в учётный, в

Call clDocCmd.CopyDocSpecificationPositions( InpCtrlBlDocId, -1, Null,  Array( "CreateNewBalanceCard", _
                                                            "CopyParametersToSpecPos", "Overwrite", _
                                                            "CopyParametersToBalanceNmkCard", "Overwrite", _
                                                            "CopyParametersToBatch", "Overwrite", _
                                                            "CopyParametersToSerialNumber", "Overwrite" ) )

Или ещё в момент создания учётного документа

InpCtrlBlDocId = TCSApp.Inventory.BalanceDocuments.AddBalanceDocument2( "", clDoc.p_DATE.AsDate, clDoc.p_NAME.AsSafeString, InpCtrlBlDocTypeId, clDoc.p_PLANT_DEPATMENT_ID.AsInteger, _
                            Array( "ClientId", clDoc.p_OUT_PLANT_DEPATMENT_ID.AsInteger, "BaseCalculatedDocumentId", InpCtrlCalcDocId, "MasterCalculatedDocumentId", InpCtrlCalcDocId  ) )

2. В какой момент можно редактировать карточку и в какой - это запрещено?

Вопрос снимается, карточка создаётся в момент создания учётного документа, и на этапе "ввод данных" изменение цены возможно. Единственное, приходится проходить по спецификации учётного документа, сопоставляя с позициями спецификации расчётного документа-основания и эти цены уже вставлять в "учётную цену" карточки, сразу после создания УД.

Только очень бы хотелось, чтобы подобные вопросы чуть понятнее освещались в FAQ или хелпах.
Спасибо за терпение)