|
Табличная часть документа: как узнать где я? | ☑ | ||
---|---|---|---|---|
0
webDoktor
23.10.11
✎
11:00
|
Всем привет :)
1С 8.1: Предприятие. Есть документ - "Документ". Есть табличная часть в документе - "Таблица". В "Таблица" находится 12 колонок/полей/столбцов. Каждый из столбцов, является символьным представлением месяца (Январь - 01, Февраль - 02 и прочее). Необходимо, при переборе строк и столбцов, узнать индекс текущей строки и текущего столбца. Делаю так: Для Каждого ТекСтрока Из Выборка.Таблица Цикл ИндексСтроки = ТекСтрока.НомерСтроки; КонецЦикла; Как быть с индексом колонки? |
|||
1
Ненавижу 1С
гуру
23.10.11
✎
11:04
|
во-первых
ИндексСтроки = ТекСтрока.НомерСтроки-1; во-вторых у коллекции колонок есть метод Индекс |
|||
2
webDoktor
23.10.11
✎
11:14
|
(2) - Индекс(<Элемент>)
Что пишется в элементе? Вот кусок моей программы: Для Каждого ТекСтрока Из Выборка.Таблица Цикл Если ТекСтрока.НомерСтроки = 1 Тогда Для Каждого Ячейка Из ТекСтрока Цикл Если Прав(Ячейка, 2) = "01" Тогда ИндексКолонки = Выборка.Таблица.Индекс(Ячейка); МаcМ1.Добавить(ИндексКолонки); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; Ругается на несоответствие типа данных... |
|||
3
КонецЕсли
23.10.11
✎
11:37
|
Для Каждого Ячейка Из Выборка.Таблица.Колонки Цикл
Если Прав(Ячейка.Имя, 2) = "01" Тогда далее вообще не понял. Получение значения из ячейки: ЗначениеВЯчейке=ТекСтрока[Ячейка.Имя] |
|||
4
КонецЕсли
23.10.11
✎
11:52
|
Индекс колонки в твоём случае:
Выборка.Таблица.Колонки.Индекс(Ячейка) |
|||
5
DrShad
23.10.11
✎
11:52
|
(2) и обозначение месяца как 01 не кошерно
|
|||
6
webDoktor
23.10.11
✎
11:55
|
(5) - А как лучше обозначать?
(4): {Документ.Документ.Форма.ФормаОтчета(46)}: Поле объекта не обнаружено (Колонки) Индекс = Выборка.Таблица.Колонки.Индекс(Ячейка); |
|||
7
Мимохожий Однако
23.10.11
✎
11:58
|
(6)январь, февраль, март, ...:-)
Судя по коду у тебя не табличная часть документа, а табличное поле на форме. |
|||
8
КонецЕсли
23.10.11
✎
12:03
|
(6) не силен в телепатии.
|
|||
9
webDoktor
23.10.11
✎
12:38
|
Такс, ребятки... Что-то ничего не выходит. Где можно новый мозг купить, по дешевке? ;-)
Делаю выборку всех документов: Выборка = Документы.Документ.Выбрать(); Пока Выборка.Следующий() Цикл КонецЦикла; В каждом документе есть журнал (там отмечается число {формат: день.месяц} когда сотрудник предприятия не явился на работу). Мне нужно сделать отчет по месяцам... То есть, чтобы выводился список всех цехов и было написано, что в Январе всего пропущено столько то часов работы, в феврале столько то и так далее... Я понятно объясняю? То есть, я так понимаю, что нам нужно узнать сначала какие колонки в журнале соответствуют январю (пока остановимся на январе), верно?! Чтобы узнать, мы делаем так: Пока Выборка.Следующий() Цикл Для Каждого ТекСтрокаЖурнала Из Выборка.Таблица Цикл Для Каждого Ячейка Из ТекСтрокаЖурнала Цикл Если Прав(Ячейка, 2) = "01" Тогда КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; Теперь, нужно занести индекс этого столбца (чтобы потом сложить все пропущенные часы и вывести в отчете, как за один месяц) в массив, правильно? Пока Выборка.Следующий() Цикл Для Каждого ТекСтрокаЖурнала Из Выборка.Таблица Цикл Для Каждого Ячейка Из ТекСтрокаЖурнала Цикл Если Прав(Ячейка, 2) = "01" Тогда МассивЯнварь.Добавить(КАК_УЗНАТЬ_ИНДЕКС_СТОЛБЦА); КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; |
|||
10
Beduin
23.10.11
✎
12:41
|
(9)
Если Прав(Ячейка, 2) = "01" Тогда КонецЕсли; В Ячейка при этом тип (Строка таблицы документа)? |
|||
11
webDoktor
23.10.11
✎
12:46
|
(10) - Тип строка.
|
|||
12
Beduin
23.10.11
✎
12:49
|
(11) А Выборка.Таблица тогда какой тип?
|
|||
13
webDoktor
23.10.11
✎
12:56
|
(12) - А какой тип у табличной части документа?
Таблица - это название табличной части документа. |
|||
14
Beduin
23.10.11
✎
12:58
|
(13) Тогда почему ты работаешь со строкой табличной части "Ячейка"
как со строкой? "Прав(Ячейка, 2) = "01"" |
|||
15
Beduin
23.10.11
✎
13:01
|
(14) А, ты значения из строки выбираешь. Вижу
|
|||
16
IamAlexy
23.10.11
✎
13:02
|
хорощая тема
сижу программирую в конфигураторе. как узнать "кто я?" |
|||
17
Мимохожий Однако
23.10.11
✎
13:02
|
Можно выгрузить колонки из табличной части в таблицу значений,а в ней использовать коллекцию колонок таблицы значений.
ЗЫ. Не обязательно повторять вопрос, если сделал ссылку в скобках :-) |
|||
18
webDoktor
23.10.11
✎
13:05
|
(17) - Пожалуйста, можешь дать простенький примерчик? Чтобы я знал от чего начать...
|
|||
19
Мимохожий Однако
23.10.11
✎
13:10
|
Я сначала открыл СП (синтаксис - помощник).
.. Табличная часть (Tabular section) ВыгрузитьКолонки (UnloadColumns) Синтаксис: ВыгрузитьКолонки(<Колонки>) Параметры: <Колонки> (необязательный) Тип: Строка. Список колонок для выгрузки в формате: "Колонка1, Колонка2...". Если список не задан, то будут выгружены все колонки. Возвращаемое значение: Тип: ТаблицаЗначений. Описание: Создает таблицу значений с заданным списком колонок. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Выгружается только структура табличной части, данные не выгружаются. ... получаем ТЗ = ТвойДокумент.Таблица.ВыгрузитьКолонки(); . Потом перешел по ссылке ТаблицаЗначений. ... КоллекцияКолонокТаблицыЗначений (ValueTableColumnCollection) Элементы коллекции: КолонкаТаблицыЗначений Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции. Возможно обращение к элементу коллекции посредством оператора [...]. В качестве аргумента передается индекс элемента (нумерация с 0). Свойства: <Имя колонки> (<Column name>) Методы: Вставить (Insert) Добавить (Add) Индекс (IndexOf) Количество (Count) Найти (Find) Очистить (Clear) Получить (Get) Сдвинуть (Move) Удалить (Delete) Описание: Представляет собой коллекцию колонок таблицы значений. Доступ к объекту осуществляется через свойство Колонки таблицы значений. Доступность: Сервер, толстый клиент, внешнее соединение. См. также: ТаблицаЗначений, свойство Колонки .. дальше вроде понятно. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |