1с проверить на пустоту табличную часть
Часто возникает задача показать только нужные строки в табличной части документа или справочника (или другого объекта). Для этого можно использовать замечательное свойство:
в обычном приложении параметр для ОтборСтрок - Отбор.
в управляемом приложении - ФиксированнаяСтруктура
ОтборСтрок, которое входит в расширение табличного поля, связанного с табличной частью.
Управляемые формы
или такой динамический отбор
Обычные формы
Использовать его очень просто:
А теперь конкретные примеры:
Подчиненные табличные части в 8.х
С помощью свойства ОтборСтрок можно реализовать подчиненные (связанные) табличные части. При смене текущей строки в первой табличной части вторая табличная часть показывает только связанную информаци. Например, таким образом можно реализовать работу с комплектами: 1-я таб. часть - комплекты, вторая - состав комплекта.
Во второй табличной части должна быть колонка - идентификационный признак, связывающий ее с первой табличной частью. Таких колонок может быть несколько (составной ключ);
В событии ПриАктивизацииСтроки для первого табличного поля пишем:
При добавлении новой строки во вторую табличную часть, нужно следить за тем, чтобы идентификационная колонка была установлена.
Обращаю ваше внимание, что при таком отборе не используются индексы и для больших табличных частей возможно замедление работы.
Еще раз напомню, что ОтборСтрок входит в расширение табличного поля табличной части, т.е. табличное поле должно быть связано с табличной частью. Если же оно связано с динамическим списком типа СправочникСписок, то здесь нужно использовать свойство Отбор для объекта типа СправочникСписок.
Если понадобилось перебрать строки, вошедшие в отбор, то это можно сделать, только заново перебрав все строки и проверив условие отбора для каждой строки. Перебрать строки табличного поля, которые сейчас на экране - невозможно.
Разместил: E_Migachev Версии: | 8.x | 8.2 УП | 8.3 | Дата: 29.09.2014 Прочитано: 131130Похожие FAQ
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 42Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D: ВашаБаза 1с77 " ; Пользователь= Excel файл как Внешний источник данных 14
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . https://helpf.pro/uploads/img Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Автоматизация обмена данных используя обработку "Универсальный обмен данными в формате XML" 10
Автоматизация обмена между базами используя обработку " Универсальный обмен данными в формате XML" В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки " Универсальный обме Посмотреть все результаты поиска похожих
Еще в этой же категории
Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора
Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип - Произвольный, Использование - Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Поле выбора
Как ограничить список выбора? 8
Ограничим список элементов, установив отбор в открываемой форме //Пример 1 Процедура СтатьяПДРНачалоВыбора(Элемент, СтандартнаяОбработка) ФормаВыбора = Справочники.ПрочиеДоходыИРасходы.ПолучитьФормуВыбора(, Элемент); ЭлементОтбораВидПДР = Форма Реквизит
Как активизировать, перевести фокус на необходимый элемент на форме? 6
//Текущему Элементу формы присваиваем элемент котровый необходимо активизировать ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.ТабличноеПоле; Посмотреть все в категории Работа с Формой (Диалог) и её элементами
(9)
Встаем в отладчике в модуле формы, нажимаем Shift-F9, пишем в окне ЭлементыФормы и внимательно изучаем вышедший список
А вообще, если не сможешь сам решить вопрос в (0) не получится из тебя 1Сника.
Для таблицы значений или табличной части пойдет такой способ
(7) и (13) тоже самое.
У меня табличное поле ссылается на табличную часть и имена у низ одинаковые.
Если не из открытого документа работаешь, то должен сначала выбрать конкретный документ, а не лезть в абстрактный Документ.ПлатежныйОрдерПоступлениеДенежныхСредств
(21) из открытого документа работаю
(19) это работает
спасибо
Темы так похожи, а как до элемента добраться все равно не знаю
(26) 3 элемента чего? 3 табличных части? колонки? строки? До чего вообще добраться надо?
А вообще - отладчик и СП в зубы и вперед.
(32) Для тех, кто в танке: вместо "НазваниеТабличнойЧасти" надо подставлять название табличной части документа как оно задано в конфигураторе.
(33) Для тех кто на бронепоезде, повторяю вопрос - Сам-то проверял?
(35) Какой null? Какой 0? А если колонка строковая? И вообще, если колонок штук 200, что делать?
(38) И что? Элемент обязан быть числом? Хрен знает, что он там хранит. Колонок показано 2, хрен знает, сколько их. Правильней количество строк считать, а проверка на содержимое вообще идет лесом. К тому же, это 2 разных вопроса, смотри тему из (23), танкист. :)
(39) Кароче, сейчас я тебе сформулирую вопрос за автора. Потому что для того, чтобы правильно сформулировать вопрос надо знать 80% ответа на него.
Вопрос: Нужно проверить табличную часть документа на предмет заполнения обязательного реквизита табличной части колонкаХ (к примеру сумма).
Ответ нужно перебрать коллецию строк указанной табличной части документа и проверить для каждой реквизит КолонкаХ
А как номер текущей (выделенной) строки табличного поля определить?
Данная конструкция может использоваться в модуле формы докумнета для интерактивного изменения содержимого колонок (например для пересчета суммы по количеству и цене).
(40) Ты не прочитал и трети темы(первый пост и чуть в конце), сформулировал свой собственный вопрос и сам на него ответил. Умница, возьми с полки пирожок!
(43) Зато ты прочитал всё полностью, а так и не понял о чем просит автор )
В форме подбора номенлатуры делаю возможность определенного фильтра, фильтр должен устанавливаться, когда ставится галочка, пишу процедуру на событие ПриИзменении флажка. В процедуре мне нужно получить текущую строку табличной части ЭтаФорма.ЭлементыФормы.НоменклатураДляПодбора.ТекущиеДанные выдает Неопределено
так получается, потому что последним выбранным объектом был флажок? а как тогда по-другому можно получить выбранное значение, в форме же видно какая строка активна в табличной части
в форме не видно какая строка активна в табличной части.
в форме видно какая строка активна в табличном поле.
или
табличноеполе[число из диапазона от 0 до КоличествоСтрок()-1]
(3) мне то нужно выбранное значение, что толку что я обойду табличное поле в цикле?
Табличное поле НоменклатураДляПодбора точно привязано до табличной части?
в событие Выбор есть параметры:
не оно?
при каких условиях хочешь получить значение строки?
(9) тоже неопределено, есть еще ВыбранныеСтроки и в них тоже пусто
можно так:
тч.Получить(тч.Индекс(ЭлементыФормы.тч.ТекущаяСтрока)).НашаКолонка
ну видимо у тебя просто нет данных в этом объекте к которому стучишься
смотрю в отладчике что содержит ЭлементыФормы.НоменклатураДляПодбора причем просматриваю это в событии Выбор для табличного поля, и у меня там ТекущиеДанные и ТекущаяСтрока пустые. Я вообще не понимаю, почему так?
это ты где вызываешь ЭлементыФормы.НоменклатураДляПодбора?
на комплексной глянул, есть таб. часть НоменклатураДляПодбора. ну и в обработчике флажка ПриИзменении напиши ЭлементыФормы.НоменклатураДляПодбора.ТекущиеДанные.Цена
что покажет?
вот так нада ЭлементыФормы.СправочникНоменклатура.ТекущиеДанные
Неопределено дает если вообще нет строк. Должны быть текущие данные.
Или у тебя неправильно связано таб. поле с табличной частью или ты что-то путаешь в описании проблемы.
(28)Какой бы там не был отбор , через Элементы формы путь однозначный и от отбора не зависящий.
(29) это понятно, просто она не к тому табличному полю обращалась
только у меня теперь другая проблема , мне нужно было ограничить выводимый список запросом, я думала данные находятся в табличной части НоменклатураДляПодбора, я по ней сделала запрос и запросом заполнила эту ТЧ.
(31)Это ты еще наверное ПриходноКассовыйОрдер не видела с его расшифровкой платежа.
Давно мечтаю посмотреть в глаза тому укурку, который писал исчезновение таб части и заполнение реквизитов формы при одной строке.
Код 1C v 8.2 УП
Параметры:
<ИмяПредопределенногоЗначения> (обязательный)
Тип: Строка.
Содержит полный путь до предопределенного значения, включая имя самого значения. Например, "ПланСчетов.Основной.Счет41".
Синтаксис описания предопределенного значения совпадает с синтаксисом оператора ЗНАЧЕНИЕ языка запросов:
<Тип предопределенного значения>.<Имя объекта метаданных>.<Значение>
Тип предопределенного значения> может быть:
Справочник (Catalog);
ПланВидовХарактеристик (ChartOfCharacteristicTypes);
ПланСчетов (ChartOfAccounts);
ПланВидовРасчета (ChartOfCalculationTypes);
Документ (Document) - только пустая ссылка;
Перечисление (Enum);
БизнесПроцесс (BusinessProcess) - только пустая ссылка и получение точек бизнес процесса;
Задача (Task) - только пустая ссылка.
В качестве <Имя объекта метаданных> указывается имя объекта метаданных, как оно задано в конфигураторе.
Для перечислений, определенных в конфигурации, <Значение> указывается как имя соответствующего объекта метаданных типа ЗначениеПеречисления. Для всех остальных типов предопределенных значений <Значение> указывается как имя предопределенного элемента данных, как оно указано в конфигураторе, или ПустаяСсылка для указания пустой ссылки.
Для точек маршрутов бизнес-процессов имя предопределенного значения имеет вид:
БизнесПроцесс.<Имя объекта метаданных>.ТочкаМаршрута.<Имя точки маршрута>
Также метод может быть использован для получения значения системного перечисления. В этом случае параметр формируется как:
<ИмяСистемногоПеречисления>.<ИмяЗначенияСистемногоПеречисления>
Возвращаемое значение:
Тип: Ссылка на объект информационной базы.
Разместил: E_Migachev Версии: | 8.2 УП | Дата: 01.04.2013 Прочитано: 27223
Похожие FAQ
Еще в этой же категории
Как проверить ЭтоНовый() в управляемой форме? 9
Понятие ЭтоНовый() отсутствует в 8.2. Поэтому при необходимости определить, что создается новый элемент можно использовать следующую особенность управляемой формы. Как правило, любая управляемая форма содержит в себе реквизит " Объект" , поэтому Заполнение реквизитов формы и объекта 6
Для реквизитов в документе обработке отчете: Объект.Реквизит = " значение" ; Для реквизитов на форме: ЭтаФорма.Реквизит = " значение" ; Как получить Макет? 6
НаСервере Функция ПолучитьМакетНаСервере(ИмяМакета) ЭтотОбъект=РеквизитФормыВЗначение(" Объект" ); Макет = ЭтотОбъект.ПолучитьМакет(ИмяМакета); Возврат Макет; КонецФункции НаСервере Процедура ВывестиМакет(ТД) Макет = Обработки.ОбработкаВ Как заполнить табличную часть формы программно? 6
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П Как открыть внешнюю обработку или отчет программно 1С УП? 6
В версии 8.2 и старше: приложение не работает непосредственно с локальными файлами, расположенными на компьютере. Файлы должны находиться на сервере. Поэтому для открытия внешней обработки нужно выполнить следующую последовательность действий: Посмотреть все в категории Управляемое приложение, Тонкий клиент
Понятие "пустых" значений
В 1С:Предприятии 8 отсутствует такое понятие как "пустое" значение.
Существует значение Неопределено (типа Неопределено ). Оно применяется в основном как значение по умолчанию реквизитов (а также колонок таблиц значений и т.д.), имеющих составной тип. То есть, если в некотором реквизите могут содержаться значения более чем одного типа, то по умолчанию этот реквизит будет иметь значение Неопределено . Соответственно можно присвоить такому реквизиту значение Неопределено , как значение, обозначающее, отсутствие значения какого-либо другого из доступных типов. Такое значение будет иметь и объявленная переменная модуля пока ей не присвоили какое-либо значение. Заметим, что в объекте ОписаниеТипов фактически присутствует тип Неопределено , если в нем содержится более одного типа, так как если могут храниться значения двух типов, то всегда может быть и значение Неопределено . Таким образом, значение Неопределено обозначает отсутствие значения какого-либо определенного типа.
Существует значение Null (типа Null ). Оно обозначает отсутствие значения в выборке полученной из базы данных. Например, при выполнении левого и правого соединения поля невыбранных записей будут иметь значения Null . Кроме того, значение типа Null будут иметь реквизиты иерархического справочника для элементов-групп, если в метаданных указано, что этот реквизит используется только для элементов не являющихся группами. Аналогично и для элементов, значения Null будут иметь реквизиты доступные только для групп.
Заметим, что и значение Неопределено и значение Null имеют соответствующие типы и используются в специальных (описанных выше) случаях, а не в качестве "пустых" значений каких-либо типов.
Для большинства типов существуют значения по умолчанию, то есть значения, устанавливаемые системой в реквизите (колонке таблицы значений и т.д.) если для него задан соответствующий тип. Например, для числа – пустым значением является 0, для строки – строка, не содержащая ни одного символа, для даты – дата начала отсчета ('00010101').
Для типов ссылок на объекты базы данных существуют значения пустых ссылок. Их можно получить у соответствующих менеджеров вызовом метода ПустаяСсылка() . Именно это значение является значением по умолчанию для соответствующих типов. Заметим, что если реквизит имеет составной тип, включающий тип ссылки на объект базы данных, то данному реквизиту можно присвоить как значение Неопределено , так и значение соответствующей пустой ссылки. Соответственно в этих двух случаях будут храниться два разных значения. Решения, какое значение присваивать зависит от прикладного смысла. Например, если реквизит может иметь значения двух ссылочных типов и, исходя из значений других реквизитов, очевидно, что в нем должно быть значение определенного (одного из этих двух) ссылочного типа, но конкретная ссылка еще не выбрана пользователем, то можно присвоить значение пустой ссылки соответствующего типа. Например, это необходимо для того, чтобы поле ввода позволило бы пользователю ввести значение необходимого типа. А если, исходя из значений других реквизитов, этот реквизит вообще не должен быть заполнен, то тогда ему нужно присвоить значение Неопределено .
В 1С:Предприятии 8 используется понятие "незаполненного значения". Оно применяется для различных сервисных возможностей. Например, у измерений регистров можно установить свойство Запрет незаполненных значений . Тогда система при записи будет автоматически проверять заполнено соответствующее измерение или нет. Так же существуют свойства АвтоОтметкаНезаполненного и свойство АвтоВыборНезаполненного . Они управляют соответственно автоматическим подчеркиванием незаполненного значения и автоматическим началом выбора незаполненного значения.
Во всех случаях для проверки того заполнено значение или нет, используется единый принцип. Значение считается незаполненным, если оно равно значению по умолчанию для своего типа. Соответственно незаполненными значениями будет число 0, строка, не содержащая символов, пустая ссылка на элемент справочника и т.д.
Для строкового типа существует встроенная функция ПустаяСтрока() , однако, не следует считать, что он проверяет, является ли строковое значение значением по умолчанию. Данный метод проверяет, что строка не содержит ни одного значащего символа. При этом строка может содержать незначащие символы, такие как "пробел", "неразрывный пробел" и т.д.
Читайте также: