Имя: Пароль:
1C
1С v8
импорт txt. Заполнение табличной части документа
,
0 jojojoba2
 
05.05.20
16:09
Добрый день!

Помогите разобраться новичку. Создал обработку импорта TXT файла:


-------------------------------------------------------------------------------------
Мобильный = ЭтотОбъект.Номера.Найти(,"НомерТелефона");

Если ПустаяСтрока(Мобильный.НомерТелефона) Тогда
СтрТаб = ЭтотОбъект.Номера.Добавить();

СтрТаб.НомерТелефона = Тел;
СтрТаб.НомерКонтракта = Контракт;
СтрТаб.ТарифнийПлан = Тариф;
АбонплатаПдв = Абонплата*0.2;
АбонплатаСПдв = АбонплатаПдв+ Абонплата;
СтрТаб.Абонплата = АбонплатаСПдв;
СтрТаб.Скидка = ЗНИЖКИ ;
СтрТаб.ТекСумма = ТекСумма;

ТекСуммаПДВ = ТекСумма*0.2;
ТекСуммаСПДВ = +ТекСуммаПДВ+ТекСумма;
СтрТаб.ТекСуммаСПДВ = ТекСуммаСПДВ;

КонецЕсли;


Контракт="";
Тел="";
Пакет="";
Тариф=0;
Абонплата = 0;
ЗНИЖКИ = 0;
Загалом=0;
КонецЕсли;
КонецЦикла;

ЭтотОбъект.СуммаИтого = СуммаБезПДВ2;
ЭтотОбъект.Номер_рахунку =НомерРахунку;
ЭтотОбъект.ОсобовийРахунок = ОсобовийРахунок;
ЭтотОбъект.Организация = Организация2 ;
ЭтотОбъект.СуммаСПдв =СуммаСПДВ2;
ЭтотОбъект.Примечание =НомерРахункуРозрах+" "+РозрахунковийПеріод;


Для Каждого ТабСтр из ЭтотОбъект.Номера Цикл
СправМоб = Справочники.МобильныеНомераСотрудников.СоздатьЭлемент();
Если Справочники.МобильныеНомераСотрудников.НайтиПоНаименованию(ТабСтр.НомерТелефона).Пустая() Тогда

СправМоб.Наименование = ТабСтр.НомерТелефона;
СправМоб.НомерКонтракта = ТабСтр.НомерКонтракта;
СправМоб.ТарифнийПлан = ТабСтр.ТарифнийПлан;
СправМоб.Записать();
КонецЕсли ;
----------------------------------------------------------------------------------------------------

Хочу чтобы из TXT файла данные заполнялись в табличную часть если строка с номером(мобильной связи) пустая. Если повторение тогда пропуск. Только новые номера из TXT файла. И чтобы старые данные в табличной части документа оставались кроме колонок абонплата,скидка, СуммаИтого и СуммаСПдв.

Вот это не сработало:

Если ПустаяСтрока(Мобильный.НомерТелефона) Тогда
СтрТаб = ЭтотОбъект.Номера.Добавить();

Вообще не заполняет.

Буду рад за любую помощь.

Спасибо.
1 VladZ
 
05.05.20
16:42
(0) Отладчик в руки.
2 hhhh
 
05.05.20
16:55
(0) вот первая строка вообще непонятная. Что она делает?

Мобильный = ЭтотОбъект.Номера.Найти(,"НомерТелефона");
3 jojojoba2
 
05.05.20
17:09
Мобильный = ЭтотОбъект.Номера.Найти(,"НомерТелефона"); -- это не работает.
Я хочу чтобы в табличную часть заполнялись номера если их нету в ТЧ.
Для справочника работает корректно:



Для Каждого ТабСтр из ЭтотОбъект.Номера Цикл
СправМоб = Справочники.МобильныеНомераСотрудников.СоздатьЭлемент();
Если Справочники.МобильныеНомераСотрудников.НайтиПоНаименованию(ТабСтр.НомерТелефона).Пустая() Тогда

СправМоб.Наименование = ТабСтр.НомерТелефона;
СправМоб.НомерКонтракта = ТабСтр.НомерКонтракта;
СправМоб.ТарифнийПлан = ТабСтр.ТарифнийПлан;
СправМоб.Записать();
КонецЕсли ;
4 onetone
 
05.05.20
18:26
Мобильный = ЭтотОбъект.Номера.Найти(,"НомерТелефона");
А может вместо Найти = НайтиСтроки(Новый Структура(ИмяКолонки, Значение))?
5 onetone
 
05.05.20
18:28
(4) т.е. Объект.Номера.НайтиСТроки(Новый Структура(ИмяКолонки, Значение));
6 onetone
 
05.05.20
18:33
(5) Ну и еще, в колонке, где хранится номер, какой тип данных? Число или строка? Если строка, то длина фикс или переменная?
7 jojojoba2
 
05.05.20
19:56
Строка,переменная
8 hhhh
 
05.05.20
20:21
(7) ну правильно, это ведь не должно работать

Если ПустаяСтрока(Мобильный.НомерТелефона) Тогда

оно и не работает. Откуда там возьмется пустая строка в Мобильный.НомерТелефона ?
Программист всегда исправляет последнюю ошибку.