Имя: Пароль:
1C
1С v8
Изменение имен таблиц SQL
,
0 Tochka
 
05.12.11
08:04
Добрый день.
У меня есть самописная конфигурация, где перемешаны 1с и запросы непосредственно из SQL. Проблема в том что у нас поехала структура таблиц. Вопрос как можно 1с объяснить что это поле в таблице теперь зваться по другому.
1 el-gamberro
 
05.12.11
08:05
Надо было использовать метапарсер а не напрямую писать названия таблиц
2 el-gamberro
 
05.12.11
08:06
А это 8.2...
3 sda553
 
05.12.11
08:07
(0) Да никак теперь, сочувствую. Надо было действительно названия таблиц "вычислять" а не писать
4 Tochka
 
05.12.11
08:18
к сожалению такой вариант меня тоже не устраивает потому что я из 1с делаю запрос к другой.
5 Tochka
 
05.12.11
08:18
(2) Нет  это 8.1
6 Alex375
 
05.12.11
08:19
(4) к другой 1С? Если так, то вычислять можно.
7 vde69
 
05.12.11
08:20
нефиг перемешивать было.

Вообще я не понимаю зачем в восьмерке прямые запросы
8 Александр_
Тверь
 
05.12.11
08:41
(7) вот зачем именно тоже не знаю, но то что даныне можно получать (и изменять) в некоторых ситуациях существенно быстрее - это факт.
9 vde69
 
05.12.11
08:45
(8) главный плюс восьмерки - это трех звенка с RLS, написав один единственый прямой запрос мы херим все приемущества восьмерки, по тому как паролик от скуля становится доступным.

поубивал-бы сразу :)
10 Reaper_1c
 
05.12.11
09:11
Ветка посвящается всем балбесам нарушающим лицензионное соглашение. Никто вас за это не засудит - просто эти поделки с прямым доступом разваливаются как карточный домик.
11 Ferz
 
05.12.11
09:15
Select BinaryData From Params Where Filename = 'DbNames'
12 VVi3ard
 
05.12.11
09:16
(7) Например нужно изменить реквизит регистра накопления в котором 89 000 000 строк. Прямым Update делается за 4 минуты, через НаборЗаписей даже сложно представить.
13 AlexNew
 
05.12.11
09:18
(10) Зачем так сразу? Изобретателям, 1С то тоже учить надо, а SQL вроде знаем:)
14 vde69
 
05.12.11
09:23
(12) нужно - делай, только не из 1с а по нормальному из консоли SQL.
15 vde69
 
05.12.11
09:30
(12) кстати я сомневаюсь в том что прямой апдейт 90 лямов записей будет идти 4 минуты, думаю будет больше... минут 15.

счас проверю, запустил примерно такой апдейт только по числовому полю
16 Axel2009
 
05.12.11
09:33
(15) зависит от дисков =)
17 Tochka
 
05.12.11
09:33
(11) Ferz там это всё дело закодировано, а как можно это раскодировать. И если я там после изменений закодирую обратно, то всё ли нормально будет?
18 Ferz
 
05.12.11
09:52
(17) открыть можно Unpack`ом
открыть и отредактировать можно Ei http://main.1c-ei.ru/Home/help/objectdb Действия - Дополнительно - Объекты базы данных
19 Ferz
 
05.12.11
09:55
(17) да все будет ОК, если таблицы с новыми именами существуют
20 vde69
 
05.12.11
10:05
(15)+ 20 минут апдейт поля типа BIT (не индексированого), для 1с апдейт многостраничного Binary + его распокавать/запоковать + обновить индексы, на моем железе будет минут 40-50.

Апдейт средствами 1с - будет часа 2-3...

большого выигрыша не вижу!!!
21 Axel2009
 
05.12.11
10:14
(20) 90млн записей регистра накопления 3 часа? посмеялся
22 rs_trade
 
05.12.11
10:24
(21) он нолики забыл дописать. 20-30 часов боле похоже на правду.
23 vde69
 
05.12.11
10:24
(21) о_О а прямым итоги пересчитывать не нужно будет? мы говорили об ОДНОЙ таблице.

но вообще в 1с можно и отключить пересчет итов при записи :) кстати это делается автоматически при загрузки УРБД
24 vde69
 
05.12.11
10:26
(22)(21) я работаю с такими обьъемами не первый год, даже в 7.7 были таблички такого обьема....
25 Axel2009
 
05.12.11
10:26
(23) разовый пересчет итогов регистра будет идти порядка 30-60 минут..
26 rs_trade
 
05.12.11
10:30
(24) да никто не сомневается. но вот про 2-3 часа загнул. не работает 1С со скулем с такой скоростью.
27 vde69
 
05.12.11
10:32
(26) работает, главное что-бы структура метаданных была правильная (с правильными индексами и типами, что-бы кластерный индекс полность перекрывал селекты)
28 Axel2009
 
05.12.11
10:39
(27) ну раз у тебя "такие" объемы. запусти на тестовой базе апдейт одного регистра через
"выбрать различные регистратор из регистрнакопления.рн"
пока выборка.следующий() цикл
нз = регистрынакопления.рн.создатьнаборзаписей();
нз.Отбор.Регистратор.Установить(ссылка)
Прочитать()
для каждого строка из НЗ цикл
...
конеццикла

записать(истина);
конеццикла;
а мы подождем до обеда
29 rs_trade
 
05.12.11
10:40
(27) 1С в цикле крутит данные на сервере и инсерит по одной строчке. Это всяко медленней чем отправить скуль серверу один запрос на обработку всех записей.
30 vde69
 
05.12.11
10:42
так будет лучше :)

нз = регистрынакопления.рн.создатьнаборзаписей();
"выбрать различные регистратор из регистрнакопления.рн"
пока выборка.следующий() цикл
нз.Отбор.Регистратор.Установить(ссылка)
Прочитать();
тз=нз.Выгрузить();
тз.ЗаполнитьКолонку("имя", значение);
нз.Загрузить(тз);
записать(истина);
конеццикла;
31 Axel2009
 
05.12.11
10:44
(30) да, 1% ты выйграл на этом ;)
32 Reaper_1c
 
05.12.11
10:47
Ежели у вас возникает потребность поменять аналитику в 90 мегазаписях за 30 минут - значит в ДНК у вас неисправимая ошибка...
33 vde69
 
05.12.11
10:49
ну вот так уже ближе к оптимальному будет


регистрынакопления.рн.УстановитьИспользованиеИтогов(Ложь);
нз = регистрынакопления.рн.создатьнаборзаписей();

"выбрать различные регистратор из регистрнакопления.рн"
пока выборка.следующий() цикл
нз.Отбор.Регистратор.Установить(ссылка)
Прочитать();
тз=нз.Выгрузить();
тз.ЗаполнитьКолонку("имя", значение);
нз.Загрузить(тз);
НЗ.ОбменДанными.Загрузка = истина;
НЗ.записать(истина);
конеццикла;

регистрынакопления.рн.УстановитьИспользованиеИтогов(Истина);
регистрынакопления.рн.ПересчитатьИтоги();
34 hhhh
 
05.12.11
10:52
(31) в общем похоже всё дело в том, что тупые sql-щики не могут написать элементарной программки на 1С, поэтому всё фигачат прямыми запросами.
35 Axel2009
 
05.12.11
10:58
(34) ну я когда писал "нетленку" по перегрузке данных между базами, то у меня была реализована прямая запись в скуль сервер. так вот, опытным путем выявил, что запись порциями по 50 записей увеличивает скорость на порядочек.
36 Tochka
 
05.12.11
12:57
Я конечно извиняюсь что прерываю ваш разговор, но тема вопроса была другая.
И не хрен тут флуд разводит, хотите пообщаться так создавайте свою тему!!!!

P.S. Большое спасибо Ferz это единственный человек который ответил по делу.
37 rs_trade
 
05.12.11
13:08
(36) ок. расходимся.
38 Tochka
 
05.12.11
13:08
(18) Ferz, если тебе не сложно поясни что такое Unpack, я нашёл что это есть в Perl и Python, есть более стандартные способы например JScript?
39 Ferz
 
05.12.11
13:11
40 Tochka
 
05.12.11
13:27
(39) Ferz, прости за назойливость, но я сейчас нахожусь на стадии когда я сохранил значение этого поля, но как мне получить белее менее нормальную читабельную информацию исходя из этого файла?
41 Tochka
 
06.12.11
07:04
Идея такая. Запустить Назначенное задание которое будет проверять структуру БД распределённой базы с центральной.
Мне нужно выяснить как в случае неполадок(один из реквизитов 1с в SQL стал ссылаться на другое поле таблицы) исправить это.
Ошибка? Это не ошибка, это системная функция.