BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Главная  / Поддержка  / Форум  / Публичные форумы  / Программирование приложений  / Ведение номенклатурного справочника с ОКЕИ, как сделать контроль из документа?

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Ведение номенклатурного справочника с ОКЕИ, как сделать контроль из документа?
 
Итак, на данный момент в системе отсутствует связь с ОКЕИ. До поры до времени проблем не возникало, если по умолчанию в группе забита единица измерения. Но в последнее время, то ли в документах поставщика идет некорректная информация, то ли оператор - творческая натура, но на складе можно встретить все что угодно и бухты и пачки и емкости.
Для работы в номенклатурном справочнике нарисовал плагин, который при сохранении проверяет единицу измерения по выборке из ОКЕИ. Какое событие, или каким образом можно осуществлять контроль при вводе новой позиции из накладной?
Модуль - Сырье. Материалы
Код
usr_edizm()

  Function usr_edizm()
    Local cMsgEdIzm,nStep:=1,nEdIzm,lRet:=.T.//Строка сообщения,счетчик,количество строк перечня,возврат
    Local aEdIzm := {;//Массив {код,Наименование, Нац.обозначение, КОДОВОЕ обозначение}
          {"868","Бутылка","бут",  "БУТ"},;
          {"055","Квадратный метр ","м2",   "М2"},;
          {"166","Килограмм","кг",   "КГ"},;
          {"839","Комплект","компл","КОМПЛ"},;
          {"113","Кубический метр","м3",   "М3"},;
          {"625","Лист","л.",   "ЛИСТ"},;
          {"112","Литр","л.",   "Л"},;
          {"006","Метр","м",    "М"},;
          {"715","Пара (2 шт.)","пар",  "ПАР"},;
          {"018","Погонный метр","пог.м","ПОГ М"},;
          {"736","Рулон","рул",  "РУЛ"},;
          {"168","Тонна","т",    "Т"},;
          {"798","Тысяча штук","тыс.шт","ТЫСШТ"},;
          {"778","Упаковка","упак", "УПАК"},;
          {"796","Штука","шт",   "ШТ"};
          }
    dbpush()// в астрал
    AltD()
    //Готовим сообщение пользователю
    cMsgEdIzm:="Внимание!"+Chr(13)+Chr(10)+"Единицы измерения должны соответствовать ОКЕИ :"+Chr(13)+Chr(10)
    nEdIzm:=Len(aEdIzm) // подсчитываем строки в массиве
    Do While nStep <= nEdIzm   // Перебор по справочнику единиц измерения
      // Наполняем строку сообщения (КОД - Наименование)
      cMsgEdIzm:=cMsgEdIzm+aEdizm[nStep,4]+"  -  "+aEdizm[nStep,2]+Chr(13)+Chr(10)
      nStep:=nStep+1
    EndDo
    //Если значение поля пустое
    If Len(AllTrim(mlabel->ed))=0
      //Делаем намек
      cMsgEdIzm:=cMsgEdIzm+"Необходимо заполнить поле | Ед.Измер... | !"
      lret:=.f. // Оставляем в карточке до поиска нужного решения
      //Оповещаем
      messagebox(cMsgEdIzm,"Внимание! Пустое значение...",48)
    ElseIf  AScan(aEdIzm,AllTrim(mlabel->ed))=0
      //Оглашаем приговор
      cMsgEdIzm:=cMsgEdIzm+"Значение поля  <"+AllTrim(mlabel->ed)+">  будет удалено !"+Chr(13)+Chr(10)
      //Доводим до сведения
      messagebox(cMsgEdIzm,"Внимание! Ошибочный код Ед.измер.",16)
      //Делаем мелкую пакость
      mlabel->(RLock())
      mlabel->ed:=""
      mlabel->(DbUnLock())
      lret:=.f. // Не выпускать
    EndIf
    // для уверенности пробиваем в верхний регистр, то что прошло через ascan
    mlabel->(RLock())
    mlabel->ed:=Upper(mlabel->ed)
    mlabel->(DbUnLock())
    dbpop()//вернулись
    Return lRet

С уважением,
Ильин Евгений
 
Цитата
itman пишет:
Какое событие, или каким образом можно осуществлять контроль при вводе новой позиции из накладной?

Событие было обещано в 20 пакете, но я его там не нашел :sad:
 
Евгений я уточнил.
Из-за срочных задач был выпущен внеплановый пакет и получил номер 20.
Так что это в 21 пакете будет.....
 
21 пакет вышел.
Обещанная возможность вызова плагинов при работе со справочником номенклатуры реализована
Страницы: 1
Читают тему (гостей: 1)