Удалить строки из ТЧ документа по условию
Здраствуйте! Учусь программировать в 1с. Подскажите пожалуйста, мне нужно удалить строки из документа УстановкаКурсаВалют те строки, где нет предопределенных валют. Я сделал выборку этих строк, осталось только удалить. Код привожу ниже
Процедура УдалитьСтрокиНаСервере()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| УстановкаКурсаВалют.Ссылка КАК Ссылка1,
| УстановкаКурсаВалют.ПометкаУдаления КАК ПометкаУдаления1,
| УстановкаКурсаВалют.Номер КАК Номер,
| УстановкаКурсаВалют.Дата КАК Дата,
| УстановкаКурсаВалют.Проведен КАК Проведен,
| УстановкаКурсаВалют.Курсы.(
| Ссылка КАК СсылкаТЧ,
| НомерСтроки КАК НомерСтрокиТЧ,
| Валюта КАК ВалютаТЧ,
| Курс КАК КурсТЧ,
| Символ КАК Символ) КАК Курсы
|ИЗ
| Документ.УстановкаКурсаВалют КАК УстановкаКурсаВалют";
ВыборкаДокумент = Запрос.Выполнить().Выбрать();
УдалитьТП=Новый Массив;
Пока ВыборкаДокумент.Следующий() Цикл ;
ВыборкаНоменклатурныйСостав = ВыборкаДокумент.Курсы.Выбрать();
Пока ВыборкаНоменклатурныйСостав.Следующий() Цикл
ИмяПредопрЭлемента = Справочники.Валюты.ПолучитьИмяПредопределенного(ВыборкаНоменклатурныйСостав.ВалютаТЧ);
Строка = ВыборкаНоменклатурныйСостав.ВалютаТЧ.Наименование;
СсылкаСтроки = ВыборкаНоменклатурныйСостав.ВалютаТЧ.Ссылка;
Если СокрЛП(ВРег(ИмяПредопрЭлемента)) <> СокрЛП(ВРег(Строка)) Или СсылкаСтроки.Пустая() Тогда
УдалитьТП.Добавить(Строка); // Тут в массив пишу строки для удаления;
Иначе
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Универсальный конструктор отчетов (Новейший отчет) для 1C 7.7
- Сравнение 1С8 и Navision
- Загрузка чеков в 1С из ФНС в документы БП, УНФ, ERP, КА и УТ
- Универсальный редактор табличных частей документов РеСольДо
- Автоматическое заполнение формы отчетности статистики при отгрузке товаров в страны ЕАЭС из файла CSV, выгруженного с OZON (или других маркетплейсов)
Найденные решения
(1)Почувствуйте разницу, таксскать:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| УстановкаКурсаВалют.Ссылка КАК Ссылка
| УстановкаКурсаВалют.НомерСтроки КАК НомерСтроки
|ИЗ
| Документ.УстановкаКурсаВалют.Курсы КАК УстановкаКурсаВалют
|ГДЕ
| НЕ УстановкаКурсаВалют.Валюта.Предопределенный
|ИТОГИ ПО
| Ccылка";
ВыборкаДокумент = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДокумент.Следующий() Цикл ;
ДокОбъект = ВыборкаДокумент.Ссылка.ПолучитьОбъект();
ТЗ = ДокументОбъект.Курсы.Выгрузить();
ТЗ.Индексы.Добавить("НомерСтроки");
ВыборкаНоменклатурныйСостав = ВыборкаДокумент.Выбрать();
Пока ВыборкаНоменклатурныйСостав.Следующий() Цикл
Строка = ТЗ.Найти(ВыборкаНоменклатурныйСостав.НомерСтроки, "НомерСтроки");
ТЗ.Удалить(Строка);
КонецЦикла;
ДокОбъект.Загрузить(ТЗ);
ДокОбъект.Записать(?(ДокОбъект.Проведен, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись));
КонецЦикла;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)Почувствуйте разницу, таксскать:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| УстановкаКурсаВалют.Ссылка КАК Ссылка
| УстановкаКурсаВалют.НомерСтроки КАК НомерСтроки
|ИЗ
| Документ.УстановкаКурсаВалют.Курсы КАК УстановкаКурсаВалют
|ГДЕ
| НЕ УстановкаКурсаВалют.Валюта.Предопределенный
|ИТОГИ ПО
| Ccылка";
ВыборкаДокумент = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДокумент.Следующий() Цикл ;
ДокОбъект = ВыборкаДокумент.Ссылка.ПолучитьОбъект();
ТЗ = ДокументОбъект.Курсы.Выгрузить();
ТЗ.Индексы.Добавить("НомерСтроки");
ВыборкаНоменклатурныйСостав = ВыборкаДокумент.Выбрать();
Пока ВыборкаНоменклатурныйСостав.Следующий() Цикл
Строка = ТЗ.Найти(ВыборкаНоменклатурныйСостав.НомерСтроки, "НомерСтроки");
ТЗ.Удалить(Строка);
КонецЦикла;
ДокОбъект.Загрузить(ТЗ);
ДокОбъект.Записать(?(ДокОбъект.Проведен, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись));
КонецЦикла;
Показать
(2) Спасибо! Работает!
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| УстановкаКурсаВалют.Ссылка КАК Ссылка,
| УстановкаКурсаВалют.НомерСтроки КАК НомерСтроки
|ИЗ
| Документ.УстановкаКурсаВалют.Курсы КАК УстановкаКурсаВалют
|ГДЕ
| НЕ УстановкаКурсаВалют.Валюта.Предопределенный
|ИТОГИ ПО
| УстановкаКурсаВалют.Ссылка";
ВыборкаДокумент = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДокумент.Следующий() Цикл ;
ДокОбъект = ВыборкаДокумент.Ссылка.ПолучитьОбъект();
ТЗ = ДокОбъект.Курсы.Выгрузить();
ТЗ.Индексы.Добавить("НомерСтроки");
ВыборкаНоменклатурныйСостав = ВыборкаДокумент.Выбрать();
Пока ВыборкаНоменклатурныйСостав.Следующий() Цикл
Строка = ТЗ.Найти(ВыборкаНоменклатурныйСостав.НомерСтроки, "НомерСтроки");
ТЗ.Удалить(Строка);
КонецЦикла;
ДокОбъект.Курсы.Загрузить(ТЗ);
ДокОбъект.Записать(?(ДокОбъект.Проведен, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись));
КонецЦикла;
Показать
Можно сделать тупо выборку документов и по формуле
очистить документы от непредопределенных элементов
КолСтрок = ДокументОбъект.Курсы.Количество();
Для Счетчик = 1 По КолСтрок Цикл
ТекСтрока = Поступление.Курсы[КолСтрок-1];
Если не ТекСтрока.Номенклатура.Предопределенный Тогда
ДокументОбъект.Курсы.Удалить(ТекСтрока);
КонецЕсли;
КонецЦикла;
очистить документы от непредопределенных элементов
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот