Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Как узнать количество колонок в табличной части документа? (число прочтений - 13759 )
vlasssov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 27
Зарегистрирован: 23. Ноября 2011
Как узнать количество колонок в табличной части документа?
01. Декабря 2011 :: 10:41
Печать  
Как обратиться к конкретной колонке функция есть, а как можно подсчитать количество колонок?
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Как узнать количество колонок в табличной части документа?
Ответ #1 - 01. Декабря 2011 :: 10:51
Печать  
тебе для каких целей?
можно выгрузить в обычную таблицу, можно через метеданные
  
Наверх
wwwICQ  
IP записан
 
vlasssov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 27
Зарегистрирован: 23. Ноября 2011
Re: Как узнать количество колонок в табличной части документа?
Ответ #2 - 01. Декабря 2011 :: 11:31
Печать  
Anatol писал(а) 01. Декабря 2011 :: 10:51:
тебе для каких целей?
можно выгрузить в обычную таблицу, можно через метеданные

Решил я тут функцию написать, которая формирует план раскраски. Табличных частей много, чтобы унифицировать, хочу сделать в глобальном модуле функцию, назначающую цвет. Цвет хранить в таблице значений

Строка форматирования имеет вид

Код
Выбрать все
"()()()()()()(BRUSH[255])(BRUSH[NONE])(BRUSH[NONE])" 


Соответственно табличной части назначаем таблицу значений

Код
Выбрать все
Функция Форм_МассивЦвет()

	Н_Колонок = 7;

	МассивЦвет = СоздатьОбъект("ТаблицаЗначений");
	МассивЦвет.ВставитьКолонку("Цвет");

	Для к=1 По Н_Колонок Цикл
	    МассивЦвет.НоваяСтрока();
		МассивЦвет.Цвет = "()";
		МассивЦвет.Позиция = к;
	КонецЦикла;

КонецФункции 



А потом формируем строку по этим колонкам

Код
Выбрать все
Функция Форм_СтрокаФормат()
	перем ЦветУ
	Для к=1 По МассивЦвет.КоличествоСтрок() Цикл
		МассивЦвет.ПолучитьСтрокуПоНомеру(1);
		ЦветУ = ЦветУ+"(BRUSH[" +МассивЦвет.Цвет+ "])" ;
	КонецЦикла;

	Возврат ЦветУ;
КонецФункции

Функция Форм_ЗадатьЦветКолонка(Номер,Цвет)

		МассивЦвет.ПолучитьСтрокуПоНомеру(Номер);
		МассивЦвет.Цвет = 2345;
		Возврат Форм_СтрокаФормат();

КонецФункции 



  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как узнать количество колонок в табличной части документа?
Ответ #3 - 02. Декабря 2011 :: 04:55
Печать  
vlasssov писал(а) 01. Декабря 2011 :: 10:41:
Как обратиться к конкретной колонке функция есть, а как можно подсчитать количество колонок?

В ФормЕкс есть вроде такой метод
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
vlasssov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 27
Зарегистрирован: 23. Ноября 2011
Re: Как узнать количество колонок в табличной части документа?
Ответ #4 - 02. Декабря 2011 :: 11:19
Печать  
artbear писал(а) 02. Декабря 2011 :: 04:55:
vlasssov писал(а) 01. Декабря 2011 :: 10:41:
Как обратиться к конкретной колонке функция есть, а как можно подсчитать количество колонок?

В ФормЕкс есть вроде такой метод

В помощи дан пример

Цитата:
Процедура Выполнить()
       РФорма = СоздатьОбъект("РасширениеФормы");
       РФорма.ПоложениеКолонкиТаблицы("Табл",3,2);
       РФорма.ПоложениеКолонкиТаблицы("Табл",4,1);
       Табл.НоваяКолонка();
       Табл.УдалитьКолонку(Табл.КоличествоКолонок());
КонецПроцедуры




А про табличную часть документа ничего не сказано. При расширенную форму вот что есть
Цитата:
Синтаксис: РаскрашиватьТаблицу(Имя)

Параметры:

