Новости экономики и финансов. Курсы валют, ситуация на биржах, акции, котировки, аналитика: 💫 💫 💫 💫 💫 💫 читайте на сайте

1C Изменение Порядка Строк в Табличной Части • Похожие публикации

Свойство ТекущиеДанные предназначено для получения значений колонок текущей строки, а свойство ТекущаяСтрока для получения и установки текущей строки табличного поля.

Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
Для начала нужно уяснить, что есть объект который содержит данные, например ДанныеФормыКоллекция и есть объект который отображает данные визуально — Таблица. 1С получить идентификатор строки табличной части Обращайтесь в форму связи

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

Как установить строку в 8.2 (Управляемые формы) читайте .

Для начала хочу напомнить, что данные табличной части документа(или таблицы значений) и табличное поле – это разные объекты. Для того чтобы сделать какие-то визуальные действия мы работаем с табличным полем. В данном случае, мы будем использовать его свойство «ТекущаяСтрока «, как раз оно и отвечает за то, какая строка активна.

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

1. Найти нужную нам строку в объекте данных которые отображает табличное поле
Подчеркну что здесь понадобиться именно объект данных. Например, у нас имеется документ РеализацияТоваровУслуг у которого есть табличная часть «Товары» и мы решили сделать активной 2-ю строку на форме документа. Тогда в модуле формы документа мы напишем:

// у второй строки индекс равен одному
НужнаяСтрока = Товары;

Или мы знаем, что во второй строке в колонке Номенклатура у элемента Код равен «001» тогда мы используем конструкцию:

// сначала находим элемент справочника Номенклатура по коду
// а затем ищем его в Табличной части «Товары»
НужнаяСтрока = Товары.Найти(Справочники.Номенклатура.НайтиПоКоду(«001»));

2. Установить значением текущей строки найденную строку
Теперь нам нужно присвоить значение переменной НужнаяСтрока свойству табличного поля ТекущаяСтрока:

// если табличное поле у нас тоже называется Товары
ЭлементыФормы.Товары.Текущаястрока = НужнаяСтрока;

В итоге строки кода могут выглядеть вот так:

НужнаяСтрока = Товары.Найти(Справочники.Номенклатура.НайтиПоКоду(«001»));
ЭлементыФормы.ТабличноеПоле1.Текущаястрока = НужнаяСтрока;

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

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

Какую часть дохода тратите на еду?
До 50%Больше 50%

1с управляемые формы текущая строка таблицы.

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

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

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

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

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

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

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

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

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

В Таблице есть только текущая строка, с помощью неё нельзя узнать все существующие значения ДанныеФормыКоллекция с которыми она связана. В свою очередь у ДанныеФормыКоллекция нет текущей строки. Чтобы связать эти объекты в 1с используется Идентификатор, ведь строки порядок строк можно изменить как в визуальной части так и в данных, но свзяь при этом не должна нарушиться.

У формы есть реквизит ТЗ типа (ТаблицаЗначений) — в скобках потому, что фактический тип — ДанныеФормыКоллекция

Здравствуйте, воспользовалась примером Вариант 2, выдает ошибку Значение не является значением объектного типа Наименование Подскажите пожалуйста, как можно исправить.

Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
Например, у вас имеется документ, в котором вы создали некую табличную часть в данном примере она называется Студенты , и вы хотите программно добавить в нее строки при возникновении какого-то события, тогда возникает вопрос как именно правильно обратиться к данному объекту документа. Devel Platform: Отбор строк в табличной части управляемых форм Обращайтесь в форму связи

1С Предприятие, конфигурации, обработки, услуги программиста, помощь программиста

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

Процедура СоставПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока тогда
текСтрока = ЭлементыФормы.Состав.ТекущиеДанные;
Если не текСтрока = неопределено тогда
текСтрока.ИсточникДанных = перечисления.СпособПолучения.ИзТабличнойЧасти;
КонецЕсли;
КонецЕсли;
КонецПроцедуры

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

Горящие товары с бесплатной доставкой
 «AliExpress Россия» работает отдельно от глобального «AliExpress» принадлежащего Alibaba. Он не зависит от мировых банковских систем и не попал под санкционный список со стороны США и Великобритании. Из Китая соответственно тоже можно заказывать ничего не опасаясь.

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

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

Итак, у нас есть справочник «Тест» с табличной частью «Тест», в табличной части присутствуют реквизиты «Тест1» и «Тест2», а нам нужно добавить еще один реквизит — «Тест3» и показать его на форме.

Не думаю, что приведенный код нуждается в комментариях, но на всякий случай скажу, что первые три строки создают новый реквизит типа «Строка» — тут важно указать путь к создаваемому реквизиту — третий параметр.

Точно также можно добавить колонку любой таблице значений (не табличной части) — в этом случае нужно убрать часть «Объект.» из кода.

Следующие три строки добавляют саму колонку на форму.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

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

Например, у вас имеется документ, в котором вы создали некую табличную часть (в данном примере она называется «Студенты»), и вы хотите программно добавить в нее строки при возникновении какого-то события, тогда возникает вопрос: как именно правильно обратиться к данному объекту документа?

Собственно, в данном примере, вот те строки кода, отвечающие за добавление новой строки в табличную часть при выборе какого-то элемента из динамического списка двойным кликом по нему.

У нас имеется процедура, выполняемая на клиенте, поскольку мы не производим на данном этапе никаких изменений данных, поэтому нам не требуется запрос к серверу («СписокВыборНаСервере() в данном случае не нужен).

Создаем новую переменную «Стр», в которую записываем метод табличной части «Добвить()». Из данной строки видно, что непосредственное обращение к табличной части, называющейся «Студенты», происходит через «Объект». Им является сам документ, в котором создана табличная часть.

Затем происходит заполнение колонок, имеющихся в «Студентах». В данном примере табличная часть имеет лишь одну колонку «Студент» (см. Изображение), она и заполняется данными из динамического списка. В других случаях табличная часть может иметь множество колонок для заполнения. Обращение к ним будет производиться аналогичным образом.

Вот так с помощью пары строк кода (в зависимости от обширности табличной части) можно программно добавить строку данных в табличную часть документа.

Если для справочника установлено свойство Размещать группы сверху , то в индексах, наряду с полем Родитель, участвует поле ЭтоГруппа.

Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение клиент , мобильное приложение сервер. 1С получить индекс строки табличной части – ПК портал Обращайтесь в форму связи

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

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

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

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

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

1с 8 текущая строка табличной части. Как программно заполнить реквизиты строки табличной части
Для справочников без размещения групп сверху состав индексов соответствует приведенной выше таблице, но в индексы при этом не включено поле ЭтоГруппа.

Лайфхаки 1С для облегчения работы в отчетность

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

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

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

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

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

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

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

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

💥Принимайте участие в опросе и получайте бесплатную консультацию

Related posts

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

*