![]() |
![]() |
|
Загрузка с текстового файла | ☑ | ||
---|---|---|---|---|
0
Neznayka
04.08.06
✎
11:44
|
Мне нужно сделать отчет с запросом данных из существующего текстового файла. Подскажите пожалуйста, как правильно это сделать?
|
|||
1
Vlad_1717
04.08.06
✎
11:50
|
А какая структура файла-то?
|
|||
2
Neznayka
04.08.06
✎
11:54
|
обычный текстовый файл, в который были записаны данные из 1С через глобальный модуль
|
|||
3
Vlad_1717
04.08.06
✎
11:55
|
А как эти данные в файл попали?
|
|||
4
agarych
04.08.06
✎
12:01
|
Текст = СоздатьОбъект("Текст");
Текст.Открыть(Файл); Для я = 1 По Текст.КоличествоСтрок() Цикл Стр = Текст.ПолучитьСтроку(я); //что хочешь то и делай здесь со строкой КонецЦикла; |
|||
5
John_T
04.08.06
✎
12:02
|
Открываеш файл, читаеш построчно и записываеш в таблицу значений. Затем цикл по ТЗ и все.
|
|||
6
prochor
04.08.06
✎
12:03
|
1) надо знать структуру записи текстового файла
2) надо, чтобы данные были СТРОГО структурированы, т.е. допустим одно данное от другого в строке отделялись каким-то неупотребляемым знаком, типа & 3) надо открыть ЖКК и посмотреть ее в главе Работа с текстовыми файлами |
|||
7
Neznayka
04.08.06
✎
12:11
|
в текстовый файл попадают данные о сотрудниках, и какие права установленны на тот или иной объект. Данные в строке разделены между собой запятой.
|
|||
8
Vlad_1717
04.08.06
✎
12:21
|
В каждой строке - Сотрудник,права - так?
|
|||
9
John_T
04.08.06
✎
12:28
|
Количество = СтрЧислоВхождений(Стр,",")+1;
Для СчетчикЦикла = 1 По Количество Цикл Если КоличествоКодов>1 Тогда Код = Лев(Стр,Найти(Стр,",")-1); Если Код="" Тогда Код = Стр; КонецЕсли; Стр = Прав(Стр,СтрДлина(Стр)-СтрДлина(Код)-1); Иначе Код = СокрЛП(Стр); КонецЕсли; КонецЦикла; |
|||
10
Neznayka
04.08.06
✎
12:33
|
Примерно так:
"Иван","Иванов Иван" ---------- "Константа.ВалютаБухУчета",1,0 "Константа.ВалютаУпрУчета",1,0 "Константа.ВидСвойстваКонтрагентов",1,0 "Константа.ВидСвойстваНоменклатуры",1,0 "Константа.ДатаЗапретаРедактирования",0,0 "Константа.ЕдиницаВеса",1,0 Нужно извлечь из каждого файла пользователя его ФИО, права на константы, справочники и т.д. |
|||
11
Skynin
04.08.06
✎
13:08
|
(10) то есть это файл, "сгенерированый Описание структуры метаданных?"
|
|||
12
Neznayka
04.08.06
✎
13:11
|
да
|
|||
13
Vlad_1717
04.08.06
✎
13:12
|
(11),(12) Это в какой это "стуктуре" описаны пользователи?
|
|||
14
Neznayka
04.08.06
✎
13:17
|
в смысле? я что-то не совсем поняла
|
|||
15
Skynin
04.08.06
✎
13:19
|
(14) задача тогда известная :) Есть стандартные обработки на проклабе, которые разгребают этот файл.
|
|||
16
Neznayka
04.08.06
✎
13:22
|
что такое проклаб?
|
|||
17
Has
04.08.06
✎
13:26
|
||||
18
Neznayka
05.08.06
✎
11:21
|
А в 1С возможно такое, чтобы при запросе строки обрезать слово не с левой стороны (напр., Сред(Стр,12,ДлСтр-16)), а с правой?
|
|||
19
Анчоус
05.08.06
✎
11:27
|
Лев(Стр, колСимволов) - обрезание слева
Прав(Стр, колСимволов) - обрезание справа |
|||
20
Neznayka
05.08.06
✎
11:31
|
С помощью Прав(Стр, колСимволов) можно обрезать определенное количество символов справа, а мне нужно допустим из ""Константа.ПереоцениватьОстатки",1,0" взять 1, а не 0, тогда как быть?
|
|||
21
Ынча
05.08.06
✎
11:35
|
Тогда лучше использовать Сред...
|
|||
22
Neznayka
05.08.06
✎
11:39
|
я пробовала использовать сред, но он обрезает только слева, а справа не трогает
|
|||
23
Neznayka
05.08.06
✎
11:41
|
Допустим в строке ""Константа.ВалютаБухУчета",1,0" я прописала
Сред(Стр,28,ДлСтр-2), он обрезал только "Константа.ВалютаБухУчета", а остальное оставил как есть |
|||
24
Ынча
05.08.06
✎
11:43
|
Сред (""Константа.ПереоцениватьОстатки",1,0", 44, 1)
|
|||
25
jurii
05.08.06
✎
11:45
|
Список значений и всего то делов:
Сп = СоздатьОбъект("СписокЗначений"); Сп.ИзСтрокиСРазделителями(Стр); Сообщить(Сп.ПолучитьЗначение(2)); |
|||
26
Neznayka
05.08.06
✎
11:45
|
а что за число 44?
|
|||
27
Ынча
05.08.06
✎
11:45
|
А вообще посмотри функцию ИзСтрокиСРазделителями() - быть может она тебе пригодится.
Она может из твоей строки сделать СписокЗначений, в котором будет три элемента: 1 = "Константа.ПереоцениватьОстатки" 2 = 1 3 = 0 |
|||
28
Ынча
05.08.06
✎
11:47
|
Число 44 - это номер символа, с которого начинаем обрезать (только я ошибся: не 44, а 34), а второе число (1) - это количество символов, которое тебе нужно вернуть...
|
|||
29
Neznayka
05.08.06
✎
11:50
|
спасибо за подсказку
|
|||
30
Ынча
05.08.06
✎
11:53
|
А вообще попробуй:
СЗ = СоздатьОбъект("ТаблицаЗначений"); СЗ.ИзСтрокиСРазделителями("""Константа.ПереоцениватьОстатки"",1,0"); тогда получиш: СЗ.ПолучитьЗначение(1) = "Константа.ПереоцениватьОстатки" СЗ.ПолучитьЗначение(2) = 1 СЗ.ПолучитьЗначение(3) = 0 |
|||
31
Ынча
05.08.06
✎
11:55
|
Вернее не
СЗ = СоздатьОбъект("ТаблицаЗначений"); а СЗ = СоздатьОбъект("СписокЗначений"); |
|||
32
Ынча
05.08.06
✎
11:58
|
пипарился :)
|
|||
33
Neznayka
07.08.06
✎
09:03
|
Сейчас я пытаюсь сделать загрузку данных не из одного файла, а из всех файлов каталога. Что не правильно я прописываю?
Файл = ФС.ВыбратьФайл(КаталогИБ() + "\Users\*.txt"); Пока Файл=1 Цикл //Обработка файла ВыводТабл(); СледФайл = ФС.НайтиСледующийФайл(); КонецЦикла; |
|||
34
skunk
07.08.06
✎
09:09
|
||||
35
Ангел- Хоронитель
07.08.06
✎
09:34
|
(33)книжки читать надо!
|
|||
36
Neznayka
07.08.06
✎
09:37
|
в книжках такого я не нашла, поэтому и спрашиваю
|
|||
37
skunk
07.08.06
✎
09:39
|
и что в (34) не айда?
|
|||
38
TDV
07.08.06
✎
10:10
|
Может что то не догоняю,но при чем здесь секция Халява???
|
|||
39
romix
модератор
07.08.06
✎
10:26
|
Книга знаний: Чтение и запись текстовых файлов XML средствами 1С:Предприятие 7.7
Это пример чтения файлов, размеченных как XML. Формат в (10) проще, и разбирается просто сз.ИзСтрокиСРазделителями() |
|||
40
Черномор
07.08.06
✎
11:26
|
Процедура ПолучитьДанные(ВыбранныйФайл)
Если ПустаяСтрока(ВыбранныйФайл) = 1 Тогда Возврат; КонецЕсли; Текст = СоздатьОбъект("Текст"); Текст.Открыть(КаталогИБ()+"\TMP\"+ВыбранныйФайл); Для сч=1 По Текст.КоличествоСтрок() Цикл стрДанные = Текст.ПолучитьСтроку(сч); стрДанные = СтрЗаменить(стрДанные,",",РазделительСтрок); Код = СтрПолучитьСтроку(1); Наименование = СтрПолучитьСтроку(2); ... ПолеN = СтрПолучитьСтроку(N); КонецЦикла; КонецПроцедуры // ПолучитьДанные //---------------------------------------------------- Процедура Сформировать() Перем ВыбранныйФайл; ФС.УстТекКаталог(КаталогИБ()+"\TMP"); ВыбранныйФайл = ФС.НайтиПервыйФайл("*.txt"); ПолучитьДанные(ВыбранныйФайл); Пока ПустаяСтрока(ВыбранныйФайл) = 0 Цикл ВыбранныйФайл = ФС.НайтиСледующийФайл(); ПолучитьДанные(ВыбранныйФайл); КонецЦикла; КонецПроцедуры |
|||
41
Neznayka
07.08.06
✎
12:53
|
Спасибо за подсказку, но я уже сама это сделала
|
|||
42
skunk
07.08.06
✎
12:54
|
(41)теперече надо ссылку на фотку показать... тут так принято
|
|||
43
Milli
07.08.06
✎
13:17
|
такое фото пойдет: http://webfile.ru/1049710 ???
|
|||
44
Milli
07.08.06
✎
13:18
|
ах, да, я под другим именем вошла... :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |