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

Содержание
  1. Работа с табличной частью объектов в 1С
  2. Как обойти табличную часть
  3. Как получить и обойти выделенные строки табличной части
  4. Как программно выделить строки табличной части (табличного поля) и снять выделение
  5. Как очистить табличную часть
  6. Как получить текущую строку табличной части
  7. Как добавить новую строку в табличную часть
  8. Как программно заполнить реквизиты строки табличной части
  9. Работа с табличной частью объектов в 1С : 13 комментариев
  10. Обойти в цикле табличную часть на клиенте УФ.
  11. Получить список колонок табличной части на упр форме
  12. Дополнительная вычисляемая колонка в табличной части
  13. Дополнительная вычисляемая колонка в табличной части
  14. Реализация на платформе 1С: Предприятие 8.1 (или в обычном приложении)
  15. Реализация на платформе 1С: Предприятие 8.2 (8.3 управляемое приложение)
  16. Как добавить реквизит объекта в таблицу формы

Работа с табличной частью объектов в 1С

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Работа с табличной частью объектов в 1С : 13 комментариев

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

Сделать это можно по-разному. Цикл Для каждого, на мой взгляд, не очень подходящий вариант, т.к. будет работать слишком долго. Да и надо еще где-то список документов брать.

Я бы порекомендовал сделать запрос к табличной части документа (именно к табличной части, а не к документу). Выбрать там ваш столбец Стоимость и другие столбцы, если нужно. И применить функцию СУММА к этому столбцу. Подробнее и с примерами смотрите в статье Группировки в запросах 1С http://chel1c.ru/querry_group/

Спасибо!
Буду пробовать.

А может это подойдет?

Табличная часть (Tabular section)
Итог (Total)
Синтаксис:

Тип: Число; Строка.
Индекс либо имя колонки, по которой подсчитывается итог.
Возвращаемое значение:

Тип: Число; Неопределено.

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

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

Это подошло бы, если бы нужно было суммировать колонку в одном документе. А Юрию нужно суммировать колонку Стоимость всех документов.

Добрый день!
Достаточно ли будет обратиться в модуле формы к текущей строке табличной части или в модуле менеджера тоже нужно будет что-то прописать?

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

Здравствуйте!
Опишу вкратце ситуацию:
Из документа вызывается команда печати штрихкодов и в обработку печати передается, как я понимаю, весь контекст документа и печатаются этикетки для всех строк документа. Возможно ли в обработке печати получить информацию только о выделенных строках из этого контекста ? Прилагаю код модуля команды ПечатьЭтикеток.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

//Создаём новую коллекцию печатных форм
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(«ПечатьЭтикеток»);
//Добавляем в коллекцию сформированный табличный документ
КоллекцияПечатныхФорм[0].ТабличныйДокумент = ТабДокумент;
//Устанавливаем параметры печати (при необходимости)
КоллекцияПечатныхФорм[0].Экземпляров = 1;
КоллекцияПечатныхФорм[0].СинонимМакета = «ПечатьЭтикеток»; //Так будет выглядеть имя файла при сохранении в файл из формы «Печать документов»
//Вывод через стандартную процедуру БСП
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, Неопределено, Неопределено);КонецПроцедуры

ТабДокумент.АвтоМасштаб = истина ;
ТабДокумент.ОтображатьСетку = Ложь;
ТабДокумент.ТолькоПросмотр = Истина;
ТабДокумент.ОтображатьЗаголовки = Ложь;

Макет = ДокСсылка.ПолучитьОбъект().ПолучитьМакет(«Этикетка»);
Для каждого Стр Из ДокСсылка.Картриджи Цикл
//Если Лев(Стр.СерийныйНомер,2) «30» Тогда
// Продолжить;
//КонецЕсли;
ОбластьМакета = Макет.ПолучитьОбласть(«ШПК»);

ЧтоТо = Стр.СерийныйНомер;
ПервыйМодуль.ВывестиШтрихкодДокументаВОбластьМакета(ВнешняяКомпонента,ОбластьМакета,ЧтоТо) ;

ОбластьМакета.Параметры.Клиент = ДокСсылка.Партнер;
ОбластьМакета.Параметры.Орг = «СК ПОТОК тел.78-06-78»;//Константы.пмОрганизацияДляСервиса.Получить();
ОбластьМакета.Параметры.КЖ = СокрЛП(Стр.Картридж.Артикул);
ОбластьМакета.Параметры.СерийныйНомер = Стр.СерийныйНомер;

ТабДокумент.Вывести(ОбластьМакета);
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;

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

Значит я на клиенте должен сформировать таблицу выделенных строк и уже ее передавать в обработку печати ?

Да, логика такая. Только учтите, что таблица значений не передается с клиента на сервер.
Выделенный строки табличного поля на форме — это массив строк. Надо попробовать, передастся ли он. Если да, хорошо. Если нет — надо думать, как его передать.

Доброго времени суток!
Создаю обработку на обычных формах, в которой имеется несколько Табличных частей. Они в свою очередь находят отображение в Форме обработки. И если данные первых 3, меня после закрытия Формы, не интересуют, то данные последней хотелось-бы использовать в дальнейшем, пока открыта обработка. В настоящее время при закрытии Формы Табличные части очищаются. В дальнейшем, в новом сеансе работы с обработкой эти данные не нужны. Насколько я понимаю Функции сохранения Данных Табличной части обработки не существует. Табличную часть в обработке решил использовать из-за возможности сохранить структуру Данных. Как мне сохранить эти данные для использования в других окнах?
Может у Вас есть видео по данному вопросу?

Источник

Обойти в цикле табличную часть на клиенте УФ.

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

Как обойти эту табличную часть в цикле?

Цикл то работает. Есть пример как обратится к ТЧ?

Пишет что итератор не задан.

Таблица 1. Переименования методов и свойств в версии 8.3

Что переименовано ——— Старое наименование ——— Новое наименование

Свойство управляемой формы ——— ЭтаФорма (ThisForm) ——— ЭтотОбъект (ThisObject)

Колво = Объект.Загрузки.Количество()-1;
СчЦикла = 0;
Для СчЦикла = 0 По Колво Цикл
Элементы.Загрузки.ДанныеСтроки(СчЦикла).Флаг = Истина;
КонецЦикла;

У ДанныеФормыЭлементКоллекции есть свойство Флаг? Или это название какого-то реквизита в конкретном примере?

(18)
Ну как будто вы не знаете, что он говорит.

— вот что он говорит.

Если у меня, например, коллекция построена на основе таблицы (табличной части), размещённой в обработке — то какие слова я могу указывать после точки в вышеприведённом примере?

(20) Нет, не пытался выяснить.
Потому что меня интересовал противоположный вопрос — можно ли в том примере после точки указать вообще какой бы то ни было реквизит.

(25), (26)
Разобрался. Магия присутствия специалистов в действии ))
Видимо, это какой-то психологический механизм: когда знаешь, что кто-то способный дать правильный ответ существует в досягаемости, голова начинает работать иначе.

И на всякий случай, если эту тему будет читать кто-то только начинающий изучать язык 1С: в (6) надо писать не «Объект» и не что попало, а то, что на моём скриншоте обведено красной рамкой. И имя подчинённого элемента после точки (то есть имя таблицы) — такое, как в той же колонке у подчинённого узла. Это и будет путём к коллекции.

Источник

Получить список колонок табличной части на упр форме

задача такая, есть табЧать объекта с огромным количеством колонок и строка в упр форме.
и возникла необходимость заполнить колонки для разных строк одинаковыми данными.
т.е. выделяем энное кол-во строк или ячеек строк(ячейки не получилось, выделяются все равно строки), запоняем для одной нажимаем кнопочку и запоняется для всех именно указанная ячейка.
///////////\
решение я вижу таким:
открыть другую форму с одной строкой подобной сроке табчастьобъекта, заполнить её и по ее образу и подобию заполнить выделенные строки.
////////////
вопрос:
как мне это сделать не переписывая ручками весь набор колонок Объект.табЧасть?
////////////
возможно есть другие пути реализации данной задачи?кто как думает?

Добавлено через 17 минут
как получить имена всех колонок табличной части?

Помощь в написании контрольных, курсовых и дипломных работ здесь.

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