Имя - тип: Строка. Идентификатор таблицы на форме. Для многострочной части формы необходимо использовать идентификатор - "МногострочнаяЧасть".
Описание: Разрешает раскраску указанной таблицы при включенной частичной раскраске. Метод работает только после физического открытия окна формы.

Пример:

ФормаРасш = СоздатьОбъект("РасширениеФормы");
ФормаРасш.РаскрашиватьТаблицу("Табл");
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Как узнать количество колонок в табличной части документа?
Ответ #5 - 02. Декабря 2011 :: 11:52
Печать  
vlasssov писал(а) 02. Декабря 2011 :: 11:19:
А про табличную часть документа ничего не сказано. При расширенную форму вот что есть
Цитата:
Синтаксис: РаскрашиватьТаблицу(Имя)

Параметры:

Имя - тип: Строка. Идентификатор таблицы на форме. Для многострочной части формы необходимо использовать идентификатор - "МногострочнаяЧасть".
Описание: Разрешает раскраску указанной таблицы при включенной частичной раскраске. Метод работает только после физического открытия окна формы.

Пример:

ФормаРасш = СоздатьОбъект("РасширениеФормы");
ФормаРасш.РаскрашиватьТаблицу("Табл");

  
Наверх
wwwICQ  
IP записан
 
vlasssov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 27
Зарегистрирован: 23. Ноября 2011
Re: Как узнать количество колонок в табличной части документа?
Ответ #6 - 02. Декабря 2011 :: 12:22
Печать  
Anatol писал(а) 02. Декабря 2011 :: 11:52:
vlasssov писал(а) 02. Декабря 2011 :: 11:19:
А про табличную часть документа ничего не сказано. При расширенную форму вот что есть
Цитата:
Синтаксис: РаскрашиватьТаблицу(Имя)

Параметры:

Имя - тип: Строка. Идентификатор таблицы на форме. Для многострочной части формы необходимо использовать идентификатор - "МногострочнаяЧасть".
Описание: Разрешает раскраску указанной таблицы при включенной частичной раскраске. Метод работает только после физического открытия окна формы.

Пример:

ФормаРасш = СоздатьОбъект("РасширениеФормы");
ФормаРасш.РаскрашиватьТаблицу("Табл");



Ну и как на нее ссылку получить, чтобы переменной присвоить?
  
Наверх
 
IP записан
 
vlasssov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 27
Зарегистрирован: 23. Ноября 2011
Re: Как узнать количество колонок в табличной части документа?
Ответ #7 - 06. Декабря 2011 :: 06:00
Печать  
Сообщить(МногострочнаяЧасть<<?>>.КоличествоКолонок());
{Документ.Опер_ОтчетСуточныйГСМ.Форма.Модуль(9)}: Переменная не определена (МногострочнаяЧасть)
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Как узнать количество колонок в табличной части документа?
Ответ #8 - 06. Декабря 2011 :: 06:42
Печать  
Код
Выбрать все
Сообщить(Метаданные.Документ(Вид()).РеквизитТабличнойЧасти()); 

  
Наверх
wwwICQ  
IP записан
 
pari
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 08. Мая 2008
Re: Как узнать количество колонок в табличной части документа?
Ответ #9 - 06. Декабря 2011 :: 13:15
Печать  
vlasssov писал(а) 01. Декабря 2011 :: 10:41:
Как обратиться к конкретной колонке функция есть, а как можно подсчитать количество колонок?

Так вроде работает (первое сообщение, критикуйте):
Код
Выбрать все
Процедура ПослеОткрытия()
	  ФормаРасш = СоздатьОбъект("РасширениеФормы");
	  Инд=0;
	  Пока ФормаРасш.ПолучитьШиринуКолонки("МногострочнаяЧасть",Инд) > 0 Цикл
		Инд=Инд+1;
	  КонецЦикла;
	  Сообщить("КоличествоКолонок="+Инд);//включ. нулевую
КонецПроцедуры 

  
Наверх
 
IP записан
 
vlasssov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 27
Зарегистрирован: 23. Ноября 2011
Re: Как узнать количество колонок в табличной части документа?
Ответ #10 - 07. Декабря 2011 :: 11:40
Печать  
pari писал(а) 06. Декабря 2011 :: 13:15:
vlasssov писал(а) 01. Декабря 2011 :: 10:41:
Как обратиться к конкретной колонке функция есть, а как можно подсчитать количество колонок?

Так вроде работает (первое сообщение, критикуйте):
Код
Выбрать все
Процедура ПослеОткрытия()
	  ФормаРасш = СоздатьОбъект("РасширениеФормы");
	  Инд=0;
	  Пока ФормаРасш.ПолучитьШиринуКолонки("МногострочнаяЧасть",Инд) > 0 Цикл
		Инд=Инд+1;
	  КонецЦикла;
	  Сообщить("КоличествоКолонок="+Инд);//включ. нулевую
КонецПроцедуры 



Отлично!!!  Поцелуй
  
Наверх
 
IP записан
 
Igor YN
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 13. Мая 2011
Re: Как узнать количество колонок в табличной части документа?
Ответ #11 - 23. Ноября 2012 :: 06:23
Печать  
А как узнать количество ВИДИМЫХ строк в Мн.части, например, справочника.
В методе "ПолучитьКоординатыЯчейки" есть параметр
<НомерСтроки> - (Число Номер строки таблицы, начиная с нуля, для которой необходимо получить координаты. Для многострочной части формы - это номер среди видимых в данный момент на экране строк.
А сколько их, видимых в даннвй момент?
  
Наверх
 
IP записан
 
Igor YN
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 13. Мая 2011
Re: Как узнать количество колонок в табличной части документа?
Ответ #12 - 23. Ноября 2012 :: 06:32
Печать  
А вообще, мне хотелось, чтобы при движении мыши выделялась цветом строка Мн.части. Не синим, одна колонка, а вся и любым. Вот извращаюсь...
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Как узнать количество колонок в табличной части документа?
Ответ #13 - 23. Ноября 2012 :: 14:09
Печать  
Igor YN писал(а) 23. Ноября 2012 :: 06:32:
А вообще, мне хотелось, чтобы при движении мыши выделялась цветом строка Мн.части. Не синим, одна колонка, а вся и любым. Вот извращаюсь...

BRUSH_S
  
Наверх
ICQ  
IP записан
 
Igor YN
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 13. Мая 2011
Re: Как узнать количество колонок в табличной части документа?
Ответ #14 - 24. Ноября 2012 :: 17:08
Печать  
BRUSH_S - это подсвтека активной строки, а при движении мыши строка не автивизиреутся. В том-то и задачка...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как узнать количество колонок в табличной части документа?
Ответ #15 - 26. Ноября 2012 :: 05:07
Печать  
Дык получитьатрибутпокоординатам, сделать активным строку таб.части.. делов то.
  
Наверх
 
IP записан
 
Igor YN
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 13. Мая 2011
Re: Как узнать количество колонок в табличной части документа?
Ответ #16 - 26. Ноября 2012 :: 07:44
Печать  
Я получу
Атоибут = РФорма.ПолучитьАтрибутПоКоординатам(Хм, Ум).Идентификатор будет = "МногострочнаяЧасть".
А как строку-то активизировать?
  
Наверх
 
IP записан
 
Igor YN
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 13. Мая 2011
Re: Как узнать количество колонок в табличной части документа?
Ответ #17 - 26. Ноября 2012 :: 07:59
Печать  
Есть ещё метод
РФорма.УстановитьТекущуюЯчейку("МногострочнаяЧасть", Хм, Ум),
но уж больно чУдно работает, особенно если Мн.Ч. с горизонтальной прокруткой. Дёргается туда-сюда, моргает... Красиво, конечно, но не правильно)).
  
Наверх
 
IP записан
 
Igor YN
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 13. Мая 2011
Re: Как узнать количество колонок в табличной части документа?
Ответ #18 - 26. Ноября 2012 :: 08:15
Печать  
"чуднО" работает...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как узнать количество колонок в табличной части документа?
Ответ #19 - 26. Ноября 2012 :: 08:26
Печать  
Лови, ничего не "моргает"
  

