(изменено: vitaly576, 6 октября 2021 08:05:15)

Тема: В каких случаях параметр не присваивается?

Здравствуйте.
При выполнении макроса периодически возникает сообщение о невозможности присвоить параметр номенклатуре.
Номенклатура по свойствам одинаковая и данного параметра нет, то есть для одной номенклатуры параметр присваивается, для другой - нет. Все права доступа у пользователя есть. При этом вручную данный параметр можно добавить к номенклатуре.

Уточните пожалуйста в каких случаях параметр не присваивается?

Re: В каких случаях параметр не присваивается?

А точное сообщение можно увидеть?

Re: В каких случаях параметр не присваивается?

Сообщение о не присвоенном параметре вывожу так:

if not parsNMK.SetParameterValueByParCode( "TCS_3D_SA", vhod_det1, -1, True ) then theApp.ShowErrorMessage( "Cannot set parameter << TCS_3D_SA >>! (vhod_det1)" )

Re: В каких случаях параметр не присваивается?

Обычно это значит что не удалось его записать.
У номенлатуры это права доступа. Если с ними проблем нет, тогда смотрите значение параметра. Скорее всего тип не совпадает (он передается как строка). Заначение параметра в лог тоже выведите просто.

Re: В каких случаях параметр не присваивается?

Перед записыванием параметра, если в строке есть ",", то заменяю ее на "."

Re: В каких случаях параметр не присваивается?

Выведите значение параметра в лог (в сообщение), может там сразу будет ответ?

Re: В каких случаях параметр не присваивается?

В таком виде в выскакивающем сообщении параметр показывается верно:

               If TCSApp.MessageBoxAskOkCancel( "Подтверждение", "Площадь поверхности рассчитана автоматически (" &all_ploshad_vhod_det/1000000& " м2). Записать полученное значение в параметры номенклатуры?", 1, True )=1 Then
                constS_okr = all_ploshad_vhod_det / 1000000
                  if InStr(all_ploshad_vhod_det,",")>0 then all_ploshad_vhod_det1 = Replace(all_ploshad_vhod_det, ",", "." )
                  if not parsNMK.SetParameterValueByParCode( "TCS_3D_SA", all_ploshad_vhod_det1, -1, True ) then theApp.ShowErrorMessage( "Cannot set parameter << TCS_3D_SA >>! (all_ploshad_vhod_det1)" )
                end if

Re: В каких случаях параметр не присваивается?

А в каком неверно?

Re: В каких случаях параметр не присваивается?

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

Re: В каких случаях параметр не присваивается?

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

Re: В каких случаях параметр не присваивается?

Спасибо. Действительно была ошибка в выводимых типах данных. Правда странно, почему на некоторых работало, а на других -нет.