Добрый день. Необходимо проверить текущую ячейку в табличном документе. Если текущая ячейка принадлежит стобцу, то выполняется процедура. Можно создать массив и добавить туда значения R1C6:R500C6, но мб есть какой-то более простой способ, чем добавлять элементы в массив циклом?
Можно решить иначе, наверное, проверять текущую ячейку на вхождение в область макета. Но у меня никак не выходит. Подскажите, как решить? Заранее спасибо!
---
Ё.....
---
Нашел ошибку. В обработку расшифровки не передавал Элемент!!!
Всем огромное спасибо за помощь!
---
Элементы.ТабДок.ТекущаяОбласть.Лево = 6
---
ТекущаяОбласть

Я выделил нужные ячейки в макете и задал имя "Область".
Как проверить, попадает ли текущая ячейка, например "R1C6", в эту область?
---
Получить границы области и сравнить их с адресом ячейки? Не предлагать?
---
Отличная идея, но я не представляю, как получить границы области.
---
НужнаяОбласть = ТабличныйДокумент.Область(ИмяОбласти);
из нее получить Лево, Право, Верх, Низ - вот это и есть границы.
---
У областей есть Лево, Право, Верх, Низ. Например,

```1c
    &НаСервере
    Процедура Сформировать()
    Об=РеквизитФормыВЗначение("Объект");
    Макет=Об.ПолучитьМакет("Макет");
    Область1=Макет.ПолучитьОбласть("Область1");
    Область2=Макет.ПолучитьОбласть("Область2");
    О1=ТабДок.Вывести(Область1);
    О2=ТабДок.Вывести(Область2);
    О3=ТабДок.Вывести(Область1);
    О4=ТабДок.Вывести(Область2);
    //О1.Верх=1
    //О2.Верх=4
    //О3.Верх=10
    //О4.Верх=13
    КонецПроцедуры
```
---
областей
---
А если я не знаю, насколько мне вниз двигаться? Там вообще отчет формируется в макете, поэтому вниз (01.вниз) может быть очень много
---
Все, я понял.

```1c
    верх = О1.Верх
    низ = О1.Низ
```
---
Не могу догадаться, что дальше? Я получаю область (1x1x1x1700), разбиваю значение текущей ячейки (R*C6), как убедиться, что ячейка находится именно в этой области (1x1x1x1700), а не в точно такой же только с R*C7?
---
преобразуете с пом.источника данных таб.док в таблицу значений
а там уже все как два пальца....
---
Что-то не выходит...Итератор для значения не определен

```1c
    Значение = Элементы.МакетАнализ.ТекущаяОбласть.Имя;
    ОбластьМакета = Макет.ПолучитьОбласть("ОбластьОтказы");

    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Значение");
    ТЗ.Колонки.Добавить("Описание");
    Для Каждого Элем Из ОбластьМакета Цикл
    Стр = ТЗ.Добавить();
    Стр.Значение = Элем.Ключ;
    Стр.Описание = Элем.Значение;
    КонецЦикла;

    Если НЕ ТЗ.Найти(Значение)= Неопределено Тогда
```
---
попробуйте задачу решить с "правильного" конца!
зачем анализировать ТабДок?
вы же его перед этим как-то формируете,
т.е. Получаете нужные данные и выводите их в табдок

вот эти Полученные данные (сохраните при выводе или получите еще раз, все отборы и настройки у вас есть)
и анализируйте сами данные а не то что вывели!
---
там данные выводятся запросом. В запросе идет подсчет, ниже пример

```1c
    ВЫБОР
    КОГДА Договоры..Статус.Код = "000000005"
    ТОГДА 1
    ИНАЧЕ 0
    КОНЕЦ КАК Отказ
```

Поэтому как анализировать голые числа, а не данные, я не понимаю
---
судя по этому коду, там какой-то адский треш, как и сама задача в (1).
---
Задача такая: сделать расшифровку отчета (запрос > макет )другим отчетом (скд). Но выборку параметров из первого отчета не сделать, у второго отчета свой запрос. Поэтому делаю не расшифровку а событие Выбор поля табличного документа, куда выводится макет отчета. Ну и соответственно необходимо "ловить" текущую ячейку, находить в какую область она входит, и в зависимости от области макета открывать нужный отчет по клику.
---
если первый отчет, это рукописный Запрос---->>>макет, то в Расшифровку можно положить что угодно, например, готовую структуру с нужными параметрами для формирования второго отчета.
ЗЫ: и все эти танцы с бубнами для определения области не нужны будут
---
подскажите как, все перепробовал, у меня не выходит.
как отловить в расшифровке, на какой ячейке и что выводить?
---
А что, свойство "Расшифровка" у ячеек уже отменили? Что мешает при выводе первого отчёта класть туда необходимые "закладки"?
---
Результат первого запроса, сам выводишь в макет, через обход результата запроса и вывода секций макета ?
Если да, то ничто не мешает класть в расшифровку что угодно
---
я вот не разобрался как класть вызов например процедуры, которая выводит второй отчет.
Я научился выводить обычную расшифровку (текст), и помещать в расшифровку структуру с отбором из первого запроса. Но как вызвать процедуру...
---
Есть специальный обработчик события для расшифровки у поля табличного документа.
---
Да, но как в нужной расшифровке (например, для ячейки R1C1 парам.расшифровки "Расшифровка1") указать вызов процедуры 1, а другой расшифровке - другую процедуру? Опять все сводится к поиску нужной ячейки и области.
---
Наверное при выводе отчёта- надо заполнять свойство расшифровки разными значениями, чтобы в обработчике потом понять.
Посмотрели обработчик расшифровки?
---
Да, конечно. вот заполнить значениями какими ? обычно там структура заполняется с параметрами из запроса. Но мне просто нужно в обработчике указать какой расшифровке открывать какой отчет. (ну или процедуру, как я выше писал)
---
Положи туда буквы, что мешает?
---
И такая дребедень каждый день.
Человек придумывает сам себе неправильное решение, и героически его реализует. Вместо того, чтобы объяснить изначальную цель, и спокойно получить подсказку про использование свойства "Расшифровка"...
---
Да, согласен с Вами. Но как назначить расшифровке вызов процедуры ?
---
в расшифровку кладешь Структуру с нужными параметрами, в процедуре обработки расшифровки (назначается в свойствах макета на форме) сымотришь на расшифровку, если тип- структура, то извлекаешь параметры и в зависимости от..лепишь второй отчет
---
```1c
    Структура = Новый Структура ("КакойОтчетОткрываем","СимСеляБимОткройПервыйОтчет");

    // в обработчике

    Ежели Расшифровка.КакойОтчетОткрываем = "СимСеляБимОткройПервыйОтчет" Тогдашеньки
    ОткрытьОтчетОдин()
    Инажели
    ОткрытьНечтоДругое()
    КонецЕжели;
```
---
Спасибо огромное. Особенно понравилась ваша подача))
---
Поле объекта не обнаружено (КакойОтчетОткрываем)
---
А конструкция "Ежели ..." не выдаёт ошибку?
---
:)
---
Почему-то у меня Расшифровка это не структура, а поле формы
---
Что нам наэто говорит СП в части обработчика расшифровки?
---
Описание:
Тип: ОписаниеОбработкиРасшифровкиКомпоновкиДанных.
Расшифровка, применяемая к настройкам отчета.
---
Утомил ты меня.
---
так а что мне с этим делать? у меня отладчик показывает, что структура это поле формы
---
Наверное пора тебе на битву экстрасенсов сходить. Раз уж ты не хочешь свой говнокод показывать.
---
Очень хочу!

```1c
    Процедура Отчет()

    //Запрос
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

    МакетАнализ.Очистить();
    ОбластьЗаголовок.Параметры.Дата = ТекущаяДата();
    МакетАнализ.Вывести(ОбластьЗаголовок);
    МакетАнализ.Вывести(ОбластьШапкаТаблицы);
    МакетАнализ.НачатьАвтогруппировкуСтрок();

    ВыбИтог = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Если ВыбИтог.Следующий() Тогда
    ОбластьПодвалТаблицы.Параметры.Заполнить(ВыбИтог);
    ВыборкаДетальныеЗаписи = ВыбИтог.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    СтруктураРасшифровки = Новый Структура ("РасшифровкаОтказ","ОтчетОтказ");
    ОбластьДетальныхЗаписей.Параметры.РасшифровкаОтказ = СтруктураРасшифровки;

    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    МакетАнализ.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    КонецЕсли;

    МакетАнализ.ЗакончитьАвтогруппировкуСтрок();
    МакетАнализ.Вывести(ОбластьПодвалТаблицы);

    КонецПроцедуры

    &НаКлиенте
    Процедура МакетАнализОбработкаРасшифровки (Расшифровка, СтандартнаяОбработка)

    СтандартнаяОбработка = ложь;

    Если Расшифровка.РасшифровкаОтказ = "ОтчетОтказ" Тогда
```
---
Ну и где тут у тебя заполняется свойство "Расшифровка" для ячейки???
---
сделал, как выше писали, что еще добавить нужно ? подскажите
---
В макете указан параметр для свойства расшифровки на данной ячейке?
---
ДА. иначе ошибка бы выдавалась на
 ОбластьДетальныхЗаписей.Параметры.РасшифровкаОтказ
---
В результате запроса есть поле "РасшифровкаОтказ"?
Точно, что именно в той ячейке, на которую тыкаешь мышкой - заполнена расшифровка? Может она заполнена сосвсем в другой ячейке данной области.
---
Да, точно, у меня только только область пока расшифровывается (курсор меняется на лупу при наведении на ячейку). В запросе нет Расшифровка/РасшифровкаОтказ
---
Пока я размышляю - посмотри на свой код в части ОбластьПодвалТаблицы.
---
РезультатЗапроса Это серверная переменная модуля формы?
Скорее всего - да. Как и переменная "Макет".

А МакетАнализ - это имя реквизита формы? Или имя элемента формы?
---
(56) серверная переменная
я еще не понимаю, что это

процедура Отчет наклиенте
---
Откуда в эту процедуру Отчет() попадает РезультатЗапроса?
---
Запрос в этой же процедуре, я не стал добавлять, так как это точно не влияет на мою проблему.

```1c
    Макет = ПолучитьМакет("МакетДоговор");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    Договоры.Ссылка.НомерПоручения КАК НомерПоручения,
    Договоры.Договор КАК Договор,
    ВЫБОР
    КОГДА Договоры.Статус.Код = "000000005"
    ТОГДА 1
    ИНАЧЕ 0
    КОНЕЦ КАК Отказ,
    Договоры.Ссылка
    ИЗ
    Документ.Договоры КАК Договор"

    РезультатЗапроса = Запрос.Выполнить();

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    //и так далее выше
```
---
Ничего не смущает?
---
Скорее всего - да. Как и переменная "Макет".

МакетАнализ это реквизит формы, табличный документ, куда выводится отчет
---
Попридираюсь: Я задал два вопроса - про Макет и про МакетАнализ. Вы в ответе про Макет зачем-то сослались на МакетАнализ. Так не пойдет.

ОК, я понял, что МакетАнализ - это реквизит формы. Наверняка к нему привязан элемент формы (поле табличного документа) с точно таким же именем, да?
---
Ответил выше
---
что меня тут должно смущать? отчет выводится
---
Я разве в (58) писал тебе про смущение?
---
ну вы поняли, на что я отвечал, на 64
---
А да, следующий уровень, это в обработке ячейки показывать меню с действиями - открыть то-то\открыть другое\..и т.д
---
компоновка ? У вас отчет на скд построен разве ?...
---
Оригинально, да?
---
основной не на скд, который открываю расшифровкой - скд
---
На вот, в картинках
https://www.1s-up.ru/rasshifrovka-tablichnogo-dokumenta-na-upravljaemoj-forme-1s-8-3/
---
я делаю все то же самое. Я бы наверное сюда бы не обрался, если бы первая ссылка в гугле давала бы результат.
---
Ё.....
---
Делаю ровно так же. Спасибо огромное. Но у вас Расшифровка - структура, у меня почему-то поле формы, поэтому Возврат...
---
Ты нам не показал первую часть процедуры - запрос.
Может ты не показал и другую часть процедуры, где твоя расшифровка тупо очищается?
Я ж не зря про запрос спрашивал и про его поля...
---
```1c
    &НаКлиенте
    Процедура МакетАнализОбработкаРасшифровки (Расшифровка, СтандартнаяОбработка, ОбластьДетальныхЗаписей)

    Если Не ТипЗнч(Расшифровка) = Тип("Структура") Тогда
    Возврат
    КонецЕсли;
    СтандартнаяОбработка = ложь;

    Если Расшифровка.Параметры.РасшифровкаОтказ = "ОтчетОтказ" Тогда
    Отчет = Отчеты.Отчет2.Создать();
    ФормаОтчета = Отчет.ПолучитьФорму(, , );
    ФормаОтчета.Открыть();
    КонецПроцедуры
```
---
Я не про обработку расшифровки говорил.
Я говорил про присвоение/очищение значения Расшифровки в методе Отчет().

PS. КонецЕсли не написал. Что говорит о том, что это не реальные процедуры из твоего продакта, а ты их тупо прямо сейчас написал в тексте форума. Поэтому нет больше смысла пытаться тебе помогать. Ты нас тут всех за идиотов держишь.
---
на так перепиши:

```1c
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    ОбластьДетальныхЗаписей.Параметры.РасшифровкаОтказ = Новый Структура ("РасшифровкаОтказ","ОтчетОтказ");
```
---
Чел утверждает, что нигде потом в его коде этот параметр не перезаписывается. Но код не показывает.
---
Чел, я работаю в мфо, если ты еще не понял, что я не могу просто так взять и вставить код, то увы
---
Ну да, там только профессиональные ламеры работают. Согласен. Извини, чувак!!! Удачи там тебе всяческой! У тебя огромные перспективы!
---
начало карьеры, как ты понял, я еще супер зеленый, имеем то, что имеем
---
Тогда может сначала научишься говорить с людьми, к которым ты пришел за помощью, и прислушиваться к их советам?
---
я вроде нормально разговариваю, если ты пытаешься помочь, а не тупо троллишь, то зачем язвить?
---
в любом случае, спасибо, Турсунбек. Сори, если что, я супер уважительно к вам всем на самом деле
---
не помогло, тут дело именно в Расшифровке, которая передается в обработку расшифровки.
Расшифровка не принимает никакого значения, ни структуры, ни ячейки.
---
смотри выше готовый пример. Гадать, что и где у тебя переопределяется\не выводится как-то тоскливо.
---
Спасибо
---
Нашел ошибку. В обработку расшифровки не передавал Элемент!!!
Всем огромное спасибо за помощь!
---
Главное - что сам догадался и именно свой ответ отметил как правильный.
Потомки оценят.