Имя: Пароль:
1C
1С v8
Давайте обсудим код
🠗 (XLife 06.06.2013 22:33)
,
0 Икогнито
 
06.06.13
22:05
Набросал вот тут код в обработке:


&НаКлиенте
Процедура Команда1(Команда)
   Перем ОжидаемаяСтруктура;
   ЗавалитьВыполнить(Объект.Строка1,Объект.Символ, ОжидаемаяСтруктура);
   
   Сообщ = Новый СообщениеПользователю;
   
   Для Каждого ЭлСтруктуры ИЗ ОжидаемаяСтруктура Цикл
       Сообщ.Текст = Сообщ.Текст + "Ключ: "+ЭлСтруктуры.Ключ + ", Значение: "+ЭлСтруктуры.Значение+Символы.ПС;
   КонецЦикла;
   
   Сообщ.УстановитьДанные(ЭтаФорма);
   Сообщ.Сообщить();
   
КонецПроцедуры

&НаСервере
Процедура ЗавалитьВыполнить(СтроковоеПоле, КодСимвола, ВозвращаемаяСтруктура)
   
   Значение1 = "";
   
   Для Х = 1 по СтрЧислоСтрок(СтроковоеПоле) Цикл
       Значение1 = Значение1 + " " + СтрПолучитьСтроку(СтроковоеПоле,Х);
   КонецЦикла;
   
   Значение1 = СокрЛП(Значение1);
   Значение1 = Значение1;//+Символ(КодСимвола);
   
   Ключи = """"+"КлючСтроковоеПоле"+","+"КлючКодСимвола"+"""";
   
   ЗначенияКлючей = """"+Значение1+""""+","+""""+Символ(КодСимвола)+"""";
   
   СтруктураП = Неопределено;
   
   ТекстКода = "СтруктураП = Новый Структура("+Ключи+","+ЗначенияКлючей+");";
   
   Выполнить(ТекстКода);
   
   ВозвращаемаяСтруктура = СтруктураП;
   
   
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
   
   Для к = 0 По 30 Цикл
       Объект.Строка1 = Объект.Строка1 + Символ(к)+"я";
   КонецЦикла;
   
КонецПроцедуры

Никакой символ, за иключением ПС и кавычек не может завалить эту конструкцию, пока она выполняется на сервере!

В момент передачи на клиента возникает ошибка "Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа."

Вывод:
- НаСервере конструкция Выполнить() работает с ЛЮБЫМИ Символами!
- Если пользователю удастся ввести в поле ввода Символ от 0 до 20, то форма заглючит и это не уйдет на сервер!

Продолжение темы:
http://www.forum.mista.ru/topic.php?id=668095
1 Икогнито
 
06.06.13
22:10
Так что, кто-то бред полный написал, что символы от 0 до 20 её валят.

Проблема может возникнуть только при возвращении данных на клиента. Если они несовместимы с ХML, то будет ошибка.
2 XLife
 
06.06.13
22:11
(0) чё сказать-то хотел?
3 Икогнито
 
06.06.13
22:14
(2) Создал тему "Завалить конструкцию выполнить".
Один чувак написал полный бред по поводу того, что Если в Выполнить() попадет Символ(0-20), то все рухнет.

Написал код, проверил, развеял бред.

Так же, пользователь в 1С не может через поле ввода ввести символ, не совместимый с XML. Система тупо это игнорирует.
4 Икогнито
 
06.06.13
22:29
Если даже на клиенте ввести в текстовое поле программно несовместимые символы


&НаКлиенте
Процедура Команда2(Команда)
   
   Для к = 0 По 30 Цикл
       Объект.Строка1 = Объект.Строка1 + Символ(к)+"я";
   КонецЦикла;    
   
КонецПроцедуры


То это не уйдет на сервер и вывалится с ошибкой:
{Обработка.ВнешняяОбработка2.Форма.Форма.Форма(5)}: Ошибка при вызове метода контекста (ЗавалитьВыполнить)
   ЗавалитьВыполнить(Объект.Строка1,Объект.Символ, ОжидаемаяСтруктура);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
   форма: Элемент
   имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Текст XML содержит недопустимый символ в позиции 0 :
5 Икогнито
 
06.06.13
22:31
(2)
>  чё сказать-то хотел?

А по существу хотел сказать, что миста реально тупеет.
Чувак с пеной у рта доказывал мне, что я идиот.

Надо меньше мисту читать, 80% высказывающихся тут владеют ложными знаниями.
6 Asmody
 
06.06.13
22:35
(0) обмен клиент-сервер в УФ идет в XDTO
7 Очкарик
 
06.06.13
23:03
(6) если ты внимательнее посмотришь на последнюю строку ошибки в (4), то ты увидишь, что не прав и лишний раз подтвердил (5)