test_020.rar ( 22 KB | Загрузки )
Наверх
 
IP записан
 
Igor YN
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 13. Мая 2011
Re: Как узнать количество колонок в табличной части документа?
Ответ #20 - 26. Ноября 2012 :: 10:00
Печать  
А попробуй "Машу" "Наташу" сделать широкими, чтобы прокрутка появилась и поезди мышью по "N", или "Маше". Прыгает на "Наташу" иногда...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как узнать количество колонок в табличной части документа?
Ответ #21 - 26. Ноября 2012 :: 10:08
Печать  
Устанавливай в одну колонку всегда текущее значение, ничего "прыгать" не будет.
Т.е, не меняй координату х :

Код
Выбрать все
Процедура ПриДвиженииМыши(сост, х, у)
	Атр = РасшФ.ПолучитьАтрибутПоКоординатам(х,у);
	Если ТипЗначенияСтр(Атр) = "АтрибутФормы" Тогда
		Если Атр.Заголовок = "МногострочнаяЧасть" Тогда
			Верх=0;Низ=0;Лево=0;
			РасшФ.ПолучитьКоординатыТекущейЯчейки("МногострочнаяЧасть",Верх,Лево,Низ);
			Если (у<Верх)или (у>Низ) Тогда
				РасшФ.УстановитьТекущуюЯчейку("МногострочнаяЧасть",Лево,у);
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры 




  
Наверх
 
IP записан
 
Igor YN
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 13. Мая 2011
Re: Как узнать количество колонок в табличной части документа?
Ответ #22 - 26. Ноября 2012 :: 10:57
Печать  
Да пробовал, и постоянное значение "х" задавал...
Может у меня чего с Формексом? 2.0.5.101.
Даже на твоем примере прыгает, и вообще неадекватно работает...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как узнать количество колонок в табличной части документа?
Ответ #23 - 26. Ноября 2012 :: 11:03
Печать  
Ну покрась текущую ячейку тем же фоном, что и активная строка - и ничего не увидишь вообще Улыбка))

А так, весьма странное желание менять текущую строку при движении мыши.



  
Наверх
 
IP записан
 
Igor YN
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 13. Мая 2011
Re: Как узнать количество колонок в табличной части документа?
Ответ #24 - 26. Ноября 2012 :: 11:16
Печать  
1. Ой, а как покрасить текущую ячейку?
2. Желание обусловлено вот чем - у меня в справочнике "Наименование" не самая левая колонка, вот так!, и чтобы развернуть группу люди активизируют строку, она подсвечивается и жмут на значек Группы.
Перемесчтить "Наименование" влево? - куча других цифр справа, фиг сразу врубишься, где чего. Раскрасить? - калейдоскоп получается...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как узнать количество колонок в табличной части документа?
Ответ #25 - 26. Ноября 2012 :: 11:18
Печать  
Ладно, так сделай:
Код
Выбрать все
Процедура ПриДвиженииМыши(сост, х, у)
	Атр = РасшФ.ПолучитьАтрибутПоКоординатам(х,у);
	Если ТипЗначенияСтр(Атр) = "АтрибутФормы" Тогда
		Если Атр.Заголовок = "МногострочнаяЧасть" Тогда
			Верх=0;Низ=0;Лево=0;
			РасшФ.ПолучитьКоординатыТекущейЯчейки("МногострочнаяЧасть",Верх,Лево,Низ);
			АктЭлемент = Форма.АктивныйЭлемент();
			Если (у<Верх)или (у>Низ) Тогда
				РасшФ.УстановитьТекущуюЯчейку("МногострочнаяЧасть",Лево,у);
				Активизировать(АктЭлемент,0);
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры 

  
Наверх
 
IP записан
 
Igor YN
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 13. Мая 2011
Re: Как узнать количество колонок в табличной части документа?
Ответ #26 - 26. Ноября 2012 :: 11:25
Печать  
Придётся... Т.е. Формекс касячит, а я думал я)).
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать