0
Corrigé

ИНН для ИП

ввожу юридическое лицо у организации, указываю в качестве ОПФ – «ИП». Вводим ИНН 12 знаков, «вылазит» предупреждение, что ИНН должен быть 10 символов.
как бы не ошибка, но немного напрягает

Solution

Solution
Corrigé

Вам необходимо зайти в КК под sa в пункт меню Персонал-Структура предприятия.

1.Открыть карточку предприятия

2.Затем перейти в вкладку Юридические лица

3. Открыть карточку Юр.лица

4. Нажать на Ctrl +T, сверху появится значок 

5. После нажатия на этот значок появится Редактор сценария

6. Выполнить действия, которые описаны в комментарии ниже

Да. Этот нюанс имеет место быть. 
Подготовим решение и в ближайшее время выложим сюда инструкцию, как, что и где поменять, что бы при выборе ИП данная проверка не производилась.
+1
может это решение нужно сделать в инсталяционном пакете на будущее?
Да. Конечно в план работ задача уже поставлена.
какое-то неправильное исправление:
1. второй диапазон указан неправильно, по крайней мере у нас скрипт выглядит таким образом:


2. этим исправлением мы вообще проверку ИНН отключили на количество знаков, независимо от ОПФ.

ps а проверки на, то что в ИНН должны быть только цифры - тоже нет?
1) Режим "Настройки параметров системы", создаем три системные константы, в которых указываем длину ИНН и КПП (в символах) :
 - ИНН юр.лицо (ID = 18, значение = 10)
 - ИНН ИП (ID = 19, значение = 12)
 - КПП юр.лицо (ID = 20, значение = 9)
2) В карточке Юр.лица нажимаем Ctrl+T, открываем VBS скрипт (кнопка с синим свитком), заменяем его на приложенный.VBS_83_Jur.vbs

Описание изменений в приложенном файле:
Удалены процедуры INN, KPP. из блока Main убраны создания надписей (label) для ИНН и КПП.
В блоке Main после выхода из полей ИНН и КПП вызывается процедура ChangeINNKPP
 this ("attr620374").OnExit = "ChangeINNKPP" ' ИНН

 this ("attr620375").OnExit = "ChangeINNKPP" ' КПП
 a = VisibleLableINNKPP()

добавлена процедура ChangeINNKPP
sub ChangeINNKPP(Sender)

   a = VisibleLableINNKPP()
end sub

Добавлены функции VisibleLableINNKPP и GetParamByINNKPP
public function GetParamByINNKPP(IK)

'IK = 18 - ИНН
'IK = 19 - ИНН для ф.л.
'IK = 20 - КПП
 if IK = 18 or IK = 19 or IK = 20 then
   if not isObject(this("datSist")) then
    datSist = this.create("TX2Query", this, "datSist")
  end if
  with this("datSist")
       .ClassName = "Константы"
       .Connector = this("X2Connector1")
       .SelectString = "cast(p343 as int) as [Значение]"
       .WhereString = "ObjectID = "+cstr(IK)
  end with
  this("datSist").open
  this("datSist").refresh
  GetParamByINNKPP = this("datSist").ValueByFieldName("Значение")
  end if
end function


Код функции VisibleLableINNKPP:

public function VisibleLableINNKPP()

dim lenINN
dim lenKPP
dim parINN
dim parKPP
lenINN = len(this("BookQuery").ValueByFieldName("ИНН"))
lenKPP = len(this("BookQuery").ValueByFieldName("КПП"))
'105 - ID элемента справочника для ОПФ "ИП". в функцию GetParamByINNKPP передается ID соответствующей системной константы.
if this("BookQuery").ValueByFieldName("ID_ОПФ") = 105 then 'ИП
   parINN = GetParamByINNKPP(19)
else
    parINN = GetParamByINNKPP(18)
end if
parKPP = GetParamByINNKPP(20)
   if not isObject(this("LabINN")) then
      LabINN = this.create("TcxLabel", this, "LabINN")
   end if
   if not isObject(this("LabKPP")) then
      LabKPP = this.create("TcxLabel", this, "LabKPP")
   end if
'Надпись для ИНН
if parINN<>lenINN and lenINN>0 then
     with this("lab620374").style
              .TextStyle = "fsbold"  ' жирный
              .Textcolor = RGB (200,0,0)
   end with
   with this("LabINN")
        .Caption = cstr(lenINN)+"/"+cstr(parINN)+" симв."
        .top = this("lab620374").top
        .left = this("lab620374").left +30
        .parent = this("Tabsheet0")
         With .style
              .TextStyle = "fsbold"  ' жирный
              .Textcolor = RGB (200,0,0)
              .font.size = 1
        End With
      .transparent = true
      .visible = true
   end with
