Имя: Пароль:
1C
 
удалить строку в excell документе
0 alekosansey
 
31.05.22
13:13
Добрый день. Парсю документ excell с помощью ТабличногоДокумента. Проверяю если он есть то я его должен в доке эту строку удалить. Зная номер строки как можно удалить. Заранее спасибо

                                       табДок = Новый ТабличныйДокумент;
                    
                    Попытка
                        табДок.Прочитать(СтрокаТД.ТекстовыйДокумент);
                    Исключение
                        УспешнаяОперация = Ложь;
                        ЗаписьЖурналаРегистрации("СозданиеДокументовРеестровПлатежейKassa24", УровеньЖурналаРегистрации.Ошибка,
                        Метаданные.Документы.ТАС_РеестрПлатежейПлатежнойСистемы,
                        ,
                        "Ошибка при попытке чтение таблицы excell с данными файла-реестра.
                        |"+СтрШаблон("Дата реестра: ""%1"", имя файла: ""%2""",СтрокаТД.ДатаРеестра,СтрокаТД.ИмяФайла)+"
                        |Описание ошибки:
                        |"+ОписаниеОшибки(),
                        РежимТранзакцииЗаписиЖурналаРегистрации.Независимая);
                        Прервать;
                    КонецПопытки;
                    
                    КоличествоСтрок = табДок.ВысотаТаблицы;
                    
                    Для сч = 8 По КоличествоСтрок Цикл
                        Попытка
                            Если ЗначениеЗаполнено(Строка(табДок.ПолучитьОбласть("R" + Формат(сч, "ЧГ=0;") + "C" + 2).ТекущаяОбласть.Текст)) Тогда
                                Нстрока = ДокументРеестр.Платежи.Добавить();    
                                ДатаТекСтроки = табДок.ПолучитьОбласть("R" + Формат(сч, "ЧГ=0;") + "C" + 2).ТекущаяОбласть.Текст;
                                МассивДаты = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Лев(ДатаТекСтроки,10),"/");
                                ДатаЯчейки = МассивДаты[2]+МассивДаты[1]+МассивДаты[0];
                                МассивВремя = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Прав(ДатаТекСтроки,8),":");
                                ВремяЯчейки = ?(СтрДлина(МассивВремя[0])=1,"0"+МассивВремя[0]  +МассивВремя[1]+МассивВремя[2],МассивВремя[0]  +МассивВремя[1]+МассивВремя[2]);
                                ДатаВОбщем = Дата(ДатаЯчейки + ВремяЯчейки);
                                
                                НомерАбонента = Строка(табДок.ПолучитьОбласть("R" + Формат(сч, "ЧГ=0") + "C" + 6).ТекущаяОбласть.Текст);
                                Займ = ТАС_ОбработкаСобытий.НайтиДоговорПоНомеру(НомерАбонента);
                                Если ЗначениеЗаполнено(Займ) Тогда
                                    Нстрока.ДатаОплаты        = ДатаВОбщем;
                                    Нстрока.НомерПлатежа    = Строка(табДок.ПолучитьОбласть("R" + Формат(сч, "ЧГ=0") + "C" + 4).ТекущаяОбласть.Текст);
                                    Нстрока.Сумма    = Число(табДок.ПолучитьОбласть("R" + Формат(сч, "ЧГ=0") + "C" + 9).ТекущаяОбласть.Текст);
                                    Нстрока.НомерАбонента =  Строка(табДок.ПолучитьОбласть("R" + Формат(сч, "ЧГ=0") + "C" + 6).ТекущаяОбласть.Текст);
                                    Нстрока.ИмяФайла = СтрокаТД.ИмяФайла;
                                    Нстрока.ПлатежнаяСистема = СтрокаТД.ПлатежнаяСистема;
                                    УдаляемыеСтроки.Добавить(сч);
                                КонецЕсли;
                            КонецЕсли;
                        Исключение
                            УспешнаяОперация = Ложь;
                            ЗаписьЖурналаРегистрации("СозданиеДокументовРеестровПлатежейKassa24", УровеньЖурналаРегистрации.Ошибка,
                            Метаданные.Документы.ТАС_РеестрПлатежейПлатежнойСистемы,
                            ,
                            "Ошибка при попытке обработки строки с данными файла-реестра.
                            |"+СтрШаблон("Дата реестра: ""%1"", имя файла: ""%2""",СтрокаТД.ДатаРеестра,СтрокаТД.ИмяФайла)+"
                            |Номер строки: "+НомерСтроки+"
                            |Описание ошибки:
                            |"+ОписаниеОшибки(),
                            РежимТранзакцииЗаписиЖурналаРегистрации.Независимая);
                            Прервать;
                            
                        КонецПопытки;
                        
                    КонецЦикла;    
                КонецЕсли;
1 unbred
 
31.05.22
13:15
excell .. чот кровь брызнула из глаз.
2 alekosansey
 
31.05.22
13:16
)). Да бывает. Платежные сервисы присылают реестр в виде excell. Вообще ад
3 unbred
 
31.05.22
13:18
не вижу в коде .delet() где ты вообще что удаляешь? (2) я про то, как ты excel обозвал.
4 alekosansey
 
31.05.22
13:20
Я не использую ole библиотеку. В коде нету удаление. Я спрашиваю как это сделать если грузишь excell через Табличный документ. А почему использую Табличный документ это связано с linux сервером там нету данной библиотеке
5 yopQua
 
31.05.22
13:30
(1) да у него cells в голове
(0) ну табдок.удалитьобласть() видимо
6 alekosansey
 
31.05.22
13:34
Спасибо посмотрю
7 Garykom
 
гуру
31.05.22
14:36
Копируй в новый пустой документ только нужные строки
Ненужные (которые "удалить") не копируй, пропускай...
8 Garykom
 
гуру
31.05.22
14:36
(7)+ И да замерь время удаления и копирования в новый
Интересно какая будет разница
9 yopQua
 
31.05.22
14:51
(7) после этого
табДок.Прочитать(СтрокаТД.ТекстовыйДокумент);
там не все подряд будет?
10 Woldemar22LR
 
31.05.22
17:16
А VBA  никак нельзя использовать?