![]() |
![]() |
![]() |
|
Проверка на мутабельное значение. | ☑ | ||
---|---|---|---|---|
0
AaNnDdRrEeYy
18.01.11
✎
10:10
|
Добрый день.
Встроенная функция ЗначениеЗаполнено() выдает исключение если я пытаюсь проверить мутабельное значение, каким образом можно проверить мутабельное значение попадает в параметр функции или нет? |
|||
1
Maxus43
18.01.11
✎
10:11
|
А передаёш разные значения? зачем?
|
|||
2
AaNnDdRrEeYy
18.01.11
✎
10:12
|
Потомучто код сложный функция обрабатывает разные объекты.
|
|||
3
famnam
18.01.11
✎
10:13
|
из си "Функция не работает с мутабельными значениями. При передаче мутабельного значения функция вызывает исключение."
|
|||
4
Axel2009
18.01.11
✎
10:13
|
а если попробовать использовать функцию как для сервера так и для клиента?
|
|||
5
Ursus maritimus
18.01.11
✎
10:14
|
Легко
Мутабельно = Ложь; Попытка ЗначениеЗаполнено(Значение); Исключение Мутабельно = Истина; КонецПопытки; |
|||
6
Maxus43
18.01.11
✎
10:14
|
Ну тип проверь... исключи мутабельные
|
|||
7
AaNnDdRrEeYy
18.01.11
✎
10:16
|
(3) я про это и написал.
(4) функция нужна только на сервере. (5) спасибо так и сделаю |
|||
8
AaNnDdRrEeYy
18.01.11
✎
10:18
|
(6) а кто нибуть знает полный список мутабельных типов?
|
|||
9
Ursus maritimus
18.01.11
✎
10:19
|
(8) Не слушай (6) лужу газирует.
|
|||
10
mikecool
18.01.11
✎
10:19
|
(8) все объекты
|
|||
11
Maxus43
18.01.11
✎
10:20
|
(8) Мутабельное - при изменении свойства - изменение объекта. Логически вычислить можно) хз, где-то лежит наверно.
А вобще - ты же знаеш типы обрабатываемые функцией твоей... или прям любые могут быть? исключи типы Объект, набор записей и т.д. явно мутабельные. Но в (5) тоже красиво, главно остановку по ошибке в отладке не включать) |
|||
12
Maxus43
18.01.11
✎
10:21
|
(9) да ладно уж, можно предусмотреть то
|
|||
13
Fragster
гуру
18.01.11
✎
10:21
|
у меня функция ЗначениеНеЗаполнено есть, которая вызывает в попытке ЗначениеНеЗаполнено, в случае исключения возвращает ложь
|
|||
14
MaxS
18.01.11
✎
10:21
|
(5) где-то давно встречал что если в модуле проведения документа пользоваться попыткой-исключением, документ может не провестись и выдаст сообщение, что в данной транзакции уже происходили ошибки.
|
|||
15
AaNnDdRrEeYy
18.01.11
✎
10:24
|
(13) ЗначениеНеЗаполнено - это самописная, а у меня встроенная в 8.2
этот код что то вроде обмена данными Если НастройкаСоотношения.СпособЗаполненияРеквизитаПриемника = Перечисления.СпособЗаполненияРеквизитаПриемника.РеквизитИсточника Тогда //(РЕКВИЗИТ ИСТОЧНИКА) НайденноеЗначение = ПараметрическиеНастройки.ПроверитьВХранилищеПервичныхРеквизитов(НастройкаСоотношения.РеквизитИсточника); Если НайденноеЗначение <> Неопределено Тогда ЗначениеРеквизитаОбъектаОснования = НайденноеЗначение; Иначе ЗначениеРеквизитаОбъектаОснования = ПолучитьЗначениеОбъектаОснования(ОбъектОснование,НастройкаСоотношения.РеквизитИсточника,Секция,МассивСоответствияСекцииXDTOиОбъекта1С); КонецЕсли; ИначеЕсли НастройкаСоотношения.СпособЗаполненияРеквизитаПриемника = Перечисления.СпособЗаполненияРеквизитаПриемника.ФиксированноеЗначение Тогда // (ФИКСИРОВАННОЕ ЗНАЧЕНИЕ) ЗначениеРеквизитаОбъектаОснования = НастройкаСоотношения.ФиксированноеЗначение; ИначеЕсли НастройкаСоотношения.СпособЗаполненияРеквизитаПриемника = Перечисления.СпособЗаполненияРеквизитаПриемника.ПроизвольныйАлгоритм Тогда // (ПРОИЗВОЛЬНЫЙ АЛГОРИТМ) ЗначениеЗаполнения = Неопределено; Выполнить(НастройкаСоотношения.ПроизвольныйАлгоритм); ЗначениеРеквизитаОбъектаОснования = ЗначениеЗаполнения; КонецЕсли; Если ОбъектПриемник[СокрЛП(НастройкаСоотношения.РеквизитПриемника)] <> ЗначениеРеквизитаОбъектаОснования Тогда //ЗначениеРеквизитаОбъектаОснования должно быть заполнено. // Если ЗначениеЗаполнено(ЗначениеРеквизитаОбъектаОснования) Тогда ОбъектПриемник[СокрЛП(НастройкаСоотношения.РеквизитПриемника)] = ЗначениеРеквизитаОбъектаОснования; ПараметрическиеНастройки.ПоместитьВХранилищеПервичныхРеквизитов("ОбъектОбновлен",Истина); // КонецЕсли; КонецЕсли; |
|||
16
Maxus43
18.01.11
✎
10:26
|
(13) в 8.2 же свои заморочки с Типами, некоторые типы не везде доступны, ТЗ например
|
|||
17
AaNnDdRrEeYy
18.01.11
✎
10:27
|
(14) такое может быть если явно объявлять транцакию
НачатьТранзакцию(); Док.Записать(РежимЗаписиДокумента.Проведение); ЗафиксироватьТранзакцию(); В таком случае точно будет такая ощибка |
|||
18
AaNnDdRrEeYy
18.01.11
✎
10:28
|
(16) это на форме почти ничего не доступно а на сервере все доступно. ну кроме форм и что с ними связано.
|
|||
19
Ursus maritimus
18.01.11
✎
10:29
|
(14) Продолжаем дуть в лужу.
|
|||
20
Defender aka LINN
18.01.11
✎
10:31
|
(15) КД юзай :)
Вообще говоря, надо просто сделать так, чтобы в ЗначениеРеквизитаОбъектаОснования ничего такого попасть не могло. |
|||
21
AaNnDdRrEeYy
18.01.11
✎
10:37
|
(20) что такое КД?
|
|||
22
Axel2009
18.01.11
✎
10:39
|
ну так значит и надо все объекты получать на сервере. и тогда мутабельных значений не будет..
|
|||
23
Defender aka LINN
18.01.11
✎
10:40
|
(21) Конвертация данных
|
|||
24
Ursus maritimus
18.01.11
✎
10:43
|
(22) Ну что за бред? Составной тип справочник.номенклатура и справочник.контрагент
Мутабелен? - Да Доступен на сервере? - Да |
|||
25
AaNnDdRrEeYy
18.01.11
✎
10:45
|
(22) это 8.2 на клиенте вообще объект получить нельзя.
|
|||
26
Defender aka LINN
18.01.11
✎
10:46
|
(24) Это скуяли он мутабелен?
|
|||
27
acsent
18.01.11
✎
10:47
|
(24) Значение не может быть "составного типа". А само описание типа не мутабельно
|
|||
28
Axel2009
18.01.11
✎
10:48
|
(24) если в функции на клиенте получить ОБЪЕКТ. и эту переменную передать в функцию которая выполняется на сервере - то будет ошибка мутабельности
|
|||
29
AaNnDdRrEeYy
18.01.11
✎
10:50
|
(27)
Синтаксис: ЗначениеЗаполнено(<Значение>) Описание: Функция проверяет, отличается ли переданное значение от значения по умолчанию того же типа. Не работает с мутабельными значениями. При передаче мутабельного значения функция вызывает исключение. в сиснтаксисе про составной ничего нет, может быть составным. |
|||
30
AndOne
18.01.11
✎
10:51
|
||||
31
Axel2009
18.01.11
✎
10:51
|
это как пользоваться метками. вроде можно, но лучше не надо. иначе другие будут разгребать и искать ошибки очень долго..
|
|||
32
Maxus43
18.01.11
✎
10:52
|
(29) Он про значение само, оно не составного типа будет в любом случае
|
|||
33
Defender aka LINN
18.01.11
✎
10:52
|
(29) ЗНАЧЕНИЕ не может быть составного типа.
|
|||
34
tenikov
18.01.11
✎
10:59
|
(25) в 8.2 на клиенте объект - основной реквизит формы.
|
|||
35
acsent
18.01.11
✎
11:04
|
(34) Это не Объект, а СтруктураДанныхФормы
|
|||
36
tenikov
18.01.11
✎
11:07
|
(35) ну вот я конфигуратор открыл сейчас: Объект - основной реквизит формы, тип "ДокументОбъект.Продажа".
|
|||
37
Defender aka LINN
18.01.11
✎
11:08
|
(36) Теперь открой отладчик и в нем посмотри
|
|||
38
tenikov
18.01.11
✎
11:11
|
(37) а, ну да.
|
|||
39
AaNnDdRrEeYy
18.01.11
✎
11:17
|
(33) МОЖЕТ. сейчас проверил работает.
|
|||
40
Defender aka LINN
18.01.11
✎
11:21
|
(39) Фотографию двуликого януса в студию.
|
|||
41
Maxus43
18.01.11
✎
11:21
|
(39) Это как? О_о) скриншот в студию
|
|||
42
Defender aka LINN
18.01.11
✎
11:28
|
(39) Требую скриншот! :)
|
|||
43
AaNnDdRrEeYy
18.01.11
✎
11:45
|
&НаКлиенте
Процедура Команда1(Команда) Сообщить("Результат на клиенте "+ЗначениеЗаполнено(Реквизит1)); Сообщить("Результат На Сервере "+Сервер_()); КонецПроцедуры Функция Сервер_() Возврат ЗначениеЗаполнено(Реквизит1); КонецФункции Это код в форме обработки, реквизит1 составного типа Дата. число и строка. как выложить обработку? |
|||
44
Maxus43
18.01.11
✎
11:48
|
тип составной, значение то не составное же? скриншот отладчика с показаным значением реквизита требо
|
|||
45
Defender aka LINN
18.01.11
✎
11:49
|
(41) Кто у тебя про реквизит спрашивал? Значение реквизита составное покажи. Которое одновременно и датой, и строкой будет.
|
|||
46
Maxus43
18.01.11
✎
11:52
|
(45) Щас момент времени покажет)
|
|||
47
AaNnDdRrEeYy
18.01.11
✎
11:52
|
(45) в своем вообще уме? такого быть не может.
|
|||
48
AaNnDdRrEeYy
18.01.11
✎
11:56
|
Ну кто мне покажет когда Реквизит или просто переменная и стока и дата одновременно?
|
|||
49
Maxus43
18.01.11
✎
11:56
|
(48) это мы от тебя хотели узнать
|
|||
50
AaNnDdRrEeYy
18.01.11
✎
11:58
|
(49) нифигасе в (45) не я же писал.
|
|||
51
Maxus43
18.01.11
✎
11:59
|
(50) ты (39) писал)
|
|||
52
Defender aka LINN
18.01.11
✎
12:01
|
(47) В (39) написал. Еще и большими буквами :)
|
|||
53
acsent
18.01.11
✎
12:01
|
ЗначениеЗаполнено проверяет не реквизит, а ЗНАЧЕНИЕ реквизита. Короче двойка тебе, иди учи матчасть
|
|||
54
AaNnDdRrEeYy
18.01.11
✎
12:03
|
в (39) ответ на (33) в котором дословно
ЗНАЧЕНИЕ не может быть составного типа. внимание на "составного ТИПА". в (43) реквизит составного ТИПА. |
|||
55
AaNnDdRrEeYy
18.01.11
✎
12:09
|
(53) пойду мат учить, как научусь популярно всем объясню.
|
|||
56
Defender aka LINN
18.01.11
✎
12:11
|
(54) Внимание на "ЗНАЧЕНИЕ". Я его, по-твоему, совершенно случайно большими буквами набрал? :)
|
|||
57
Maxus43
18.01.11
✎
12:13
|
МоментВремени же составное значение кстати) тип один только
|
|||
58
Defender aka LINN
18.01.11
✎
12:14
|
(57) С фига ли? МоментВремени - это вполне себе отдельный тип.
|
|||
59
AaNnDdRrEeYy
18.01.11
✎
12:15
|
(56) составного значения не бывает.
|
|||
60
Defender aka LINN
18.01.11
✎
12:16
|
(59) Именно это я в (33) и написал, ващета :)
|
|||
61
AaNnDdRrEeYy
18.01.11
✎
12:16
|
в 1С появился новый термин "Составное Значение"... мда
|
|||
62
Maxus43
18.01.11
✎
12:17
|
(58) Тип то отдельный, но значение выглядит составным, дата + ссылка, разных типов то конечно не может быть значение
|
|||
63
AaNnDdRrEeYy
18.01.11
✎
12:19
|
(62) ну если так рассуждать то надо над Соотвествием тип то один а значение всегда двойное.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |