helpf.pro
Регистрация

v8: Загрузить txt файл

Ermak
16.10.2012 00:44Прочитано: 3855
С толкнулся с такой проблемой!
Есть Табличное поле Данные, есть две колонки Инн (Число) и Сумма (Число). Есть txt файл
ИНН 10010207778 Сумма: 1000
ИНН 10010203333 Сумма: 1200
ИНН 10555207778 Сумма: 2000


Как загрузить данные в ТП? Смотрел в инете так и не могу понять, выдает ошибки
Изменено 16.10.12 00:45:28
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
16.10.2012 15:59Ответ № 1
(0) Ermak, это разовая загрузка?
Посмотри примеры чтения данных из TXT
Ermak
16.10.2012 16:25Ответ № 2
я видел этот пример, но для моего случая не подходит.
У меня в txt идет текст а в этом тексте надо вытащить данные но не весь текст
Например:


Покупатель: ОАО "Пупкин", ИНН 1001000444, КПП 104050567, ул.Балтийская 4
№ Товары (работы, услуги) Кол-во Ед. Цена Сумма
1 аренда 7,5 500,00 3 750,00
Итого: 3 750,00
Без налога (НДС)


Здесь нужно вытащить только значение 3 750,00 в колонку Сумма, и 1001000444 в колонку Инн
E_Migachev
16.10.2012 17:50Ответ № 3
тогда считывай весь текст ищи ИНН и считывай после него 11 символов, так же с итого
Ermak
16.10.2012 18:44Ответ № 4
А можете показать на моем примере )
Ermak
16.10.2012 20:39Ответ № 5
(1) E_Migachev, Не разовая, есть мысли сделать загрузку счетов, то есть есть счет который заносим в 1С этот счет можно от сканировать и распознать в txt файл а потом загрузить в документ только те данные которые нужны.
Ermak
17.10.2012 21:47Ответ № 6
*11 *11
E_Migachev
17.10.2012 22:51Ответ № 7
(6) Ermak, не грусти *17

Вот код:
Код 1C v 8.х
 	//Откроем выбор файла
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл";
Диалог.ПолноеИмяФайла = "";
Фильтр = "TXT (*.TXT)|*.TXT";
Диалог.Фильтр = Фильтр;
Диалог.МножественныйВыбор = Ложь;
//Диалог.Каталог = "F:\";
Если Диалог.Выбрать() Тогда
ВыбрФайл = Диалог.ПолноеИмяФайла;

Текст = Новый ТекстовыйДокумент;
// открытие файла
Текст.Прочитать(ВыбрФайл);
// перебор строк текстового документа
Для НомерСтроки=1 по Текст.КоличествоСтрок() Цикл
// получить строку файла с указанным номером
Стр = Текст.ПолучитьСтроку(НомерСтроки);

// «распарсивание» строки

// Пробуем найти ИНН
ПозицияНач = Найти (Стр, "ИНН");
Если ПозицияНач>0 Тогда
ПозицияКон = Найти (Стр, ", КПП");
ИНН = СокрЛП(Сред(Стр,ПозицияНач+3,ПозицияКон-ПозицияНач-3));
КонецЕсли;

// Пробуем найти ИТОГО
ПозицияНач = Найти (Стр, "Итого");
Если ПозицияНач>0 Тогда
ПозицияКон = Найти (Стр, ",");
Итог = СокрЛП(Сред(Стр,ПозицияНач+5,ПозицияКон-ПозицияНач+3));
КонецЕсли;
КонецЦикла;
КонецЕсли;
Сообщить(ИНН+" - "+Итог);

Результат: 1001000444 - : 3 750,00
И сама обработка с текстовым файлом - Скачивать файлы может только зарегистрированный пользователь!
Ermak
18.10.2012 08:43Ответ № 8
Спасибо посмотрю! )
Ermak
18.10.2012 13:58Ответ № 9
А если в txt файле много ИНН и Итого. Например:


----------------------
Покупатель: ОАО "Пупкин", ИНН 1001000444, КПП 104050567, ул.Балтийская 4
№ Товары (работы, услуги) Кол-во Ед. Цена Сумма
1 аренда 7,5 500,00 3 750,00
Итого: 3 750,00
Без налога (НДС)
---------------------------
Покупатель: ОАО "Пупкин", ИНН 1001555444, КПП 104050567, ул.Балтийская 4
№ Товары (работы, услуги) Кол-во Ед. Цена Сумма
1 аренда 7,5 500,00 3 750,00
Итого: 3 850,00
Без налога (НДС)
------------------------------
Покупатель: ОАО "Пупкин", ИНН 1111000444, КПП 104050567, ул.Балтийская 4
№ Товары (работы, услуги) Кол-во Ед. Цена Сумма
1 аренда 7,5 500,00 3 750,00
Итого: 7 000,00
Без налога (НДС)


Как сделать перебор по ним, чтобы все вывел ИНН и Итого
Изменено 18.10.12 13:59:21
E_Migachev
18.10.2012 14:47Ответ № 10
(9) Ermak, как-то так:
Код 1C v 8.х
 //Откроем выбор файла
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл";
Диалог.ПолноеИмяФайла = "";
Фильтр = "TXT (*.TXT)|*.TXT";
Диалог.Фильтр = Фильтр;
Диалог.МножественныйВыбор = Ложь;
//Диалог.Каталог = "F:\";
Если Диалог.Выбрать() Тогда
ВыбрФайл = Диалог.ПолноеИмяФайла;

Текст = Новый ТекстовыйДокумент;
// открытие файла
Текст.Прочитать(ВыбрФайл);
// перебор строк текстового документа
ИНН = ""; Итог = "";
Для НомерСтроки=1 по Текст.КоличествоСтрок() Цикл
// получить строку файла с указанным номером
Стр = Текст.ПолучитьСтроку(НомерСтроки);

// «распарсивание» строки

// Пробуем найти ИНН
ПозицияНач = Найти (Стр, "ИНН");
Если ПозицияНач>0 Тогда
ПозицияКон = Найти (Стр, ", КПП");
ИНН = СокрЛП(Сред(Стр,ПозицияНач+3,ПозицияКон-ПозицияНач-3));
КонецЕсли;

// Пробуем найти ИТОГО
ПозицияНач = Найти (Стр, "Итого");
Если ПозицияНач>0 Тогда
ПозицияКон = Найти (Стр, ",");
Итог = СокрЛП(Сред(Стр,ПозицияНач+5,ПозицияКон-ПозицияНач+3));
КонецЕсли;

// Выведем
Если ЗначениеЗаполнено(ИНН) и ЗначениеЗаполнено(Итог) Тогда
Сообщить(ИНН+" - "+Итог);
ИНН = ""; Итог = "";
КонецЕсли;

КонецЦикла;
КонецЕсли;
Ermak
18.10.2012 15:37Ответ № 11
А можно пример показать работы этой строчки

Код 1C v 8.х
 Итог = СокрЛП(Сред(Стр,ПозицияНач+6,ПозицияКон-ПозицияНач+3));   

Не могу понять до конца как она работает
E_Migachev
18.10.2012 16:23Ответ № 12
(11) Ermak,
Код 1C v 8.х
 Сред(Стр,ПозицияНач+6,ПозицияКон-ПозицияНач+3)   


Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>)
Параметры: <Строка> (обязательный)
Тип: Строка. Исходная строка. <НачальныйНомер> (обязательный)
Тип: Число. Начальный номер символа, с которого начинается выборка. Нумерация символов в строке начинается с 1. Если указано значение, меньшее или равное нулю, то параметр принимает значение 1.
<ЧислоСимволов> (необязательный)
Тип: Число. Количество выбираемых символов. Если параметр не указан, то выбираются символы до конца строки.
Возвращаемое значение: Тип: Строка. Строка выбранных символов.
Описание: Выбирает строку символов, начиная с символа <НачальныйНомер>, общим количеством <ЧислоСимволов>.
Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:
Код 1C v 8.х
 // Пусть номер автомобиля в справочнике основных средств задается
// в виде х999хх99, где последние две цифры - код региона.
// Получим цифровую часть номера.
ЦифрыНомера = Сред(ОсновноеСредство.ГосНомер, 2, 3);



т.е
Код 1C v 8.х
 Сред(Стр,ПозицияНач+3,ПозицияКон-ПозицияНач+3)   

берется строка
Покупатель: ОАО "Пупкин", ИНН 1001000444, КПП 104050567, ул.Балтийская 4
и в этой строке с ПозицияНач (= 41) + 3 (это число символов ИНН )
нужно выбрать количество символов, это кол-во высчитывается ПозицияКон-ПозицияНач+3 (это число символов ИНН)
Ermak
18.10.2012 16:28Ответ № 13
Понятно, спасибо!
Ermak
18.10.2012 17:22Ответ № 14
А как можно сделать когда нахожу в txt ИНН и записываю в ТабПоле не сам ИНН а уже выбранного контрагента из справочника Контрагенты.
Как записать ИНН в ТабПол я сделал а как сделать чтобы он сразу выбирал Контрагента по ИНН не понятно.
Подсказка: Для редактирования своего ответа щелкните по значку (справа)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.