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

v8: Проблема с циклом

Ermak
30.12.2015 16:56Прочитано: 2385

создает только последний документ в папки, а должен каждый создать и открыть. Должно получится сколько файлов столько и документов

Код 1C v 8.х
 ИмяФайлаДанных = "C:\ptz";
    СоответствиеУслугам = Новый Соответствие;
    СоответствиеУслугам.Вставить("газ.txt", Новый Структура("Услуга",Справочники.Номенклатура.ГазоснабжениеИГБУ));
    СоответствиеУслугам.Вставить("то.txt", Новый Структура("Услуга",Справочники.Номенклатура.Техобслуживание));
    МассивФайлов = НайтиФайлы(ИмяФайлаДанных, "*.txt");
    Для каждого ТекущийФайл Из МассивФайлов Цикл       
        ПолноеИмяФайл = СтрЗаменить(ТекущийФайл.Имя, "_",Символы.ПС);
        ПрефиксФайла = СтрПолучитьСтроку(ПолноеИмяФайл, 4);
        ПрефиксФайла = НРег(ПрефиксФайла);
        СтруктураУслуги = СоответствиеУслугам[ПрефиксФайла];
        Если СтруктураУслуги <> Неопределено Тогда
           
            СоответствиеУчастка = Новый Соответствие;  
            СоответствиеУчастка.Вставить("лах", Новый Структура("Участок",Справочники.Пользователи.НайтиПоНаименованию("Лах АУ")));
            СоответствиеУчастка.Вставить("птз", Новый Структура("Участок",Справочники.Пользователи.НайтиПоНаименованию("Пет АУ")));
           

МассивФайлов2 = НайтиФайлы(ИмяФайлаДанных, "*.txt");
            Для каждого ТекущийФайл2 Из МассивФайлов2 Цикл
                ПолноеИмяФайл2 = СтрЗаменить(ТекущийФайл2.Имя, "_",Символы.ПС);
                ПрефиксФайла2 = СтрПолучитьСтроку(ПолноеИмяФайл2, 2);
                ПрефиксФайла2 = НРег(ПрефиксФайла2);
                СтруктураУчастка = СоответствиеУчастка[ПрефиксФайла2];
               
                Если СтруктураУчастка <> Неопределено Тогда
                    АбонентскийУчасток=СтруктураУчастка.Участок;
                    Регион=АбонентскийУчасток.ОсновнойРегион;                  
                    Текст = Новый ЧтениеТекста(СокрЛП(ТекущийФайл.ПолноеИмя), КодировкаТекста.ANSI);   
                    Стр="";
                    Ном=0;
                    //АбонентскийУчасток=ПараметрыСеанса.ГруппаТекущегоПользователя;
                    //Регион=АбонентскийУчасток.ОсновнойРегион;
                    Док=Документы.ВводПлатежей.СоздатьДокумент();
                    Док.Дата=ТекущаяДата();
                    Док.АбонентскийУчасток=АбонентскийУчасток;
                    Док.ПриходОплаты=Справочники.ПриходДенег.НайтиПоНаименованию("Сбербанк (рас.счет)");
                   
                    Пока Стр<>Неопределено Цикл
                        Стр=Текст.ПрочитатьСтроку();
                        Если Стр=Неопределено Тогда
                            Прервать;
                        Конецесли; 
                        МассивСтроки=РазложитьСтрокуВМассивПодстрок(Стр, ";");
                        Если МассивСтроки[0]="#СУММА" тогда
                            продолжить;
                        КонецЕсли;                     
                        Преф=Строка(Регион.Префикс);
                        ЛС=Строка(МассивСтроки[0]);
                        ЛСдляПоиска=Преф+ЛС;
                        ЛСН=Справочники.ЛицевыеСчетаАбонентов.НайтиПоКоду(ЛСдляПоиска);
                        Если ЛСН=Справочники.ЛицевыеСчетаАбонентов.ПустаяСсылка() Или ЛСН=Неопределено Тогда
                            Сообщить("Не найден ЛС="+ЛС);
                            Продолжить;
                        КонецЕсли;
                        Сумм=Число(МассивСтроки[1]);
                        ФИО=МассивСтроки[2];       
                        Адрес=МассивСтроки[4];             
                        ИД="";                 
                        НоваяСтрока=Док.РучнаяОплата.Добавить();
                        НоваяСтрока.ЛицевойСчет=ЛСН;
                        НоваяСтрока.ФИО=ФИО;
                        НоваяСтрока.Сумма=Сумм;
                        НоваяСтрока.ВидУслуги=СтруктураУслуги.Услуга;
                        НоваяСтрока.ВидКвитанции=СтруктураУслуги.Услуга.ВидКвитанции;
                        НоваяСтрока.Адрес=НоваяСтрока.ЛицевойСчет.Наименование;
                    КонецЦикла;
                КонецЕсли;
            КонецЦикла;
           
        КонецЕсли;     
    КонецЦикла;
    Док.Комментарий="Загрузка из банка";
    ДокОплаты=Док.Ссылка;
    Док.ВсегоОплата=ТаблКвитанций.Итог("Сумма");
    ФормаДокумента=Док.ПолучитьФорму("ФормаДокумента");
    ФормаДокумента.Открыть();
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
31.12.2015 02:19Ответ № 1

В цикле чтения файлов, должна быть запись документа, а ее вообще нет

Ermak
31.12.2015 08:42Ответ № 2

Запись не нужна, пока что нужно чтобы они открывались

E_Migachev
31.12.2015 11:10Ответ № 3

тогда получение и открытие формы должно тоже быть в цикле )

Подсказка: Щелкнув по значку (справа от названия вопроса), вы получите список ответов на похожие вопросы!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.