Как программо перебрать названия столбцов, и как обратиться к строкам табличной части по индексу?
Добрый день, продолжаю свое похождение в 1С, Столкнулся с проблемой, нужно вывести в эксель имена столбцов табличной части, руками прописывать не хочу, там более 40 их, да и добавятся некоторые при доработке. версия 1С 8.3, желательно нужно это делать на клиенте ибо обращение через COM к экселю. Ну и хотелось бы сделать похожее с строками, мне строки нужно перебрать по индексу, имена столбцов указывать это дикость, как перебрать можно ?
Наверное на клиенте никак.
Если правильно понял - тебе нужно перебрать коллекцию колонок таблицы значений.
Таблицу значений ты получишь из табличной части на сервере:
Об = РеквизитФормыВЗначение("Объект");
ТЗ = Об.ТЧ.выгрузить();
Ну а дальше цикл по коллекции колонки типа
Для каждого ТекКолонка Из ТЗ.Колонки Цикл
Пока писал - вспомнил.
На сервер можно сходить только за коллекцией колонок, а затем открыть ком на клиенте и на клиенте же по уже сформированному списку колонок работать:
stictt,
Там по идее даже массив структур не нужен. У меня пример- обработка. У нее на форме реквизит с типом "СписокЗначений", в него я добавляю имена колонок.
А на клиенте просто перебор строк и в каждой строке перебор колонок
Dem0lisher, Тоже вариант да. Подскажите на счет строк, как сделать, кроме указание как в структуре, не получается, строка табличной части, для перебора табличных частей уже.
stictt,
Ну если правильно понял и нужно будет несколько табличных частей так делать - то наверное Соответствие.
В соответствие добавляете имя табличной части, а в значение элемента соответствия - массив. В массиве все колонки по имени этой табличной части.
Следующий элемент соответствия - новое имя ТЧ и новый массив колонок..
Примерно так.
Похоже вы делаете какую-то дюже универсальную обработку: на произвольное количество табличных частей, на произвольное количество колонок.. Уж не на инфостарт ли?! Мне тогда давайте 1 стартмани =) (Шутка конечно!)
Не универсальную, просто у меня 40+ колонок, и я труба шатал писать каждый вручуню. а скоро прийдут правки, там еще столбцов 10-15 как пить дать добавят, это все связать логикой и тд, от сюда поблема, как сделать так , чтобы обращаться к полю стобца в строке, не по имени этого самого столбца. Вот представьте, у вас 50, столбцов, примерно ну хотя бы, 3-5 обработок с полным, или частичным перебором. И что это все писать в ручную, серьезно ?
stictt, Дело ваше, но кажется тут уже проблема с клиентом.
Нужно как-то учить их, а то они скоро у вас попросят "большую зеленую кнопку" в 1с, которая называется
"Сделать все хорошо". И будет эта кнопка и резервы зависшие убирать, и отрицательные остатки и себестоимость считать.
Я конечно за универсальность, тут ощутимый плюс в том, что при изменении имени колонки не потребуется изменять обработку загрузки, как если бы вы жестко прописывали их кодом типа ТекСтрока.Номенклатура.
Но не забывайте, что если добавится какое-то поле и оно будет не базового типа (строка/число...) а ссылка - вам таки придется дописывать алгоритм выгрузки, если действительно важен каждый реквизит (каждая колонка).
Может это вы какой-то универсальный обмен через эксель пилите?
нет не универсальынй обмен, выгрузку сделать легко, я так садил на серверную функцию с одним оператором возврата ) а что поделать. Просто делаю довольно большую ведомость, которая пересекается почти с половиной предприятия, для отдела снабжения делаю, там и цены, там и поставщики, там и склад, и тд, просто это на экселе висело и увеличеный обьем работы показал что кол операций, даже стандартизированных , очень большое кол, нужен увеличеный штат, + иногда бывают ошибки проектировщиков проекта, или сопроводителей, и тд, и тогда вступает операция поднятия вообще всего, а это занимает довольно много времени, для этого нужна единая ведомость, с настройками фильтров, фильтров отображений, и кучи других плюшек. И да я сделал в своей ведомости зеленную кнопку ) она там есть. Про отрицательный остатки орнул, компания которая заказывала допил конфигурации , у фрилансера или конторы какой то, не знаю уже где, получила довольно качественный продукт, где в ведомости для закупки , указали простой обработчик, кол требования - кол на складе, и без зазрения совести пишет минусовое значение в покупки, от чего у меня было много боли и ора.
Dem0lisher, и кстати, для ссылочных типов не пришлось писать ничего для отображения, у меня были проблемы при переносе типов в эксель, написал общий конвертер обработчик, ссылочные типы например так обрабатываются Строка(Строка.Поставщик) и все коректно отображает без каких то танцев с бубном
Да точно так же, как строки. Нет кода под рукой.
Делается Цикл
НомерКолонки= 0;
Пока Истина Цикл
НомерСтроки= 1;
ЗначениеВКолонке= Лист.Cells(НомерСтроки, НомерКолонки).Value ;
Если ПустаяСтрока(ЗначениеВКолонке) Тогда
Прервать;
конецЕсли;
НомерКолонки= НомерКолонки=1;
КонецЦикла;