Как в модуле объекта обратиться к реквизиту табличной части документа

Табличная часть

Я
   antik777666

05.08.08 — 08:14

Подскажите пожалуйста как из модуля объекта документа обратиться к реквизиту табличной части документа

  

Партнерская программа EFSOL Oblako

   Night_Wolf

1 — 05.08.08 — 08:53

Один способ такой: Пишешь в модуле Перем блабла Экспорт;

назнчаешь ей в форме значение реквзита и потом в модуле его юзаешь. Попробуй — должно получиться.

   akiDemon666

2 — 05.08.08 — 09:09

ЭтотОбъект.ВашаТабличнаяЧасть

   akiDemon666

3 — 05.08.08 — 09:14

или ЭтаФорма, кароч хз

   GenV

4 — 05.08.08 — 09:16

(0) Лучше если модуль объекта вообще не будет знать о существовании формы … И обращения будут только к данным в БД.

   Андрюха

5 — 05.08.08 — 09:17

Надо помнить, что табличная часть является многострочной, а по сему и к реквизиту табличной части нужно обращаться с учетом строки, в которой находится нужное значение

   akiDemon666

6 — 05.08.08 — 09:19

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

   Rovan

7 — 05.08.08 — 09:37

(+2) ЭтотОбъект.ВашаТабличнаяЧасть[НомерСтроки].Реквизит

или

ЭтотОбъект[ИмяТЧ][НомерСтроки][ИмяРеквизита]

   antik777666

8 — 05.08.08 — 10:28

ЭтотОбъект.ВашаТабличнаяЧасть[НомерСтроки].Реквизит

ЭтотОбъект что под ним понимается

   hhhh

9 — 05.08.08 — 10:36

ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)

ЭтотОбъект (ThisObject)

Использование:

Только чтение.

Описание:

Тип: ДокументОбъект. Содержит сам объект базы данных. Предназначено, в основном, для получения данного объекта встроенного языка в модуле объекта или модуле формы.

   antik777666

10 — 05.08.08 — 10:59

Если Документы.гсм_Реализация.Товары.ВидНефтепродукта = «Бензин» тогда

    ПроцедурыБухгалтерскогоУчета.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,»НалогиСборыОтчисления», НалогиАкциз);

иначеЕсли Документы.гсм_Реализация.Товары.ВидНефтепродукта = «Дизельное топливо» тогда

                   ПроцедурыБухгалтерскогоУчета.УстановитьСубконто(Проводка.СчетКт,Проводка.СубконтоКт,»НалогиСборыОтчисления», НалогиАкциз1);

КонецЕсли;

Вот та кое условие хочу создать в модуле объекта- Документы.гсм_Реализация.Товары.ВидНефтепродукта = «Бензин»- мне нужно обратиться к реквизиту табличной части «ВидНефтепродукта» , табличная часть «Товары»

Что неправильно делаю выводит ошибку

Ошибка при выполнении обработчика — ‘{Документ.гсм_Реализация(1628)}: Поле объекта не обнаружено (Товары)’

по причине:

{Документ.гсм_Реализация(1628)}: Поле объекта не обнаружено (Товары)

   Rovan

11 — 05.08.08 — 11:11

(10) тут неверная конструкция «Документы.гсм_Реализация»

это же менеджер документов типа гсм_Реализация

***

если ты хочешь читать в модуле объекта данные из самого этого объекта (документа) или из другого ?

  

Serg_1960

12 — 05.08.08 — 11:21

Для Каждого Строка Из Товары Цикл

  Если Строка.ВидНефтепродукта = «Бензин»…

КонецЦикла;

TurboConf — расширение возможностей Конфигуратора 1С

Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

1

Обращение к реквизиту ТЧ

23.03.2016, 14:46. Показов 25654. Ответов 8


Плаваю ещё в 1С программировании…
Как в модуле формы документа обратиться к реквизиту табличной части этого документа?



0



286 / 186 / 18

Регистрация: 20.02.2012

Сообщений: 925

23.03.2016, 14:57

2

для чего это необходимо? что делать будете с реквизитом тч?



1



GreenkA

Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

23.03.2016, 16:17

3

Тамика, для изменения текущей строки

1C
1
2
ТекСтрока = Элементы[ИмяТабличнойЧасти].ТекущиеДанные;
ТекСтрока.Количество = 5;//где Количество - реквизит табличной части

для прохождения по всем строкам используйте цикл:

1C
1
2
3
Для Каждого ТекСтрока из Объект[ИмяТабличнойЧасти] Цикл
 ТекСтрока.Количество =5;
КонецЦикла;

для добавления новой строки:

1C
1
2
НовСтрока = Объект[ИмяТабличнойЧасти].Добавить();
НовСтрока.Количество =5;



1



Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

23.03.2016, 17:38

 [ТС]

4

GreenkO, прошу прощения, но у меня снова ступор. Сбросила конфигурацию(не знаю верно ли выгрузила…). Проблема с документом НачисленияЗарплат. В модуле объекта я сделала автоподстановку оклада по фамилии… То есть, при выборе фамилии поле СтавкаЗаМесяц должно заполнится само. А оно мало того, что не заполняется, так ещё отладчик показал, что даже не заходит в функцию ПриИзменении… Тестовая База 1.rar



0



Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

23.03.2016, 18:43

5

Тамика, у меня проблемы при загрузке конфигурации из файлов. На Configuration.xml выдает несоответствие XDTO.
Можете выгрузить конфигурацию одним файлом(Конфигурация — Сохранить конфигурацию в файл)? Или базу(Администрирование — Выгрузить информационную базу).



0



Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

23.03.2016, 18:51

 [ТС]

6



0



Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

23.03.2016, 18:57

7

Тамика, а можете перед выгрузкой установить режим совместимости? У вас платформа 8.3.7, у меня 8.3.6, не открывает. После выгрузки можно будет все вернуть.

Миниатюры

Обращение к реквизиту ТЧ
 



0



Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

23.03.2016, 19:52

 [ТС]

8

Поставила режим совместимости с 8.3.6. Или всё-таки лучше поставить с 8.3.4?



0



GreenkA

Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

23.03.2016, 20:12

9

Лучший ответ Сообщение было отмечено Тамика как решение

Решение

Тамика, события элементов формы описываются &НаКлиенте(так было и по умолчанию, вы видимо изменили). Обращение к данным регистра сведений происходит &НаСервере, т.е. вам надо было вызвать функцию на сервере для получения ставки.
По работе с регистром сведений — есть такая функция ПолучитьПоследнее(…) — она сразу дает вам последнюю запись по регистру по заданному отбору.
Пользуйтесь синтакс-помощником, там так же описано, где можно вызывать определенные методы и получать свойства.

Измененный код:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
&НаКлиенте
Процедура НачислениеЗарплатФИОПриИзменении(Элемент)
    ТекСтрока = Элемент.Родитель.ТекущиеДанные; //Элемент.Родитель = Табличная часть документа, получаем текущую строку 
    ТекСтрока.СтавкаЗаМесяц = ПолучитьСтавкуЗаМесяцНаСервере(ТекСтрока.ФИО);
КонецПроцедуры
 
&НаСервере
Функция  ПолучитьСтавкуЗаМесяцНаСервере(ФИО)
    Отбор = Новый Структура;
    Отбор.Вставить("Сотрудник", ФИО);
    ОкладыСотрудника = РегистрыСведений.ДанныеОСотрудниках.ПолучитьПоследнее(Объект.Дата, Отбор); 
    
    Если ОкладыСотрудника.Количество() = 0 Тогда
        Сообщить("Нет записей");
        Возврат 0;
    Иначе  
        Возврат ОкладыСотрудника.Оклад;
    КонецЕсли;
КонецФункции



1



Как обратиться к данным табличной формы с модуля объекта документа

Автор damir-it, 25 фев 2016, 07:41

0 Пользователей и 1 гость просматривают эту тему.

