1с выделить строку табличного документа
Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.
Реализовано в версии 8.3.11.2867.
Мы реализовали выделение нескольких блоков строк в таблицах, а также вывод чисел с единицами измерения в диаграммы, отчёты и динамические списки.
Выделение блоков в таблицах
Желание пользователей выделять несколько отдельных блоков строк в таблицах вполне естественно и понятно. Подобные пожелания были у нас записаны, но их реализация это задача нетривиальная.
Наверное, самым популярным источником данных для таблиц является динамический список. Сложность заключается в том, что в 1С:Предприятии он бесконечный, и платформа не держит в памяти все отображаемые строки. Платформа не знает, сколько и каких строк находится выше и ниже текущей видимой области.
Но мы нашли решение этой проблемы, и теперь вы можете выделять несколько несоприкасающихся блоков в таблицах. Для выделения первого блока вы можете использовать Shift + клик мышью на последней строке блока. А для выделения первой строки следующего блока Ctrl + клик мышью. Окончание следующего блока вы можете указать также с помощью комбинации Shift + клик мышью.
Такое выделение строк поддерживается теперь во всех таблицах, включая таблицы, связанные с динамическими списками и с настройками компоновки данных.
Кроме этого в таблицах, связанных с настройками компоновки данных и с данными типа ДанныеФормыДерево теперь возможно выделение диапазонов строк с любыми родителями, а не только с одинаковыми.
Как вы можете заметить, для выделения конца блока используется комбинация Shift + клик мышью. Таким образом, мы реализовали и ещё одно ваше пожелание, чтобы группу строк можно было выделять кликом на последней строке группы.
Выделение большого количества строк
Мы оптимизировали выделение большого количества строк в тонком клиенте, а кроме этого провели дополнительную оптимизацию выделения строк именно в динамическом списке для тонкого клиента и веб-клиента.
Помимо этого мы изменили сам алгоритм выделения большого количества строк и добавили возможность прерывания этого процесса. Теперь, если выделение строк продолжается более 2 секунд, на экране отображается форма, которая позволяет прервать процесс:
Если пользователь не предпринимает никаких действий, эта форма автоматически исчезнет с экрана, когда выделение завершится. Если пользователь нажимает на кнопку Прервать, выделение строк прекращается. При этом выделенными становятся те строки, которая программа уже успела выделить.
Единицы измерения
В диаграммах, отчётах и динамических списках появилась возможность выводить форматированные числовые значения вместе с единицей измерения. Например, в колонке Сумма, где отображается сумма документа.
Для этого мы добавили в форматную строку новый параметр ЧФ. С его помощью вы можете указывать нужный вам формат, например, прямо в условном оформлении отчёта.
Также этот параметр форматной строки вы можете использовать при описании реквизитов справочников, документов и других объектов конфигурации. Платформа будет автоматически отображать его в динамических списках, например.
Этот же формат вы можете использовать и для редактирования значений в поле ввода.
Мы рассчитываем, что эти доработки повысят информативность отчётов и таблиц, а также упростят работу пользователей с большими таблицами.
Табличные части позволяют хранить неограниченное количество структурированной информации, принадлежащей одному объекту.
Рассмотрим некоторые приемы работы с табличными частями.
Как обойти табличную часть
Для обхода табличной части можно использовать цикл Для каждого
Для каждого Строка из ТабличнаяЧасть Цикл
На каждой итерации в переменную Строка передается очередная строка табличной части. Значения реквизитов строки можно получить выражением Строка.ИмяРеквизита.
Как получить и обойти выделенные строки табличной части
Для вывода информации из табличной части объекта служит элемент формы Табличное поле. Для включения возможности выделения нескольких строк на табличном поле нужно установить значение Множественный у его свойства Режим выделения.
Для получения перечня выделенных строк используется следующий код:
ВыделенныеСтроки = ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки ;
Для того чтобы обойти выделенные строки используется цикл Для каждого:
ВыделенныеСтроки = ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки ;
Для каждого Строка из ВыделенныеСтроки Цикл
Как программно выделить строки табличной части (табличного поля) и снять выделение
Чтобы программно снять выделение строк табличного поля:
Чтобы программно выделить все строки табличного поля:
Как очистить табличную часть
Как получить текущую строку табличной части
Для обычных форм код будет выглядеть так:
Для управляемых форм:
Как добавить новую строку в табличную часть
Добавление новой строки в конец табличной части:
Добавление новой строки в любое место табличной части (последующие строки будут сдвинуты):
НоваяСтрока . Реквизит 1 = "Значение" ;
Как программно заполнить реквизиты строки табличной части
Если нужно программно заполнить реквизиты строки табличной части, которую добавляет пользователь, необходимо использовать обработчик события табличной части ПриНачалеРедактирования.
Создаваемая обработчиком процедура имеет три параметра:
Рассмотрим пример. Допустим, нам нужно заполнить реквизит табличной части СчетУчета, в случае, когда добавляется новая строка. При редактировании существующей строки изменять счет учета не нужно.
//Если пользователь редактирует существующую строку, то ничего не делаем
Если НЕ НоваяСтрока Тогда
Возврат ;
КонецЕсли ;
//Если же строка новая, устанавливаем счет учета
ТекСтрока = Элемент . ТекущиеДанные ; //Получили текущую строку табличной части
ТекСтрока . СчетУчета = ПланыСчетов . Хозрасчетый . НужныйСчетУчета ;
КонецПроцедуры
Работа с табличной частью объектов в 1С : 13 комментариев
Сделать это можно по-разному. Цикл Для каждого, на мой взгляд, не очень подходящий вариант, т.к. будет работать слишком долго. Да и надо еще где-то список документов брать.
Спасибо!
Буду пробовать.
А может это подойдет?
Табличная часть (Tabular section)
Итог (Total)
Синтаксис:
Тип: Число; Строка.
Индекс либо имя колонки, по которой подсчитывается итог.
Возвращаемое значение:
Тип: Число; Неопределено.
Суммирует значения всех строк в указанной колонке.
Если в колонке установлен тип и он единственный, то при суммировании будет предприниматься попытка преобразования значения к типу Число.
Если колонке не присвоены типы, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них есть тип Число, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них нет типа Число, то результатом будет значение Неопределено.
Сервер, толстый клиент, внешнее соединение.
Пример:
Это подошло бы, если бы нужно было суммировать колонку в одном документе. А Юрию нужно суммировать колонку Стоимость всех документов.
Добрый день!
Достаточно ли будет обратиться в модуле формы к текущей строке табличной части или в модуле менеджера тоже нужно будет что-то прописать?
Не совсем понял, о чем конкретно вопрос.
Если о том, как получать и работать с текущей строкой табличной части, то в модуле менеджера ничего писать не нужно.
Здравствуйте!
Опишу вкратце ситуацию:
Из документа вызывается команда печати штрихкодов и в обработку печати передается, как я понимаю, весь контекст документа и печатаются этикетки для всех строк документа. Возможно ли в обработке печати получить информацию только о выделенных строках из этого контекста ? Прилагаю код модуля команды ПечатьЭтикеток.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
&НаСервере
Функция Заполнялка(ДокСсылка) Экспорт
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.АвтоМасштаб = истина ;
ТабДокумент.ОтображатьСетку = Ложь;
ТабДокумент.ТолькоПросмотр = Истина;
ТабДокумент.ОтображатьЗаголовки = Ложь;
ЧтоТо = Стр.СерийныйНомер;
ПервыйМодуль.ВывестиШтрихкодДокументаВОбластьМакета(ВнешняяКомпонента,ОбластьМакета,ЧтоТо) ;
Информацию о выделенных строках вы можете получить только в модуле формы документа, причем, если мне не изменяет память, это должна быть клиентская процедура. По ссылке на документ выделенные строки получить нельзя.
Значит я на клиенте должен сформировать таблицу выделенных строк и уже ее передавать в обработку печати ?
Доброго времени суток!
Создаю обработку на обычных формах, в которой имеется несколько Табличных частей. Они в свою очередь находят отображение в Форме обработки. И если данные первых 3, меня после закрытия Формы, не интересуют, то данные последней хотелось-бы использовать в дальнейшем, пока открыта обработка. В настоящее время при закрытии Формы Табличные части очищаются. В дальнейшем, в новом сеансе работы с обработкой эти данные не нужны. Насколько я понимаю Функции сохранения Данных Табличной части обработки не существует. Табличную часть в обработке решил использовать из-за возможности сохранить структуру Данных. Как мне сохранить эти данные для использования в других окнах?
Может у Вас есть видео по данному вопросу?
Нетипичный бухгалтер (бухгалтерия и налоги) запись закреплена
ЛАЙФХАК 1С.
Выделение строки цветом.
Для тех кто еще не знает, расскажем об удобной функции в 1С — выделение цветом.
Для чего использовать? Например для того, что бы видеть подписаны ли документы покупателем/заказчиком, поступили ли оригиналы документов от поставщика. (Это удобнее чем искать крыжики в конце таблицы)
Открываем журнал в котором необходимо сделать выделение. В нашем случае "Продажи"/"Реализация (акты, накладные)".
Ищем справа кнопку "Еще", жмем, выбираем "Настроить список".
Открываем закладку "Условное форматирование" жмем "Добавить"
В открывшемся окне на закладке "Оформление" крыжим "Цвет текста" и меняем цвет с черного на красный (или любой другой).
На закладе "Условие" в левом окне "Доступные поля" выбираем (двойным нажатием) поле "Подписан" оно появляется в правом окне, ставим вид сравнения "Равно" значение "Нет".
Жмем "ОК" и "Завершить редактирование"
Любуемся на список который теперь имеет два цвета, черные строки это подписанные контрагентами накладные/акты , красные не подписанные.
В поступлениях делаем то же самое, только заменяем "Подписан" на "Оригинал".
Если не нравится выделение текста, можно выделить фон строки, цвета разные.
Можно выбрать и другие поля для выделения в настройках таблицы, в каждом журнале свои..
Как в 1С выделить несколько строк?
Выделить несколько строк в журнале документов или другой табличной части можно:
- сочетанием клавиш Ctrl + A — выделяются все строки;
- клавишей Shift — выделяются несколько строк подряд:
- или щелкнуть в начале диапазона выделения+ использовать стрелки,
- или щелкнуть по нужной строке, обозначив конец выделения списка.
- клавишей Ctrl — зажав ее, выделите только те документы, которые вам нужны.
См. также:
Если Вы еще не подписаны:
Активировать демо-доступ бесплатно →
или
Оформить подписку на Рубрикатор →
После оформления подписки вам станут доступны все материалы по 1С Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
-
В ЗУП 3.1.14 реализован новый механизм для продления отпусков на....
Карточка публикации
(4 оценок, среднее: 2,00 из 5)
Данную публикацию можно обсудить в комментариях ниже.
Обратите внимание! В комментариях наши кураторы не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно по ссылке >>Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Вы можете задать еще вопросов
Доступ к форме «Задать вопрос» возможен только при оформлении полной подписки на БухЭксперт8
Вы можете оформить заявку от имени Юр. или Физ. лица Оформить заявку
Нажимая кнопку «Задать вопрос», я соглашаюсь с
регламентом БухЭксперт8.ру >>Как не попасть в ловушку, работая с контрагентами из ЕАЭС
[17.11.2021 запись] Практический переход на ФСБУ 6 и ФСБУ 26 в 1С
Переход на ФСБУ 6/2020 «Основные средства» в 1С по альтернативному алгоритму
Изменения в 2021 году, о которых нужно знать бухгалтеру
[11.10.2021 запись] Учет ОС по-новому: ФСБУ 6/2020, ФСБУ 26/2020, ФСБУ 25/2018
[29.10.2021 запись] Пообъектный учет ОС и подходы к определению и пересмотру СПИ
Спасибо! Очень ценно полезно нужно! Буду еще неоднократно обращаться к этому семинару для изучения этой темы.
1с 8.3 табличная часть документа в примерах.
В рамках данной статьи мы напишем обработку заполнения табличной части в 1С 8.3 для типовой конфигурации 1С:ERP 2.1. Предположим, что целью поставленной задачи стоит установка ручной скидки в размере 5% для всех номенклатурных позиций данного документа. Пример из статьи можно скачать по или другой аналогичной обработки по .
Данная инструкция предназначена для управляемых форм (8.2 и 8.3). Для обычных форм (8.1, 8.2) можно воспользоваться .
Создайте и сохраните на ваш компьютер новую обработку. Сначала необходимо произвести некоторые регистрационные действия.
Откройте модуль объекта и пропишите код, приведенный ниже (его также можно взять из данной выше обработки). В целом, структура не будет меняться в зависимости от ситуации. Редактируются только некоторые параметры настроек, а так же при необходимости имена переменных.
В рамках данной статьи мы не будем подробно останавливаться на регистрации внешних обработок и печатных форм в 1С. Вся эта информация есть в других наших статьях.
Заполнение табличной части документа
Создадим новую форму обработки.
Теперь нам необходимо добавить на созданной форме новую команду. Предполагается, что она будет автоматически менять данные в табличной части как одного, так и нескольких документов (их формы списка) одновременно, записывая их впоследствии.
В рамках нашего примера будет произведена обработка уже существующей табличной части «Товары». Для каждой строки будет установлена ручная скидка в размере 5%. Так же, мы рассчитаем саму сумму данной скидки, равную сумме товаров в строке, умноженных на 0,05.
Процедура
ВыполнитьКоманду(Команда,
ОбъектыНазначения)Для
каждого
ЗаказКлиента из
ОбъектыНазначения ЦиклЗаказКлиентаОбъект =
ЗаказКлиента.
ПолучитьОбъект()
;Для
каждого
СтрокаТЗ из
ЗаказКлиентаОбъект.
Товары ЦиклСтрокаТЗ.
ПроцентРучнойСкидки =
5
;СтрокаТЗ.
СуммаРучнойСкидки =
СтрокаТЗ.
Сумма *
0
.
05
;Регистрация внешней обработки
Запустите 1С в режиме «Предприятие» и откройте справочник «Дополнительные отчеты и обработки». Найдем его через меню «Все функции».
Создайте новый элемент в открывшемся справочнике и по одноименной кнопке загрузите из файла свою обработку. Разместим ее одновременно и на форме списка и на форме самой карточки документа.
Теперь в форме списка документов «Заказ клиента» появится кнопку «Заполнение…», которая позволит произвести изменить ручные скидки товаров сразу у нескольких документов.
Так же данная кнопка будет доступна и в карточке самого документа.
Табличные части существуют у многих объектов в 1С:
- Справочники
- Документы
- Отчеты и обработки
- Планы счетов
- Планы видов характеристик
- Планы видов расчета
- Бизнес-процессы и задачи
Табличные части позволяют хранить неограниченное количество структурированной информации, принадлежащей одному объекту.
Рассмотрим некоторые приемы работы с табличными частями.
Как обойти табличную часть
Для обхода табличной части можно использовать цикл Для каждого
Для
каждого Строка из ТабличнаяЧасть ЦиклНа каждой итерации в переменную Строка
передается очередная строка табличной части. Значения реквизитов строки можно получить выражением Строка.ИмяРеквизита
.Как получить и обойти выделенные строки табличной части
Для вывода информации из табличной части объекта служит элемент формы Табличное поле
. Для включения возможности выделения нескольких строк на табличном поле нужно установить значение Множественный
у его свойства Режим выделения
.Для получения перечня выделенных строк используется следующий код:
Для того чтобы обойти выделенные строки используется цикл Для каждого
:ВыделенныеСтроки=
ЭлементыФормы.
ИмяТабличногоПоля.
ВыделенныеСтроки;Для
каждого Строка из ВыделенныеСтроки ЦиклКак программно выделить строки табличной части (табличного поля) и снять выделение
Чтобы программно снять выделение строк табличного поля:
ЭлементыФормы.
ИмяТабличногоПоля.
ВыделенныйСтроки.
Очистить()
;Чтобы программно выделить все строки табличного поля:
Для
каждого ТекущаяСтрока Из
ТабличнаяЧасть Цикл
ЭлементыФормы.
ИмяТабличногоПоля.
ВыделенныеСтроки.
Добавить(ТекущаяСтрока)
;Как очистить табличную часть
Как получить текущую строку табличной части
Текущая строка — это срока, в которой у пользователя в данный момент находится курсор. Чтобы ее получить, нужно обратиться к элементу управления на форме, который связан с табличной частью.
Для обычных форм код будет выглядеть так:
ЭлементыФормы.
ИмяТабличногоПоля.
ТекущиеДанные;Для управляемых форм:
Элементы.
ИмяТабличногоПоля.
ТекущиеДанные;Как добавить новую строку в табличную часть
Добавление новой строки в конец табличной части:
НоваяСтрока=
ТабличнаяЧасть.
Добавить()
;Добавление новой строки в любое место табличной части (последующие строки будут сдвинуты):
НоваяСтрока=
ТабличнаяЧасть.
Вставить(Индекс)//Индекс — номер добавляемой строки. Нумерация строк начинается с нуля.
Как программно заполнить реквизиты строки табличной части
Если нужно программно заполнить реквизиты строки табличной части, которую добавляет пользователь, необходимо использовать обработчик события табличной части ПриНачалеРедактирования
.Создаваемая обработчиком процедура имеет три параметра:
- Элемент
— содержит элемент управления ТабличноеПоле
. - НоваяСтрока
— булево. Содержит значение Истина
, если добавляется новая строка табличной части, и Ложь,
если пользователь начал редактировать уже существующую строку. - Копирование
— булево. Содержит значение Истина
, если пользователь копирует строку, и Ложь
в остальных случаях.
Рассмотрим пример. Допустим, нам нужно заполнить реквизит табличной части СчетУчета
, в случае, когда добавляется новая строка. При редактировании существующей строки изменять счет учета не нужно.Процедура
ТабличнаяЧастьПриНачалеРедактирования(Элемент,
НоваяСтрока,
Копирование)//Если пользователь редактирует существующую строку, то ничего не делаем
Если
НЕ НоваяСтрока Тогда//Если же строка новая, устанавливаем счет учета
ТекСтрока =
Элемент.
ТекущиеДанные;
//Получили текущую строку табличной частиТекСтрока.
СчетУчета =
ПланыСчетов.
Хозрасчетый.
НужныйСчетУчета;Для того, чтобы учитывать деньги и товары, в бизнесе широко используют разные таблицы. Почти каждый документ – это таблица.
В одной таблице перечислены товары к отгрузке со склада. В другой таблице – обязательства по оплате этих товаров.
Поэтому в 1С видное место занимает работа с таблицами.
Таблицы в 1С также называют «табличные части». Они есть у справочников, документов и других .
Запрос в результате своего выполнения возвращает таблицу, доступ к которой возможно получить двумя разными способами.
Первый – более быстрый – выборка, получение строк из нее возможен только по порядку. Второй – выгрузка результата запроса в таблицу значений и далее произвольный доступ к ней.
//Вариант 1 – последовательный доступ к результатам запроса
//получение таблицы
Выборка = Запрос.Выполнить().Выбрать();
//по порядку обходим все строки результата запроса
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование);
КонецЦикла;//Вариант 2 – выгрузка в таблицу значений
Запрос = Новый Запрос(«ВЫБРАТЬ Наименование ИЗ Справочник.Номенклатура»);
//получение таблицы
Таблица = Запрос.Выполнить().Выгрузить().
//далее можем также обойти все строки
Для каждого Строка из Таблица Цикл
Сообщить(Строка.Наименование);
КонецЦикла;
//или произвольно обращаться к строкам
Строка = Таблица.Найти(«Лопата», «Наименование»);Важная особенность – в таблице, которая получена из результата запроса, все колонки будут строго типизированы. Это значит, что запросив поле Наименование из справочника Номенклатура, Вы получите колонку вида Строка с допустимой длиной не более N символов.
Таблица на форме (толстый клиент)
Пользователь работает с таблицей, когда она размещена на форме.
Базовые принципы работы с формами мы с Вами обсуждали в уроке по и в уроке по
Итак, разместим таблицу на форме. Для этого можно перетащить таблицу с панели элементов управления. Аналогично можно выбрать в меню Форма/Вставить элемент управления.
Данные могут храниться в конфигурации – тогда нужно выбрать существующую (ранее добавленную) табличную часть того объекта конфигурации, форму которого Вы редактируете.
Нажмите кнопку «…» в свойстве Данные. Для того, чтобы увидеть список табличных частей, нужно раскрыть ветку Объект.
При выборе табличной части 1С сама добавит колонки у таблицы на форме. Строки введенные пользователем в такую таблицу будут сохраняться автоматически вместе со справочником/документом.
В этом же свойстве Данные Вы можете ввести произвольное имя и выбрать тип ТаблицаЗначений.
Это значит, что выбрана произвольная таблица значений. Она не добавит автоматически колонки, не будет автоматически сохраняться, но и делать с ней можно все, что угодно.
Нажав правой кнопкой на таблице Вы можете добавить колонку. В свойствах колонки можно указать его имя (для обращения в коде 1С), заголовок колонки на форме, связь с реквизитом табличной части (последнее – если выбрана не произвольная таблица, а табличная часть).
В свойствах таблицы на форме Вы можете указать – доступно ли пользователю добавлять/удалять строки. Более продвинутая форма – галочка ТолькоПросмотр. Эти свойства удобно использовать для организации таблиц предназначенных для вывода информации, но не редактирования.
Чтобы управлять таблицей, нужно вывести на форму командную панель. Выберите пункт меню Форма/Вставить элемент управления/Командная панель.
В свойствах командной панели выберите галочку Автозаполнение, чтобы кнопки на панели появились автоматически.
Таблица на форме (тонкий/управляемый клиент)
На управляемой форме указанные действия выглядят немного по другому. Если Вам нужно разместить на форме табличную часть – раскройте ветку Объект и перетащите одну из табличных частей влево. И все!
Если нужно разместить таблицу значений, добавьте новый реквизит формы и в его свойствах укажите тип – таблица значений.
Чтобы добавить колонки, используйте меню по правой кнопке мыши на этом реквизите формы, пункт Добавить колонку реквизита.
После чего также перетащите таблицу влево.
Чтобы у таблицы появилась командная панель, в свойствах таблицы выберите значения в секции Использование – Положение командной панели.
Выгрузка таблицы в Excel
Любую таблицу 1С, расположенную на форме, можно распечатать или выгрузить в Excel.
Для этого щелкните правой кнопкой мыши на свободном месте в таблице и выберите пункт Вывести список.
В управляемом (тонком) клиент аналогичные действия можно выполнить с помощью пункта меню Все действия/Вывести список.
1с выделить строку табличной части
В новой версии 1С 8.2 и 1C 8.3 появилась возможность выполнять действия с несколькими объектами одновременно, позволяющая изменить несколько строк в таблице, или несколько позиций в справочнике.
Зная, как в 1с выделить несколько строк, можно будет:
- перепровести платежку;
- сделать отмену проведенных документов;
- сделать отметки на удаление для конкретных позиций и т.д.
Удобная опция позволяющая в 1с выделить строку программно поможет повысить производительность труда бухгалтера и сократит количество неэффективной и монотонной работы при редактировании бухгалтерской документации. В отличие от обработки в режиме «Групповое изменение реквизитов», который занимает много времени, данный способ работы внутри самого документа существенно экономит время. Статья расскажет, как выделить строки в 1с 8.3 цветом, какое сочетание клавиш позволит выполнять нужные действия.
Выделение сразу всех документов
Чтобы выделять нужные строки в готовых документах желтым цветом, используется сочетание клавиш CTRL+A. Оно используется для выполнения массового выделения. Сначала открывается список документов «Реализация (акт, накладная)».
Затем нажимаются вместе клавиши CTRL+A.
После того, как будут выделены все строки в документе, можно будет выполнить массовое изменение. Для этого нужно при помощи правой кнопки мыши нажать в списке документов, или на строчку «Еще». После этого выбирается нужное действие для редактируемого документа, например “Провести”.
Зная, как выделить строки в 1с 8.3 во всей таблице, можно быстро отредактировать бухгалтерские проводки.
Выделение нескольких документов по порядку
Часто бухгалтеру требуется выделить нужные счет-фактуры или накладные за конкретный месяц. В этом случае потребуется клавиша SHIFT.
Вот как выделить цветом строки в 1с 8.3 в этом случае:
- навести курсор в начало нужной строки;
- нажать и держать клавишу SHIFT;
- щелкнуть левой кнопкой мыши по строке, где заканчивается выделения, не отпуская клавишу SHIFT.
Вот как выделить строки в 1с 8.3 можно в отдельных нужных местах, а не во всем документе.
Выборочное выделение
Можно теперь в 1с выделить строку программно, даже если нужные фрагменты в таблице идут не по порядку. В этом случае используется клавиша CTRL.
Порядок действий в этом случае следующий:
- нажать и держать клавишу CTRL;
- не отпуская зажатую клавишу, щелкнуть по нужным строкам в документе мышкой;
- после этого будут выделены цветом нужные строки, расположенные в разных частях табличной части бухгалтерского документа.
Если получилось случайно в 1с выделить часть строки, которую не нужно редактировать, следует, не отпуская клавишу CTRL, еще раз кликнуть по этому месту. После этого выделение будет снято.
Использовать указанные способы выделения всех или некоторых строк в таблице можно в любых формах документов новой версии бухгалтерской программы 1С. В новой версии используется механизм программного выделения строк, на которых установлен курсор. Программа реагирует на нажатие тех или иных клавиш.
Табличные части позволяют хранить неограниченное количество структурированной информации, принадлежащей одному объекту.
Рассмотрим некоторые приемы работы с табличными частями.
Как обойти табличную часть
Для обхода табличной части можно использовать цикл Для каждого
Для каждого Строка из ТабличнаяЧасть Цикл
Сообщить ( Строка . РеквизитТабличнойЧасти ) ;
На каждой итерации в переменную Строка передается очередная строка табличной части. Значения реквизитов строки можно получить выражением Строка.ИмяРеквизита.
Как получить и обойти выделенные строки табличной части
Для вывода информации из табличной части объекта служит элемент формы Табличное поле. Для включения возможности выделения нескольких строк на табличном поле нужно установить значение Множественный у его свойства Режим выделения.
Для получения перечня выделенных строк используется следующий код:
Для того чтобы обойти выделенные строки используется цикл Для каждого:
ВыделенныеСтроки = ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки ;
Для каждого Строка из ВыделенныеСтроки Цикл
Как программно выделить строки табличной части (табличного поля) и снять выделение
Чтобы программно снять выделение строк табличного поля:
Чтобы программно выделить все строки табличного поля:
Для каждого ТекущаяСтрока Из ТабличнаяЧасть Цикл
ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки . Добавить ( ТекущаяСтрока ) ;
КонецЦикла ;Как очистить табличную часть
Как получить текущую строку табличной части
Текущая строка — это срока, в которой у пользователя в данный момент находится курсор. Чтобы ее получить, нужно обратиться к элементу управления на форме, который связан с табличной частью.
Для обычных форм код будет выглядеть так:
Для управляемых форм:
Как добавить новую строку в табличную часть
Добавление новой строки в конец табличной части:
Добавление новой строки в любое место табличной части (последующие строки будут сдвинуты):
НоваяСтрока = ТабличнаяЧасть . Вставить ( Индекс )
//Индекс — номер добавляемой строки. Нумерация строк начинается с нуля.НоваяСтрока . Реквизит 1 = «Значение» ;
Как программно заполнить реквизиты строки табличной части
Если нужно программно заполнить реквизиты строки табличной части, которую добавляет пользователь, необходимо использовать обработчик события табличной части ПриНачалеРедактирования.
Создаваемая обработчиком процедура имеет три параметра:
- Элемент — содержит элемент управления ТабличноеПоле.
- НоваяСтрока — булево. Содержит значение Истина, если добавляется новая строка табличной части, и Ложь, если пользователь начал редактировать уже существующую строку.
- Копирование — булево. Содержит значение Истина, если пользователь копирует строку, и Ложь в остальных случаях.
Рассмотрим пример. Допустим, нам нужно заполнить реквизит табличной части СчетУчета, в случае, когда добавляется новая строка. При редактировании существующей строки изменять счет учета не нужно.
Процедура ТабличнаяЧастьПриНачалеРедактирования ( Элемент , НоваяСтрока , Копирование )
//Если пользователь редактирует существующую строку, то ничего не делаем
Если НЕ НоваяСтрока Тогда
Возврат ;
КонецЕсли ;//Если же строка новая, устанавливаем счет учета
ТекСтрока = Элемент . ТекущиеДанные ; //Получили текущую строку табличной части
ТекСтрока . СчетУчета = ПланыСчетов . Хозрасчетый . НужныйСчетУчета ;
КонецПроцедурыРабота с табличной частью объектов в 1С : 13 комментариев
Приветствую!
Только начал изучать 1С.
Кое что уже знаю, но мало и опыта практически ноль.
Создал свою конфигурацию, пока только для тестов.
В данной конфигурации есть документ, назовем его «Заявка».
В данной заявке, есть табличная часть, в которой есть реквизит «Стоимость».
Получается, что таких документов много и мне нужно сложить все реквизиты «Стоимость» из всех документов «Заявка».
Вопрос.
Как мне это сделать?
Предполагаю, что нужно использовать функцию с экспортом, в которой будет цикл «Для Каждого ……»
Но как это оформить, пока не могу понять…Сделать это можно по-разному. Цикл Для каждого, на мой взгляд, не очень подходящий вариант, т.к. будет работать слишком долго. Да и надо еще где-то список документов брать.
Спасибо!
Буду пробовать.А может это подойдет?
Табличная часть (Tabular section)
Итог (Total)
Синтаксис:Тип: Число; Строка.
Индекс либо имя колонки, по которой подсчитывается итог.
Возвращаемое значение:Тип: Число; Неопределено.
Суммирует значения всех строк в указанной колонке.
Если в колонке установлен тип и он единственный, то при суммировании будет предприниматься попытка преобразования значения к типу Число.
Если колонке не присвоены типы, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них есть тип Число, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них нет типа Число, то результатом будет значение Неопределено.Сервер, толстый клиент, внешнее соединение.
Пример:Это подошло бы, если бы нужно было суммировать колонку в одном документе. А Юрию нужно суммировать колонку Стоимость всех документов.
Добрый день!
Достаточно ли будет обратиться в модуле формы к текущей строке табличной части или в модуле менеджера тоже нужно будет что-то прописать?Не совсем понял, о чем конкретно вопрос.
Если о том, как получать и работать с текущей строкой табличной части, то в модуле менеджера ничего писать не нужно.Здравствуйте!
Опишу вкратце ситуацию:
Из документа вызывается команда печати штрихкодов и в обработку печати передается, как я понимаю, весь контекст документа и печатаются этикетки для всех строк документа. Возможно ли в обработке печати получить информацию только о выделенных строках из этого контекста ? Прилагаю код модуля команды ПечатьЭтикеток.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)//Создаём новую коллекцию печатных форм
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(«ПечатьЭтикеток»);
//Добавляем в коллекцию сформированный табличный документ
КоллекцияПечатныхФорм[0].ТабличныйДокумент = ТабДокумент;
//Устанавливаем параметры печати (при необходимости)
КоллекцияПечатныхФорм[0].Экземпляров = 1;
КоллекцияПечатныхФорм[0].СинонимМакета = «ПечатьЭтикеток»; //Так будет выглядеть имя файла при сохранении в файл из формы «Печать документов»
//Вывод через стандартную процедуру БСП
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, Неопределено, Неопределено);КонецПроцедурыТабДокумент.АвтоМасштаб = истина ;
ТабДокумент.ОтображатьСетку = Ложь;
ТабДокумент.ТолькоПросмотр = Истина;
ТабДокумент.ОтображатьЗаголовки = Ложь;Макет = ДокСсылка.ПолучитьОбъект().ПолучитьМакет(«Этикетка»);
Для каждого Стр Из ДокСсылка.Картриджи Цикл
//Если Лев(Стр.СерийныйНомер,2) «30» Тогда
// Продолжить;
//КонецЕсли;
ОбластьМакета = Макет.ПолучитьОбласть(«ШПК»);ЧтоТо = Стр.СерийныйНомер;
ПервыйМодуль.ВывестиШтрихкодДокументаВОбластьМакета(ВнешняяКомпонента,ОбластьМакета,ЧтоТо) ;Информацию о выделенных строках вы можете получить только в модуле формы документа, причем, если мне не изменяет память, это должна быть клиентская процедура. По ссылке на документ выделенные строки получить нельзя.
Значит я на клиенте должен сформировать таблицу выделенных строк и уже ее передавать в обработку печати ?
Да, логика такая. Только учтите, что таблица значений не передается с клиента на сервер.
Выделенный строки табличного поля на форме — это массив строк. Надо попробовать, передастся ли он. Если да, хорошо. Если нет — надо думать, как его передать.Доброго времени суток!
Создаю обработку на обычных формах, в которой имеется несколько Табличных частей. Они в свою очередь находят отображение в Форме обработки. И если данные первых 3, меня после закрытия Формы, не интересуют, то данные последней хотелось-бы использовать в дальнейшем, пока открыта обработка. В настоящее время при закрытии Формы Табличные части очищаются. В дальнейшем, в новом сеансе работы с обработкой эти данные не нужны. Насколько я понимаю Функции сохранения Данных Табличной части обработки не существует. Табличную часть в обработке решил использовать из-за возможности сохранить структуру Данных. Как мне сохранить эти данные для использования в других окнах?
Может у Вас есть видео по данному вопросу?Как в 1С выделить несколько строк?
Выделить несколько строк в журнале документов или другой табличной части можно:
- сочетанием клавиш Ctrl + A — выделяются все строки;
- клавишей Shift — выделяются несколько строк подряд:
- или щелкнуть в начале диапазона выделения+ использовать стрелки,
- или щелкнуть по нужной строке, обозначив конец выделения списка.
- клавишей Ctrl — зажав ее, выделите только те документы, которые вам нужны.
См. также:
Если Вы еще не подписаны:
Активировать демо-доступ бесплатно →
или
Оформить подписку на Рубрикатор →
После оформления подписки вам станут доступны все материалы по 1С Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
-
В ЗУП 3.1.14 реализован новый механизм для продления отпусков на..У вас нет доступа на просмотр Чтобы получить доступ:Оформите коммерческую..
(4 оценок, среднее: 2,00 из 5)
Публикацию можно обсудить в комментариях ниже.
Обратите внимание!
В комментариях наши эксперты не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно в Личном кабинетеДобавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Вы можете задать еще вопросов
Доступ к форме «Задать вопрос» возможен только при оформлении полной подписки на БухЭксперт8
Нажимая кнопку «Задать вопрос», я соглашаюсь с
регламентом БухЭксперт8.ру >>Изменения в 2022 году, о которых нужно знать бухгалтеру
6-НДФЛ за 1 квартал 2022 в 1С
Санкции и контрмеры: как работать организации и ее бухгалтеру в новой реальности. Часть 2
Учет малоценных ОС и запасов (ОСН)
Отчетность за 1 квартал 2022
Спасибо огромное, Марина Аркадьевна! Очень приятно в очередной раз вас слышать! Спасибо, что всегда помогаете понять то,что порой понять невозможно! Как-то все на место становится в голове! Да и настроение порой поднимаете своим позитивом! с нетерпением буду ждать следующей встречи!
Любая таблица значений состоит из колонок, каждая из которых имеет свой тип и уникальное название, а также из строк. Если таблица значений размещена на управляемой форме в виде элемента Таблица, то колонки создаются изначально на этапе разработки, а строки пользователь может создать самостоятельно, нажав на кнопку «Добавить» в командной панели этой таблицы.
Также пользователь может удалять строки или перемещать. Но, гораздо интереснее программная работа со строками таблицы значений.
Программное добавление строк таблицы значений в 1С
В платформе 1С 8.2 — 8.3 разработчик имеет возможность добавлять строки таблицы значений непосредственно с помощью языка разработки, работая в конфигураторе 1С.
Для того чтобы создать новую строку таблицы значений, используется метод Добавить, данный метод не имеет параметров и является функцией.
Новая строка таблицы значений создается следующим образом:
Как видите, с помощью метода Добавить мы создали переменную НоваяСтрока, тип значения которой Строка таблицы значений. Но, просто создать строку мало, нам еще необходимо записать в нее определенные данные. Как получить доступ к колонкам данной строки?
Осуществить это можно двумя способами:
В первом способе мы получаем доступ к колонке как к свойству через точку, во втором — используя оператор квадратные скобки и указывая в них номер индекса колонки. Я предпочитаю первый способ, так как он делает код гораздо лучше читаемым и наглядным.
Допустим, у нас есть некоторая таблица значений ФИО с колонками Фамилия, Имя, Отчество, ФИО и ДатаРождения, то добавить новую строку этой таблицы и заполнить колонки этой строки можно следующим образом.
НоваяСтрока = ФИО . Добавить ();
НоваяСтрока . Фамилия = «Иванов» ;
НоваяСтрока [ 1 ] = «Иван» ;
НоваяСтрока . Отчество = «Петрович» ;
НоваяСтрока . ДатаРождения = ‘19800209’ ;
НоваяСтрока . ФИО = НоваяСтрока . Фамилия + » » +
Лев ( НоваяСтрока . Имя , 1 ) + «.» +
Лев ( НоваяСтрока . Отчество , 1 ) + «.» ;С помощью метода Добавить мы создаем строку, которая вставляется в конец таблицы значений. Для того чтобы поместить строку в нужное место таблицы значений, необходимо использовать метод Вставить. Параметром данного метода является индекс, на который вставляется данная строка.
Добавим с помощью этого метода еще одну строку в таблицу ФИО. И поставим ее на первое место.
НоваяСтрока = ФИО . Вставить ( 0 );
НоваяСтрока . Фамилия = «Петров» ;
НоваяСтрока . Имя = «Игорь» ;
НоваяСтрока . Отчество = «Андреевич» ;
НоваяСтрока . ФИО = НоваяСтрока . Фамилия + » » + Лев ( НоваяСтрока . Имя , 1 ) + «.» + Лев ( НоваяСтрока . Отчество , 1 ) + «.» ;
НоваяСтрока . ДатаРождения = ‘19850909’ ;Программный обход строк таблицы значений в 1С
Узнаем как обходить сроки таблицы. Это можно осуществлять с помощью операторов цикла Для каждого…Цикл и Для…Цикл.
Оператор цикла Для каждого…Цикл.
Для Каждого Стр из ФИО цикл
Сообщить ( Стр . ФИО + «, дата рождения » +
Формат ( Стр . ДатаРождения , «ДЛФ = ДД» ));
КонецЦикла;С помощью этого оператора мы обходим все строки таблицы значений. Переменная Стр принимает значения каждой строки таблицы в порядке обхода. Тип данной переменной — Строка таблицы значений, поэтому мы можем спокойно обращаться к колонкам данной строки, используя точку или квадратные скобки.
Оператор цикла Для…Цикл.
Для н = 0 по ФИО . Количество () — 1 цикл
Сообщить ( ФИО [ н ]. ФИО + «, дата рождения » +
Формат ( ФИО [ н ]. ДатаРождения , «ДЛФ = ДД» ));
КонецЦикла;В этом цикле нам необходимо получить индексы всех строк, для этого мы осуществляем обход, начиная с нуля и заканчивая значением, которое возвращает метод Количество за минусом единицы.
Когда мы используем квадратные скобки применительно к таблице значений (например, ФИО[н]), то результатом данной операции является строка таблицы с соответствующим индексом.
Индекс строки таблицы значений
Каждая строка имеет свой уникальный индекс. Все индексы идут по порядку и начинаются с 0. Для того, чтобы узнать индекс нужно строки необходимо применить метод Индекс таблицы значений, где в качестве параметра указать нужную строк.
Для Каждого Стр из ФИО цикл
Сообщить ( Стр . ФИО + «, дата рождения » +
Формат ( Стр . ДатаРождения , «ДЛФ = ДД» ));
Инд = ФИО . Индекс ( Стр )
КонецЦикла;В этом коде в переменную Инд будет записываться индекс строки при каждой итерации цикла.
Программное удаление строк таблицы значений
Для программного удаление определенной строки таблицы значений нужно использовать метод Удалить этой таблицы. В качестве параметра указывается или индекс нужной строки или сама строка.
ФИО . Удалить ( 0 )
У новичков основные сложности возникают, когда нужно удалить несколько строк из таблицы значений. Если делать обход таблицы значений циклом, то данное удаление пройдет не совсем корректно. Я в этом случае поступаю так: сохраняю нужные строки в массиве, а потом обхожу этот массив циклом и уже в нем их все удаляю. Получается примерно так:
МассивДляУдаления = Новый Массив ;
Для Каждого Стр из ФИО цикл
Если тогда //какое-то условие
МассивДляУдаления . Добавить ( Стр );
КонецЕсли
КонецЦикла;
Для Каждого СтрМассива из МассивДляУдаления Цикл
ФИО . Удалить ( стрМассива )
КонецЦиклаБолее подробно о работе с таблицами значений и другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.Реализовано в версии 8.3.11.2867.
Мы реализовали выделение нескольких блоков строк в таблицах, а также вывод чисел с единицами измерения в диаграммы, отчёты и динамические списки.
Выделение блоков в таблицах
Желание пользователей выделять несколько отдельных блоков строк в таблицах вполне естественно и понятно. Подобные пожелания были у нас записаны, но их реализация это задача нетривиальная.
Наверное, самым популярным источником данных для таблиц является динамический список. Сложность заключается в том, что в 1С:Предприятии он бесконечный, и платформа не держит в памяти все отображаемые строки. Платформа не знает, сколько и каких строк находится выше и ниже текущей видимой области.
Но мы нашли решение этой проблемы, и теперь вы можете выделять несколько несоприкасающихся блоков в таблицах. Для выделения первого блока вы можете использовать Shift + клик мышью на последней строке блока. А для выделения первой строки следующего блока Ctrl + клик мышью. Окончание следующего блока вы можете указать также с помощью комбинации Shift + клик мышью.
Такое выделение строк поддерживается теперь во всех таблицах, включая таблицы, связанные с динамическими списками и с настройками компоновки данных.
Кроме этого в таблицах, связанных с настройками компоновки данных и с данными типа ДанныеФормыДерево теперь возможно выделение диапазонов строк с любыми родителями, а не только с одинаковыми.
Как вы можете заметить, для выделения конца блока используется комбинация Shift + клик мышью. Таким образом, мы реализовали и ещё одно ваше пожелание, чтобы группу строк можно было выделять кликом на последней строке группы.
Выделение большого количества строк
Мы оптимизировали выделение большого количества строк в тонком клиенте, а кроме этого провели дополнительную оптимизацию выделения строк именно в динамическом списке для тонкого клиента и веб-клиента.
Помимо этого мы изменили сам алгоритм выделения большого количества строк и добавили возможность прерывания этого процесса. Теперь, если выделение строк продолжается более 2 секунд, на экране отображается форма, которая позволяет прервать процесс:
Если пользователь не предпринимает никаких действий, эта форма автоматически исчезнет с экрана, когда выделение завершится. Если пользователь нажимает на кнопку Прервать, выделение строк прекращается. При этом выделенными становятся те строки, которая программа уже успела выделить.
Единицы измерения
В диаграммах, отчётах и динамических списках появилась возможность выводить форматированные числовые значения вместе с единицей измерения. Например, в колонке Сумма, где отображается сумма документа.
Для этого мы добавили в форматную строку новый параметр ЧФ. С его помощью вы можете указывать нужный вам формат, например, прямо в условном оформлении отчёта.
Также этот параметр форматной строки вы можете использовать при описании реквизитов справочников, документов и других объектов конфигурации. Платформа будет автоматически отображать его в динамических списках, например.
Этот же формат вы можете использовать и для редактирования значений в поле ввода.
Мы рассчитываем, что эти доработки повысят информативность отчётов и таблиц, а также упростят работу пользователей с большими таблицами.
Выделение цветом текущей строки в табличной части
В самом простом варианте — установив параметр табличного поля «Режим выделения строки» в значение «Строка». Плюсы — ничего не надо программировать. Минусы — выделение обычным синим цветом (цвет можно менять в разделе «Оформление» — «Цвет фона выделения»), и тяжело понять на какой колонке в строке стоит сейчас курсор.
В варианте посложнее — обработав события ПриПолученииДанных и ПриАктивизацииСтроки (см. пример). Плюсы — гибкость настройки. Можно установить любой цвет любой колонке. Минусы — необходимо написать немного кода.
Пример (на форме есть ТабличнаяЧасть1, используются две её события, устанавливается жёлтый цвет всей текущей строке):
В поле табличного документа
Немножко по-другому.Если отчет изначально покрашен в какие-то цвета, которые желательно сохранить, то нужно чуть посложнее — перед покраской запоминать цвет(или всю область) и восстанавливать когда подсветка строки больше не нужна.