1с как заполнить табличную часть программно
Перейти к содержимому

1с как заполнить табличную часть программно

  • автор:

Как программно заполнить табличную часть

Добрый день. Подскажите пожалуйста как заполнить табличную часть
1С8.2 обычное прил
На форме создал табличную часть ТЧ, прописал код, все работает как надо
НС = ТЧ.Добавить();
Для Б = 1 по 20 Цикл
НС.Установить(Б-1, ОкноExcel.Worksheets(1).Range(Символ(Б+64)+СокрЛП(А)).Value);
Состояние(«Загрузка строки «+СокрЛП(А));
КонецЦикла;

Затем эту табличную часть сделал как реквизит формы, после этого выдается ошибка, в месте НС.Установить — метод установить не обнаружен.
Вопрос как можно заполнить новую строку НС по индексу, а то писать все поля (НС.Поле1 = ххх, НС.Поле2 = ххх. )как-то совсем нехочется

НС = ТЧ.Добавить();
Для Б = 1 по 20 Цикл
НС[ЭлементыФормы.ТЧ.Колонки[Б].Имя] = ОкноExcel.Worksheets(1).Range(Символ(Б+64)+СокрЛП(А)).Value;
Состояние(«Загрузка строки «+СокрЛП(А));
КонецЦикла;

можно загрузить твой ексель в таблицу и загрузить в тч.
примерно так

Процедура Загрузить() Экспорт
ExcelФайл = ПолучитьCOMОбъект(мВыбФайл);
Состояние(«Обработка файла Microsoft Excel. «);
// Читаем данные первого листа книги
Попытка
ExcelЛист = ExcelФайл.Sheets(1);
Исключение
Предупреждение(«Файл открыт, закройте его. «,,»ОШИБКА»);
Возврат;
КонецПопытки;
//
RowCount = 6500;
ВсегоКолонок = 3;
НомерПервойКолонки = 1;
//
СоздатьТЧДанных();
//Обратаем всю область данных
Область = ExcelЛист.Range(ExcelЛист.Cells(1,НомерПервойКолонки), ExcelЛист.Cells(RowCount,ВсегоКолонок));
Данные = Область.Value.Выгрузить();
//Создание пустых строк по RowCount
Для Счетчик = 1 По RowCount Цикл
НоваяСтрока = ТЧДанных.Добавить();
КонецЦикла;

//Заполнение Тч данными
Для Счетчик = 0 По ВсегоКолонок-1 Цикл
ТЧДанных.ЗагрузитьКолонку(Данные[Счетчик], «Колонка»+Счетчик);
КонецЦикла;
Создать();
ExcelФайл.Close();
КонецПроцедуры

// Создание описателя типов для таблицы значений
//КЧ = Новый КвалификаторыЧисла(15,2);
КС = Новый КвалификаторыСтроки(50);
Массив = Новый Массив;
Массив.Добавить(Тип(«Строка»));
ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
//Массив.Очистить();
//Массив.Добавить(Тип(«Число»));
//ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);

// Очистить предыдущие значения
ТЧДанных.Очистить();
ТЧДанных.Колонки.Очистить();

// Создать колонки табличного документа
ТЧДанных.Колонки.Добавить(«Колонка0″,ОписаниеТиповС,»Х»);
ТЧДанных.Колонки.Добавить(«Колонка1″,ОписаниеТиповС,»ХХ»);
ТЧДанных.Колонки.Добавить(«Колонка2″,ОписаниеТиповС,»ХХX»);
//ТЧДанных.Колонки.Добавить(«Колонка3″,ОписаниеТиповС,»ХXXX»);
//ТЧДанных.Колонки.Добавить(«Колонка4″,ОписаниеТиповС,»Норматив»);
//ТЧДанных.Колонки.Добавить(«Колонка5″,ОписаниеТиповС,»Х»);
//ТЧДанных.Колонки.Добавить(«Колонка6″,ОписаниеТиповС,»Кво»);

1С 8.3 : Как заполнить табличную часть формы программно?

Нужно по кнопке Заполнить — сформировать данные для заполнения табличных частей и заполнить их.

Форма имеет вид:

Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ, код ее команды:

Второй вариант заполнения: Имеем ТЧ на форме, которую необходимо программно заполнить

Программная обработка табличных частей объектов в 1С 8.3

В предыдущей статье мы узнали, как настраивать и конфигурировать табличные части объектов 1С 8.3. В этой статье мы изучим некоторые вопросы программной работы с табличными частями 1С.

Заполнение табличной части 1С 8.3

Очень часто встречается задача заполнить табличную часть какими-нибудь значениями, например результатом выполнения запроса. Для демонстрации реализуем пример, в котором выполняется заполнение табличной части. Сделаем небольшую учебную задачу: будем заполнять табличную часть документа всей номенклатурой, которая не помечена на удаление. Количество при этом будет равно 1. Для заполнения табличной части документа нам необходимо работать с одноименной таблицей реквизита Объект, который является основным реквизитом управляемой формы.

Табличная часть реквизита Объект

Поскольку по условиям задачи, необходимо отобрать всю не помеченную на удаление номенклатуру, то оптимально это сделать при помощи запроса, в котором я буду получать все не помеченные элементы справочника номенклатура. Я создал команду, при выполнении которой будет заполняться табличная часть, и разместил её на форме.

Команда 1С и размещение её на форме

Исполнение команды будет выполняться в серверном контексте, поскольку объект Запрос не работает в клиентском контексте на тонком клиенте.

При обходе запроса, я использую метод Добавить табличной части объекта (вообще это метод объекта, который имеет тип ДанныйФормыКоллекция, именно в этот тип преобразуется табличная часть документа-объекта, при создании на сервере). Данный метод является функцией, которая создаёт и возвращает новую строку.

Обратите внимание, поскольку при обходе запроса и заполнения новой строки, я использую метод ЗаполнитьЗначенияСвойств, то поля в запросе должны называться так же, как и поля табличной части.

Очистка табличной части документа 1С 8.3

Если мы реализуем данный код, то он будет не совсем корректен: каждый раз при выполнении этого кода будут добавляться новые строки, а вполне возможно, что пользователю старые строки не нужны. Поэтому, будем очищать имеющиеся строки, перед добавлением новых строк. Для этого воспользуемся методом Очистить объекта СписокТоваров, который имеет тип ДанныйФормыКоллекция.

После выполнения этого метода вся табличная часть будет очищена.

Текущая строка табличной части 1С 8.3

В процессе работы может возникнуть необходимость отработать текущую строку табличной части, т.е. ту строку, которая в данный момент выделена.

Текущая строка табличной части 1С 8.3

Например, может возникать ситуация, что мы редактируем какое-нибудь поле текущей строки таблицы на форме, и нам нужно, чтобы было пересчитано другое поле (или несколько полей) этой текущей строки. Например, мы изменяем цену (или количество) нашей табличной части, и необходимо, чтобы сумма автоматически была пересчитана.

Для решения данной задачи нужно воспользоваться свойством ТекущиеДанные элемента с типом ТаблицаФормы, который соответствует нужной табличной части. Свойство ТекущиеДанные возвращает значение полей текущей строки.

Возврат полей свойством ТекущиеДанные

Для того, чтобы отработать изменение текущего поля цены, создадим обработчик события ПриИзменении этого поля.

Обработчик ПриИзменении поля таблицы формы

В этом обработчике напишем код, который будет пересчитывать значения полей текущей строки табличной части.

Ещё пример: я создал команду, которая должна увеличивать количество в текущий строке табличной части в два раза и пересчитывать сумму. Эта команда размещена в командной панели таблицы и имеет следующий код:

Теперь доработаем этот пример: после увеличения текущей строки будем сдвигать текущую строку на строку вниз. Для этого допишем предыдущий код:

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

Также при помощи текущей строки можно находить аналогичную строку в соответствующей табличной части основного реквизита формы Объект, которую также можно изменять (строка на форме тоже изменится автоматически). Мы ранее сделали пересчет суммы при изменении цены, теперь сделаем пересчет суммы при изменении количества, но напрямую через реквизит Объект.

В этом коде мы используем метод НайтиПоИдентификатору переменной Объект.СписокТоваров, которая имеет типа ДанныйФормыКоллекция, этот метод получает элемент коллекции по указанному идентификатору. Если этот элемент найден, то мы можем с ними работать, причем данные на форме изменяться автоматически.

Обход табличной части 1С

Часто возникают задачи обойти табличную часть и изменить какие-либо значения в столбцах. В предыдущих примерах мы изменяли текущую стоку таблицы, теперь реализуем пример, когда нужно изменить все строки. В этом случае нет необходимости обращаться к элементам формы, можно работать напрямую с основным реквизитом Объект.

Остальные статьи по теме конфигурирования в 1С:

Более подробно и основательно конфигурирование в 1С дается в моей книге:

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Заполнить табличную часть. Программно.

Добрый день.
Необходимо заполнить табличную часть спрвочника Партнеры.КонтактнаяИнформация.
Часть реквизитов заполнено: Ссылка, НомерСтроки, Тип, Вид, Представление, ЗначенияПолей
Часть реквизитов не заполнено: НомерТелефона, НомерТелефонаБезКодов

Необходимо на основании заполненного поля Представление дозаполнить поля НомерТелефона и НомерТелефонаБезКодов

Создана Подписка на событие / СправочникОбъект.Партнеры / ПередЗаписью
Процедура в общем модуле. При записи отладчиком попадаю в процедуру. Всё остальное не работает.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *