|
Перенос сохраненной таблицы значений в несколько баз | ☑ | ||
|---|---|---|---|---|
|
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
|
продолжение эпопеи в следующей теме :)
v8: Суммирование значений констант нескольких баз в одной консолидированной |
|||
|
26
Sabbath
09.11.07
✎
16:04
|
перцептрон
я уже сделал, смотри выше. Но не через ОЛЕ, ибо представления о том практически не имею |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |