|
обработка Заполнения табличной части документа при импорте из TXT файла | ☑ | ||
---|---|---|---|---|
0
jojojoba2
11.05.20
✎
14:49
|
Добрый день!
Помогите новичку. Делаю обработку импорта. Как заполнить определенные колонки табличной части(данные в остальных не должны пропасть) из строчек TXT? Скиньте ,если можно пример. Мне нужно чтобы значения в табличной части колонок "абонплата","Скидка","ТекСумма","ТекСуммаСПДВ" каторые заполнены, при следующем импорте(документ должен создаваться копированием) заменялись новыми(за следующий месяц).Все остальное(в колонках "НомерТелефона","НомерКонтракта","ТарифнийПлан","Подразделение" должно остаться. Как перезаписать(переввести) определенные данные в табличную часть документа? При импорте ,когда тч документа пуста я использовал: СтрТаб = ЭтотОбъект.Номера.Добавить(); СтрТаб.НомерТелефона = Тел; СтрТаб.НомерКонтракта = Контракт; СтрТаб.ТарифнийПлан = Тариф; СтрТаб.Абонплата = АбонплатаСПдв; СтрТаб.Скидка = ЗНИЖКИ ; СтрТаб.ТекСумма = ТекСумма; //ТекСуммаПДВ = ТекСумма*0.2; //ТекСуммаСПДВ = +ТекСуммаПДВ+ТекСумма; СтрТаб.ТекСуммаСПДВ = ТекСуммаСПДВ; Но это просто добавляет строки снизу, а не перезаписывает Пробовал и так Т=ЭлементыФормы.Номера.ТекущиеДанные; Т. Абонплата = АбонплатаСПдв; Т. Скидка = ЗНИЖКИ ; Т. ТекСумма = ТекСумма; Т. ТекСуммаСПДВ = ТекСуммаСПДВ; но заменяет почемуто данные только в первой строке. Вот вся обработка импорта : Процедура ОсновныеДействияФормыЗаполнить(Кнопка) Перем Стр; Стр = ""; Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытияФайла.ПолноеИмяФайла = ""; Текст = "ru = "" Текст""; en = ""Text"""; Фильтр = Нстр(Текст)+"(*.txt)|*.txt"; ДиалогОткрытияФайла.Фильтр = Фильтр; ДиалогОткрытияФайла.МножественныйВыбор = Ложь; Если ДиалогОткрытияФайла.Выбрать() Тогда ИмяФайла = ДиалогОткрытияФайла.ПолноеИмяФайла; Сообщить (ИмяФайла); Иначе Текст = "ru= ""Файл не выбран!""; en=""File not selected"""; Предупреждение(НСтр(Текст)); КонецЕсли; Текст = Новый ТекстовыйДокумент(); Текст.Прочитать(ИмяФайла); Стр = Текст.ПолучитьТекст() ; Если Найти(Стр,"ТОВАРИСТВО З ОБМЕЖЕНОЮ")>0 тогда Организация2=Лев(СокрЛП(Сред(Стр,Найти(Стр,"ТОВАРИСТВО З ОБМЕЖЕНОЮ")+42)),20); КонецЕсли; Если Найти(Стр,"Особовий рахунок:")>0 тогда ОсобовийРахунок=Лев(СокрЛП(Сред(Стр,Найти(Стр,"Особовий рахунок:")+18)),13); КонецЕсли; Если Найти(Стр,"Номер рахунку:")>0 тогда НомерРахунку=Лев(СокрЛП(Сред(Стр,Найти(Стр,"Номер рахунку:")+16)),10); КонецЕсли; Если Найти(Стр,"Номер рахунку:")>0 тогда НомерРахункуРозрах=Лев(СокрЛП(Сред(Стр,Найти(Стр,"Номер рахунку:"))),40); КонецЕсли; Если Найти(Стр,"Розрахунковий період:")>0 тогда РозрахунковийПеріод=Лев(СокрЛП(Сред(Стр,Найти(Стр,"Розрахунковий період:"))),45); КонецЕсли; Если Найти(Стр,"ЗАГАЛОМ БЕЗ ПОДАТКІВ: ")>0 тогда СуммаБезПДВ2=Лев(Сред(Стр,Найти(Стр,"ЗАГАЛОМ БЕЗ ПОДАТКІВ: ")+94),11); КонецЕсли; Если Найти(Стр,"ЗАГАЛОМ НАРАХОВАНО ЗА ПЕРІОД ЗА ВСІМА КОНТРАКТАМИ РАЗОМ З ПДВ ТА ПФ")>0 тогда СуммаСПДВ2=Лев(Сред(Стр,Найти(Стр,"ЗАГАЛОМ НАРАХОВАНО ЗА ПЕРІОД ЗА ВСІМА КОНТРАКТАМИ РАЗОМ З ПДВ ТА ПФ")+94),11); КонецЕсли; Контракт=""; Тел=""; Пакет=""; Тариф=0; Загалом=0; Для а = 1 по Текст.КоличествоСтрок() Цикл Стр = Текст.ПолучитьСтроку(а); Если Найти(Стр,"Контракт №")>0 тогда Тел=Прав(СокрЛП(Сред(Стр,Найти(Стр,"Контракт №")+4)),10); Контракт=Лев(СокрЛП(Сред(Стр,Найти(Стр,"Контракт №")+10)),12); ИначеЕсли Найти(Стр,"Тарифний Пакет:")>0 тогда Тариф= Лев(СокрЛП(Сред(Стр,Найти(Стр,"Тарифний Пакет:")+15)),21); ИначеЕсли Найти(Стр,"ВАРТІСТЬ ПАКЕТА/ЩОМІСЯЧНА ПЛАТА: ")>0 тогда Абонплата=Прав(СокрЛП(Сред(Стр,Найти(Стр,"ВАРТІСТЬ ПАКЕТА/ЩОМІСЯЧНА ПЛАТА: ")+4)),9); ИначеЕсли Найти(Стр,"Знижка на суму особового рахунку ")>0 тогда ЗНИЖКИ=Прав(СокрЛП(Сред(Стр,Найти(Стр,"Знижка на суму особового рахунку ")+4)),9); ИначеЕсли Найти(Стр,"ЗАГАЛОМ ЗА КОНТРАКТОМ")>0 тогда ТекСумма=Прав(СокрЛП(Сред(Стр,Найти(Стр,"ЗАГАЛОМ ЗА КОНТРАКТОМ")+4)),9); АбонплатаПдв = Абонплата*0.2; АбонплатаСПдв = АбонплатаПдв+ Абонплата; ТекСуммаПДВ = ТекСумма*0.2; ТекСуммаСПДВ = +ТекСуммаПДВ+ТекСумма; Если Справочники.МобильныеНомераСотрудников.НайтиПоНаименованию(Тел).Пустая() Тогда СтрТаб = ЭтотОбъект.Номера.Добавить(); СтрТаб.НомерТелефона = Тел; СтрТаб.НомерКонтракта = Контракт; СтрТаб.ТарифнийПлан = Тариф; СтрТаб.Абонплата = АбонплатаСПдв; СтрТаб.Скидка = ЗНИЖКИ ; СтрТаб.ТекСумма = ТекСумма; СтрТаб.ТекСуммаСПДВ = ТекСуммаСПДВ; Иначе Т=ЭлементыФормы.Номера.ТекущиеДанные; Т. Абонплата = АбонплатаСПдв; Т. Скидка = ЗНИЖКИ ; Т. ТекСумма = ТекСумма; Т. ТекСуммаСПДВ = ТекСуммаСПДВ; КонецЕсли; Контракт=""; Тел=""; Пакет=""; Тариф=0; Абонплата = 0; ЗНИЖКИ = 0; КонецЕсли; КонецЦикла; ЭтотОбъект.СуммаИтого = СуммаБезПДВ2; ЭтотОбъект.Номер_рахунку =НомерРахунку; ЭтотОбъект.ОсобовийРахунок = ОсобовийРахунок; ЭтотОбъект.Организация = Организация2 ; ЭтотОбъект.СуммаСПдв =СуммаСПДВ2; ЭтотОбъект.Примечание =НомерРахункуРозрах+" "+РозрахунковийПеріод; Для Каждого ТабСтр из ЭтотОбъект.Номера Цикл СправМоб = Справочники.МобильныеНомераСотрудников.СоздатьЭлемент(); Если Справочники.МобильныеНомераСотрудников.НайтиПоНаименованию(ТабСтр.НомерТелефона).Пустая() Тогда СправМоб.Наименование = ТабСтр.НомерТелефона; СправМоб.НомерКонтракта = ТабСтр.НомерКонтракта; СправМоб.ТарифнийПлан = ТабСтр.ТарифнийПлан; СправМоб.Записать(); КонецЕсли ; КонецЦикла; КонецПроцедуры Спасибо. |
|||
1
Fedor-1971
11.05.20
✎
15:17
|
(0) Мощно, кучу кода зачем вывалил?
Ответ на твой вопрос:
|
|||
2
jojojoba2
11.05.20
✎
15:30
|
Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |