|
Странное поведение после вызова функции | ☑ | ||
---|---|---|---|---|
0
alexshape
13.07.17
✎
15:09
|
Привет Всем. Тут такая пргоблема, есть строка в коде:
ЧислоПослеОтбора = УстановитьОтборНаТаблицу(Текст,Совпадения,Объект.ДатаРождения); где я вызываю функцию: Совпадения - это ДанныеФормы коллекция. Остальное вроде понятно. Иток при возврате мне выдает такую ошибку: {Справочник.Контрагенты.Форма.ФормаДобавленияФизЛица.Форма(49)}: Ошибка при установке значения атрибута контекста (Совпадения) ЧислоПослеОтбора = УстановитьОтборНаТаблицу(Текст,Совпадения, Объект.ДатаРождения); по причине: Нельзя изменять поле, содержащее объект данных формы Я же ничего не изменяю в данных формы Совпадения Функцию УстановитьОтборНаТаблицу(Наименование,Совпадения, ДатаРождения) Запрос = Новый Запрос; ПоследнийСимвол = Прав(Наименование,1); Пока ПоследнийСимвол = " " Цикл ДлиннаСтроки = СтрДлина(Наименование); Наименование = Лев(Наименование,ДлиннаСтроки-1); ПоследнийСимвол = Прав(Наименование,1); КонецЦикла; Если ДатаРождения = Дата(0001,01,01) Тогда Запрос.Текст = "ВЫБРАТЬ | Совпадения.Наименование, | Совпадения.ДатаРождения |ИЗ | &Совпадения КАК Совпадения |ГДЕ | Совпадения.Наименование Подобно &Наименование"; Иначе Запрос.Текст = "ВЫБРАТЬ | Совпадения.Наименование, | Совпадения.ДатаРождения |ПОМЕСТИТЬ СвопаденияВТ |ИЗ | &Совпадения КАК Совпадения |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СвопаденияВТ.Наименование, | СвопаденияВТ.ДатаРождения |ИЗ | СвопаденияВТ КАК СвопаденияВТ |ГДЕ | СвопаденияВТ.Наименование = &Наименование | И СвопаденияВТ.ДатаРождения = &ДатаРождения"; Запрос.УстановитьПараметр("ДатаРождения", ДатаРождения); КонецЕсли; Запрос.УстановитьПараметр("Совпадения", Совпадения.Выгрузить()); Запрос.УстановитьПараметр("Наименование", Наименование); Результат = Запрос.Выполнить(); Таблица = Результат.Выгрузить(); Возврат Таблица.Количество(); КонецФункции |
|||
1
Ёпрст
13.07.17
✎
15:16
|
передавай Объект.Совпадения.Выгрузить() в свою процу
|
|||
2
alexshape
13.07.17
✎
15:21
|
(1) Так Совпадения это реквизит формы
|
|||
3
Ёпрст
13.07.17
✎
15:25
|
тогда передавай Совпадения.Выгрузить()
|
|||
4
alexshape
13.07.17
✎
15:28
|
Вызываю с клиента, не получается
|
|||
5
Вафель
13.07.17
✎
15:30
|
делай (Знач Совпадения)
|
|||
6
alexshape
13.07.17
✎
15:34
|
(5) не совсем понял
|
|||
7
НЕА123
13.07.17
✎
15:38
|
(0) В данном случае без сервера на клиент НайтиСтроки()
|
|||
8
Имитация работы
13.07.17
✎
16:07
|
(6) Передавай параметр не по ссылке, а по значению. ТАк понятней?
|
|||
9
alexshape
14.07.17
✎
08:31
|
(8) Теперь понял, получается. Так я же не совершаю никаких манипуляций с этой таблицей значения: "Совпадения" в процедуре куда её передаю. Единственное Это: Совпадения.Выгрузить(). Почему же ругается что я изменил эти данные?
|
|||
10
Имитация работы
14.07.17
✎
08:40
|
(9) Достаточно того, что по выходу из процедуры неявно пытаешсья присвоить реквизиту формы то же самое значение.
Попробуй еще убрать знач и передать не реквизит, а локальную переменную, которой предварительно присвоить значение реквизита. Тогда ощутишь и поймешь (: |
|||
11
alexshape
14.07.17
✎
08:50
|
(10) Спасибо за помощь, сделал через передачу реквизиты в переменную, и потом уже переда в параметр.
<неявно пытаешсья присвоить реквизиту формы то же самое значение. > он ошибку выдает на атрибут контекста формы, а это: Циата: "Атрибуты контекста Модуля формы СтрокаДействийФормы Форма ". |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |