Можно ли добавить поле в таблицу 1С-базы без обновления конфигурации БД?

1. info1i 236 12.08.13 12:18 Сейчас в теме
Собственно, в названии темы и описании сама задача. Есть таблицы с миллионами записей, и при добавлении нового реквизита или изменении какого-то происходит очень долгая реструктуризация. Вот и появился вопрос, как можно это обойти? Пересмотрел все таблицы, все зашифровано, никаких явных названий не нашел. Да и расщифровать тоже неизвестно как.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. tango 546 12.08.13 12:27 Сейчас в теме
(1) info1i, Александр, ваша задача в точности как "можно ли добавить телеге пятое колесо".
Ответ: конечно, можно!
Но вас кто-то обманул, что 1снег - это совсем-совсем не программист.
3. info1i 236 12.08.13 12:37 Сейчас в теме
(2) tango, Есть проблема, решения пока не нашел. Как добавить реквизит, избежав реструктуризации?
4. tango 546 12.08.13 12:45 Сейчас в теме
(3) info1i, хорошо, попробуем так
что если спросить "как нам обустроить Россию?"
легко, это мог даже солженицин. но собственно обустроить он даже и не попытался. почему? потому что этого не стал делать даже полковник кгб

вы задаете вопрос из вполне себе конкретной науки
почему вы думаете, что на ваш вопрос можно ответить, даже если у вас нет никаких знаний, кроме флагманского слогана "Доступно и всерьез"?
5. info1i 236 12.08.13 12:52 Сейчас в теме
(4) tango, А вдруг кто-то уже знает.
6. motorkuzbassa.it 101 12.08.13 12:52 Сейчас в теме
(3)есть у спр. и документов , доп свойства, туда тебе и смотреть. Гугл поможет.
7. tango 546 12.08.13 12:54 Сейчас в теме
(6) motorkuzbassa.it, только не в БП 2.0 :)
11. andrewks 1375 12.08.13 15:27 Сейчас в теме
15. tango 546 12.08.13 16:26 Сейчас в теме
(11) andrewks, а попробуй, не лазя в пофигуратор, сделать один ко многим РТУ-ПТУ в типовой БП
9. Reptile 35 12.08.13 13:00 Сейчас в теме
(1) info1i,
В версии 7.7 я решал данный вопрос следующим образом: на пустой конфигурации (копия md) делал структурые изменения. Потом смотрел какие колонки и индексы создает 1С - и писал скрипт на T-SQL, чтобы он вносил такие же изменения, но оптимальными средствами SQL сервера, а не так как это делала 7-ка. После выполнения скрипта (без пользователей + бэкап обязательно) - подменял md + dds. Все работало. Менялись/добавлялись и справочники и документы и регистры. Любые структурные изменения выполнялись не более 10 минут. База была 120 Гб.
Не знаю можно ли такое проделать в 8-ке - пока таких задач не было.
По поводу соответствия имен таблиц в SQL и в конфигураторе: скорее всего здесь (на ИС) много разарботок которые их покажут. А так есть стандартный метод глбального контекста в 1С: ПолучитьСтруктуруХраненияБазыДанных.

Все конечно зависит от задачи - может и (6) подойдет
succub1_5; info1i; +2 Ответить
14. info1i 236 12.08.13 15:50 Сейчас в теме
(9) Reptile, Отлично, ваше сообщение, ближе всего к решению. Только почему-то изменения, которые делаются в конфигураторе, я не смог выловить в профайле, там одни селекты, инсерты и апдейты.
16. Reptile 35 12.08.13 16:38 Сейчас в теме
(14) info1i,
В профайлер я особо не заглядывал при структурых изменениях. Я смотрел изменения в dds: какие колонки (идентификторы) на каком месте (в некоторых таблцах 1С добавляет колонку не в конец, а в середине, например, в документах общие реквизиты (которые без отбора) всегда последние), какие индексы.
Если колонка в конце, то делал alter table add column (синтаксис точно не помню, sql нет под рукой). Null 1С не пропускает, поэтому добавлял значение по умолчанию (пустое значение соответствующего типа).
Если колонка в середине, то переименовывал старую таблицу, добавлял новую нужной структуры с правильным именем, потом делал
insert into <НоваяТаблица>
select <СтарыеКолонки (начало)>, <пустое значение соответствующего типа> as <НоваяКолонка>, <Старые колонки (конец)> from <СтараяТаблица>. После этого старую таблицу удалял.
Для добавленных объектов, соответственно, create table.
Индексы drop`ал и создавал новые.
Более подробно сейчас сказать не могу (нет примеров под рукой), но если актуально по 7.7, то могу написать статью и более подробно описать.
17. info1i 236 12.08.13 17:46 Сейчас в теме
(16) Reptile, Да, статья бы пригодилась не только мне, очень даже кстати! Спасибо за помощь! Не могу найти файл dds, где он обычно находится?
18. Reptile 35 12.08.13 17:56 Сейчас в теме
(17) info1i,
Я собственно не понял по 7-ке весь сабж или по 8-ке?
Если имеется в виду 77, то 1cv7.dds лежит в каталоге базы, там же где 1cv7.md. Если копия базы dbf, то словарь данных называется 1cv7.dd.
Хотя в 8-ке нет ни md ни dds
19. info1i 236 13.08.13 10:51 Сейчас в теме
(18) Reptile, теперь понятно, почему не могу найти этот файл, тема по 8-ке. ))
20. Reptile 35 13.08.13 12:59 Сейчас в теме
(19) info1i,
Ну что ж. Статьяпо 7.7 есть. Описание полей и индексов есть. Ограничение по NULL в полях таблиц, насколько я понимаю, осталось.
Единственное, и самое главное, что мне не понятно: где хранит 1С8 в клиент-серверном варианте описание конфигурации (может лежит где файл .cf) и можно ли его подменить. Когда-нибудь доберусь и до этого вопроса, а пока доступа на работе даже к SQL серверу у меня нет :(
Прикрепленные файлы:
21. tango 546 13.08.13 13:04 Сейчас в теме
(20) Reptile,
где хранит 1С8 в клиент-серверном варианте описание

по ходу, такой фичи нет:
1. создаем новую скуль-базу, подняв архив существующей
2. подключаемся к ней из предприятия и сразу работаем. задержки на создание какого-либо кэша в "1с-кластере-серверофф" не заметно

ну, по-чесноку, надо бы отснифить файловую систему на сервере с "1с-кластером-серверофф" в момент п.2, но что-то совсем уж лень
22. Reptile 35 13.08.13 14:02 Сейчас в теме
(21) tango,
все-таки мне думается, что 1С где-то хранит описание конфигурации, иначе как бы она оперировала с данными, создавала формы и пр. По одним таблицам в базе данных в SQL так не сделаешь. Даже в файловом варианте в файле 1СD хранится и описание конфигурации и данные. Только вот возможно не в общедоступном файле, как это было в 7.7
23. tango 546 13.08.13 14:03 Сейчас в теме
12. andrewks 1375 12.08.13 15:38 Сейчас в теме
(1) info1i, а что за таблицы? может, имеет смысл их вынести вообще во внешнюю БД (не 1с, а под управлением СУБД типа ms sql, mysql и т.д.)?
13. info1i 236 12.08.13 15:48 Сейчас в теме
(12) andrewks, 1C-база на MS SQL сервере. Мне нужно добавить в таблицу номенклатуры одно поле типа "строка", но чтобы реструктуризации не было, т.к. виснет и надолго, и может даже слететь от такого зависания.
8. Ёпрст 1065 12.08.13 12:55 Сейчас в теме
24. tango 546 13.08.13 14:06 Сейчас в теме
вопрос можно поставить так:
от клиента на "кластер" запрос идет в каком виде? как прописаны имена таблиц в запросе между клиентом и "кластером"?
25. tango 546 13.08.13 14:15 Сейчас в теме
вариант - посмотреть в скуле содержание запроса, сгенерированного по команде (если до скуля в этом случае вообще что-то дойдет):

ПолучитьСтруктуруХраненияБазыДанных
Доступность:
Сервер, толстый клиент, внешнее соединение.
Прикрепленные файлы:
26. tango 546 13.08.13 14:22 Сейчас в теме
Процесс rphost.exe называется рабочим процессом. Рабочий процесс обслуживает непосредственно клиентские приложения, взаимодействует с сервером баз данных и в нем, в частности, могут исполняться процедуры серверных модулей конфигурации.
27. Reptile 35 13.08.13 14:23 Сейчас в теме
Вряд ли 1С, с его тонким клиентом, решила преобразовывать запросы на клиенте. Тем более что такие конструкции в запросах как ИТОГИ ПО (в интерпретации 1С), УПОРЯДОЧИТЬ ПО ИЕРАРХИИ, большую часть виртуальных таблиц не реализовать одним запросом к базе даже если сгенерировать его текст динамически. Я думаю, что именно сервер 1С (или кластер серверов) преобразует запрос к физическим именам таблиц.
Но это только догадки. На выходных поставлю сервер 1С и потренеруюсь.
28. tango 546 13.08.13 14:39 Сейчас в теме
короче, я таки настаиваю, что никакого аналога md в "кластере серверов 8х" нет
29. info1i 236 14.08.13 00:22 Сейчас в теме
1) Учитывая то, что 1С-база восстанавливается полностью из bak-файла, то по логике понятно, что вся информация о метаданных содержится в самой базе.
2) Как пишут сами 1С-ники в книжках, каждый объект метаданных имеет свою таблицу или несколько таблиц в SQL. Я не поленился пересмотреть каждую sql-таблицу. Многие понятны, что означают, кроме следующих: [Config], [ConfigSave], [DBSchema]. Данные во всех трех как-то зашифрованы.
3) Так как в конфигураторе есть возможность возврата старой конфигурации, то где-то и эта информация хранится; а учитывая то, что таблицы [Config], [ConfigSave] имеют одинаковую структуру(все поля одинаковы), то логично предположить, что именно в них и зашифрована информация о метаданных.
4) На основании вышеизложенного предположения и предыдущих сообщений темы, есть смысл искать пути расшифрования данных в таблице [Config]. Только как?
30. Reptile 35 15.08.13 12:16 Сейчас в теме
(29) info1i,
Поискал на SQL.ru - оказывается, дествительно, конфигурация хранится в таблицах [Config], [ConfigSave]. Описания этих таблиц не нашел.
Но есть некоторое ограничение: 1С запрещает вносить изменения в свои таблицы средствами СУБД. По этому как минимум статьи на ИС по этому поводу не будет, даже если разобраться что к чему.

info1i, можете приложить сюда сриншот выборки, например, select top 10 * from Config?
31. tango 546 15.08.13 12:33 Сейчас в теме
по парсингу структуры найдете на ИС довольно много материала
32. tango 546 15.08.13 13:35 Сейчас в теме
33. Goruch 18 15.08.13 13:41 Сейчас в теме
База около 50 гигов, добавление и пр. работает нормально. Я бы предложил не заморачиваться, и сделать как обычно, а насчет тормозов - кластерные индексы...
Не должно очень сильно тормозить если все регламентные операции на субд делаешь...
34. info1i 236 15.08.13 17:45 Сейчас в теме
Вот селект конфиг-таблицы, первые 1000.
Ссылка на изображение: СсылкаНаИзображение
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот