Имя: Пароль:
1C
1С v8
Формирования списка баз через внешнюю обработку
,
0 Trixietheflowskigod
 
18.07.18
08:52
Добрый день форум,
Писал обработку для формирования списков баз, но столкнулся с проблемой.
Есть Дивизион указывается на форме, в него записывается

Текст.ДобавитьСтроку("["+Элемент.Наименование+"]  
        |Connect=Srvr="""+Элемент.Серевер1С+""";Ref="""+Элемент.Код+""";
        |Folder=/"+Объект.Дивизион+"
        |App="+Объект.ТипЗапуска+"  
        |Version="+Объект.Версия1С+"");    

и вот 3 меня в справочнике 3 базы в одном дивизионе, и когда я формирую он записывает в текстовый файл одно итоже несколько раз то что прошло в цикле последним:

[TOO TransМагистраль]  
Connect=Srvr="10.20.5.21";Ref="TRM";
Folder=/ИЖС АСТАНА
App=Толстый клиент  
Version=8.3.10.2580
[TOO TransМагистраль]  
Connect=Srvr="10.20.5.21";Ref="TRM";
Folder=/ИЖС АСТАНА
App=Толстый клиент  
Version=8.3.10.2580
[TOO TransМагистраль]  
Connect=Srvr="10.20.5.21";Ref="TRM";
Folder=/ИЖС АСТАНА
App=Толстый клиент  
Version=8.3.10.2580


Вот весь код:

&НаКлиенте
Процедура ВывестиПредупреждение(Результат, ДополнительныеПараметры) Экспорт
    
    Если Результат = КодВозвратаДиалога.ОК Тогда
        Возврат;    
    КонецЕсли;    
    
    
КонецПроцедуры

&НаКлиенте
Процедура Сформировать(Команда)
    
    мОрганизации = Новый Массив;
    
    ЗапросВСправочник(мОрганизации);
    
        
    ФайлНаДиске = Новый Файл(""+Объект.ПутьСписка+"\"+Объект.Дивизион+"\"+Объект.Дивизион+".v8i");
    Если ФайлНаДиске.Существует() Тогда
        
        ПереместитьФайл(""+Объект.ПутьСписка+"\"+Объект.Дивизион+"\"+Объект.Дивизион+".v8i",""+Объект.ПутьСписка+"\"+Объект.Дивизион+"\bak\"+Объект.Дивизион+".v8i");
        
        Оповещение = Новый ОписаниеОповещения("ВывестиПредупреждение",ЭтаФорма );
        ПоказатьВопрос(Оповещение,"Файл будет перезаписан "+Объект.Дивизион+".v8i", РежимДиалогаВопрос.ОК);
    КонецЕсли;
    
    Текст = Новый ТекстовыйДокумент();
    СоздатьКаталог(""+Объект.ПутьСписка+"\"+Объект.Дивизион+"");    
    СоздатьКаталог(""+Объект.ПутьСписка+"\"+Объект.Дивизион+"\bak");
    
    Для Каждого Элемент Из мОрганизации Цикл
        
        Текст.ДобавитьСтроку("["+Элемент.Наименование+"]  
        |Connect=Srvr="""+Элемент.Серевер1С+""";Ref="""+Элемент.Код+""";
        |Folder=/"+Объект.Дивизион+"
        |App="+Объект.ТипЗапуска+"  
        |Version="+Объект.Версия1С+"");        
        Текст.Записать(""+Объект.ПутьСписка+"\"+Объект.Дивизион+"\"+Объект.Дивизион+".v8i");

    КонецЦикла;
    
    
КонецПроцедуры

&НаСервере
Процедура ЗапросВСправочник(мОрганизации) Экспорт

    сДанные = Новый Структура;
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ИнформационныеБазы.Ссылка,
    |    ИнформационныеБазы.Код,
    |    ИнформационныеБазы.Наименование,
    |    ИнформационныеБазы.Серевер1С
    |ИЗ
    |    Справочник.ИнформационныеБазы КАК ИнформационныеБазы
    |ГДЕ
    |    ИнформационныеБазы.Дивизион = &Дивизион";
    
    Запрос.УстановитьПараметр("Дивизион", Объект.Дивизион);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Выборка = РезультатЗапроса.Выбрать();
    
    Пока Выборка.Следующий() Цикл
        
        сДанные.Вставить("ИБ", Выборка.Ссылка);
        сДанные.Вставить("Код", Выборка.Код);
        сДанные.Вставить("Наименование", Выборка.Наименование);
        сДанные.Вставить("Серевер1С", Выборка.Серевер1С);    
        
        мОрганизации.Добавить(сДанные);    

    КонецЦикла;
        
    
КонецПроцедуры;
1 Trixietheflowskigod
 
18.07.18
08:53
и вот у меня в справочнике 3 базы в 1 дивизионе, и когда я формирую он записывает в текстовый файл одно и тоже несколько раз то что прошло в цикле последним:
2 Deon
 
18.07.18
09:12
Засунь определение структуры:
сДанные = Новый Структура;

в тело цикла:
Пока Выборка.Следующий() Цикл

Ибо ты в цикле мучаешь одну и ту же структуру, меняя в ней значения
3 Trixietheflowskigod
 
18.07.18
09:31
Спасибо большое, засунул как вы и сказали, все теперь нормально