Имя: Пароль:
1C
 
Перенос сохраненной таблицы значений в несколько баз
0 Sabbath
 
01.11.07
17:08
Товарищи, Помогите плиз! Мне необходимо перенести данные из одно базы в несколько таких же.
Есть константа, в которой сохраняется таблица значений. Причем, эта таблица содержит несколько вложенных. Мне нужно эти данные перенести в другую базу.
Как это реализовать. Я подумал, что можно перенести это в текстовый документ. А из него потом переносить в константы других баз. Но при этом я столкнулся с трудностями. Просто не смог грамотно выгрузить необходимую информацию.
Может, есть еще какие-то способы? Если нет, то каков должен быть код, хотя бы примерно. Или где это можно посмотреть. Есть какие-нибудь источники?
1 ТелепатБот
 
гуру
01.11.07
17:08
2 Scooter
 
01.11.07
17:21
XML
хотя не понятки по ссылочной целостности

а вообще ТЗ в константе это жесть
3 Господин ПЖ
 
01.11.07
17:27
(2) угу... Они еще и вложенные друг в друга...
4 Sabbath
 
01.11.07
17:31
Scooter
Да, жесть. Но так реализована конфа "Камин" для расчета зарплаты. Нужно сделать обработку для переноса этой константы. Других возможностей решение проблемы не нашел.
А проблема в том, что в этой константе сохраняются настройки отчета. И при повторном открытии берутся оттуда. А настроек этих очень много, все вручную по 10-15 базам без ошибок забить сложно. Тем более настройки эти будут, возможно еще менятья. Таким образом, лучше сделать такую обработку, проставлять значения в одной базе, выгружать их и загружать в другие.

С ХМL я вообще не работал... в этом еще проблема
5 Sabbath
 
01.11.07
17:32
Господин ПЖ
ага, именно вложенные.. так что? XML - лучший вариант в этом случае?
6 Scooter
 
01.11.07
17:35
(4)я бы советовал ХМЛ
Книга знаний: XML в 10 тезисах
7 Scooter
 
01.11.07
17:35
(6)+ ну вот не подумал бы чтоб каминовцы так поступили
8 Sabbath
 
01.11.07
17:39
Scooter
Да, каминовцы это и сделали.
Кстати, как вставлять ссылку на сообщение перед ответом? Что-то не разберусь

Спасибо, почитаю про ХML
9 Scooter
 
01.11.07
17:46
(8)как видишь так и пиши

вот еще Книга знаний: v8: Пример чтения XML через XML DOM
по ХМЛю много статей, заодно потренеруешься  :)

а как они в константу ТЗ заносят?
10 i-rek
 
01.11.07
17:55
Писец. Каминовцы жгут
не зря я всегда косо смотрел на их изделия
11 i-rek
 
01.11.07
17:57
ну если в другой базе все ссылки присутствуют, то см. книга знаний Книга знаний: v8: Сериализация объекта в строку через XML;

а кстати, как они ТЗ в константу-то запихнули ? просто в строчку упаковали ? ну так просто эту строчку и записать в другую базу ))
12 i-rek
 
01.11.07
17:59
а, ещё можно просто взять обработку Универсальная загрузка и выгрузка XML она умеет и константы переносить
13 Fragster
 
гуру
01.11.07
18:02
(9) ХранилищеЗначения ?
14 Sabbath
 
01.11.07
18:15
Да, ХранилищеЗнчения
15 Sabbath
 
01.11.07
18:16
i-rek А где взять эту обработку?
16 marvak
 
01.11.07
18:32
есть процедурка или функция - что то типа СохранитьВФайл()
17 floverr
 
01.11.07
23:12
И чем жесть ТЗ в константе? даж очень удобно, у меня таким образом пути обмена с филиалами реализованы, а филиалов - доффига и бывает пути меняются, открыл форму, вывалилось ТЗ, добавил или изменил и перезалил обратно в хранилище.
18 floverr
 
01.11.07
23:16
Делаешь внеш. обработку - на ее форму копию ТЗ, при Открытии восстанавливаешь значение из хранилища, а при закрытии обработки вызываешь не помню как точно Обаботка.сохранитьнастройки(имяфайла)

в другой базе эту же обработку но Обработка.ВосстановитьНастройки(имя файла)
а далее кнопку - ЗалитьВХранилище => твои настройки переносятся без иъепства с ХМЛ
19 SKrin
 
01.11.07
23:56
(0)какие типы данных находятся в ТЗ?
если есть ссылки , то в этом случает в ТЗ нужно хранить уникальные и общие для всех баз значения по которым и будут восстанавливаться значения настроек отчета в каждой из баз
20 Sabbath
 
02.11.07
10:18
floverr
А ты не можешь куда-нибудь залить подобную обработку? Я хоть примерно посмотрю, как это деается
21 tnnick19
 
02.11.07
10:33
Ниже расположенный код описывает перенос документов из одной базы в другую через com-объект, один из реквизитов представлен ввиде хранилища значений, а в нем содержится таблица значений. Удачи.
//---------------------------------

   полноеИмяФЛ=СокрЛП(текФайлИмя);
   //инициализация приложения
   V8=Новый COMОбъект("V81.ComConnector");
   Попытка
       Открытие=V8.Connect("File="+Путь+";Usr="+Юзер+";"+"Pwd="+Пароль+";");
   Исключение
       Предупреждение("База данных не открыта!!!"); Возврат;
   КонецПопытки;
   //
   МенеджерДокумента=Открытие.Документы.ЗагрузкаПрайсЛистаАптеки;
   РегистрЗагрузок=РегистрыСведений.ПрайсЛистыАптек.СоздатьНаборЗаписей();
   //чтение и перенос данных
   Сообщить("Начало загрузки: "+ТекущаяДата()); Счетчик=1;
   Выборка=МенеджерДокумента.Выбрать(ДатаНач,ДатаКон);
   Пока Выборка.Следующий() Цикл
       новаяЗапись=РегистрЗагрузок.Добавить();
       новаяЗапись.НаименованиеФайла=Выборка.ИмяФайла;
       Выборка.Файл.Получить().Записать(полноеИмяФЛ);
       новаяЗапись.Файл=Новый ХранилищеЗначения(Новый ДвоичныеДанные(полноеИмяФЛ), Новый СжатиеДанных(9));
       УдалитьФайлы(полноеИмяФЛ);
       Состояние("Обработка: "+Выборка.Date+" № "+Счетчик);
       если Счетчик=1000 тогда прервать; конецесли;
       Счетчик=Счетчик+1;
       ОбработкаПрерыванияПользователя();
   КонецЦикла;
   РегистрЗагрузок.Записать();
   Сообщить("Окончание загрузки: "+ТекущаяДата());
   //закрытие сеанса
   Открытие="";
22 Sabbath
 
07.11.07
13:24
... блин, короче ни хрена не понял...
что делать?..
23 Sabbath
 
09.11.07
15:53
Вот результат работы по данному вопросу. Обработка выполняет выгрузку ХранилищаЗначений из Константы в XML и загрузку данных в соответствующую константу. Таким образом, осуществляется перенос настроек, сохраненных в константе одной базы, по нескольким подобным.

// Выгрузка настроек отчета в XML
Процедура КнопкаВыполнитьНажатие(Кнопка)
   
   ЗаписьXML = Новый ЗаписьXML;
   ЗаписьXML.ОткрытьФайл("c:\tmp\out.xml");
   ЗаписьXML.ЗаписатьОбъявлениеXML();
   ЗаписьXML.ЗаписатьНачалоЭлемента("Корневой");
   
   // Для сокращения размера файла сообщения записываем
   // соответствие пространств имен
   //ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsd", "http://www.w3.org/2001/XMLSchema");
   //ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
   //ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data");
   
   ЗаписьXML.ЗаписатьНачалоЭлемента("КонстантаПараметрыНастроек");
   Данные = Константы.ПараметрыНастроек.Получить();
   
   // Записываем данные
   ЗаписатьXML(ЗаписьXML, Данные);
   ЗаписьXML.ЗаписатьКонецЭлемента();
   
   ЗаписьXML.ЗаписатьКонецЭлемента();
   ЗаписьXML.Закрыть();
   
КонецПроцедуры

// Загрузка параметров из XML в константу
Процедура ОсновныеДействияФормыДействие(Кнопка)

   // Создаем объект чтения XML
   ЧтениеXML = Новый ЧтениеXML;
   ЧтениеXML.ОткрытьФайл("c:\tmp\out.xml");

   // Позиционируемся на корневом элементе
   ЧтениеXML.Прочитать();

   // Позиционируемся на первом элементе, содержащим данные
   ЧтениеXML.Прочитать();

   //// Позиционируемся на первом элементе, содержащим данные
   ЧтениеXML.Прочитать();
   
   // Читаем очередное значение
   Данные = ПрочитатьXML(ЧтениеXML);

   Хранилище = Данные.Получить();
   
   
   // Записываем полученные данные
       
   ЧтениеXML.Закрыть();
   
   Константы.ПараметрыНастроек.Установить(Данные);
   

КонецПроцедуры
24 перцептрон
 
09.11.07
16:00
(0) Делай через ОЛЕ как (21)
25 Sabbath
 
09.11.07
16:02
26 Sabbath
 
09.11.07
16:04
перцептрон

я уже сделал, смотри выше. Но не через ОЛЕ, ибо представления о
том практически не имею
AdBlock убивает бесплатный контент. 1Сергей