|
Обход таблицы на клиенте | ☑ | ||
---|---|---|---|---|
0
IoannVic
02.10.14
✎
10:57
|
Знаю, что так делать не стоит, но у меня возникли особые обстоятельства). Выгружаю таблицу значений в Excel делаю все это с помощью Com-объект на сервере. Но возникла проблема при клиент-серверном использование не могу работать с Com-объектами, потому как сервер на Линуксе и соответственно ругается на Com. Получается замкнутый круг. Может быть есть какие-либо идеи, как из этой петли выбраться. И как наиболее правильно все это сделать
|
|||
1
Wobland
02.10.14
✎
10:58
|
выружай на клиенте
|
|||
2
IoannVic
02.10.14
✎
11:00
|
(1) Спасибо, друг). Вопрос в том, как правильно обойти таблицу значений?
|
|||
3
Defender aka LINN
02.10.14
✎
11:01
|
(2) А что, указом правительства цикл Для Каждого уже запрещен как пропагандирующий курение и прочий гомосексуализм?
|
|||
4
Chai Nic
02.10.14
✎
11:01
|
А табличным документом воспользоваться не проще? Или надо ексель-специфичные примочки?
|
|||
5
Остап Сулейманович
02.10.14
✎
11:02
|
(2) Табличную часть твоего объекта прекрасно можно заполнить на сервере, а обойти на клиенте.
|
|||
6
IoannVic
02.10.14
✎
11:03
|
(4) Не проще, к сожалению. Таблица специфическая. Колонки формируются программно и рассчитываются динамически
|
|||
7
IoannVic
02.10.14
✎
11:04
|
(3) А что обходить? ТаблицаЗначений СП
Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). |
|||
8
antoneus
02.10.14
✎
11:04
|
Сделать ея реквизитом формы не предлагать?
|
|||
9
IoannVic
02.10.14
✎
11:05
|
(5) Вопроса к заполнению нет. Как обойти на клиенте?
|
|||
10
IoannVic
02.10.14
✎
11:05
|
(8) Она есть как реквизит формы. Как ее обойти?))) (по-моему в который раз уже)
|
|||
11
antoneus
02.10.14
✎
11:06
|
Для каждого ТекСтрока из... не?
|
|||
12
Defender aka LINN
02.10.14
✎
11:07
|
(10) см (3)
|
|||
13
IoannVic
02.10.14
✎
11:07
|
(11) Из чего?
|
|||
14
Остап Сулейманович
02.10.14
✎
11:07
|
(9) Так же как любую другую табличную часть.
Для каждого ... Из ... Только в варианте "Колонки формируются программно и рассчитываются динамически" городить универсальную ТЧ может оказаться невыполнимым |
|||
15
Defender aka LINN
02.10.14
✎
11:07
|
(11) Батюшка не велит, похоже.
|
|||
16
Defender aka LINN
02.10.14
✎
11:08
|
(13) Из твоего, ля, реквизита, ля!
|
|||
17
antoneus
02.10.14
✎
11:08
|
из ИдентификаторМоейТаблицы (это если она реквизит формы).
|
|||
18
IoannVic
02.10.14
✎
11:11
|
(16) (17) Тип какой она будет иметь?
|
|||
19
Defender aka LINN
02.10.14
✎
11:12
|
(18) Какой надо
|
|||
20
IoannVic
02.10.14
✎
11:13
|
(19) Какой? Что это ТаблицаФорма, ТаблицаЗначений, ДанныеКоллекции. Что из этого?
|
|||
21
Defender aka LINN
02.10.14
✎
11:15
|
(20) Отладчик тоже по п.2 проходит?
|
|||
22
hhhh
02.10.14
✎
11:18
|
(20) вам там видней. Главное имя реквизита
|
|||
23
hhhh
02.10.14
✎
11:19
|
(20) колонки у этого реквизита все создали?
|
|||
24
Жан Пердежон
02.10.14
✎
11:20
|
пятнично
|
|||
25
IoannVic
02.10.14
✎
11:21
|
Вот код
Процедура СформироватьТаблицуФормы(Канал, ЭтаФорма, ТаблицаЗначений, ДатаНачала, ДатаОкончания) Экспорт ГруппаСтраницаКанала = ЭтаФорма.Элементы.Добавить(Строка(Канал), Тип("ГруппаФормы"), ЭтаФорма.Элементы.ГруппаСтраницы); ГруппаСтраницаКанала.Вид = ВидГруппыФормы.Страница; ГруппаСтраницаКанала.Заголовок = Строка(Канал); МассивДобавляемойТаблицыЗначений = Новый Массив; МассивТипаТаблицаЗначений = Новый Массив; МассивТипаТаблицаЗначений.Добавить(Тип("ТаблицаЗначений")); ДопустимыйТипТаблицаЗначений = Новый ОписаниеТипов(МассивТипаТаблицаЗначений); МассивДобавляемойТаблицыЗначений.Добавить(Новый РеквизитФормы("ТаблицаЗначений"+Строка(Канал), ДопустимыйТипТаблицаЗначений)); ЭтаФорма.ИзменитьРеквизиты(МассивДобавляемойТаблицыЗначений); ТаблицаФормы = ЭтаФорма.Элементы.Добавить("ТаблицаЗначений"+Строка(Канал), Тип("ТаблицаФормы"),ГруппаСтраницаКанала); ТаблицаФормы.ПутьКДанным = "ТаблицаЗначений"+Строка(Канал); ТаблицаФормы.КоманднаяПанель.Видимость = Ложь; ИмяТаблицы = "ТаблицаЗначений"+Строка(Канал); МассивДобавляемыхРеквизитов = Новый Массив; Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения,ИмяТаблицы ,Колонка.Заголовок)); КонецЦикла; ЭтаФорма.ИзменитьРеквизиты(МассивДобавляемыхРеквизитов); НомерКолонки = 1; Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл НоваяКолонка = ЭтаФорма.Элементы.Добавить(ИмяТаблицы + Колонка.Имя, Тип("ПолеФормы"), ЭтаФорма.Элементы[ИмяТаблицы]); НоваяКолонка.Заголовок = Колонка.Заголовок; НоваяКолонка.ПутьКДанным = ИмяТаблицы + "." + Колонка.Имя; НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода; НоваяКолонка.РежимРедактирования = РежимРедактированияКолонки.ВходПриВводе; НоваяКолонка.ШрифтЗаголовка = ШрифтыСтиля.МелкийШрифтТекста; НоваяКолонка.Шрифт = ШрифтыСтиля.МелкийШрифтТекста; НоваяКолонка.РастягиватьПоГоризонтали = Ложь; Если НомерКолонки = 1 Тогда НоваяКолонка.Ширина = 20; ИначеЕсли НомерКолонки>1 и НомерКолонки <= 3 тогда НоваяКолонка.Ширина = 10; ИначеЕсли НомерКолонки>3 и НомерКолонки <= 4 тогда НоваяКолонка.Ширина = 10; НоваяКолонка.УстановитьДействие("ПриИзменении", "ПриИзмененииСтоимости"); ИначеЕсли НомерКолонки>4 и НомерКолонки<=(5 + (ДатаОкончания-ДатаНачала)/(3600*24)) тогда НоваяКолонка.Ширина = 4; НоваяКолонка.УстановитьДействие("ПриИзменении", "ПриИзменениеСтроки"); ИначеЕсли НомерКолонки>(5 + (ДатаОкончания-ДатаНачала)/(3600*24)) и НомерКолонки<=(6 + (ДатаОкончания-ДатаНачала)/(3600*24)) тогда НоваяКолонка.Ширина = 10; ИначеЕсли НомерКолонки>(6 + (ДатаОкончания-ДатаНачала)/(3600*24)) и НомерКолонки<=(7 + (ДатаОкончания-ДатаНачала)/(3600*24)) тогда НоваяКолонка.Ширина = 10; ИначеЕсли НомерКолонки>(7 + (ДатаОкончания-ДатаНачала)/(3600*24)) и НомерКолонки<=(8 + (ДатаОкончания-ДатаНачала)/(3600*24)) тогда НоваяКолонка.Ширина = 10; ИначеЕсли НомерКолонки>(8 + (ДатаОкончания-ДатаНачала)/(3600*24)) и НомерКолонки<=(9 + (ДатаОкончания-ДатаНачала)/(3600*24)) тогда НоваяКолонка.Ширина = 10; НоваяКолонка.УстановитьДействие("ПриИзменении", "ПриИзмененииСкидки"); ИначеЕсли НомерКолонки>(9 + (ДатаОкончания-ДатаНачала)/(3600*24)) и НомерКолонки<=(10 + (ДатаОкончания-ДатаНачала)/(3600*24)) тогда НоваяКолонка.Ширина = 10; Иначе НоваяКолонка.Ширина = 10; КонецЕсли; НомерКолонки = НомерКолонки + 1; КонецЦикла; ЭтаФорма[ИмяТаблицы].Загрузить(ТаблицаЗначений); КонецПроцедуры Я зная имя таблицы кким образом могу получить ее на клиенте |
|||
26
IoannVic
02.10.14
✎
11:22
|
(22) Есть имя реквизита. Как из этого получить таблицу?
|
|||
27
IoannVic
02.10.14
✎
11:22
|
(21) Вот это прям достойный ответ. Что мне в отладчике откапывать. В какую сторону рыть?
|
|||
28
Defender aka LINN
02.10.14
✎
11:25
|
(26) НАХРЕНА?
|
|||
29
IoannVic
02.10.14
✎
11:27
|
(28) Чтобы обойти ее. Я понять не могу что мне обойти, если таблица формируется программно. Я не могу просто взять и написать ее имя. Мне нужно ккак-то получить реквизит по имени. Как это сделать?
|
|||
30
antoneus
02.10.14
✎
11:28
|
У тебя же самого в коде написано
ЭтаФорма[ИмяТаблицы] |
|||
31
antoneus
02.10.14
✎
11:29
|
Или через точку
ЭтаФорма.ИдентификаторМоейТаблицы |
|||
32
IoannVic
02.10.14
✎
11:35
|
(30) (31) Спасибо, я так изначально пробовал, но ругался на индекс. Не мог врубиться, что нетак. А сейчас понял, что я ему не строку туда подпихивал. Мляяяя, я - тупой, прям п***а. Всем спасибо, кто смог выдержать эти потоки бреда))
|
|||
33
antoneus
02.10.14
✎
11:36
|
(32) да и не такое выдерживали)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |