Re: Похоже на глюк.

ДОброе время суток. Модуль План производства, вкладка План изготовления - открываем на редактирование любую строку, на вкладке работники добавляем двух сотрудников, ставим им разную трудоемкость. Сохраняем, открываем снова - у обоих проставилась одна и та же трудоемкость (последняя). Причем так срабатывает не всегда, а через раз. Закономерность не удалось найти.

Re: Похоже на глюк.

Если Вы считаете, что система отрабатывает не так, как задумано, то сделайте небольшой пример, иллюстрирующий проблему, и выложите его код.


Откуда: завод заводов

это не кошерно...

Re: Похоже на глюк.

Описываю более подробно - План производства\План изготовления. Строку плана открываем на редактирование, переходим на вкладку Работники. Там написан макрос для разноса плановой трудоемкости по сотрудникам, однако, что макросом, что вручную отрабатывает правильно не всегда(ошибка плавающая). Т.е. например общая трудоемкость 16,  добавляем двух работников, первому ставим нормочасы 10, второму 6. После сохранения у обоих стоит 6, т.е. обоим проставляется последнее значение.

Свой макрос на всякий случай привожу(но руками то же самое):


Sub FormMacro_RaznosPlanTrudoemk(TCSActiveModule)  

Dim fullname1 
Dim ProdBom1
Dim FinProd1  
Dim ObchTrud1 
Dim Trud
Dim proc
Dim procall

procall=100
ProdBom1=TCSActiveModule.Properties("PRODUCTIONBOM_ID").AsInteger   
ProdPlan1=TCSActiveModule.Properties("PRODUCTIONPLAN_ID").AsInteger

 Set ProductionPlan = TCSApp.Manufacturing.ProductionPlanFromID( ProdBom1, ProdPlan1 ) 
  If Not ProductionPlan Is Nothing Then  
   ObchTrud1=ProductionPlan.Properties("LaborIntensity").AsFloat
   
  
   TCSActiveModule.Refresh   ' Cбросить выделение  
    ' на первую строку и перебираем записи
    TCSActiveModule.First 
    'поиск первой записи относ к данной ПСП
    Do While Not TCSActiveModule.Eof
    fullname1=""
    fullname1=fullname1+TCSActiveModule.Properties("WORKMAN_NUMBER").AsString
    fullname1=fullname1+"| "+TCSActiveModule.Properties("WORKMAN_FIRSTNAME").AsString
    fullname1=fullname1+" "+TCSActiveModule.Properties("WORKMAN_LASTNAME").AsString 
    fullname1=fullname1+" "+TCSActiveModule.Properties("WORKMAN_MIDDLENAME").AsString
    proc=procall    
    
    proc=int(TCSApp.InputBox("Запрос...","Введите процент участия для "+fullname1,proc))
        
    If proc>procall Then   
     Call TCSApp.ShowMessageBox("Ошибка...", "В сумме долно быть не больше 100% !!!! Повторите ввод.")
     Do While proc>procall 
     proc=procall
     proc=int(TCSApp.InputBox("Запрос...","Введите процент участия для "+fullname1,proc))
     Loop

    End If
    procall=procall-proc  
    Trud=ObchTrud1*proc/100  
    TCSActiveModule.Edit
    TCSActiveModule.Properties("StandardHours").Value= Trud
    On Error Resume Next 
    TCSActiveModule.SaveChanges 
    TCSActiveModule.CancelChanges   
        
    TCSActiveModule.Next          
    Loop 
  End If 


End Sub  

Re: Похоже на глюк.

Для начала уберите строчку

On Error Resume Next 

возможно и всплывет, что нет доступа на редактирование.

либо можно написать так

    If Not TCSActiveModule.AllowEdit Then
        Call TCSapp.ShowErrorMessage("Not AllowEdit")
    Else
        TCSActiveModule.Edit
        TCSActiveModule.Properties("StandardHours").Value= Trud
        On Error Resume Next
        Call UserGModule.SaveChanges                
        If Err.Description<>"" Then
            Call TCSapp.ShowDetailedErrorMessage(Err.Description,DetailErrorText)
            Call UserGModule.CancelChanges
        End If
    End If