else
   with this("lab620374").style
              .TextStyle = ""  ' жирный
              .Textcolor = RGB (0,0,0)
   end with
        this("LabINN").visible = false
end if
'Надпись для КПП
if parKPP<>lenKPP and lenKPP>0 then
   with this("lab620375").style
              .TextStyle = "fsbold"  ' жирный
              .Textcolor = RGB (200,0,0)
   end with
   with this("LabKPP")
        .Caption = cstr(lenKPP)+"/"+cstr(parKPP)+" симв."
        .top = this("lab620375").top
        .left = this("lab620375").left+30
        .parent = this("Tabsheet0")
         With .style
              .TextStyle = "fsbold"  ' жирный
              .Textcolor = RGB (200,0,0)
              .font.size = 1
        End With
      .transparent = true
      .visible = true
   end with
else
   with this("lab620375").style
              .TextStyle = ""  ' жирный
              .Textcolor = RGB (0,0,0)
   end with
        this("LabKPP").visible = false
end if
VisibleLableINNKPP = 1
end function

1) Режим "Настройки параметров системы", создаем три системные константы, в которых указываем длину ИНН и КПП (в символах) :

 - ИНН юр.лицо (ID = 18, значение = 10)
 - ИНН ИП (ID = 19, значение = 12)
 - КПП юр.лицо (ID = 20, значение = 9)
не понял где создать эти константы?
В "КлиК", "Утилиты" -> "Настройка справочников" и там вкладка "Системные константы". В этот список и нужно добавлять новые константы.
системные константы нашел, вижу 2 варианта: верхнее и нижнее (картинки прилагаю)
вроде как в верхнем надо вводить, но в какие поля надо ввести указанные выше данные, не понимаю


Создавать константы необходимо в верхнем списке.
Порядок добавления следующий: 
 - Наименование = ИНН юр.лицо , значение = 10
 - Наименование = ИНН ИП , значение = 12 
 - Наименование = КПП юр.лицо , значение = 9
Solution
Corrigé

Вам необходимо зайти в КК под sa в пункт меню Персонал-Структура предприятия.

1.Открыть карточку предприятия

2.Затем перейти в вкладку Юридические лица

3. Открыть карточку Юр.лица

4. Нажать на Ctrl +T, сверху появится значок 

5. После нажатия на этот значок появится Редактор сценария

6. Выполнить действия, которые описаны в комментарии ниже

вроде правильно сделал:


но вылазит такая ошибка

РЕШЕНИЕ ДЛЯ ПСБ:
 - ИНН юр.лицо (ID = 15, значение = 10)
 - ИНН ИП (ID = 17, значение = 12)
 - КПП юр.лицо (ID = 16, значение = 9)
ID параметров можно посмотреть в "Настройке справочников", вкладка "Системные константы". в верхней таблице нажмите на "*" (звездочка) в верхнем левом углу шапки таблицы, поставьте галочку около поля ID_, проверьте, совпадают ли ID, которые получились у вас с теми, что я приложила выше.
Если совпадают - обновите скрипт VBS для юр.лиц в базе ПСБ прилагается VBS_83_Jur_psb.vbs
у нас фактически (видимо из-за моих попыток ввести эти параметры в константы и удаление этих попыток):
- ИНН юр.лицо (ID = 19, значение = 10)
 - ИНН ИП (ID = 20, значение = 12)
 - КПП юр.лицо (ID = 21, значение = 9)

ждать другой скрипт или как то ID можно поменять?
в VBS юр.лица необходимо поправить процедуры VisibleLableINNKPP и GetParamByINNKPP.

GetParamByINNKPP:
строку:
 if IK = 15 or IK = 16 or IK = 17 then
заменить на:
 if IK = 19 or IK = 20 or IK = 21 then
в комментариях выше - тоже лучше поменять (чтобы комментарии были актуальны)

VisibleLableINNKPP :
строки
if this("BookQuery").ValueByFieldName("ID_ОПФ") = 105 then 'ИП   parINN = GetParamByINNKPP(17)

else
    parINN = GetParamByINNKPP(15)
end if
parKPP = GetParamByINNKPP(16)
заменить на:
if this("BookQuery").ValueByFieldName("ID_ОПФ") = 105 then 'ИП   parINN = GetParamByINNKPP(20)

else
    parINN = GetParamByINNKPP(19)
end if
parKPP = GetParamByINNKPP(21)
по количеству знаков - ок, проверка работает, спасибо.

на наличие букв и пробелов проверку не планируете делать?
На данный момент эта проверка стоит в список на выполнения задач и не является приоритетной. Данная проверка будет реализована в следующей версии конфигурации. Если вы хотите это сделать себе сейчас , то это займет час работы программиста.