Имя: Пароль:
1C
1С v8
Табличная часть документа: как узнать где я?
,
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)

Описание:

Представляет собой коллекцию колонок таблицы значений. Доступ к объекту осуществляется через свойство Колонки таблицы значений.

Доступность:

Сервер, толстый клиент, внешнее соединение.
См. также:

ТаблицаЗначений, свойство Колонки
..
дальше вроде понятно.