Как удалить несколько строк в 1с
Я шесть лет назад участвовал в этом конкурсе.
Поэтому есть одно, но существенное замечание. Тест на 10 элементах не показывает ошибки сортировки. Ошибки вылазят на 20 элементах теста. Т.е. изменяется первоначальный порядок строк.
Предлагаю вариант проверки на 20 строках и 2 новых способа от alexk aka alexk-is:
Код |
---|
Показать полностью |
а не проще таблицу с конца обходить?
пока всего > 0 цикл
ТЗ.Получитьстрокупономеру(Всего);
Проверка условий .
Всего = Всего -1;
КонецЦикла;
А самый простой по коду ниже:
Код |
---|
Показать полностью |
Если скорость не очень важна, то можно юзать универсальную функцию из библиотеки функций.
//fixin 200707072
//Удаляет строки таблицы значений по условию
//ТЗ - таблица значений
//Код - код проверки условия, например "Р=Стр.Статья<>П"
//П - один или несколько (структура) параметров
//При проверке условия в переменную Р нужно вернуть результат (истина - удалять, ложь - не удалять),
// при этом доступна текущая строка СТР и переданный параметр Т.
Функция обУдалитьСтрокиТЗПоУсловию(ТЗ, Код, П=Неопределено) Экспорт
Всего=ТЗ.Количество();
Для Инд=1 По Всего Цикл
Поз=Всего-Инд;
Стр=ТЗ[Поз];
Р=ложь;
Выполнить(Код);
Если Р=истина Тогда
ТЗ.Удалить(Поз);
КонецЕсли;
КонецЦикла;
. еще один образец того "как делать не надо".
Вот мой вариант фильтрации ТЗ по одному или нескольким условиям. Довольно быстрый, но не самый быстрый. По крайней мере несколько лет пользуюсь только им - хватает.
Код |
---|
Показать полностью |
Код |
---|
Показать полностью |
Код |
---|
Показать полностью |
Плюс! Можно фильтровать ТЗ по точному значению
//ПараметрыОтбора = новый Структура;
//ПараметрыОтбора.Вставить(сИмя,сЗнач);
//где сИмя - колонка, сЗнач - значение отбора
ТЗ = ТЗ.Скопировать(ПараметрыОтбора); tatoshka0403; Светлый ум; Alexey_A; DennyPhilord; frost_a; rayastar; yuraskas; rhtr; mikmike; igyo; + 10 – Ответить Спасибо! Очень помогло. Обычный способ в 1С действительно глючит какой-такой "обычный" способ.
.я тут вчера кучу времени убил.. - две ТЗ, вроде как одинаковые даже по составу данных (колонки артикул и колво, сортируем по Артикул), сравниваю путем преобразования в строку. ан нет.. то что совершенно одинаково видится как визуальная ТЗ - при ЗначениеВстроку(ТЗ) - получается совсем не отсортированной!
пользуюсь вот такими.
//******************************************************************************
// ОчисткаТЗ()
// Параметры: ТЗ, которую надо очистить
// В ТЗ д.б. Колонки с идентификаторами "НадоУдалить" и "ОПС" (оригинальный порядок строк)
// Описание: очищает ТЗ от ненужных строк
Процедура глОчисткаТЗ(ТЗдляЧистки, ОПС="+ОПС", КолонкаУдалить="НадоУдалить", Режим=0) Экспорт
Попытка НадоУдалить = ТЗдляЧистки.Итог(КолонкаУдалить);
Исключение Возврат;
КонецПопытки;
ТЗКС = ТЗдляЧистки.КоличествоСтрок();
Если Режим <> 0 Тогда
Сообщить("> ["+ТекущееВремя()+"]: *** удаляем "+НадоУдалить+" из "+ТЗКС+" ****");
КонецЕсли;
Если НадоУдалить <= 0 Тогда Возврат; КонецЕсли;
Как в 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С
Изменения в 2021 году, о которых нужно знать бухгалтеру
[29.10.2021 запись] Пообъектный учет ОС и подходы к определению и пересмотру СПИ
Алгоритм альтернативного перехода на ФСБУ 6/2020 «Основные средства» в 1С
[11.10.2021 запись] Учет ОС по-новому: ФСБУ 6/2020, ФСБУ 26/2020, ФСБУ 25/2018
Спасибо за семинар по УСН! К сожалению пришлось отвлекаться по работе, но обязательно посмотрю его в записи. Прекрасная подача материала и абсолютная компетентность в рассматриваемом вопросе не могут не радовать.
Табличные части позволяют хранить неограниченное количество структурированной информации, принадлежащей одному объекту.
Рассмотрим некоторые приемы работы с табличными частями.
Как обойти табличную часть
Для обхода табличной части можно использовать цикл Для каждого
Для каждого Строка из ТабличнаяЧасть Цикл
На каждой итерации в переменную Строка передается очередная строка табличной части. Значения реквизитов строки можно получить выражением Строка.ИмяРеквизита.
Как получить и обойти выделенные строки табличной части
Для вывода информации из табличной части объекта служит элемент формы Табличное поле. Для включения возможности выделения нескольких строк на табличном поле нужно установить значение Множественный у его свойства Режим выделения.
Для получения перечня выделенных строк используется следующий код:
ВыделенныеСтроки = ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки ;Для того чтобы обойти выделенные строки используется цикл Для каждого:
ВыделенныеСтроки = ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки ;
Для каждого Строка из ВыделенныеСтроки Цикл
Как программно выделить строки табличной части (табличного поля) и снять выделение
Чтобы программно снять выделение строк табличного поля:
Чтобы программно выделить все строки табличного поля:
Как очистить табличную часть
Как получить текущую строку табличной части
Для обычных форм код будет выглядеть так:
Для управляемых форм:
Как добавить новую строку в табличную часть
Добавление новой строки в конец табличной части:
Добавление новой строки в любое место табличной части (последующие строки будут сдвинуты):
НоваяСтрока . Реквизит 1 = "Значение" ;
Как программно заполнить реквизиты строки табличной части
Если нужно программно заполнить реквизиты строки табличной части, которую добавляет пользователь, необходимо использовать обработчик события табличной части ПриНачалеРедактирования.
Создаваемая обработчиком процедура имеет три параметра:
Рассмотрим пример. Допустим, нам нужно заполнить реквизит табличной части СчетУчета, в случае, когда добавляется новая строка. При редактировании существующей строки изменять счет учета не нужно.
//Если пользователь редактирует существующую строку, то ничего не делаем
Если НЕ НоваяСтрока Тогда
Возврат ;
КонецЕсли ;//Если же строка новая, устанавливаем счет учета
ТекСтрока = Элемент . ТекущиеДанные ; //Получили текущую строку табличной части
ТекСтрока . СчетУчета = ПланыСчетов . Хозрасчетый . НужныйСчетУчета ;
КонецПроцедурыРабота с табличной частью объектов в 1С : 13 комментариев
Сделать это можно по-разному. Цикл Для каждого, на мой взгляд, не очень подходящий вариант, т.к. будет работать слишком долго. Да и надо еще где-то список документов брать.
Спасибо!
Буду пробовать.А может это подойдет?
Табличная часть (Tabular section)
Итог (Total)
Синтаксис:Тип: Число; Строка.
Индекс либо имя колонки, по которой подсчитывается итог.
Возвращаемое значение:Тип: Число; Неопределено.
Суммирует значения всех строк в указанной колонке.
Если в колонке установлен тип и он единственный, то при суммировании будет предприниматься попытка преобразования значения к типу Число.
Если колонке не присвоены типы, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них есть тип Число, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них нет типа Число, то результатом будет значение Неопределено.Сервер, толстый клиент, внешнее соединение.
Пример:Это подошло бы, если бы нужно было суммировать колонку в одном документе. А Юрию нужно суммировать колонку Стоимость всех документов.
Добрый день!
Достаточно ли будет обратиться в модуле формы к текущей строке табличной части или в модуле менеджера тоже нужно будет что-то прописать?Не совсем понял, о чем конкретно вопрос.
Если о том, как получать и работать с текущей строкой табличной части, то в модуле менеджера ничего писать не нужно.Здравствуйте!
Опишу вкратце ситуацию:
Из документа вызывается команда печати штрихкодов и в обработку печати передается, как я понимаю, весь контекст документа и печатаются этикетки для всех строк документа. Возможно ли в обработке печати получить информацию только о выделенных строках из этого контекста ? Прилагаю код модуля команды ПечатьЭтикеток.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)&НаСервере
Функция Заполнялка(ДокСсылка) Экспорт
ТабДокумент = Новый ТабличныйДокумент;ТабДокумент.АвтоМасштаб = истина ;
ТабДокумент.ОтображатьСетку = Ложь;
ТабДокумент.ТолькоПросмотр = Истина;
ТабДокумент.ОтображатьЗаголовки = Ложь;ЧтоТо = Стр.СерийныйНомер;
ПервыйМодуль.ВывестиШтрихкодДокументаВОбластьМакета(ВнешняяКомпонента,ОбластьМакета,ЧтоТо) ;Информацию о выделенных строках вы можете получить только в модуле формы документа, причем, если мне не изменяет память, это должна быть клиентская процедура. По ссылке на документ выделенные строки получить нельзя.
Значит я на клиенте должен сформировать таблицу выделенных строк и уже ее передавать в обработку печати ?
Доброго времени суток!
Создаю обработку на обычных формах, в которой имеется несколько Табличных частей. Они в свою очередь находят отображение в Форме обработки. И если данные первых 3, меня после закрытия Формы, не интересуют, то данные последней хотелось-бы использовать в дальнейшем, пока открыта обработка. В настоящее время при закрытии Формы Табличные части очищаются. В дальнейшем, в новом сеансе работы с обработкой эти данные не нужны. Насколько я понимаю Функции сохранения Данных Табличной части обработки не существует. Табличную часть в обработке решил использовать из-за возможности сохранить структуру Данных. Как мне сохранить эти данные для использования в других окнах?
Может у Вас есть видео по данному вопросу?Система 1с предприятие изначально не предполагает прямое удаление каких-либо объектов из базы данных, например элементов справочников, документов, отчетов и т.д. Конечно все же можно настроить роль пользователя таким образом чтобы он сразу удалял из 1с какой-нибудь объект, без пометки на удаление , но делать этого крайне не рекомендуется. Также хотим отметить тот факт, что если даже у пользователя роль настроена на прямое удаление объектов (интерактивное удаление), все равно это не позволит удалять ему некоторые объекты в предприятии 1с, и сделать это можно будет только через пометку на удаление .
Для чего сделана пометка на удаление объектов в 1с
Давайте ответим с Вами на вопрос "Зачем сделана эта пометка для удаления?", ведь быстрее удалить объект из 1с сразу. Сделано это по нескольким причинам:
- Есть вероятность того, что пользователь впоследствии передумает и захочет вернуть удаленный объект, когда стоит пометка ее достаточно снять, при интерактивном удалении восстановить данные нельзя .
- В 1с один объект, например документ, может ссылаться на множество других объектов в системе (справочники, константы, другие документы и т.д.), и одновременно также на этот объект (в нашем случае документ), могут ссылаться множество других объектов. Если бы в системе 1с предприятие было разрешено прямое удаление объектов из базы данных, то это привело бы к ужасным последствиям, так как сразу же бы начали появляться объекты с "битыми ссылками", а это потеря данных, и не правильное функционирование базы данных, которое рано или поздно приведет к краху базы и практически полной потери Ваших данных!
Два вида удаления в 1с , понятие контроля ссылочной целостности в 1с
В программе объекты 1с можно удалить двумя способами:
- С помощью интерактивного удаления (прямое удаление без контроля ссылочной целостности)
- Через пометку на удаление (удаление с контролем ссылочной целостности)
Давайте рассмотри что такое ссылочная целостность в 1с. Но для того чтобы нам с вами ответить на этот вопрос мы должны знать что такое "битые" ссылки в 1с. Для тех кто не знает, битые ссылки в 1с это ссылки которые указывают на не используемую область памяти, то есть по сути указывают в никуда. Теперь давайте возьмем для примера любой документ в системе 1с предприятие. В нем находится множествои различных реквизитов. Эти реквизиты могут быть как простыми (примитивные типы такие как число, дата, булево), так могут быть и объектными (такие как ссылки на другие объекты системы, например различные справочники, перечисления и т.д.) Так вот контроль ссылочной целостности в 1с как раз и означает тот факт, что объект не будет удален из системы 1с до тех пор, пока на него ссылаются какие-либо другие объекты системы. Как раз пометка на удаление объектов 1с позволяет сохранить механизм ссылочной целостности в 1с, так как обработка удаления помеченных объектов не даст удалить объект пока на него ссылаются другие объекты.
Как восстановить удаленные объекты в 1с? Что происходит с объектами после их удаления из 1с?
Подобные вопросы нам задают многие люди, и ответ тут один, физическое удаления данных из 1с (с помощью способов описанных ниже) приводит к ПОЛНОМУ УНИЧТОЖЕНИЮ ФАЙЛА ИЗ БАЗЫ! Восстановление удаленных файлов из базы не возможно.
Мы всегда готовы оказать Вам своевременную помощь в обновлении системы 1С 8.3 .
Интерактивное удаление в 1с
Итак мы уже обсуждали с Вами то, что интерактивное удаление в 1с происходит без контроля ссылочной целостности, а это чревато очень плохими последствиями для системы, рекомендуется пользоваться таким удалением только с целью отладки. Чтобы включить интерактивное удаление 1с нам нужно для начала зайти в конфигуратор, распахнуть веточку Общие ---> Роли и выделить роль "Полные права".
Теперь нажмем клавишу F9 , у нас копируется роль "ПолныеПрава" и появится еще одна "ПолныеПрава1". Откроем ее двойным щелчком мыши. Появится окно свойств роли, нажмем кнопку "Действия" ---> "Установить все права". После этого нажмем ОК. Теперь сохраним конфигурацию базы данных, для этого нажмем на синенький бочонок в левом верхнем углу, или нажмем клавишу F7. Если бочонок стал неактивным значит конфигурация сохранилась. Мы создали роль с правами на интерактивное удаление объектов из 1с .
Теперь в конфигураторе откроем вкладку Администрирование ---> Пользователи.
Откроется список пользователей, выберите пользователя под которым Вы хотите включить интерактивное удаление 1с объектов и нажмите карандашик или F2. Откроется окно свойств пользователя, перейдите на вторую вкладку "Прочие". Там найдите ту роль которую мы с Вами копировали, в моем случае это "ПолныеПрава1", ставим галочку и жмем OK.
После этого запускайте 1с предприятие, выбирайте того пользователя которому установили новую роль. Теперь Вы можете удалять объекты напрямую, чтобы удалить объект выберите его и нажмите сочетание клавиш SHIFT + DEL, система спросит уверены ли вы в удалении, при положительном ответе объект будет удален из системы.
Удаление объектов 1с через пометку на удаление или как удалить объекты в 1с ?
Теперь давайте рассмотрим с Вами вопрос "Как удалить объекты в 1с ?". Итак, открываем нужную нам базу данных в 1с предприятии. На скриншоте показана "Бухгалтерия государственного учреждения", щелкаем в меню по вкладке "Операции" ---> " Удаление помеченных объектов ".
Если у Вас управляемый интерфейс, как например в "Бухгалтерии предприятия ред. 3.0", то там Вам нужно перейти на вкладку "Администрирование", там Вы увидите подгруппу "Сервис", и уже в ней нужно выбрать " Удаление помеченных объектов ".
Альтернативный способ открытия помощника удаления объектов в 1С 8.2 и 1С 8.3
А вообще если Вы не можете найти у себя в конфигурации кнопочку с помощью которой можно вызвать мастера удаления помеченных объектов 1с , то в 1С 8.2 открыть его можно следующим способом, данный способ подходит для любой конфигурации, ниже на скриншотах видно какие действия необходимо выполнить в 1С 8.2. Открываем дерево всех обработок которые находятся в системе и выбираем " Удаление помеченных объектов ".
Если же Вы работаете на платформе 1С 8.3 и у Вас конфигурация с управляемым интерфейсом, то Вам необходимо включить кнопку "Все функции", как это сделать смотрите здесь.
Начало поиска помеченных на удаление объектов в 1с
Перед нами появится окно которое изображено ниже, в нем будут отражены все объекты помеченные на удаление в системе . Отмечаем галочками те которые хотим удалить, вообще их желательно удалять все, ведь они помечены на удаление, а значит они больше не нужны в системе. После того как отметили все необходимое нажимаем "Контроль".
Системе потребуется какое то время чтобы выполнить данную задачу, чуть позже Вы увидите окно которое изображено ниже. Обратите внимание у Вас могут быть объекты как с зелеными галочками так и с красными.
Зеленые означают то, что объект можно удалить, красные соответственно что нет. Объект отмеченный красной галочкой нельзя удалить, так как на него ссылаются другие объекты системы, в окошке расположенном ниже Вы увидите те объекты которые ссылаются на него, и прежде чем удалить объект отмеченный красной галочкой, Вам нужно убрать ссылки на этот объект у других объектов. Что это означает на практике?
Необходимость своевременного удаления помеченных на удаление объектов в 1с . Как удалить объекты помеченные красными галочками ?
Рассмотрим пример на конфигурации "Бухгалтерии предприятия". У нас есть документ "Принятие к учету ОС", в нем соответственно указывается основное средство (например компьютер) и множество других параметров, но они нас в данный момент не интересуют. Если мы захотим удалить это ОС из нашей базы данных, то без дополнительных действий у нас ничего не выйдет. Наше ОС (компьютер) будет помечено красной галочкой при попытки его удаления. Почему? А ведь наш документ "Принятие к учету ОС" имеет ссылку на то ОС которое мы сейчас хотим удалить! Когда мы щелкнем на него в списке объектов , то увидим все объекты которые ссылаются на наше ОС, и прежде чем удалить это ОС, нам нужно сначала зайти во все эти объекты и удалить ссылки. В нашем случае это означает что нужно отменить проведение документа "Принятие к учету ОС", и удалить это ОС из документа, после чего записать документ. Теперь документ более не ссылается на наше ОС, и мы можем его удалить. Из всего этого следует одно правило, удалять объекты помеченные на удаление в 1с нужно своевременно ! Иначе потом избавиться от них может быть очень и очень проблематичным делом, ввиду того что между объектами будет большое количество ссылок. Кстати своевременное удаление объектов из 1с также имеет несколько очевидных плюсов:
- Увеличивается производительность системы
- Уменьшается вероятность ошибок пользователей
- Уменьшается размер вашей базы данных
- Не возникает "захламленности интерфейса", когда в системе имеется много помеченных на удаление объектов, проведенных документов, а также не проведенных.
В нашей компании Вы всегда получите первоклассное обслуживание программы 1С по очень приятным ценам!
Завершение удаления помеченных объектов в 1с
Теперь давайте удалим объекты до конца. Нажимаем кнопку "Удалить". Система удалит все объекты которые были отмечены зелеными галочками.
Останутся только те которые помечены красными галочками, нажимаем "Закрыть", на этом процесс удаления объектов из 1с завершен. Если у Вас что-то не получилось мы готовы подключиться к Вашей 1с удалённо и помочь решить Ваши задачи.
1с удаление помеченных объектов, подробная видео-инструкция про удаление объектов 1с
Кто-то любит читать, а кто предпочитает смотреть. Именно для тех кто предпочитает смотреть мы сняли очень интересное видео которое содержит даже больше интересной информации по сравнению со статьей:
- Рассказываем для чего нужна пометка на удаление в 1с
- Показываем на примере как удалить в 1с объекты
- Даются полезные практические советы
- Показываем как удалять в 1с объекты помеченные красными галочками
- Также приводится много другой полезной информации
Мы надеемся что наша статья про удаление в 1с объектов помеченных на удаление очень Вам помогла, и ответила на все Ваши вопросы.
Читайте также: