|
v7: Значение области ячейки таблицы | ☑ | ||
---|---|---|---|---|
0
Slypower
09.11.16
✎
12:54
|
Добрый день. Вывел отчет. Таблица имеет строки: выражения. Как при нажатии на ячейку вывести ее значение?
Например: 1 3 5 37 78 При нажатии возвращало на 37, возвращало 37. Если это текст, то проблем нет: таб.Область("Показ").Текст. А если это выражение? Данные берутся из ТЗ. Это затрудняется тем, что есть процедура ОбработкаЯчейкиТаблицы(). В ней вбиты своим разные значения для др ячеек-шапки с разными расшифровками-построителями отчетов. Но вот просто вывести данные выражения не могу понять как. |
|||
1
aka AMIGO
09.11.16
✎
12:55
|
(0) Приведи пример твоего выражения.
|
|||
2
aka AMIGO
09.11.16
✎
12:58
|
А вообще-то это КэП..
Пример: Процедура ОбработкаЯчейкиТаблицы(Зн,ФСО,Табл,Адрес) ФСО = 1; Если Зн.Вид()="Товары" Тогда ФСО=0; //и дальше обработка. Распознавай вид() или ТипЗначенияСтр() для полученного Значения - и выполняй, что тебе требуется |
|||
3
Ёпрст
09.11.16
✎
13:01
|
(0) ты не поверишь, но там всегда текст.
|
|||
4
Ёпрст
09.11.16
✎
13:03
|
+3 В ОбработкаЯчейкиТаблицы, ловится то, что в расшифровке запихано, а не то что в ячейке выведено.
|
|||
5
HawkEye
09.11.16
✎
13:05
|
(0) в расшифровку запиши то-же самое, что и в ячейку... при двойном клике будет тебе и 37 и 78...
|
|||
6
Slypower
09.11.16
✎
13:10
|
(2) возможно использовать несколько процедур ОбработкаЯчейкиТаблицы()?
|
|||
7
aka AMIGO
09.11.16
✎
13:11
|
(6) Только 2: одна в отчете, вторая - в ГМ :)
|
|||
8
aka AMIGO
09.11.16
✎
13:12
|
(6) Анализ значения, поступающего из поля расшифровки, делается в одной процедуре условными операторами.
|
|||
9
aka AMIGO
09.11.16
✎
13:14
|
Книг - документации нет что-ли? Описание внешнего языка бери, во втором томе в конце увидишь примеры
|
|||
10
Slypower
09.11.16
✎
13:17
|
(1) https://cloud.mail.ru/public/3xZm/gZYop4cQs - это таблица.
Стрелочки имеют расшифровку:"ТекстЯчейкиДокументВверх","ТекстЯчейкиДокументВниз" и т.д. Каждая свою. А вот ТЗ.Документ - тут загвоздка. Нужно открыть соответствующий документ. Вот и хочу попытаться считать его. Код: Процедура ОбработкаЯчейкиТаблицы(ЧтоВыводить) //рабочая по сортировке Сортировка=""; Если ЧтоВыводить="ТекстЯчейкиДокументВверх" Тогда Сортировка="Документ+"; ИначеЕсли ЧтоВыводить="ТекстЯчейкиДокументВниз" Тогда Сортировка="Документ-"; ИначеЕсли ЧтоВыводить="ТекстЯчейкиНомерЭСЧФВверх" Тогда Сортировка="НомерЭСЧФ+"; ИначеЕсли ЧтоВыводить="ТекстЯчейкиНомерЭСЧФВниз" Тогда Сортировка="НомерЭСЧФ-"; ИначеЕсли ЧтоВыводить="ТекстЯчейкиДатаВыставленияЭСЧФВверх" Тогда Сортировка="ДатаВыставленияЭСЧФ+"; ИначеЕсли ЧтоВыводить="ТекстЯчейкиДатаВыставленияЭСЧФВниз" Тогда Сортировка="ДатаВыставленияЭСЧФ-"; ИначеЕсли ЧтоВыводить="ТекстЯчейкиСтатусЭСЧФВверх" Тогда Сортировка="СтатусЭСЧФ+"; ИначеЕсли ЧтоВыводить="ТекстЯчейкиСтатусЭСЧФВниз" Тогда Сортировка="СтатусЭСЧФ-"; ИначеЕсли ЧтоВыводить="ОткрытьДокумент" Тогда //хз как ОткрытьФормуМодально(ТЗ.Документ); Возврат; КонецЕсли; ВывестиНаЭкран(); КонецПроцедуры // ОбработкаЯчейкиТаблицы() |
|||
11
aka AMIGO
09.11.16
✎
13:28
|
||||
12
aka AMIGO
09.11.16
✎
13:35
|
Чтобы распознать, что тебе вернулось в расшифровке из ячейки - примени ТипЗначенияСтр(Зн)
Это может быть всё, Документ, Справочник, строка, СЗ, ТЗ и т.д. |
|||
13
Slypower
09.11.16
✎
13:35
|
(11) не катит. Пробовал, он выполняет ОбработкаЯчейкиТаблицы(), т.е. просто сортирует мне таблицу по первому столбцу, но не открывает док. Если бы было так просто, я бы это еще на той неделе сделал
|
|||
14
Ёпрст
09.11.16
✎
13:37
|
(13) ну п..ц
|
|||
15
Ёпрст
09.11.16
✎
13:38
|
проверь ЧтоВыводить на типзнчстр, если это документ, то нихрена не делать, в расшифровку положить ссылку на документ.
УсЁ, наслаждаться, кушать печенки |
|||
16
Slypower
09.11.16
✎
13:40
|
(15) а если ничего не выводит? Добавил в (10)
ИначеЕсли ЧтоВыводить="ОткрытьДокумент" Тогда //хз как Сообщить(ТипЗначенияСтр(ТЗ.Документ)); Возврат; КонецЕсли; ничего не выводит. Пусто |
|||
17
Ёпрст
09.11.16
✎
13:41
|
(16) п..ц
еще раз, читай (15) |
|||
18
Slypower
09.11.16
✎
13:44
|
(17) строка
|
|||
19
Это_mike
09.11.16
✎
13:45
|
опыляют их чем-то....
|
|||
20
Ёпрст
09.11.16
✎
13:45
|
(18) положи в расшифровку ссылку на документ, а не строку
|
|||
21
aka AMIGO
09.11.16
✎
13:46
|
(18) Ты эта.. по чему щелкаешь мышой в своей таблице?
У тебя процесс ждет значения ЧтоВыводить="ОткрытьДокумент", где это твоё "ОткрытьДокумент"?? |
|||
22
aka AMIGO
09.11.16
✎
13:47
|
+21 в таблице (10) не видно
|
|||
23
Slypower
09.11.16
✎
13:47
|
(20) положил. Выводит: Документ.
Изменил. Добавил: Иначе, и в расшифровку положил ТЗ.Документ. Теперь Документ, но не открывается, ссылки нет |
|||
24
Ёпрст
09.11.16
✎
13:48
|
Для тех, кто в танке
Процедура ОбработкаЯчейкиТаблицы(ЧтоВыводить)//рабочая по сортировке Сортировка=""; Если ТипЗначенияСтр(ЧтоВыводить)= "Документ" Тогда Возврат; ИначеЕсли ... |
|||
25
aka AMIGO
09.11.16
✎
13:49
|
Ладушки.. я перестал что-либо понимать :)
Успехов, мужики :) |
|||
26
Ёпрст
09.11.16
✎
13:53
|
(23) в самом ТЗ.Документ что хоть ?
|
|||
27
Злопчинский
09.11.16
✎
13:55
|
Тест
|
|||
28
Злопчинский
09.11.16
✎
13:55
|
В обработке яч табл доступны две сущности
|
|||
29
Злопчинский
09.11.16
✎
13:56
|
Значение расшифровки
Текст ячейкт |
|||
30
Злопчинский
09.11.16
✎
13:56
|
Для тупых
Если ни в одной из этих сущностей |
|||
31
Злопчинский
09.11.16
✎
13:56
|
Нет нужных тебе данных
|
|||
32
Злопчинский
09.11.16
✎
13:57
|
Иди данных по которым ты можешь получить нужные данные
|
|||
33
Злопчинский
09.11.16
✎
13:57
|
То тебе путь в Маши гадалки и прорицптели
|
|||
34
Злопчинский
09.11.16
✎
13:58
|
В текст ячейки клади то что должен видеть подьзоватедь
|
|||
35
Злопчинский
09.11.16
✎
13:59
|
В расшифровку клади то что надо обработать чтобы получить нужный эффект при жмаке на ячейку
|
|||
36
Злопчинский
09.11.16
✎
13:59
|
В расшифровку можно положить ЛЮБОЕ значение
|
|||
37
aka AMIGO
09.11.16
✎
13:59
|
:-))
|
|||
38
Slypower
09.11.16
✎
13:59
|
(26) ТЗ.НоваяКолонка("Документ","Документ.Реализация");
Иначе ОткрытьФормуМодально(ТЗ.Документ.ТекущийДокумент()); Возврат; КонецЕсли; Так оно открывает документ, но почему-то с ошибкой: Значение не представляет агрегатный объект (ТекущийДокумент). Если убрать ТекущийДокумент(), то не открывает его |
|||
39
Sserj
09.11.16
✎
14:00
|
(0) Вообще то в ОбработкаЯчейкиТаблицы есть еще параметры Таблица и Ардес и все что тебе нужно можно спокойно достать получив область по которой щелкнули мышкой:
Процедура ОбработкаЯчейкиТаблицы(Расшифровка, СтандартнаяОбработка, Таблица, АдресЯчейки) ОблТаб = Таблица.Область(АдресЯчейки); Сообщить("Текст ячейки: " + ОблТаб.Текст); КонецПроцедуры |
|||
40
Злопчинский
09.11.16
✎
14:00
|
Число
Строку Дату Любой агрегатный тип Можно положить даже список значений и таблицу значений |
|||
41
aka AMIGO
09.11.16
✎
14:02
|
(38) Потому, что документ не может открываться модально.
Для открытия документа тебе достаточно выставить условие ФСО=1 и ничего больше. |
|||
42
Злопчинский
09.11.16
✎
14:03
|
Для очень тупых показывают
При формировании печформы для чётных строк надо выводимой печатной таблицы надо открывать документ, для нечетных печатать документ |
|||
43
aka AMIGO
09.11.16
✎
14:03
|
(42) Высший пилотаж? :)
|
|||
44
aka AMIGO
09.11.16
✎
14:04
|
+(41) если в расшифровке лежит документ, то он и будет открыт.
|
|||
45
Ёпрст
09.11.16
✎
14:06
|
(38) Покажи, как и чем заполняешь эту колонку.
И ответ в (24). Больше ничего не надо. А модальность - зло |
|||
46
Злопчинский
09.11.16
✎
14:07
|
Покажем извращенно
Цикл вывода печформы Если чётной тогда Текрасшиыровка="открыть модальной#"+значениевстрокувнутр(хрен знает какой документ произвольный); Иначе Текрасшифровка="гапечатать#"+значениевстрокувнутр (совсем другой документ) Конец если; |
|||
47
Злопчинский
09.11.16
✎
14:08
|
Текрасшифровку помещаещь в расшифровку
Если непонятно как это сделать напиши |
|||
48
Ёпрст
09.11.16
✎
14:10
|
(46) ну ты точно извращенец. Всё делается проще. Достаточно пихать СЗ с параметрами, чем объект в строку помещать и обратно извлекать
:) |
|||
49
Злопчинский
09.11.16
✎
14:11
|
В обработкеячейкитаблицы
Сз=глРазложить(расшифровка,"#"); Команда=сз.получить значение(1); Объект=сз.получитьзначение(2); Дальше анслизируешь команду и делаешь с объектом что надо |
|||
50
Злопчинский
09.11.16
✎
14:11
|
(48) яж написал покажем извращенно
Именно чтобы показать |
|||
51
aka AMIGO
09.11.16
✎
14:12
|
(49) Ужас, конечно.. Но это ему не нужно..
|
|||
52
Ёпрст
09.11.16
✎
14:12
|
(49) еще и глРазложить, ну, вы понели.. :)
|
|||
53
Злопчинский
09.11.16
✎
14:13
|
В расшифровку можно положить номер строки тз
В обработкеячеки по номеру строки тз получать строку тз и в зависимости от того что там лежит делать вообще что хочешь |
|||
54
Slypower
09.11.16
✎
14:13
|
(45) ТЗ.Документ = Запрос.ТекущийДокумент;, где ТекущийДокумент - это Документ.Реализация.ТекущийДокумент;
Пробую как в (24), то ничего. В расшифровке: ТЗ.Документ |
|||
55
Злопчинский
09.11.16
✎
14:14
|
(52) чж ему выше написал что в расшифровку можно и тз положить и сз
Дальше если не тупой сообразит |
|||
56
Sserj
09.11.16
✎
14:14
|
(49)
А зачем так все усложнять? Не проще при выводе сразу делать понятно, типа: спсРасшифровка = СоздатьОбъект("СписокЗначений"); спсРасшифровка.Установить("Команда", "КрутаяКоманда"); спсРасшифровка.Установить("Документ", НужныйДокумент); А в обработке ячейки получать без всяких разложений: Команда = Расшифровка.Получить("Команда"); Если Команда = ... Тогда ... |
|||
57
Это_mike
09.11.16
✎
14:14
|
(53) в расшифровку положить номер документа,Ю а в ОбработкаРасшифровки выводить Предупреждение("А открой-ка, дружок, документ номер "+номерДокумента)
|
|||
60
HawkEye
09.11.16
✎
14:18
|
(54) короче, что в расшифровку положишь, то оттуда и возьмешь )
|
|||
61
aka AMIGO
09.11.16
✎
14:18
|
(53) А ну-ка еще раз :)
Процедура ОбработкаЯчейкиТаблицы(ЧтоВыводить, ФлагСтандартнойОбработки, Таблица, АдресЯчейки) ФлагСтандартнойОбработки=1; Если ... ИначеЕсли ТипЗначенияСтр(ЧтоВыводить)="Документ" Тогда Возврат; КонецЕсли; |
|||
62
Slypower
09.11.16
✎
14:22
|
(61) все, теперь пашет. (ЧтоВыводить, ФлагСтандартнойОбработки, Таблица, АдресЯчейки) - вот чего мне не хватало. я Оставлял только ЧтоВыводить. Спасибо.
|
|||
63
Slypower
09.11.16
✎
14:27
|
только вот теперь лишнее))))) При нажатии на стрелки, т.е. при выборе сортировки, выводит расшифровку в предупреждение. Например: "НомерЭСЧФ+". Сортирует, но выводит это окно(((
|
|||
64
Slypower
09.11.16
✎
14:31
|
(63) все, сделал. ФлагСтандартнойОбработки=1;
поместил только для ТипЗначенияСтр(ЧтоВыводить)="Документ". Работает все. |
|||
65
aka AMIGO
09.11.16
✎
14:41
|
(64) ну, и хорошо.
(63) Прочти (40), там упомянуто всё стандарное Если надо что-то нестандартное вывести - надо указать: ФлагСтандартнойОбработки=0; К примеру: ![]() |
|||
66
Slypower
09.11.16
✎
14:59
|
(65) спасибо за инфу и помощь. Тему можно закрывать
|
|||
67
Злопчинский
09.11.16
✎
15:52
|
(56) еще один.
я специально указал что с"сделаем извращенно" - чтобы продемонстрировать |
|||
68
Злопчинский
09.11.16
✎
15:53
|
(65) не совсем так.
если в расшифровку положить стандартные СЗ или ТЗ - то без программной доп.обработки при клике на ячейку просто выйдет диалоговоре окноа с надпсью "СписокЗначениен" или "ТаблицаЗначений" |
|||
69
Злопчинский
09.11.16
✎
15:56
|
(65) на картинке кстати потенциально кривой код? если в ТЗК не найдено ЗН...
|
|||
70
aka AMIGO
09.11.16
✎
16:15
|
(69) Код прямой :)
если в ТЗК не найдено ЗН, то... ТЗК.НайтиЗначение(Зн, Стр, "Товар"); Для ы=Стр По ТЗК.КоличествоСтрок() Цикл Если ы<=0 Тогда ФСО=1; Возврат; КонецЕсли; |
|||
71
aka AMIGO
09.11.16
✎
16:21
|
+70 Можно осуществить желаемое еще двумя способами, но лень, Работает - не трожь! :)
|
|||
72
aka AMIGO
09.11.16
✎
16:23
|
Один из них:
Если ТЗК.НайтиЗначение(Зн, Стр, "Товар")=0 Тогда ФСО=1; Возврат; КонецЕсли; Для ы=Стр По ТЗК.КоличествоСтрок() Цикл ... Код будет выполняться на 0.007 микросекунд быстрее. |
|||
73
Злопчинский
09.11.16
✎
20:31
|
ТЗК.ВыбратьСтроки();
Попытка ТЗК.ПолучитьСтрокуПоНомеру(стр-1); Исключение КонецПопытки; Пока ТЗК.ПолучитьСтроку()=1 Цикл //далее по тексту |
|||
74
aka AMIGO
10.11.16
✎
13:13
|
(73) Ошибка.
ТЗК я смотрю не все, и не с начала. ТЗК отсортирована по товару, по "Найти" находится первая строка с товаром, в цикле проверяется товар, считанный из очередной строки ТЗК В общем, не придирайся, не к чему :) |
|||
75
aka AMIGO
10.11.16
✎
13:20
|
И это.. "Попытка.." в данном коде - это зло :)
Надо применять там, где обойтись без Попытки невозможно. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |