![]() |
|
v7: Создание документов в цикле | ☑ | ||
---|---|---|---|---|
0
Mafiozaa
17.03.21
✎
03:25
|
Приветствую, не получается корректно создать нужное кол-во документов по условиям, логика какая: Читаем текстовый файл, находим строку "-----" открываем документ разносим в новом документе по реквизитам данные, после читаем далее, находим "_____" записываем документ, а у меня получается, то очень много документов, то 1 документ создается правильно, а все остальные(последующие) со штатными ДатаДок и НомерДок
Код для наглядности ДокМарк = СоздатьОбъект("Документ.Маркировка"); КолСтр = Т.КоличествоСтрок(); Для А = 1 По КолСтр Цикл Если Найти(ТекСтр, "----------") <> 1 Тогда Стр = Т.ПолучитьСтроку(ТекСтр); ДокМарк.Новый(); Если Стр = "----------" Тогда ТекСтр = ТекСтр + 1; ДокМарк.ДатаДок = Т.ПолучитьСтроку(ТекСтр); ТекСтр = ТекСтр + 1; ДокМарк.НомерДок = Т.ПолучитьСтроку(ТекСтр); ТекСтр = ТекСтр + 1; Сообщить(Т.ПолучитьСтроку(ТекСтр)); ДокМарк.ДокОснование = Т.ПолучитьСтроку(ТекСтр); ТекСтр = ТекСтр + 1; Сообщить(Т.ПолучитьСтроку(ТекСтр)); ДокМарк.КодМаркировки = Т.ПолучитьСтроку(ТекСтр); КонецЕсли; КонецЕсли; Если Найти(ТекСтр, "__________") <> 1 Тогда ДокМарк.Записать(); КонецЕсли; КонецЦикла; |
|||
1
Mafiozaa
17.03.21
✎
03:25
|
Ткните носом, что я делаю не так)
|
|||
2
hhhh
17.03.21
✎
04:17
|
(1) Если Найти(ТекСтр, "----------") <> 1 Тогда
это что за хрень? ТекСтр - это число, откуда в нем могут возникнуть черточки? |
|||
3
Bigbro
17.03.21
✎
04:55
|
ты не записываешь ни один документ.
|
|||
4
Bigbro
17.03.21
✎
04:55
|
то есть наоборот
|
|||
5
Mafiozaa
17.03.21
✎
05:29
|
(4) Наоборот я записываю 1 документ, я понял что косяк в этом Если Найти(ТекСтр, "----------") <> 1 Тогда, щас буду копаться
|
|||
6
Провинциальный 1сник
17.03.21
✎
06:37
|
1. Лучше использовать "Т.ВыбратьСтроки" и "Пока Т.ПолучитьСтроку()" вместо цикла по счетчику.
2. Если используешь цикл по счетчику строк ТЗ, то потом обращаться к нужной строке можно двумя способами - или Т.ПолучитьСтрокуПоНомеру(<Строка>), или обращаться к каждому реквизиту через Т.ПолучитьЗначение(<Строка>,<Колонка>) А у тебя хрень какая-то. |
|||
7
Mafiozaa
17.03.21
✎
07:55
|
(6) (2) Этот вопрос решил)
|
|||
8
Kigo_Kigo
17.03.21
✎
09:16
|
КодикВырвиГлазик :)))
|
|||
9
Злопчинский
17.03.21
✎
10:26
|
Если Стр <> "----------" Тогда
будет работать примерно в 10 раз быстрее |
|||
10
Злопчинский
17.03.21
✎
10:27
|
Многоэтажные длинные если намного ухудшают читабельность и понимаемость кода
|
|||
11
Fedor-1971
17.03.21
✎
11:43
|
(0) ДокМарк = СоздатьОбъект("Документ.Маркировка"); - создаём один документ
Счётчик цикла А=1, а двигаешься по файлу ТекСтр Потом, возможно, если встретишь "-----", то запишешь документ. Только ТекСтр - счётчик и там число, а не строка Ты точно понимаешь что делает этот кусок кода? (9) лучше Лев(Стр,5) = "-----", т.к. в файле может быть переменное кол-во символов "-" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |