|
Привязка СообщениеПользователю к реквизиту формы обработки | ☑ | ||
---|---|---|---|---|
0
Единорог
03.08.16
✎
14:40
|
Может кто сталкивался с таким.
https://yadi.sk/i/wL7E6PVPtswSy Есть реквизит формы с типом ТаблицаЗначений на форме обработки. При выводе СообщениеПользователю нужно привязать сообщение к ячейке с ошибкой. Если прописать буквально поле привязки так: ///////////////////////////////////////////// Сообщение.Поле = "ТаблицаНоменклатуры[7].ТоварДня"; ///////////////////////////////////////////// то сообщение корректно привязывается к указанной ячейке Если собрать динамически строку так: ///////////////////////////////////////////// СтрокаВПоле = "ТаблицаНоменклатуры[" + ИндексСтрокиТЗ + "].ТоварДня"; Сообщение.Поле = СтрокаВПоле; ///////////////////////////////////////////// то сообщение не привязывается к указанной ячейке, а пристраивается сбоку формы. На рисунке видно внизу, что обе строки одинаковые. Платформа 8.2.19.80 Конфа Ут 11.0.8.13 |
|||
1
Nuobu
03.08.16
✎
14:43
|
Подозреваю, что в одном случае это ссылка, а в другом - текст.
|
|||
2
Единорог
03.08.16
✎
14:45
|
На рисунке видно в отладчике что Строка, мало того в самом низу есть сравнение этих строк:
//////////////////////////////////// Сообщение.Поле = "ТаблицаНоменклатуры[7].ТоварДня" ИСТИНА /////////////////////////////////// |
|||
3
Единорог
03.08.16
✎
14:48
|
////////////////////////////////////////////
"ТаблицаНоменклатуры[" + ИндексСтрокиТЗ + "].ТоварДня" = "ТаблицаНоменклатуры[7].ТоварДня" //////////////////////////////////////////// Учитывая что ИндексСтрокиТЗ = 7; эти два выражение одинаковы |
|||
4
Единорог
03.08.16
✎
14:50
|
Но в случае со строкой, которая прописано жестко с фиксированным индексом = сообщение правильно привязывается к ячейке, а в случае со строкой, которая собирается динамически нет.
|
|||
5
Nuobu
03.08.16
✎
14:52
|
(4) Без промежуточно переменной пробовал?
|
|||
6
Nuobu
03.08.16
✎
14:52
|
Сообщение.Поле = "ТаблицаНоменклатуры[" + ИндексСтрокиТЗ + "].ТоварДня";
|
|||
7
b_ru
03.08.16
✎
14:55
|
Посмотри в отладчике какое значене будет в переменной СтрокаВПоле.
|
|||
8
Единорог
03.08.16
✎
14:56
|
(5)(6) да, не помогло
|
|||
9
Единорог
03.08.16
✎
15:01
|
(7) Вот для наглядности
https://yadi.sk/i/IhW2xetAtt2Vt |
|||
10
Единорог
03.08.16
✎
15:03
|
(7) и там и там тип Строка и по точке останова видно что заходит в условие равенства и внизу в табло
Сообщение.Поле = СтрокаВПоле ИСТИНА |
|||
11
Единорог
03.08.16
✎
15:05
|
Вот как выглядит на форме
|
|||
12
Nuobu
03.08.16
✎
15:06
|
||||
13
Nuobu
03.08.16
✎
15:07
|
(8) Не помогло, потому что ты два раза присвоил. Присваивай один раз без промежуточных переменных.
|
|||
14
Единорог
03.08.16
✎
15:07
|
Тут правильно - это когда
///////////////////////////////////////////////// Сообщение.Поле = "ТаблицаНоменклатуры[7].ТоварДня" ////////////////////////////////////////////////// https://yadi.sk/i/J-fd0nZntt37y |
|||
15
Единорог
03.08.16
✎
15:09
|
А тут не правильно - это когда
//////////////////////////////////////////// Сообщение.Поле = "ТаблицаНоменклатуры[" + ИндексСтрокиТЗ + "].ТоварДня"; //////////////////////////////////////////// https://yadi.sk/i/KLDWULGHtt3GN |
|||
16
aleks_default
03.08.16
✎
15:11
|
ИндексСтрокиТЗ = 7?
|
|||
17
Единорог
03.08.16
✎
15:12
|
(8) Если бы...
https://yadi.sk/i/kfMD_Gt3tt44M |
|||
18
Единорог
03.08.16
✎
15:21
|
||||
19
Единорог
03.08.16
✎
15:26
|
(12) когда есть Объект и Объект.Ссылка, а также, реквизиты этого объекта... это совсем другой разговор...
Тут этого всего нет https://yadi.sk/i/RaA1-ZBhtt5KB а главное, если прописать как указано ТУТ http://its.1c.ru/db/metod8dev/content/3442/hdoc то у меня так тоже работает, но моя задача предполагает не фиксированный вариант а динамический... иначе какой смысл в таких сообщениях, если я не могу указать где ошибка! |
|||
20
Единорог
03.08.16
✎
15:34
|
Строки одинаковые, а результат разный.
Я уже думал про квадратные скобки, заменил их символами (коды 91 и 93)= ничего не изменилось. Может КЭШ полетел. Почистил = не помогло. Может что с базой-сервером? на трех разных серверах, на четырех разных копиях баз = результат тот же. |
|||
21
aleks_default
03.08.16
✎
15:44
|
Попробуй в ПутьКДанным указать "Элементы.ТаблицаНоменклатуры"
|
|||
22
aleks_default
03.08.16
✎
15:46
|
вот тут почитай шаманство
Как приаттачить СообщениеПользователю к элементу формы |
|||
23
Единорог
03.08.16
✎
15:48
|
(21) К сожалению такое тоже было проверено, - не помогло.
И потом, как без каких либо видимых других факторов фиксированное присвоение работает? ///////////////////////////////////////////////////// Сообщение.Поле = "ТаблицаНоменклатуры[7].ТоварДня" ///////////////////////////////////////////////////// КАК? (я не нашел никаких различий...) |
|||
24
aleks_default
03.08.16
✎
15:53
|
А почему у тебя ИндексСтрокиТЗ - тип строка, когда должно быть число?
|
|||
25
Единорог
03.08.16
✎
15:56
|
(24) Было Число, не работало, перевел в Строка = никакой разницы.
(22) Будь у меня объект... я бы еще вчера все сделал))) это Обработка, без реквизитов, ТЗ - это реквизит формы, хотя с ТЧ тоже пробовал, такая же история... |
|||
26
Единорог
03.08.16
✎
16:01
|
Пока результат один и тот же:
Вот такое фиксированное присвоение РАБОТАЕТ! ///////////////////////////////////////////////////// Сообщение.Поле = "ТаблицаНоменклатуры[7].ТоварДня" ///////////////////////////////////////////////////// динамически собираю ту же строку = не работает! (вот оно что Михалыч...) |
|||
27
aleks_default
03.08.16
✎
16:01
|
Может через Формат попробовать выразить?
|
|||
28
Единорог
03.08.16
✎
16:03
|
(27) так отладчик показывает равенство...
(я конечно проверю... 1С бывало и не так удивляло...) |
|||
29
Borteg
03.08.16
✎
16:05
|
Для каждого СтрокаТч из Объект.МояТаблица Цикл
Если СтрокаТч.Ошибка Тогда Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Ошибка"; Сообщение.Поле = "Объект.МояТаблица ["+Объект.МояТаблица .Индекс(СтрокаТЧ)+"].МоеПОЛЕ"; Сообщение.Сообщить(); КонецЕсли; КонецЦикла; |
|||
30
Единорог
03.08.16
✎
16:09
|
(29) Да, я так и делаю... когда есть и Объект, и реквизиты этого объекта.
Но тут их нету https://yadi.sk/i/RaA1-ZBhtt5KB Звиняйте за повтор картинок. |
|||
31
Единорог
03.08.16
✎
16:10
|
(27) Формат ничего не изменил.
Строки как были тождественны так и остались. А привязки как не было так и нету. |
|||
32
Borteg
03.08.16
✎
16:11
|
(31) скорей всего проблема с платформой, у меня на некоторых релизах 8.3 вначале тоже не работала такая конструкция, сейчас работает(8.3.7.2008).
Попробуй с объектом,если не сработает значит точно платформа. |
|||
33
Единорог
03.08.16
✎
16:56
|
(32) Да, скорее всего так, я еще через БСП проверил
https://yadi.sk/i/O3JF6celttHZX никаких отличий нет, а при этом результат так же разный. |
|||
34
Единорог
03.08.16
✎
18:08
|
Это работает:
///////////////////////////////////////////////////// ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,,"ТаблицаНоменклатуры[7].ТоварДня"); ///////////////////////////////////////////////////// и это работает: ///////////////////////////////////////////////////// ОбычнаяСтрока = "ТаблицаНоменклатуры[7].ТоварДня"; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения ,, ОбычнаяСтрока); ///////////////////////////////////////////////////// и даже ЭТО работает!!! ///////////////////////////////////////////////////// ИндексЧисло = 7; ОбычнаяСтрока = "ТаблицаНоменклатуры["+ ИндексЧисло + "].ТоварДня"; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения ,, ОбычнаяСтрока); ///////////////////////////////////////////////////// А вот ЭТО... НЕ РАБОТАЕТ!!! ///////////////////////////////////////////////////// ИндексВЧисло = ТаблицаНоменклатуры.Индекс(НоваяСтрока); // Тут точно такое же число как и выше ПолеТЗСтрокой = "ТаблицаНоменклатуры["+ ИндексВЧисло + "].ТоварДня"; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения ,, ПолеТЗСтрокой); ///////////////////////////////////////////////////// |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |