![]() |
![]() |
![]() |
|
Кто разгалает загадку? - текущая область поля табличного документа где меняется? | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
05.05.16
✎
14:48
|
&НаКлиенте
Процедура РасписаниеРаботыПриАктивизацииОбласти(Элемент) Если Не ЭтаФорма.ТекущийЭлемент = Элемент Тогда Возврат; КонецЕсли; Если Элемент.ТекущаяОбласть.Низ - Элемент.ТекущаяОбласть.Верх > 3 Тогда Элемент.ТекущаяОбласть = РасписаниеРаботы.Область(Элемент.ТекущаяОбласть.Низ-3,Элемент.ТекущаяОбласть.Лево,Элемент.ТекущаяОбласть.Низ,Элемент.ТекущаяОбласть.Право); КонецЕсли; Если Элемент.ТекущаяОбласть.Право - Элемент.ТекущаяОбласть.Лево > 0 Тогда Элемент.ТекущаяОбласть = РасписаниеРаботы.Область(Элемент.ТекущаяОбласть.Низ-3,Элемент.ТекущаяОбласть.Право,Элемент.ТекущаяОбласть.Низ,Элемент.ТекущаяОбласть.Право); КонецЕсли; Если ТекущаяКолонкаРасписания = 0 Тогда ТекущаяКолонкаРасписания = 3; КонецЕсли; Если ТекущаяСтрокаРасписания = 0 Тогда ТекущаяСтрокаРасписания = 3; КонецЕсли; ОбластьРасписания = РасписаниеРаботы.Область(1,ТекущаяКолонкаРасписания,2,ТекущаяКолонкаРасписания); ОбластьРасписания.Шрифт = Новый Шрифт(ОбластьРасписания.Шрифт,,,Ложь); ОбластьРасписания = РасписаниеРаботы.Область(ТекущаяСтрокаРасписания,2,ТекущаяСтрокаРасписания,2); ОбластьРасписания.Шрифт = Новый Шрифт(ОбластьРасписания.Шрифт,,,Ложь); ОбластьРасписания = РасписаниеРаботы.Область(ТекущаяСтрокаРасписания,ТекущаяКолонкаРасписания,ТекущаяСтрокаРасписания+3,ТекущаяКолонкаРасписания); ОбластьРасписания.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1); ОбластьРасписания.ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1); Если Элемент.ТекущаяОбласть.Право >= 3 И Элемент.ТекущаяОбласть.Низ-3 >= 3 Тогда //И Элемент.ТекущаяОбласть.Низ <= РасписаниеРаботы.ВысотаТаблицы //вот это условие начинает глючить //И Элемент.ТекущаяОбласть.Право <= РасписаниеРаботы.ШиринаТаблицы Тогда ОбластьРасписания = РасписаниеРаботы.Область(1,Элемент.ТекущаяОбласть.Право,2,Элемент.ТекущаяОбласть.Право); ОбластьРасписания.Шрифт = Новый Шрифт(ОбластьРасписания.Шрифт,,,Истина); ОбластьРасписания = РасписаниеРаботы.Область(Элемент.ТекущаяОбласть.Низ-3,2,Элемент.ТекущаяОбласть.Низ-3,2); ОбластьРасписания.Шрифт = Новый Шрифт(ОбластьРасписания.Шрифт,,,Истина); ОбластьРасписания = РасписаниеРаботы.Область(Элемент.ТекущаяОбласть.Низ-3,Элемент.ТекущаяОбласть.Право,Элемент.ТекущаяОбласть.Низ,Элемент.ТекущаяОбласть.Право); ОбластьРасписания.ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,3); ОбластьРасписания.ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,3); ТекущаяСтрокаРасписания = Элемент.ТекущаяОбласть.Низ-3; ТекущаяКолонкаРасписания = Элемент.ТекущаяОбласть.Право; КонецЕсли; //РасписаниеРаботыПриАктивизацииОбластиНаСервере(СеткаПриема,Элемент.ТекущаяОбласть.Расшифровка); КонецПроцедуры на УФ поле табличного документа - выделяю текущую область ТД в таком виде нормально выделяет - даже за пределами ширины и высоты исходного ТД "РасписаниеРаботы" если же добавить условие на высоту и ширину - то при выделении области за границами ТД - обработчик начинает срабатывать два раза и первый раз область именн а та которую выделяю а второй - на границе документа между КонцомПроцедуры и началом выполнения второго события - замер не видит никакого выполненного кода |
|||
1
RomaH
naïve
05.05.16
✎
14:51
|
http://cloud.screenpresso.com/Q3pJf/2016-05-05_14h49_19.png
вот так картинка выглядит без доп условия |
|||
2
RomaH
naïve
05.05.16
✎
14:52
|
а так - с условием
http://cloud.screenpresso.com/2LZLb/2016-05-05_14h47_47.png Если Элемент.ТекущаяОбласть.Право >= 3 И Элемент.ТекущаяОбласть.Низ-3 >= 3 И Элемент.ТекущаяОбласть.Низ <= РасписаниеРаботы.ВысотаТаблицы //вот это условие начинает глючить И Элемент.ТекущаяОбласть.Право <= РасписаниеРаботы.ШиринаТаблицы Тогда |
|||
3
RomaH
naïve
05.05.16
✎
14:54
|
почему добавление условие - не выполнение того что внутри "Если" вызывает обраотчик второй раз и текущую область меняет?
|
|||
4
Карупян
05.05.16
✎
15:13
|
Может сначала картинки на нормальный сайт выложишь? чтоб не качать
|
|||
5
RomaH
naïve
06.05.16
✎
07:33
|
неужели изменение форматирования области ячеек вызывает смену текущей области в поле ТД?
|
|||
6
Mort
06.05.16
✎
08:11
|
Вероятно, есть какой-то неявный вызов сервера.
|
|||
7
Mort
06.05.16
✎
08:13
|
А по теме, 1С для этой темы создало вполне годный элемент управления (планировщик), гораздо лучше извращений с табличным доком.
|
|||
8
ИС-2
06.05.16
✎
09:01
|
(5) да, текущая область меняется сама.
Была подобная проблема. Табличный документ, событие при активации ячейки вызывалось при программном выводе в таб. док и текущая область менялась |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |