1с выделить строки табличной части по условию
Всем привет. Люди добрые, подскажите какой код нужно использовать, чтобы при определенных условиях выделялась строка документа.
Ситуация такая: есть форма, на форме ТЧ. Прописал для ТЧ код - появилась колонка с возможностью выставить флажок. Когда ставлю флажок, выделяется строка. Но, при установке нескольких флажков - выделяется только последняя отмеченная строка.
Подскажите, что нужно прописать, чтобы при установке флажка строка выделялась (или несколько строк).
(1) при получении. А вообще - при изменении флажка должно. Там даже событие есть такое ПриИзмененииФлажка. Мне сам оператор интересен
(13) ну, ежели "Форма обычная, не УФ", можно так:
только Процедуру СписокПриПолученииДанных "привяжи" к форме, а не просто скопируй отсюда . ну или код туда всавь , если она уже есть
(0) нужно просто выделить строку цветом, или именно выделить (т.е. при нажатии на del выделенные строки удалятся)?
(15) Именно выделить. Если я их через ctrl+клик выделяется все (выделение цветом у меня установлено). Мне Нужно, чтобы они именно выбирались для дальнейшей их обработки
(16) имхо, штатно этого сделать нельзя. Но можно эмулировать нажатие клавиш скриптом vbs. Т.е.
1) Установка активности для строки ТП (тоже вопрос. )
2) выполнение скрипта
(10)
СП
ВыделенныеСтроки (SelectedRows)
Использование:
Только чтение.
Описание:
Тип: ВыделенныеСтрокиТабличногоПоля.
Содержит коллекцию выделенных строк табличного поля.
Maratuster, как ты себе представляешь как это будет работать?
Тебе нужно чтобы определенные строки при определенных условиях ВСЕГДА были выделены? Тогда пользователь просто не сможет редактировать Табличную часть.
(28) Мне нужно, чтобы при установки флажка выделялся документ(то есть вся строка). Соответственно, если документов выделяю более 1, то выделяться должны все. Это, например, для переноса данных их документа в ТЧ другого документа.
А у меня получается, что при установке нескольких флажков, выделяется только тот документ, который я последним отмечал.
(32) Если бы так и было, я бы не просил помощи. Мне не суть важно, чтобы цветом выделялась строка. Мне главное, чтобы документ при установке флажка выбирался.
Начну с самого начала, чтобы понятнее было.
В документе "АктОбОказанииПроизводственныхУслух" на вкладке материалы есть подменю "Заполнить". По заданию мне надо добавить в это подменю кнопку заполнить по требованиям-накладным. При нажатии на нее должен выходить список документов "ТребованиеНакладная", и при выборе документов значение ТЧ вкладки Материалы заполняется из значений документов. Так вот, документы "ТребованиеНакладная" необходимо выделять флажком, то есть, выбрал 2 и более документов - ТЧ заполнилась значениями из них. А У меня получается, что я выделяю 2 и более, а значение переносится только из того документа, который я последним выделил.
Рассмотрим задачу, когда в зависимости от значения в колонке нужно выделить определенным цветом строку таблицы.
Рассмотрим на примере:
На форме таблица с колонками Организация, Сотрудник, Сумма (рис. 1). Если Сумма < 0, то строку нужно выделить красным цветом, а если Сумма = 0, строку нужно выделить зеленым цветом.
Рис. 1. Форма с таблицей
Открываем свойство Формы УсловноеОформление (рис. 2), чтобы открыть свойства формы нужно выделить в левом окне слово Форма и нажать Alt + Enter (или правой кнопкой мыши + Свойства).
Рис. 2. Свойство формы УсловноеОформление
В открывшемся окне Настройка условного оформления добавляем строку и в колонке Оформление устанавливаем параметр Цвет фона (рис. 3):
Рис. 3. Параметр оформления Цвет фона
В колонке Условие добавляем Отбор (рис. 4), прописываем условие Сумма < 0(рис. 5):
Рис. 4. Добавление отбора в Условие
Рис. 5. Условие Сумма < 0
На форме Настройка условного оформления в колонке Оформляемые поля добавляем таблицу Сотрудники, тогда цветом будут выделены все колонки таблицы (т.е. вся строка, подходящая по условию), если нужно выделить цветом определенные колонки, то выбираем только нужные колонки (рис. 6):
Аналогично добавляем строку для условия Сумма = 0 и переходим в пользовательский режим, открываем форму (рис. 7):
Рис. 7. Форма в пользовательском режиме
Строка с суммой -78 окрашена в красный цвет, строка с суммой 0 – в зеленый, первая строка окрашена в оранжевый, т.к. это цвет выделения активной строки.
Подписывайтесь на канал
«Полезный 1С»
В телеграм канале — наш практический опыт, бизнес-кейсы и способы повышения эффективности компании, которые мы опробовали внутри группы Neti.
Табличные части позволяют хранить неограниченное количество структурированной информации, принадлежащей одному объекту.
Рассмотрим некоторые приемы работы с табличными частями.
Как обойти табличную часть
Для обхода табличной части можно использовать цикл Для каждого
Для каждого Строка из ТабличнаяЧасть Цикл
Сообщить ( Строка . РеквизитТабличнойЧасти ) ;
На каждой итерации в переменную Строка передается очередная строка табличной части. Значения реквизитов строки можно получить выражением Строка.ИмяРеквизита.
Как получить и обойти выделенные строки табличной части
Для вывода информации из табличной части объекта служит элемент формы Табличное поле. Для включения возможности выделения нескольких строк на табличном поле нужно установить значение Множественный у его свойства Режим выделения.
Для получения перечня выделенных строк используется следующий код:
Для того чтобы обойти выделенные строки используется цикл Для каждого:
ВыделенныеСтроки = ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки ;
Для каждого Строка из ВыделенныеСтроки Цикл
Как программно выделить строки табличной части (табличного поля) и снять выделение
Чтобы программно снять выделение строк табличного поля:
Чтобы программно выделить все строки табличного поля:
Для каждого ТекущаяСтрока Из ТабличнаяЧасть Цикл
ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки . Добавить ( ТекущаяСтрока ) ;
КонецЦикла ;
Как очистить табличную часть
Как получить текущую строку табличной части
Текущая строка — это срока, в которой у пользователя в данный момент находится курсор. Чтобы ее получить, нужно обратиться к элементу управления на форме, который связан с табличной частью.
Для обычных форм код будет выглядеть так:
Для управляемых форм:
Как добавить новую строку в табличную часть
Добавление новой строки в конец табличной части:
Добавление новой строки в любое место табличной части (последующие строки будут сдвинуты):
НоваяСтрока = ТабличнаяЧасть . Вставить ( Индекс )
//Индекс - номер добавляемой строки. Нумерация строк начинается с нуля.
НоваяСтрока . Реквизит 1 = "Значение" ;
Как программно заполнить реквизиты строки табличной части
Если нужно программно заполнить реквизиты строки табличной части, которую добавляет пользователь, необходимо использовать обработчик события табличной части ПриНачалеРедактирования.
Создаваемая обработчиком процедура имеет три параметра:
- Элемент — содержит элемент управления ТабличноеПоле.
- НоваяСтрока — булево. Содержит значение Истина, если добавляется новая строка табличной части, и Ложь, если пользователь начал редактировать уже существующую строку.
- Копирование — булево. Содержит значение Истина, если пользователь копирует строку, и Ложь в остальных случаях.
Рассмотрим пример. Допустим, нам нужно заполнить реквизит табличной части СчетУчета, в случае, когда добавляется новая строка. При редактировании существующей строки изменять счет учета не нужно.
Процедура ТабличнаяЧастьПриНачалеРедактирования ( Элемент , НоваяСтрока , Копирование )
//Если пользователь редактирует существующую строку, то ничего не делаем
Если НЕ НоваяСтрока Тогда
Возврат ;
КонецЕсли ;
//Если же строка новая, устанавливаем счет учета
ТекСтрока = Элемент . ТекущиеДанные ; //Получили текущую строку табличной части
ТекСтрока . СчетУчета = ПланыСчетов . Хозрасчетый . НужныйСчетУчета ;
КонецПроцедуры
Работа с табличной частью объектов в 1С : 13 комментариев
Приветствую!
Только начал изучать 1С.
Кое что уже знаю, но мало и опыта практически ноль.
Создал свою конфигурацию, пока только для тестов.
В данной конфигурации есть документ, назовем его «Заявка».
В данной заявке, есть табличная часть, в которой есть реквизит «Стоимость».
Получается, что таких документов много и мне нужно сложить все реквизиты «Стоимость» из всех документов «Заявка».
Вопрос.
Как мне это сделать?
Предполагаю, что нужно использовать функцию с экспортом, в которой будет цикл «Для Каждого ……»
Но как это оформить, пока не могу понять…
Сделать это можно по-разному. Цикл Для каждого, на мой взгляд, не очень подходящий вариант, т.к. будет работать слишком долго. Да и надо еще где-то список документов брать.
Спасибо!
Буду пробовать.
А может это подойдет?
Табличная часть (Tabular section)
Итог (Total)
Синтаксис:
Тип: Число; Строка.
Индекс либо имя колонки, по которой подсчитывается итог.
Возвращаемое значение:
Тип: Число; Неопределено.
Суммирует значения всех строк в указанной колонке.
Если в колонке установлен тип и он единственный, то при суммировании будет предприниматься попытка преобразования значения к типу Число.
Если колонке не присвоены типы, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них есть тип Число, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них нет типа Число, то результатом будет значение Неопределено.
Сервер, толстый клиент, внешнее соединение.
Пример:
Это подошло бы, если бы нужно было суммировать колонку в одном документе. А Юрию нужно суммировать колонку Стоимость всех документов.
Добрый день!
Достаточно ли будет обратиться в модуле формы к текущей строке табличной части или в модуле менеджера тоже нужно будет что-то прописать?
Не совсем понял, о чем конкретно вопрос.
Если о том, как получать и работать с текущей строкой табличной части, то в модуле менеджера ничего писать не нужно.
Здравствуйте!
Опишу вкратце ситуацию:
Из документа вызывается команда печати штрихкодов и в обработку печати передается, как я понимаю, весь контекст документа и печатаются этикетки для всех строк документа. Возможно ли в обработке печати получить информацию только о выделенных строках из этого контекста ? Прилагаю код модуля команды ПечатьЭтикеток.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
//Создаём новую коллекцию печатных форм
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(«ПечатьЭтикеток»);
//Добавляем в коллекцию сформированный табличный документ
КоллекцияПечатныхФорм[0].ТабличныйДокумент = ТабДокумент;
//Устанавливаем параметры печати (при необходимости)
КоллекцияПечатныхФорм[0].Экземпляров = 1;
КоллекцияПечатныхФорм[0].СинонимМакета = «ПечатьЭтикеток»; //Так будет выглядеть имя файла при сохранении в файл из формы «Печать документов»
//Вывод через стандартную процедуру БСП
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, Неопределено, Неопределено);КонецПроцедуры
ТабДокумент.АвтоМасштаб = истина ;
ТабДокумент.ОтображатьСетку = Ложь;
ТабДокумент.ТолькоПросмотр = Истина;
ТабДокумент.ОтображатьЗаголовки = Ложь;
Макет = ДокСсылка.ПолучитьОбъект().ПолучитьМакет(«Этикетка»);
Для каждого Стр Из ДокСсылка.Картриджи Цикл
//Если Лев(Стр.СерийныйНомер,2) «30» Тогда
// Продолжить;
//КонецЕсли;
ОбластьМакета = Макет.ПолучитьОбласть(«ШПК»);
ЧтоТо = Стр.СерийныйНомер;
ПервыйМодуль.ВывестиШтрихкодДокументаВОбластьМакета(ВнешняяКомпонента,ОбластьМакета,ЧтоТо) ;
Информацию о выделенных строках вы можете получить только в модуле формы документа, причем, если мне не изменяет память, это должна быть клиентская процедура. По ссылке на документ выделенные строки получить нельзя.
Значит я на клиенте должен сформировать таблицу выделенных строк и уже ее передавать в обработку печати ?
Да, логика такая. Только учтите, что таблица значений не передается с клиента на сервер.
Выделенный строки табличного поля на форме — это массив строк. Надо попробовать, передастся ли он. Если да, хорошо. Если нет — надо думать, как его передать.
Доброго времени суток!
Создаю обработку на обычных формах, в которой имеется несколько Табличных частей. Они в свою очередь находят отображение в Форме обработки. И если данные первых 3, меня после закрытия Формы, не интересуют, то данные последней хотелось-бы использовать в дальнейшем, пока открыта обработка. В настоящее время при закрытии Формы Табличные части очищаются. В дальнейшем, в новом сеансе работы с обработкой эти данные не нужны. Насколько я понимаю Функции сохранения Данных Табличной части обработки не существует. Табличную часть в обработке решил использовать из-за возможности сохранить структуру Данных. Как мне сохранить эти данные для использования в других окнах?
Может у Вас есть видео по данному вопросу?
Как раскрасить строки списка по некоторому условию?
В 1С Предприятии 8.2 формы списка объектов конфигурации построены с помощью динамического списка. Одним из полезных свойств динамического списка является возможность настройки оформления его строк. Это делается через свойство УсловноеОформление динамического списка.
Например, нам требуется оформить список приходных накладных так, чтобы документы за текущий месяц были выделены розовым фоном.
Для этого создадим форму списка документа ПриходнаяНакладная и откроем палитру свойств основного реквизита формы Список . В строке Настройка списка нажмем Открыть .
Поскольку этот реквизит имеет тип ДинамическийСписок , который построен на основе системы компоновки данных, то мы можем настроить для него отбор, порядок, группировку и условное оформление. В открывшемся окне настройки динамического списка перейдем на закладку Условное оформление и нажмем кнопку Добавить в командной панели окна.
Сначала укажем оформление для выделения полей. Нажмем кнопку выбора в поле Оформление и установим розовый цвет фона.
Затем укажем условие, при наступлении которого будет применяться оформление, то есть когда строки списка документов будут розовыми.
Нажмем кнопку выбора в поле Условие и в появившемся окне добавим Новый элемент отбора . Для этого нажмем на кнопку Добавить и укажем в графе Левое значение – поле документа Дата , в графе Вид сравнения – Больше , а в графе Правое значение выберем из списка Начало этого месяца .
Список оформляемых полей можно оставить пустым. В этом случае будет выделена полностью вся строка таблицы списка, что нам и нужно.
Таким образом, мы добились требуемого оформления списка документов ПриходнаяНакладная .
Демонстрационный пример находится в каталоге 1CITS/EXE/FAQ/КакРаскраситьСтрокиСписка.dt. Пример выполнен на версии платформы 8.2.9.356.
По условию можно оформить также и строки табличной части документов или других объектов конфигурации. Это делается с помощью условного оформления формы. Подробнее смотрите в вопросе Как раскрасить строки табличной части по некоторому условию?.
Сделать выделение своим цветом по выбору в списке документов на 8.3
Чтобы в списке документов пользователь мог сам выделять определенные документы своим цветом по выбору — цветом шрифта, или цветом фоном — не важно.
Есть идеи как это можно реализовать?
(9) В реальной жизни какой-то критерий все-таки есть. Ты бы узнал у пользователей реальную задачу.
P.S. Пользователям только дай волю, они и лайки, и смайлики, и стикеры попросят.
(28) Ключевая строка последняя:
Вопрос был в другом:
Чтобы в СПИСКЕ ДОКУМЕНТОВ пользователь мог на любые нужные ему документы устанавливать некий цветовой маркер ВЫБИРАЯ ЦВЕТ, который ему нравится.
Чтобы в СПИСКЕ ДОКУМЕНТОВ пользователь мог на любые нужные ему документы устанавливать некий цветовой маркер ВЫБИРАЯ ЦВЕТ, который ему нравится.
Как в 1С выделить несколько строк
При работе в 1С бывает нужно выполнить действия над несколькими объектами сразу. Например, перепровести, отменить проведение документов, пометить на удаление элементы и так далее. Для этого можно использовать обработку «Групповое изменение реквизитов», но это затратно по времени.
Есть другой, более простой способ выполнения таких задач — выделение нескольких строк в самих объектах. Рассмотрим несколько примеров на программе 1С:Бухгалтерия предприятия.
Как выделить сразу все документы
Первый пример — когда нужно выделить сразу все документы. Откроем список документов «Реализация (акт, накладная)».
Для выделения всех строк нажмем комбинацию клавиш CTRL+A на клавиатуре. Все строки будут желтого цвета.
Теперь можем выполнить массовое изменение. Для этого нажмем правой кнопкой мыши в списке документов, либо кнопку «Еще». Затем выбираем нужное действие, например, «Провести».
Как выделить несколько документов по порядку
Допустим, нам нужно выделить документы за январь 2016 года. CTRL+A здесь уже не подойдет, так как будут включены и другие периоды.
Получите понятные самоучители по 1С бесплатно:
- Встаем курсором на начало выделяемой строки, в данном случае это строка с датой 12.01.2016.
- Зажимаем клавишу SHIFT.
- Щелкаем левой кнопкой мыши по строке, в которой должно закончиться выделение. В данном случае это строка с датой 31.01.2016. При этом клавишу SHIFT не отпускаем.
Получим такой результат.
Выделились только нужные нам строки.
Как выборочно выделить документы
Допустим, нам нужно выделить несколько строк, которые идут не по порядку.
- Зажимаем клавишу CTRL.
- Не отпуская клавишу щелкаем левой кнопкой мыши поочередно на нужных строках.
Получим такой результат.
При этом, если случайно зацепили лишнюю строку, не нужно начинать сначала. Удерживая клавишу CTRL, просто щелкните по этой строке еще раз, ее выделение отменится.
Таким образом, мы рассмотрели, как выделить несколько строк в 1С. Эти способы можно применять практически в любых списках документов, справочников, а также отчетах.
В программе 1С существует очень удобная функция — выделение цветом документа в списке по заданному условию.
Например можно выделить:
- Отсутствие оригиналов входящих документов
- Неподписанные исходящие документы
- Неоплаченные счета
- Несогласованные сверки
А, так же можно выбрать любое другое условие по заданным в документе параметрам. Зачастую это более удобно и наглядно чем крыжики.
Как настроить выделение в 1С по заданному условию
Для примера выделим несогласованные акты сверки красным цветом.
- Открыть журнал «Акты сверки расчетов с контрагентами», в котором необходимо сделать выделение.
- Нажать кнопку «Еще».
- Выбирать строку «Настроить список».
- Открыть закладку «Условное оформление».
- Нажать кнопку «Добавить».
- Открыть закладку «Оформление».
- Выбрать строку «Цвет текста» (или «Цвет фона») и меняем цвет с черного на красный (или любой другой цвет).
- Выбрать закладку «Условие».
- В левом окне «Доступные поля» выбираем двойным нажатием левой кнопки мыши поле «Сверка согласована», в правом окне появляется условие «Сверка согласована» — «Равно» — «Нет».
Любуемся на список, который теперь имеет два цвета — черным выделены согласованные сверки, красным не согласованные.
Читайте также: