Имя: Пароль:
1C
1С v8
Ошибка НаСервереБезКонтекста
0 STAYEKR
 
18.06.12
09:04
НаСервереБезКонтекста имеется код
&НаСервереБезКонтекста
функция ПроверитьСостояниеСогласование(Состояние, Согласование)
 возврат (Состояние = Справочники.Состояния.КСогласованиюЗО) Или
         (НЕ Согласование = Справочники.Состояния.СогласованаЧастичноЗО);
конецфункции

который потом надо обработать на клиенте

Если ПроверитьСостояниеСогласование(Объект.Состояние, Объект.Согласование)Тогда
 Сообщить("Дата платежа равна текущей, редактирование невозможно.");
 Отказ = Истина;
 Возврат;
КонецЕсли;

вся конструкция падает с ошибкой "Нельзя изменять поле, содержащее объект данных формы". В чем причина может быть?
1 unregistered
 
18.06.12
09:11
(0) ИМХО, глюк компиляции. Попробуй:

Результат = Состояние = Справочники.Состояния.КСогласованиюЗО Или НЕ Согласование = Справочники.Состояния.СогласованаЧастичноЗО;
Возврат Результат;
2 Нуф-Нуф
 
18.06.12
09:12
не факт что проблема в этом, но все же посмотри на то, что "состояние" выделено красным цветом
3 andrewks
 
18.06.12
09:15
может, так:
функция ПроверитьСостояниеСогласование(Знач Состояние, Знач.Согласование)
4 Pro-tone
 
модератор
18.06.12
09:15
(0) замени "Состояние" на "МоеСостояние"
5 andrewks
 
18.06.12
09:16
+(3) у тебя реквизиты формы передаются как параметры, доступные для изменения
6 Coldboy
 
18.06.12
09:16
(0) состояние по моему, эт тоже самое как Сообщить, зарезервированное слово.
7 Ненавижу 1С
 
гуру
18.06.12
09:30
вообще с точки зрения грамматики языка ошибок нет, имхо ответ в (1) = глюк
8 STAYEKR
 
18.06.12
09:30
пробовал так:
&НаСервереБезКонтекста
функция ПроверитьСостояниеСогласование(ЭтоСостояние, Согласование)
 возврат (ЭтоСостояние = Справочники.Состояния.КСогласованиюЗО) Или
         (НЕ Согласование = Справочники.Состояния.СогласованаЧастичноЗО);
конецфункции

Если ПроверитьСостояниеСогласование(Объект.ЭтоСостояние, Объект.Согласование)Тогда
 Сообщить("Дата платежа равна текущей, редактирование невозможно.");
 Отказ = Истина;
 Возврат;
КонецЕсли;

падает с ошибкой "Поле объекта не обнаружено (ЭтоСостояние)". в чем беда?
9 andrewks
 
18.06.12
09:31
(7) при чём здесь грамматика? см (3)
(8) ппц
10 STAYEKR
 
18.06.12
09:45
(9) а по-конкретнее нельзя ли про ппц и чтобы к делу относилось?
11 STAYEKR
 
18.06.12
10:03
(4) Пробовал, пишет "Поле объекта не обнаружено (МоеСостояние)". в чем беда?
12 Deniskind
 
18.06.12
10:08
Ошибка, указанная вами в (0) означает, что данные формы (реквизиты) которые вы передаете в серверную процедуру, каким-то образом изменились. Это происходит когда символ "=" интерпретируется компилятором, как знак присваивания. В вашем коде символ "=" должен интерпретироваться как знак сравнения, но, видимо, этого не происходит. Скорее всего дело в платформе, которая установлена у вас. На платформе 8.2.15.315 код отрабатывает нормально и ошибка не воспроизводится.
В (8) у вас, действительно, не очень удачный код написан, хм... :) Вы вызываете процедуру ПроверитьСостояниеСогласование и в качестве первого параметра передаете Объект.ЭтоСостояние. Объект - это текущий объект документа или справочника, например. После сочетания букв "Объект." должно следовать имя реквизита, имеющегося в объекте. Скорее всего, реквизита "МоеСостояние" в объекте у вас нет. Верните в вызов Объект.Состояние, а в функции исправьте на "ЭтоСостояние" в параметрах и в после сочетания "возврат (". Если не поможет, то меняйте платфому. Впрочем, лучше все равно поменять :)
13 Deniskind
 
18.06.12
10:14
+(12) Да, и в (3), кстати, тоже правильно написано.
14 DUDE
 
18.06.12
10:15
(11) погромист Онотоле, мне страшно за вышу базу данных, сделайте бэкап на всякий случай :) а то погромите раньше времени :)
15 STAYEKR
 
18.06.12
10:16
(13) не ясно, знач там через точку написано или как? был бы очень признателен за фрагмент кода
16 STAYEKR
 
18.06.12
10:16
(14) не бойтесь, это тестовая :)
17 andrewks
 
18.06.12
10:17
функция ПроверитьСостояниеСогласование(Знач Состояние, Знач Согласование)

исправленному верить. подпись, дата
18 STAYEKR
 
18.06.12
10:18
(17) вызывать с клиетна как ее потом?
19 Deniskind
 
18.06.12
10:18
(17) исправленному верить. - что за модуль такой? :)
20 andrewks
 
18.06.12
10:18
(18) ну дык так же
21 andrewks
 
18.06.12
10:19
(19) документооборот
22 Deniskind
 
18.06.12
10:19
(21) :)
23 STAYEKR
 
18.06.12
10:47
ткните носом чайника! вот код, насколько я его понял:

&НаСервереБезКонтекста
Функция ПроверитьСостояниеСогласование(Знач Состояние, Знач Согласование)
Возврат (Состояние = Справочники.Состояния.КСогласованиюЗО) Или
   (НЕ Согласование = Справочники.Состояния.СогласованаЧастичноЗО);
КонецФункции

//клиент
...
Если НЕ ПроверитьСостояниеСогласование(Объект.Состояние, Объект.Согласование) Тогда
Сообщить("123");
Отказ = Истина;
Возврат;
КонецЕсли;

с таким кодом дает возможность менять даты ВСЕХ заявок. а как настроить, чтобы только нужных?
24 STAYEKR
 
18.06.12
11:59
Всем спасибо, разобрался!