Итак, на данный момент в системе отсутствует связь с ОКЕИ. До поры до времени проблем не возникало, если по умолчанию в группе забита единица измерения. Но в последнее время, то ли в документах поставщика идет некорректная информация, то ли оператор - творческая натура, но на складе можно встретить все что угодно и бухты и пачки и емкости.
Для работы в номенклатурном справочнике нарисовал плагин, который при сохранении проверяет единицу измерения по выборке из ОКЕИ. Какое событие, или каким образом можно осуществлять контроль при вводе новой позиции из накладной?
Модуль - Сырье. Материалы
Для работы в номенклатурном справочнике нарисовал плагин, который при сохранении проверяет единицу измерения по выборке из ОКЕИ. Какое событие, или каким образом можно осуществлять контроль при вводе новой позиции из накладной?
Модуль - Сырье. Материалы
Код |
---|
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 |
С уважением,
Ильин Евгений
Ильин Евгений