Автозаполнение табличной части документа из справочника (упр.форма)
Добрый день. Есть документ ТехнологическаяКарта, справочник Детали. В табличной части.

Значение строки табличной части получить в табличной части другого документа
Есть документ ПриходнаяНакладная (товар приходит от поставщика по его цене), с табличной частью.

Перемножение колонок итогов в табличной части
Здравствуйте. Существует ли типовое решение следующего примера? ПоднятыйВес1 =.

Источник

Дополнительная вычисляемая колонка в табличной части

Дополнительная вычисляемая колонка в табличной части

Реализация на платформе 1С: Предприятие 8.1 (или в обычном приложении)

В начале коротко о том, как добавить дополнительную колонку в табличное поле на платформе 1С 8.1.

Предположим, что у нас есть некий документ с табличной частью “Товары” (с колонками “Номенклатура” и “Количество”) и нам нужно вывести дополнительную колонку “Цена”, которая бы содержала данные реквизита “Цена” элементов справочника “Номенклатура”, выбранных в строках табличной части.

Для этого нам достаточно добавить в форме документа новую колонку “Цена” в табличное поле, содержащее данные табличной части документа и написать следующий код в обработчике события “ПриПолученииДанных” этого табличного поля:

Хочу обратить внимание на то, что строки табличного поля обрабатываются порциями, по мере прокрутки списка.

Реализация на платформе 1С: Предприятие 8.2 (8.3 управляемое приложение)

На платформе 8.2 с использованием управляемых форм решение данной задачи потребует бóльших усилий. Это связано с тем, что за счет своей клиент-серверной ориентированности в платформе 8.2 в управляемом режиме отсутствуют некоторые привычные возможности – например, у табличного поля отсутствуют обработчики событий “ПриПолученииДанных” и “ПриВыводеСтроки”, которые мы могли бы использовать для этих целей в 1С 8.1 или 8.2 в обычных формах.

Пусть в нашей конфигурации есть документ “ВводОстатковДолга” с табличной частью “Контрагенты” (с колонками “Контрагент” и “Сумма”). В свою очередь у справочника “Контрагенты” есть реквизит “ИНН”, значение которого необходимо выводить в строках табличного поля.

[qu_spoiler title=»Примечание от ‘Капитально:» open=»yes» icon=»chevron-circle»]в статье взят неудачный пример т.к. реквизиты вынести можно получить гораздо проще, но тем не менее статья полезна для рассмотрения в учебных целях[/qu_spoiler]

Откроем управляемую форму документа, добавим новую колонку “ИНН” реквизита “Контрагенты” и перенесём её на закладку “Элементы” (для отображения в форме).

Откроем палитру свойств поля “КонтрагентыКонтрагент” и добавим обработчик события “ПриИзменении”

// обработчик события «ПриИзменении» поля «Контрагент» в табличном поле «Контрагенты»
&НаКлиенте
Процедура КонтрагентыКонтрагентПриИзменении ( Элемент )
ТекДанные = Элементы . Контрагенты . ТекущиеДанные ;
ТекДанные . ИНН = ЗначениеРеквизита ( ТекДанные . Контрагент , «ИНН» ) ;
КонецПроцедуры

Это обеспечит нам изменение значения поля “ИНН” при выборе контрагента в строке табличного поля.
Теперь необходимо предусмотреть заполнение колонки “ИНН” при открытии формы документа, а так же после записи и при чтении на сервере.

Обновление данных после записи и при чтении на сервере необходимо в связи с тем, что иначе значения колонки “ИНН” будут очищаться каждый раз при возникновении этих событий. Для заполнения колонки “ИНН” опишем в модуле формы служебную серверную процедуру:

Затем добавим в модуль формы документа обработчики событий “ПриОткрытии”, “ПриЧтенииНаСервере” и “ПослеЗаписиНаСервере”, в каждой из которых будем вызвать описанную ранее служебную процедуру “ОбновитьДанныеКолонкиИНН”

Всё готово. Можно посмотреть на результат.

Статья найдена на просторах интернета

Как добавить реквизит объекта в таблицу формы

Можно дурачить всех все время, — при условии, что реклама ведется правильно, а расходы на нее достаточно велики.

Источник

Читайте также:  Колонка авей у 900
Оцените статью