|
Как по максимуму оптимизировать процедуру при изменений? | ☑ | ||
---|---|---|---|---|
0
Айрат_116
28.08.19
✎
09:53
|
Здравствуйте. Помогите пжл, Как можно получше сделать эту задачу? (Всё работает, но нужен другой вариант)
Слышал что можно как то через "ОбщийМодуль" сделать это. &НаКлиенте Процедура ОсновныеСредстваПриИзменении(Элемент) ОсновныеСредстваПриИзмененииНаСервере(); КонецПроцедуры &НаСервере Процедура ОсновныеСредстваПриИзмененииНаСервере() Если Не ЗначениеЗаполнено(Объект.ОсновноеСредство) Тогда ИнвентарныйНомерОС = ""; Возврат; КонецЕсли; ИнвентарныйНомерОС = Объект.ОсновноеСредство.Код; КонецПроцедуры |
|||
1
saaken
28.08.19
✎
10:12
|
Выведи на форму ИнвентарныйНомерОС не как отдельную переменную, а как свойство объекта.
И весь код можешь убрать. |
|||
2
GGDots
28.08.19
✎
10:14
|
Либо вообще убери серверную процедуру, и делай все на клиенте, получая значения через точку на клиенте через процедуру "ПолучитьЗначениеРеквизита" общего модуля (что то типа ОбщегоНазначенияСервер.ПолучитьЗначениеРеквизита)
|
|||
3
dezss
28.08.19
✎
10:15
|
ИнвентарныйНомерОС
ПутьКДанным Объект.ОсновноеСредство.Код. |
|||
4
Айрат_116
28.08.19
✎
10:16
|
Спасибо за варианты щас попробую
|
|||
5
dezss
28.08.19
✎
10:17
|
(2) В моей древней БСП это в ОбщегоНазначения. И там нет вызова сервера.
(0) Можно еще Процедура ОсновныеСредстваПриИзмененииНаСервере() сделать функцией &НаСервереБезКонтекста и передавать туда Объект.ОсновноеСредство. А возвращать уже сам код через ОбщегоНазначения.ЗначениеРеквизита объекта. А на клиенте ИнвентарныйНомерОС = ОсновныеСредстваПриИзмененииНаСервере(Объект.ОсновноеСредство). |
|||
6
Айрат_116
28.08.19
✎
10:37
|
Я еще пробывал запросом сделать. Но не получилось(
ВЫБРАТЬ тн_ДефектнаяВедемость.ОсновноеСредство.Код КАК ОсновноеСредствоКод ИЗ Документ.тн_ДефектнаяВедемость КАК тн_ДефектнаяВедемость ГДЕ тн_ДефектнаяВедемость.Ссылка = &Ссылка |
|||
7
dezss
28.08.19
✎
10:40
|
(6) не получится, если было свойство изменено, но док еще не записан в базу. Тут запрос надо было бы делать к справочнику (или че это там у вас) ОсновноеСредство.
|
|||
8
Айрат_116
28.08.19
✎
10:46
|
(7) Щас попробую
|
|||
9
dezss
28.08.19
✎
10:51
|
(8) И не делай в таких случаях контекстных серверных.
|
|||
10
Айрат_116
28.08.19
✎
10:56
|
(9) Хорошо, буду знать.
|
|||
11
Айрат_116
28.08.19
✎
11:07
|
(9) Вот так сделал. все равно пусто.
&НаКлиенте Процедура ОсновныеСредстваПриИзменении(Элемент) Док = Объект.ОсновноеСредство; ОсновныеСредстваПриИзмененииНаСервереБезКонтекста(Док); КонецПроцедуры &НаСервереБезКонтекста Функция ОсновныеСредстваПриИзмененииНаСервереБезКонтекста(Док) Запрос = Новый Запрос; Запрос.Текст = " | ВЫБРАТЬ | ОсновныеСредства.Код КАК Код |ИЗ | Справочник.ОсновныеСредства КАК ОсновныеСредства |ГДЕ | ОсновныеСредства.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка",Док); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат ""; КонецЕсли; |
|||
12
Айрат_116
28.08.19
✎
11:12
|
Результат запроса точнее пусто.
|
|||
13
dezss
28.08.19
✎
11:23
|
(11) А если не пустой результат запроса, то что возвращаешь?
И не мешало бы присвоить возвращаемое значение: ИнвентарныйНомерОС = ОсновныеСредстваПриИзмененииНаСервереБезКонтекста(Док); |
|||
14
unregistered
28.08.19
✎
11:27
|
(0) ОФФ. Если у вас какая-либо типовая конфигурация (например БП), то вы должны знать, что инвентарный номер ОС и код элемента справочника ОС - это два разных понятия и их значения могут различаться (и очень часто реально различаются).
Просто на всякий случай спросил. |
|||
15
Айрат_116
28.08.19
✎
11:34
|
(13) Всё получилось. Спасибо
|
|||
16
Айрат_116
28.08.19
✎
11:36
|
(14) Хорошо, Проверю это, спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |