Имя: Пароль:
1C
1C 7.7
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) = "-----", т.к. в файле может быть переменное кол-во символов "-"
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.