1с очистить отбор построителя
Программисту 1с в работе не редко нужно очистить регистр сведений от записей. В этой заметке разберу примеры очистки различных вариантов регистров сведений.
Очистка регистра сведений без регистратора
Что бы удалить все записи из регистра достаточно написать две строчки кода.
- Выбрать регистр сведений для удаления.
- Создать набор записей.
- Записать пустой набор записей.
- Считаем что в переменную Орг установлена нужная для очистки организация.
- Создаем набор записей.
- Устанавливаем отбор по организации.
- Записываем пустой набор данных.
Удаление записей из регистра сведений подчиненного регистратору
Для очистки регистра сведений подчиненного регистратору в отборе обязательно указывать регистратор, в остальном работает так же как удаление записей в регистре сведений с отбором.
Удаление записей из регистра сведений подчиненного регистратору с дополнительным отбором
Для удаления части записей из регистра сведений в пределах одного регистратора нужно сделать отбор по регистратору, а потом отобрать записи для удаления. Например если мы хотим удалить из регистра цены только по определенной номенклатуре. Важно помнить, что при перепроведении документа удаленные записи появятся снова.
В этом примере установив отбор по регистратору, я добавляю обход полученных записей и создаю список записей подходящих по условию, а после удаляю их из набора. Набор записывается уже без этих записей.
Удаление записей из регистра с большим количеством записей
В больших высоконагруженных базах бывает необходимо удалить миллионы или даже десятки миллионов записей, очень часто перечисленные выше способы вылетают с ошибкой памяти или не могут выполнится по другим причинам.
В этом примере я выберу все записи которые нужно удалить запросом, а потом буду удалять по одной, это позволит не блокировать таблицу на долгое время и не потреблять много памяти за один раз.
Переменная УдаляемаяОрганизация содержит соответствующую ссылку.
Тогда очистка регистра от удаляемых записей может быть произведена следующим образом:
Код 1C v 8.х
Создаем переменную НаборЗаписей, устанавливаем для нее отбор по значению организации равный УдаляемаяОрганизация. Кстати, отбор набора записей регистра всегда может устанавливаться только на равенство.
Далее записываем полученный пустой набор записей с замещением.
В результате все записи, соответствовавшие отбору, будут замещены пустым набором записей.
Разместил: E_Migachev Версии: | 8.x | 8.2 УП | Дата: 14.09.2010 Прочитано: 109792
Похожие FAQ
Как заполнить табличную часть формы программно? 6
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 42
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ PostgreSQL: установка, настройка, обслуживание 11
PostgreSQL напрямую "из коробки" применяться для использования с 1С Предприятем не может. Необходима именно адаптированная версия от 1С, превращающая PostgreSQL в блокировочник, причем нужно понимать, что блокировки будут накладываться на всю таблиц Блокировка записей, невозможно изменить или удалить из регистра. Конфликт блокировок MS SQL + 1C 3
При попытке удалить запись из регистра сведений - получаю ошибку: она заблокирована, ошибка блокировок и т.д. Отключил всех пользователей, перезапустил сервер, пробую удалить - опять ошибка блокировки :( Путем тестов было вяснено, что проблема Ввод договоров ГПХ в ЗУП (счет 76) 9
Часто меня спрашивают: Как правильно отразить договор ГПХ в ЗУП? Ниже небольшая, последовательная инструкция: Прием на работу Сведения о физическом лице, выполняющем работы по договору подряда, должны быть внесены в справочник Сотрудники организ Посмотреть все результаты поиска похожих
Еще в этой же категории
Как изменить запись регистра сведений? 34
НаборЗаписей = РегистрыСведений.НумерацияДоговоров.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Период.Установить(НачалоГода(Дата)); НаборЗаписей.Отбор.Организация.Установить(Организация); НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество Как добавить запись в периодический независимый регистр сведений? 15
// Добавление записей в периодический независимый регистр сведений НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Валюта.Установить(ТекущаяВалюта); НаборЗаписей.Отбор.Период.Установить(ТекущаяДата); НовЗапис Как добавить записи в непериодический независимый регистр сведений? 12
НаборЗаписей = РегистрыСведений.ЗначенияСвойств.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Номенклатура.Установить(ТекущаяНоменклатура); НаборЗаписей.Отбор.Свойство.Установить(ТекущееСвойство); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапи Открыть запись регистра сведений по ключу. 10
// Создание структуры значений СтруктураФормы = Новый Структура; СтруктураФормы.Вставить(" Пользователь" , Пользователь); СтруктураФормы.Вставить(" Настройка" , Элемент.ТекущаяСтрока); // Почему-то нужно создавать запись через массив (по друго Как выбрать записи из регистра сведений? 9
//ВНИМАНИЕ . // В качестве полей для отбора могут задаваться измерения или реквизиты, для которых // в конфигураторе признак индексирования установлен в значение " Индексировать" или // установлен признак " Ведущее" . Вид сравнения может бы Посмотреть все в категории Регистры сведений
Заполнение табличной части по отбору
приветствую. подскажите такой вопрос. есть документ по вводу оценок учащихся. в документе.
УПП 1.3 Обычные формы Перебрать табличное поле по отбору
Есть отбор в табличном поле. Процедура РаботникиОрганизацииПриАктивизацииСтроки(Элемент) //.
Управление группировкой по отбору
Есть два поля для ввода значений отбора (поле А и Поле Б)и есть отчет, в котором 3 группировки.
Макрос для больших таблиц по отбору нужной информации
Из файла нужно отобрать строки. И скопировать их в новую книгу. Критерии отбора нужных строк.
duk337
ЭТО ДВА ЛИШНИХ ЦИКЛА. Согласен. Вообще избегаю алгоритмов, где надо постоянно модифицировать ТЧ. Гораздо эффекетивнее модифицировать отбор в списке регистра сведений.
зато красивый текст и показан принцип. Не соввем понял:
ТЗ.Удалить(СтрокаТЗ); куда ее вбить? каким образом это поможет удалению конкретных строк?
Например:
Я так понимаю перед этим удалением должна быть проверка на равенство значений, что я и пытался сделать. Но не получилось. В данный процедуре происходит проста очиска все таблицы, без заполнения.
То сравнение, то удаление. Вам в примере показали и отбор, и удаление. То, что у Вас написано - я не понимаю, уж извиняйте. Было предположение, что требуется удалить строки ТЧ по условию, что и было показано.
Табличная часть (Tabular section)
НайтиСтроки (FindRows)
Синтаксис:
Тип: Структура.
Задает условия поиска: ключ структуры определяет имя колонки, по которой будет осуществляться поиск, а значение структуры - искомое значение.
Возвращаемое значение:
Тип: Массив.
Массив из строк табличной части, соответствующих заданному условию поиска.
Замечание! Массив хранит ссылки на строки табличной части, то есть при изменении строки в табличной части, значение в массиве тоже будет изменено.
Описание:
Осуществляет поиск строк табличной части, соответствующих заданному условию поиска.
Сервер, толстый клиент, внешнее соединение.
Примечание:
Метод эффективно использовать для выборки неуникальных значений.
Пример:
Дано рис. ППР1, где при изменении колонки НомерЗаявки заполняется таблица справа. Но (рис. ППР2) при нажатии еще раз на эту колонку (ну мало ли всякий может быть случай.) таблица справа заполняется добавлением строк, а по идеи та должны не добавляться, а изменять предыдущие строки.
Процедура заполнения таблицы я описал вверху.
Так можно ли как нить написать попроще?))) или мне надо долбится в этом направлении что вы подсказали? но тут у меня явные проблемы. Картинки эти мало о чём говорят. Вы просите подсказать, как заполнить таблицу, не очищая? Так всё в Ваших руках: НЕ ОЧИЩАЙТЕ! Требуется удалить строки? УДАЛЯЙТЕ!
Если Вам тупо надо высвечивать состав комплекта - напишите, где и как хранятся эти данные.
В таких ситуациях рекомендую держать расшифровку в регистре сведений. Тогда не надо будет почти ничего писать. Система поддерживает отбор в табличном поле списка регистра. Хорошо. Сделал по вашей процедуре, работает, удаляет строки заданному отбору. Но ведь удаляет строки где Поле1 = Значение1 и Поле2 = Значение2. Но у меня ведь отбор постоянно меняется, т.е. Например: при изменении колонки НомерЗаявки1 отбор = НомерЗаявки1, след. строка отбор = НомерЗаявки2 и т.д.
Как можно сделать чтоб Поле1 = текущему значению? Ты в состоянии объяснить внятно свой алгоритм и структуру данных? Откуда берутся таблицы? Это связь "один-ко-многим"? Или чо?
Проблема в том, что если кто то случайно в ТЧ1 выбирет одну и туже НомерЗаявки в ТЧ2 произойдет задвоение, естественно вручную каждый раз удалять задвоившиеся строки нелепо. Нужно чтоб не было задвоения, а просто присходило изменение текущих строк.
Вот как то так.
Читайте также: