Показать сообщение отдельно
Старый 29.03.2015, 12:44   #2  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Цитата:
Сообщение от Дуд Посмотреть сообщение
Я, в целом, очень ленив и предпочитаю смотреть котиков в интернетах, чем разбираться с какой-то неведомой непонятной хренью, которую и написал не я, и как она устроена, я не угу, и почему она глючит, хрен ее знает.
Позволю вставить мои 5 копеек в дискуссию:
меня, напротив, часто интересует:
1) смысл кода;
2) если код не работает -> почему не работает.
На поверхностный взгляд и согласно комментарию Дуд'a смысл приведённого Инкадеи / в Брайт-авто кода в том, чтобы привязать к юзеру определённый склад чтобы передать оный склад в функции учёта и т.д. Чем программисту Инкадеи / Брайт-авто не понравилась стандартная таблица 7301 "Warehouse Employee" в которой именно и можно поставить юзеру галочку в складе по умолчанию и потом брать склад из этой таблицы в ЛЮБОМ месте программы? Или например, если не нравится таблица 7301 "Warehouse Employee", то почему бы не завести в таблице 91 "User Setup" новое поле "Default Location Code" и использовать его? И тогда не нужны были бы эти пляски с бубном с никому непонятной таблицей "User Session" (которая то заполняется то нет, то с правильным складом то с неправильным) На мой взгляд это типичное паралельное программирование, когда паралельно к существуемому НАВ стандартному функционалу придумывается новый костыль чтобы достичь того же самого, что повышает риск возникновения ошибок. И потом отвечай в суппорте на вопросы типа: "У юзера ХХХ стоит в таблице "Warehouse Employee" галочка "Default" для склада "BLUE". Почему в заказе продажи стоит "RED"?" Начинаете копаться и находите, что согласно супер-фьюче от инкадеа "RED" приходит из непонятной таблицы UserSession. Потом приходит следующий вопрос: "а почему тогда иногда то "RED" то "ORANGE"?" Начинаете опять копаться и находите, что супер-фьюча работает иногда правильно а иногда нет, то "Connection ID" не тот (-> см. jopagames3), то ещё почему-то. Вместо того чтобы исправить первый костыль и устранить первопричиину от инкадеа (а было бы ещё лучше вернуться к СТАНДАРТ'у посмотрев где везде в программе используется UserSession."Location Code" и заменив его на "Warehouse Employee"."Location Code" либо на поле из "User Setup"), программируется новый костыль с SingleInstance-Codeunit, который опять же чреват ошибками, т.к. свойство SingleInstance довольно деликатное дело.

Цитата:
Сообщение от Дуд Посмотреть сообщение
...туда же запоминается логин юзера (чтобы потом прописываться в поле USer ID заказа продажи, например, который создает юзер...
Тоже загадка типа "почему делать всё просто когда можно через ж...!". Т.е. сначале берём из системной функции "USERID()" ID юзера, пишем оный в таблицу UserSession и потом оттуда (если нам повезло и запись в UserSession создалась!) пишем этот UserID в заказ продажи? А ведь можно тупо в OnInsert()-триггере заказa продажи присвоить полю UserID в заказе продажи сразу напрямую из системной функции "USERID()".