Уважаемые форумчане
Начал изучать 1с8.2, раньше работал на семерке, возникла необходимость создать новый документ в восьмерке по аналогу документа с седьмой версии, в модуле объекта документа простой формы в обработке проведения мне нужно использовать данные которые находятся в табличной части модуля формы
СТЧ = ЭлементыФормы.ТабличнаяЧасть1.ТекущиеДанные;
мне нужно в модуле объекта документа использовать СТЧ.Сумма , как правильно к ней обратиться?
в семерке в модуле документа просто используешь реквизит табличной части Сумма и он его прекрасно обрабатывает, в восьмерке как я понимаю нужно сначала получить элементы формы , как правильно сделать?
С Уважением Дамир


ТекСтрока = Элементы.ТабличнаяЧасть1.ТекущиеДанные;
ТекСтрока.Сумма — это и есть твое поле


вы хотя бы неправильные советы не давайте новичку!
во первых у него НЕуправляемые формы
во вторых, автор задает вопрос про модуль объекта! какие элементы?

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


    Для каждого лкСтрока Из Товары Цикл
        //лкСтрока.Номенклатура;
//лкСтрока.Сумма;
    КонецЦикла;

если помогло нажмите: Спасибо!


  1. 05.04.2015, 14:28


    #1

    Сергей120 вне форума


    Гость форума


    По умолчанию Обращение к реквизиту табличной части другого документа

    Здравствуйте! У меня есть документ «ПервичныйЗавозТовара» с табличной частью «Товар» с реквизитами табличной части Наименование и Количество. Регистр накопления «КоличествоТовара»: измерение — «Наименование», ресурсы — «Количество». И документ «Продажа»,табличная часть «Товар», реквизиты «Наименование», «Количество» ,в котором я создал форму «ФормаДокумента1». (1С — Предприятие 8.2)

    В модуле формы в функции я создаю запрос на вытаскивание Наименования и Количества товаров из РегистраНакопления, мне нужно сравнивать Наименование товара который я выбрал для продажи в документе с наименованием товаров вытащенных из регистранакопления и если они совпадают, то возвращать в колонку «Количество» количество товаров на складе данного наименования. Как обратиться к реквизиту табличной части документа ПервичныйЗавозТовара?

    Код:

    &НаСервереБезКонтекста
    функция ВыбираемИзЗапроса()
    	Перем КолТов;
    Запрос = Новый Запрос("Выбрать Количество, Наименование ИЗ РегистрНакопления.КоличествоТовара");
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    
    СтрокаТабличнойЧасти = Элементы.ПервичныйЗавозтовара.Товар.ТекущиеДанные;
    ОбъектДляЧегоТо = ПолучитьИмя(СтрокаТабличнойЧасти.Наименование);
    СтрокаТабличнойЧасти.Наименование = ОбъектДляЧегоТо;
    
    Пока Выборка.Следующий() Цикл
    	Если Выборка.Наименование = ОбъектДляЧегоТо Тогда
    	  КолТов = Выборка.Количество;
    	КонецЕсли;	
    КонецЦикла;
    Возврат  КолТов; 
    КонецФункции


  2. 28.08.2015, 20:01


    #2

    ruha_tmz вне форума


    Гость форума


    По умолчанию Re: Обращение к реквизиту табличной части другого документа

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


  3. 31.08.2015, 10:19


    #3

    avm3110 вне форума


    Гордость форума PRO


    По умолчанию Re: Обращение к реквизиту табличной части другого документа

    В модуле формы в функции я создаю запрос на вытаскивание Наименования и Количества товаров из РегистраНакопления

    А зачем это делать (запрос поиска количества конкретного товара) в модуле формы? Делайте это в модуле объекта документа, а из модуля формы легко можно получить доступ к результирующей табличной части документа


Модуль объекта

Модуль объекта есть почти у всех основных прикладных объектов конфигурации в 1С.

У справочников, документов, отчетов, обработок, планов видов характеристик, планов счетов, планов видов расчета, планов обмена, бизнес-процессов и задач он называется Модуль объекта. У константы — Модуль менеджера значения. У последовательностей, регистров сведений, регистров накопления, регистров бухгалтерии, регистров расчета и перерасчетов — Модуль набора записей.

Чтобы открыть модуль объекта нужно в окне свойств объекта на закладке «Прочее» нажать кнопку «Модуль объекта»

Также модуль объекта можно открыть из контекстного меню объекта:

Или из меню Действия:

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

Вызов методов модуля объекта

Для примера создадим в конфигурации справочник «Номенклатура» с реквизитом «Артикул» и табличной частью «Остатки». У табличной части будет 2 реквизита: «Склад» и «Остаток»:

В модуле объекта напишем следующий код:

//переменные Перем ОбщийОстаток Экспорт; Перем ПолноеНаименование; //процедуры и функции Функция ПолноеНаименованиеНоменклатуры() Возврат "Системный блок в сборе"; КонецФункции Функция ОбщийОстаток() Экспорт Возврат 300; КонецФункции Процедура ЗаполнитьРеквизиты() Экспорт Артикул = "Арт1"; НовСтр = Остатки.Добавить(); НовСтр.Склад = "Основной"; НовСтр.Остаток = 100; НовСтр = Остатки.Добавить(); НовСтр.Склад = "Торговый зал"; НовСтр.Остаток = 200; КонецПроцедуры

Теперь создадим обработку с одной формой и в модуле обработки в событии ПриСозданииНаСервере напишем следующий код:

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //программно создаем новый элемент справочника ОбъектНоменклатура = Справочники.Номенклатура.СоздатьЭлемент(); //заполняем экспортную переменную модуля объекта вызвав экспортную функцию ОбъектНоменклатура.ОбщийОстаток = ОбъектНоменклатура.ОбщийОстаток(); Сообщить(ОбъектНоменклатура.ОбщийОстаток); //300 КонецПроцедуры

Здесь мы сначала создаем новый программный объект справочника Номенклатура вызвав встроенный метод Справочники.Номенклатура.СоздатьЭлемент(). Потом через ссылку на этот объект обращаемся к экспортным переменной и функции объекта.

Сохраним конфигурацию базы данных и откроем нашу обработку в пользовательском режиме. Событие формы ПриСозданииНаСервере выполняется при открытии формы в итоге в сообщениях мы увидим число 300. То есть через ссылку на программный объект мы можем обращаться к экспортным переменным и функция модуля объекта. Но значения переменных не сохраняются в базе данных. Как только объект будет удален из памяти все значения экспортных переменных будут потеряны.

Теперь поменяем код в модуле формы обработки на следующий:

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //программно создаем новый элемент справочника ОбъектНоменклатура = Справочники.Номенклатура.СоздатьЭлемент(); //пытаемся заполнить переменную модуля объекта вызвав функцию модуля объекта ОбъектНоменклатура.ПолноеНаименование = ОбъектНоменклатура.ПолноеНаименованиеНоменклатуры(); Сообщить(ОбъектНоменклатура.ПолноеНаименование); //ошибка КонецПроцедуры

Здесь мы делаем все то же самое, но обращаемся к не экспортным переменной и функции.

При открытии формы возникнет ошибка «Поле объекта не обнаружено ПолноеНаименование»:

Так как переменная ПолноеНаименование не является экспортной, то к ней нет доступа из других модулей.

Теперь попробуем обратиться к не экспортной функции модуля объекта. Вставим в модуль формы следующий код и откроем обработку:

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //программно создаем новый элемент справочника ОбъектНоменклатура = Справочники.Номенклатура.СоздатьЭлемент(); //просто вызовем функцию модуля объекта Сообщить(ОбъектНоменклатура.ПолноеНаименованиеНоменклатуры()); //опять ошибка КонецПроцедуры

Выйдет ошибка «Метод объекта не обнаружен ПолноеНаименованиеНоменклатуры»:

Теперь вставим в форму обработки такой код и откроем обработку:

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //программно создаем новый элемент справочника ОбъектНоменклатура = Справочники.Номенклатура.СоздатьЭлемент(); //вызовем экспортную процедуру модуля объекта ОбъектНоменклатура.ЗаполнитьРеквизиты(); //запишем объект в базу данных ОбъектНоменклатура.Записать(); КонецПроцедуры

Здесь мы вызываем экспорную процедуру модуля объекта, а потом встроенным методом Записать записываем объект в базу данных.

В результате в базе данных будет создан новый элемент, у которого заполнен артикул и добавлены 2 строки в табличную часть:

В методе ЗаполнитьРеквизиты() мы обращались напрямую к реквизитам объекта, после чего записали его методом Записать(). Значения реквизитов сохранились в базе данных.

Обработчики событий

В модуле объекта есть множество различных обработчиков событий, которые вызываются в определенные моменты времени. Чтобы увидеть все события нужно нажать на кнопку «Процедуру и функции» в панели инструментов:

В результате откроется список возможных событий:

Если выделить какое-то событие и нажать кнопку «Перейти» или просто щелкнуть по нему два раза левой кнопкой мыши, то в модуле объекта будет создана процедура для обработки данного события.

Рассмотрим основные события модуля объекта:

* ОбработкаЗаполнения — выполняется при интерактивном создании нового объекта, при вводе на основании, при вызове метода Заполнить().
* ОбработкаПроверкиЗаполнения — выполняется перед записью объекта в базу данных, но до начала транзакции записи. Можно отказаться от записи, установив Отказ = Истина;
* ПередЗаписью — выполняется до записи объекта в базу данных, но после начала транзакции записи. Можно отказаться от записи, установив Отказ = Истина;
* ПриЗаписи — выполняется после записи объекта в базу данных, транзакция записи еще не зафиксирована. Все еще можно отказаться от записи.
* ПередУдалением — выполняется перед непосредственным удалением объекта из базы данных.
* ПриКопировании — выполняется при создании нового объекта копированием.

Для примера создадим в модуле объекта 3 обработчика события и вставим в них следующий код:

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) Артикул = "Артикул"; КонецПроцедуры Процедура ПередЗаписью(Отказ) НовСтр = Остатки.Добавить(); НовСтр.Склад = "Основной"; НовСтр.Остаток = 50; КонецПроцедуры Процедура ПриЗаписи(Отказ) НовСтр = Остатки.Добавить(); НовСтр.Склад = "Ордерный"; НовСтр.Остаток = 90; КонецПроцедуры

Создадим интерактивно новый элемент справочника. Поле артикул уже будет заполнено:

Произвольно заполним наименование и нажмем на кнопку «Записать». В табличной части появятся 2 строки с остатками:

Одна строка была добавлена в событии ПередЗаписью, вторая ПриЗаписи.

Смотрите также:
Электронный учебник по по программированию в 1С
Рекомендации по изучению программирования 1С с нуля
Программное решение для сдачи и подготовки к экзаменам
Программирование в 1С 8.3 с нуля — краткий самоучитель
Комплексная подготовка программистов 1С:Предприятие 8.2
Сайты с уроками программирования и со справочниками
Youtube-каналы с уроками программирования
Сайты для обучения программированию
Лекции и уроки

  1. Уважаемые форумчане
    Начал изучать 1с8.2, раньше работал на семерке, возникла необходимость создать новый документ в восьмерке по аналогу документа с седьмой версии, в модуле объекта документа простой формы в обработке проведения мне нужно использовать данные которые находятся в табличной части модуля формы
    СТЧ = ЭлементыФормы.ТабличнаяЧасть1.ТекущиеДанные;
    мне нужно в модуле объекта документа использовать СТЧ.Сумма , как правильно к ней обратиться?
    в семерке в модуле документа просто используешь реквизит табличной части Сумма и он его прекрасно обрабатывает, в восьмерке как я понимаю нужно сначала получить элементы формы , как правильно сделать?
    С Уважением Дамир


  2. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.880
    Симпатии:
    1.028
    Баллы:
    204

    Нет, в 1с 8 другая логика. Про элементы формы вообще забудьте, если программируете модуль объекта.

    Советую прочитать книги по основным принципам программирования 1с 8.

  3. да понял я про логику и книги читаю, а если мне надо условие связанное с данными таб частью формы нужно прописать в модуле объекта документа и на основании полученных данных сделать Движения по регистрам бухгалтерии тогда как?


  4. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.880
    Симпатии:
    1.028
    Баллы:
    204

    Работайте с ТЧ объекта напрямую, без использования ЭлементыФормы.
    В книжках 100% есть примеры кода, связанные с ТЧ объекта.

    В общем случае оно выглядит так:

    Для Каждого Стр Из <ИмяТЧОбъекта> Цикл
    
    Если Стр.<КолонкаТЧ> = <Значение> Тогда
    
    КонецЕсли;
    
    КонецЦикла;
  5. Спасибо вроде понял как делать


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Табличные части существуют у многих объектов в 1С:

  • Справочники
  • Документы
  • Отчеты и обработки
  • Планы счетов
  • Планы видов характеристик
  • Планы видов расчета
  • Бизнес-процессы и задачи

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

Рассмотрим некоторые приемы работы с табличными частями.

Как обойти табличную часть

Для обхода табличной части можно использовать цикл Для каждого

Для каждого Строка из ТабличнаяЧасть Цикл

Сообщить(Строка.РеквизитТабличнойЧасти);

КонецЦикла;

На каждой итерации в переменную Строка передается очередная строка табличной части. Значения реквизитов строки можно получить выражением Строка.ИмяРеквизита.

Как получить и обойти выделенные строки табличной части

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

Работа с табличной частью объектов в 1СДля получения перечня выделенных строк используется следующий код:

ВыделенныеСтроки=ЭлементыФормы.ИмяТабличногоПоля.ВыделенныеСтроки;

Для того чтобы обойти выделенные строки используется цикл Для каждого:

ВыделенныеСтроки=ЭлементыФормы.ИмяТабличногоПоля.ВыделенныеСтроки;

Для каждого Строка из ВыделенныеСтроки Цикл

//содержимое цикла

КонецЦикла;

Как программно выделить строки табличной части (табличного поля) и снять выделение

Чтобы программно снять выделение строк табличного поля:

ЭлементыФормы.ИмяТабличногоПоля.ВыделенныйСтроки.Очистить();

Чтобы программно выделить все строки табличного поля:

Для каждого ТекущаяСтрока Из ТабличнаяЧасть Цикл
ЭлементыФормы.ИмяТабличногоПоля.ВыделенныеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;

Как очистить табличную часть

ТабличнаяЧасть.Очистить();

Как получить текущую строку табличной части

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

Для обычных форм код будет выглядеть так:

ЭлементыФормы.ИмяТабличногоПоля.ТекущиеДанные;

Для управляемых форм:

Элементы.ИмяТабличногоПоля.ТекущиеДанные;

Как добавить новую строку в табличную часть

Добавление новой строки в конец табличной части:

НоваяСтрока=ТабличнаяЧасть.Добавить();
НоваяСтрока.Реквизит1=«Значение»;

Добавление новой строки в любое место табличной части (последующие строки будут сдвинуты):

НоваяСтрока=ТабличнаяЧасть.Вставить(Индекс)
//Индекс — номер добавляемой строки. Нумерация строк начинается с нуля.

НоваяСтрока.Реквизит1=«Значение»;

Как программно заполнить реквизиты строки табличной части

Если нужно программно заполнить реквизиты строки табличной части, которую добавляет пользователь, необходимо использовать обработчик события табличной части ПриНачалеРедактирования.

Создаваемая обработчиком процедура имеет три параметра:

  • Элемент — содержит элемент управления ТабличноеПоле.
  • НоваяСтрока — булево. Содержит значение Истина, если добавляется новая строка табличной части, и Ложь, если пользователь начал редактировать уже существующую строку.
  • Копирование — булево. Содержит значение Истина, если пользователь копирует строку, и Ложь в остальных случаях.

Рассмотрим пример. Допустим, нам нужно заполнить реквизит табличной части СчетУчета, в случае, когда добавляется новая строка. При редактировании существующей строки изменять счет учета не нужно.

Процедура ТабличнаяЧастьПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)

//Если пользователь редактирует существующую строку, то ничего не делаем
Если НЕ НоваяСтрока Тогда
Возврат;
КонецЕсли;

//Если же строка новая, устанавливаем счет учета
ТекСтрока = Элемент.ТекущиеДанные; //Получили текущую строку табличной части
ТекСтрока.СчетУчета = ПланыСчетов.Хозрасчетый.НужныйСчетУчета;
КонецПроцедуры

Понравилась статья? Поделить с друзьями:

Другие крутые статьи на нашем сайте:

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии