Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Значение области ячейки таблицы

v7: Значение области ячейки таблицы
Я
   Slypower
 
09.11.16 - 12:54
Добрый день. Вывел отчет. Таблица имеет строки: выражения. Как при нажатии на ячейку вывести ее значение?
Например:
1
3
5
37
78
При нажатии возвращало на 37, возвращало 37. Если это текст, то проблем нет: таб.Область("Показ").Текст. А если это выражение? Данные берутся из ТЗ.
Это затрудняется тем, что есть процедура  ОбработкаЯчейкиТаблицы(). В ней вбиты своим разные значения для др ячеек-шапки с разными расшифровками-построителями отчетов. Но вот просто вывести данные выражения не могу понять как.
 
 
   aka AMIGO
 
1 - 09.11.16 - 12:55
(0) Приведи пример твоего выражения.
   aka AMIGO
 
2 - 09.11.16 - 12:58
А вообще-то это КэП..

Пример:
Процедура ОбработкаЯчейкиТаблицы(Зн,ФСО,Табл,Адрес)
    ФСО = 1;
    Если Зн.Вид()="Товары" Тогда
            ФСО=0;
//и дальше обработка.


Распознавай вид() или ТипЗначенияСтр() для полученного Значения - и выполняй, что тебе требуется
   Ёпрст
 
3 - 09.11.16 - 13:01
(0) ты не поверишь, но там всегда текст.
   Ёпрст
 
4 - 09.11.16 - 13:03
+3 В ОбработкаЯчейкиТаблицы, ловится то, что в расшифровке запихано, а не то что в ячейке выведено.
   HawkEye
 
5 - 09.11.16 - 13:05
(0) в расшифровку запиши то-же самое, что и в ячейку... при двойном клике будет тебе и 37 и 78...
   Slypower
 
6 - 09.11.16 - 13:10
(2) возможно использовать несколько процедур ОбработкаЯчейкиТаблицы()?
   aka AMIGO
 
7 - 09.11.16 - 13:11
(6) Только 2: одна в отчете, вторая - в ГМ :)
   aka AMIGO
 
8 - 09.11.16 - 13:12
(6) Анализ значения, поступающего из поля расшифровки, делается в одной процедуре условными операторами.
   aka AMIGO
 
9 - 09.11.16 - 13:14
Книг - документации нет что-ли? Описание внешнего языка бери, во втором томе в конце увидишь примеры
   Slypower
 
10 - 09.11.16 - 13:17
(1) https://cloud.mail.ru/public/3xZm/gZYop4cQs - это таблица.
Стрелочки имеют расшифровку:"ТекстЯчейкиДокументВверх","ТекстЯчейкиДокументВниз" и т.д. Каждая свою.
А вот ТЗ.Документ - тут загвоздка. Нужно открыть соответствующий документ. Вот и хочу попытаться считать его. Код:

Процедура ОбработкаЯчейкиТаблицы(ЧтоВыводить)//рабочая по сортировке

    Сортировка=""; 

    Если ЧтоВыводить="ТекстЯчейкиДокументВверх" Тогда
        Сортировка="Документ+";
    ИначеЕсли ЧтоВыводить="ТекстЯчейкиДокументВниз" Тогда
        Сортировка="Документ-";
    ИначеЕсли ЧтоВыводить="ТекстЯчейкиНомерЭСЧФВверх" Тогда
        Сортировка="НомерЭСЧФ+";
    ИначеЕсли ЧтоВыводить="ТекстЯчейкиНомерЭСЧФВниз" Тогда
        Сортировка="НомерЭСЧФ-";
    ИначеЕсли ЧтоВыводить="ТекстЯчейкиДатаВыставленияЭСЧФВверх" Тогда
        Сортировка="ДатаВыставленияЭСЧФ+";
    ИначеЕсли ЧтоВыводить="ТекстЯчейкиДатаВыставленияЭСЧФВниз" Тогда
        Сортировка="ДатаВыставленияЭСЧФ-";
    ИначеЕсли ЧтоВыводить="ТекстЯчейкиСтатусЭСЧФВверх" Тогда
        Сортировка="СтатусЭСЧФ+";
    ИначеЕсли ЧтоВыводить="ТекстЯчейкиСтатусЭСЧФВниз" Тогда
        Сортировка="СтатусЭСЧФ-";
    ИначеЕсли ЧтоВыводить="ОткрытьДокумент" Тогда
    //хз как

        ОткрытьФормуМодально(ТЗ.Документ);
        Возврат;
    КонецЕсли;
    ВывестиНаЭкран();
КонецПроцедуры// ОбработкаЯчейкиТаблицы()
 
 Рекламное место пустует
   aka AMIGO
 
11 - 09.11.16 - 13:28
Чтобы вывести документ, помести его в Расшифровку:
http://pastenow.ru/Upload/Paste/16QCN.png
   aka AMIGO
 
12 - 09.11.16 - 13:35
Чтобы распознать, что тебе вернулось в расшифровке из ячейки - примени ТипЗначенияСтр(Зн)
Это может быть всё, Документ, Справочник, строка, СЗ, ТЗ и т.д.
   Slypower
 
13 - 09.11.16 - 13:35
(11) не катит. Пробовал, он выполняет  ОбработкаЯчейкиТаблицы(), т.е. просто сортирует мне таблицу по первому столбцу, но не открывает док. Если бы было так просто, я бы это еще на той неделе сделал
   Ёпрст
 
14 - 09.11.16 - 13:37
(13) ну п..ц
   Ёпрст
 
15 - 09.11.16 - 13:38
проверь ЧтоВыводить на типзнчстр, если это документ, то нихрена не делать, в расшифровку положить ссылку на документ.
УсЁ, наслаждаться, кушать печенки
   Slypower
 
16 - 09.11.16 - 13:40
(15) а если ничего не выводит? Добавил в (10)
  
ИначеЕсли ЧтоВыводить="ОткрытьДокумент" Тогда
    //хз как

    Сообщить(ТипЗначенияСтр(ТЗ.Документ));
        Возврат;
    КонецЕсли;

ничего не выводит. Пусто
   Ёпрст
 
17 - 09.11.16 - 13:41
(16) п..ц
еще раз, читай (15)
   Slypower
 
18 - 09.11.16 - 13:44
(17) строка
   Это_mike
 
19 - 09.11.16 - 13:45
опыляют их чем-то....
   Ёпрст
 
20 - 09.11.16 - 13:45
(18) положи в расшифровку ссылку на документ, а не строку
   aka AMIGO
 
21 - 09.11.16 - 13:46
(18) Ты эта.. по чему щелкаешь мышой в своей таблице?
У тебя процесс ждет значения ЧтоВыводить="ОткрытьДокумент", где это твоё "ОткрытьДокумент"??
   aka AMIGO
 
22 - 09.11.16 - 13:47
+21 в таблице (10) не видно
   Slypower
 
23 - 09.11.16 - 13:47
(20) положил. Выводит: Документ.
Изменил. Добавил: Иначе, и в расшифровку положил ТЗ.Документ. Теперь Документ, но не открывается, ссылки нет
   Ёпрст
 
24 - 09.11.16 - 13:48
Для тех, кто в танке

Процедура ОбработкаЯчейкиТаблицы(ЧтоВыводить//рабочая по сортировке


    Сортировка=""; 

    Если ТипЗначенияСтр(ЧтоВыводить)= "Документ" Тогда
       Возврат;
    ИначеЕсли ...
   aka AMIGO
 
25 - 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
В расшифровку можно положить ЛЮБОЕ значение
   aka AMIGO
 
37 - 09.11.16 - 13:59
:-))
   Slypower
 
38 - 09.11.16 - 13:59
(26)     ТЗ.НоваяКолонка("Документ","Документ.Реализация");
    

Иначе
 ОткрытьФормуМодально(ТЗ.Документ.ТекущийДокумент());
 Возврат;
КонецЕсли;

Так оно открывает документ, но почему-то с ошибкой:
Значение не представляет агрегатный объект (ТекущийДокумент). Если убрать ТекущийДокумент(), то не открывает его
   Sserj
 
39 - 09.11.16 - 14:00
(0) Вообще то в ОбработкаЯчейкиТаблицы есть еще параметры Таблица и Ардес и все что тебе нужно можно спокойно достать получив область по которой щелкнули мышкой:

Процедура ОбработкаЯчейкиТаблицы(Расшифровка, СтандартнаяОбработка, Таблица, АдресЯчейки)
ОблТаб = Таблица.Область(АдресЯчейки);
Сообщить("Текст ячейки: " + ОблТаб.Текст);

КонецПроцедуры
   Злопчинский
 
40 - 09.11.16 - 14:00
Число
Строку
Дату
Любой агрегатный тип
Можно положить даже список значений и таблицу значений
   aka AMIGO
 
41 - 09.11.16 - 14:02
(38) Потому, что документ не может открываться модально.
Для открытия документа тебе достаточно выставить условие ФСО=1 и ничего больше.
   Злопчинский
 
42 - 09.11.16 - 14:03
Для очень тупых показывают
При формировании печформы для чётных строк надо выводимой печатной таблицы надо открывать документ, для нечетных печатать документ
   aka AMIGO
 
43 - 09.11.16 - 14:03
(42) Высший пилотаж? :)
   aka AMIGO
 
44 - 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) яж написал покажем извращенно
Именно чтобы показать
   aka AMIGO
 
51 - 09.11.16 - 14:12
(49) Ужас, конечно.. Но это ему не нужно..
   Ёпрст
 
52 - 09.11.16 - 14:12
(49) еще и глРазложить, ну, вы понели.. :)
   Злопчинский
 
53 - 09.11.16 - 14:13
В расшифровку можно положить номер строки тз
В обработкеячеки по номеру строки тз получать строку тз и в зависимости от того что там лежит делать вообще что хочешь
   Slypower
 
54 - 09.11.16 - 14:13
(45) ТЗ.Документ = Запрос.ТекущийДокумент;, где ТекущийДокумент - это  Документ.Реализация.ТекущийДокумент;
Пробую как в (24), то ничего. В расшифровке: ТЗ.Документ
   Злопчинский
 
55 - 09.11.16 - 14:14
(52) чж ему выше написал что в расшифровку можно и тз положить и сз

Дальше если не тупой сообразит
   Sserj
 
56 - 09.11.16 - 14:14
(49)
А зачем так все усложнять?
Не проще при выводе сразу делать понятно, типа:
спсРасшифровка = СоздатьОбъект("СписокЗначений");
спсРасшифровка.Установить("Команда", "КрутаяКоманда");
спсРасшифровка.Установить("Документ", НужныйДокумент);

А в обработке ячейки получать без всяких разложений:

Команда = Расшифровка.Получить("Команда");
Если Команда = ... Тогда
...
   Это_mike
 
57 - 09.11.16 - 14:14
(53) в расшифровку положить номер документа,Ю а в ОбработкаРасшифровки выводить Предупреждение("А открой-ка, дружок, документ номер "+номерДокумента)
   HawkEye
 
60 - 09.11.16 - 14:18
(54) короче, что в расшифровку положишь, то оттуда и возьмешь )
   aka AMIGO
 
61 - 09.11.16 - 14:18
(53) А ну-ка еще раз :)
Процедура ОбработкаЯчейкиТаблицы(ЧтоВыводить, ФлагСтандартнойОбработки, Таблица, АдресЯчейки)

ФлагСтандартнойОбработки=1;

Если ...
ИначеЕсли ТипЗначенияСтр(ЧтоВыводить)="Документ" Тогда
Возврат;
КонецЕсли;
   Slypower
 
62 - 09.11.16 - 14:22
(61) все, теперь пашет. (ЧтоВыводить, ФлагСтандартнойОбработки, Таблица, АдресЯчейки) - вот чего мне не хватало. я Оставлял только ЧтоВыводить. Спасибо.
   Slypower
 
63 - 09.11.16 - 14:27
только вот теперь лишнее))))) При нажатии на стрелки, т.е. при выборе сортировки, выводит расшифровку в предупреждение.  Например: "НомерЭСЧФ+". Сортирует, но выводит это окно(((
   Slypower
 
64 - 09.11.16 - 14:31
(63) все, сделал.     ФлагСтандартнойОбработки=1;
поместил только для ТипЗначенияСтр(ЧтоВыводить)="Документ".
 Работает все.
   aka AMIGO
 
65 - 09.11.16 - 14:41
(64) ну, и хорошо.

(63) Прочти (40), там упомянуто всё стандарное
Если надо что-то нестандартное вывести - надо указать:
ФлагСтандартнойОбработки=0;
К примеру:
\"\"
   Slypower
 
66 - 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) на картинке кстати потенциально кривой код? если в ТЗК не найдено ЗН...
   aka AMIGO
 
70 - 09.11.16 - 16:15
(69) Код прямой :)

если в ТЗК не найдено ЗН, то...

            ТЗК.НайтиЗначение(Зн, Стр, "Товар");
            Для ы=Стр По ТЗК.КоличествоСтрок() Цикл
                Если ы<=0 Тогда
                    ФСО=1;
                    Возврат;
                КонецЕсли;
   aka AMIGO
 
71 - 09.11.16 - 16:21
+70 Можно осуществить желаемое еще двумя способами, но лень, Работает - не трожь! :)
   aka AMIGO
 
72 - 09.11.16 - 16:23
Один из них:
Если ТЗК.НайтиЗначение(Зн, Стр, "Товар")=0 Тогда
ФСО=1;
Возврат;
КонецЕсли;
Для ы=Стр По ТЗК.КоличествоСтрок() Цикл
...

Код будет выполняться на 0.007 микросекунд быстрее.
   Злопчинский
 
73 - 09.11.16 - 20:31
ТЗК.ВыбратьСтроки();
Попытка ТЗК.ПолучитьСтрокуПоНомеру(стр-1); Исключение КонецПопытки;
Пока ТЗК.ПолучитьСтроку()=1 Цикл 
//далее по тексту
   aka AMIGO
 
74 - 10.11.16 - 13:13
(73) Ошибка.
ТЗК я смотрю не все, и не с начала.
ТЗК отсортирована по товару, по "Найти" находится первая строка с товаром, в цикле проверяется товар, считанный из очередной строки ТЗК

В общем, не придирайся, не к чему :)
   aka AMIGO
 
75 - 10.11.16 - 13:20
И это.. "Попытка.." в данном коде - это зло :)
Надо применять там, где обойтись без Попытки невозможно.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует