Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Создание документов в цикле

v7: Создание документов в цикле
Я
   Mafiozaa
 
17.03.21 - 03:25
Приветствую, не получается корректно создать нужное кол-во документов по условиям, логика какая: Читаем текстовый файл, находим строку "-----" открываем документ разносим в новом документе по реквизитам данные, после читаем далее, находим "_____" записываем документ, а у меня получается, то очень много документов, то 1 документ создается правильно, а все остальные(последующие) со штатными ДатаДок и НомерДок
Код для наглядности




ДокМарк = СоздатьОбъект("Документ.Маркировка");
    КолСтр = Т.КоличествоСтрок();
    Для А = 1 По КолСтр Цикл
        Если Найти(ТекСтр, "----------") <> 1 Тогда
            Стр = Т.ПолучитьСтроку(ТекСтр);
                        ДокМарк.Новый();
                Если Стр = "----------" Тогда
                    ТекСтр = ТекСтр + 1;
                    ДокМарк.ДатаДок = Т.ПолучитьСтроку(ТекСтр);
                    ТекСтр = ТекСтр + 1;
                    ДокМарк.НомерДок = Т.ПолучитьСтроку(ТекСтр);
                    ТекСтр = ТекСтр + 1;
                    Сообщить(Т.ПолучитьСтроку(ТекСтр));
                    ДокМарк.ДокОснование = Т.ПолучитьСтроку(ТекСтр);
                    ТекСтр = ТекСтр + 1;
                    Сообщить(Т.ПолучитьСтроку(ТекСтр));
                    ДокМарк.КодМаркировки = Т.ПолучитьСтроку(ТекСтр);
                КонецЕсли;        
        КонецЕсли;
        Если Найти(ТекСтр, "__________") <> 1 Тогда
        ДокМарк.Записать();    
        КонецЕсли;
    КонецЦикла;
   Mafiozaa
 
1 - 17.03.21 - 03:25
Ткните носом, что я делаю не так)
   hhhh
 
2 - 17.03.21 - 04:17
(1)         Если Найти(ТекСтр, "----------") <> 1 Тогда

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

Ты точно понимаешь что делает этот кусок кода?
(9) лучше Лев(Стр,5) = "-----", т.к. в файле может быть переменное кол-во символов "-"

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.