|   |   | 
| 
 | v7: Перевод базы ДБФ на SQL | ☑ | ||
|---|---|---|---|---|
| 0
    
        And81 29.02.12✎ 11:03 | 
        Конфигурация КАМИН, ДБФ. Требуется перевести на SQL. Общий размер базы около 4ГБ. Максимальный размер таблицы 1.7ГБ.
  Создал базу на SQL. Из базы 1с, через Администрирование, делаю выгрузку данных. Т.к. база большая, то предварительно ставлю плагин Unload_Data_Fix. Создаю пустую базу 1с, настраиваю подключение к SQL, через Администрирование загружаю мои данные. После того, как загружено 100 процентов данных, выходит сообщение: "Create unique index terminated because a duplicate key was found for index ID 2." Оно же возникает при попытке открыть базу. При загрузке данного файла в пустую ДБФ базу - проблем не возникает... Кто знает в чем проблема? Как исправить? | |||
| 1
    
        mikecool 29.02.12✎ 11:04 | 
        где то задвоились записи     | |||
| 2
    
        And81 29.02.12✎ 11:05 | 
        Согласне.. Как их можно найти? Запустил несколько скриптов на базе по поиску дублей. Ничего не найдено. Почему при загрузке в ДБФ такая ошибка не возникает?     | |||
| 3
    
        mikecool 29.02.12✎ 11:07 | 
        (2) имя таблицы в сообщении не присутствует?     | |||
| 4
    
        Mikeware 29.02.12✎ 11:07 | 
        (2) посмотреь, какую таблицу индексирует, посмотреть выражение второго индекса, и найти запросом дубли     | |||
| 5
    
        toypaul гуру 29.02.12✎ 11:08 | 
        хотя бы имя проблемной таблицы для начала узнать     | |||
| 6
    
        toypaul гуру 29.02.12✎ 11:09 | 
        дублей может и не быть в таблице. дубли могут получаться в процессе наполнения таблицы. скорее всего это что-то типа таблицы подчиненных. искать нужно в профайлере на чем спотыкается и разбираться в причинах.     | |||
| 7
    
        Ёпрст гуру 29.02.12✎ 11:09 | 
        База слишком мелкая для перевода на скуль..
  ЗЫ: И при всей базе в 4 гига из которых 1 файлик 1.7 - это явно что-то в консерватории менять надо, регистр этот например закрыть | |||
| 8
    
        Mikeware 29.02.12✎ 11:10 | 
        (7) переводят не только из-за величины..     | |||
| 9
    
        el-gamberro 29.02.12✎ 11:10 | 
        (7) а если это таблца проводок?:)     | |||
| 10
    
        And81 29.02.12✎ 11:11 | 
        Нет регистров. На счетах все.. Индексы сыпаться начали. По-этому решили на SQL переводить. Для ДБФ предел размера таблицы - 2ГБ.     | |||
| 11
    
        Ёпрст гуру 29.02.12✎ 11:12 | 
        (10) да не вопрос, табличка поди - файло итогов по счетам ?
  Имя этого файлика какое ? | |||
| 12
    
        And81 29.02.12✎ 11:14 | 
        Табличка содержит строки неограниченной длинны. Есть общий реквизит документов "Данные", тип: строка неограниченной длинны. В него записываются ВСЕ вычисления документов. 
  Имя файла: 1sblob.dbf. | |||
| 13
    
        Ёпрст гуру 29.02.12✎ 11:15 | 
        (12) :))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))     | |||
| 14
    
        And81 29.02.12✎ 11:15 | 
        Имя таблицы, в которой задвоились строки, неизвестно. В сообщении не указано.     | |||
| 15
    
        Ёпрст гуру 29.02.12✎ 11:19 | 
        И.. что там за "вычисления" в этом реквизите ?     | |||
| 16
    
        mg-samara 29.02.12✎ 11:23 | 
        Ёпрст4 - ты над топик стартером не смейся. Это в самой конфе так все задумано. Специфическая система хранения данных.     | |||
| 17
    
        mg-samara 29.02.12✎ 11:25 | 
        (0) Вроде есть какая-то особенность организации хранения длинных строк в ДБФ и в СКЛ. А из-за того что в КАМИНе строк очень много появляются проблемы. Поищи на форуме КАМИНа там обсуждали подобные проблемы.     | |||
| 18
    
        And81 29.02.12✎ 11:26 | 
        Создаешь документ Табель. Реквизиты: Сотрудник, Подразделение, Сумма, и общий реквизит Данные. В документе, в спец. реквизите, выбираешь помощник, которым хочешь заполнить документ. Открывается еще одна обработка, которая содержит таблицу значений с множеством колонок: Сотрудник, Подразделение, Тариф/Оклад, НормаДней, НормаЧасов, ОтработаноДней, ОтработаноЧасов, ВидНачисления, РайонныйКоэффициен, еще много разных коэффициентов, ИтоговаяСумма. При переносе данных из помощника в документ таблица упаковывается в строку посредствам метода ЗначениеВСтроку и записывается в реквизит документа Данные.   И так в каждом документе: Начисления, Удержания, НДФЛ,....     | |||
| 19
    
        Андрей_Андреич naïve 29.02.12✎ 11:27 | 
        Так в соседнем топике подобная проблема рассмотрена - строки неограниченной длины д/б в конце списка общих реквизитов     | |||
| 20
    
        Ёпрст гуру 29.02.12✎ 11:38 | 
        (18) это очень не грамотное хранение данных.
  Проще использовать подчиненные документы или справочники. Всё лучше, чем потеря ссылочности в блобе. | |||
| 21
    
        Андрей_Андреич naïve 29.02.12✎ 11:40 | 
        (20) Так это не ТС писал конфу, а Камин. Поди наследие 90-х еще.     | |||
| 22
    
        mg-samara 29.02.12✎ 11:46 | 
        (21) А он не читает, что ему пишут...     | |||
| 23
    
        And81 29.02.12✎ 11:48 | 
        (20)Согласен.  Или больше видов документов сделать. По кр. мере на фирме эта конфа с начала 2000-х годов. Вначале - очень сырая и ограниченная была. Позже сделали достаточно универсальной. А вот подход к хранению данных прошел через века. Для небольших баз некритично. При расчете в одной базе з/п по большому количеству сотрудников, указанный выше файл со строками неограниченной длины растет очень быстро. Посчитали.. Базе 3 года. Надо оставлять 2 года минимум. Если обрежем, то на те же объемы выйдем менее, чем через год..     | |||
| 24
    
        mg-samara 29.02.12✎ 11:54 | 
        (23) Если не путаю, можно настроить КАМИН, чтобы данные строк хранились во внешних файлах.
  Погугли. | |||
| 25
    
        ALoHA 29.02.12✎ 11:58 | 
        Надо тот-же архив выгрузить в другую созданную базу на СКл.     | |||
| 26
    
        ALoHA 29.02.12✎ 12:00 | 
        Предварительно настроив подключение в конфигураторе и записав после этого пустую константу.     | |||
| 27
    
        And81 29.02.12✎ 12:04 | 
        (24)Только если самому дорабатывать ГлобальныйМодуль и помощники.     | |||
| 28
    
        And81 29.02.12✎ 12:05 | 
        Пробовал загрузить файл в пустую базу ДБФ. Прошло без проблем. Потом из нее выгружал файл и загружал его в чистую базу на SQL. Возникала та же ошибка. Похоже на строки неограниченной длины.     | |||
| 29
    
        VladZ 29.02.12✎ 12:06 | 
        (0)
  Нарыто на просторах инета: -- есть проводки по непроведенным документам -- такое безобразие нужно "покоцать" DELETE FROM _1sentry WHERE docid IN (SELECT iddoc FROM _1sjourn (nolock) WHERE closed=0) -- есть проводки, но нет соответствующих документов -- такое безобразие нужно "покоцать" DELETE FROM _1sentry WHERE docid NOT IN (SELECT iddoc FROM _1sjourn (nolock)) -- есть проводки, но нет соответствующих операций -- такое безобразие нужно "покоцать" DELETE FROM _1sentry WHERE docid NOT IN (SELECT docid FROM _1soper (nolock)) -- есть операции, но нет соответствующих документов -- такое безобразие нужно "покоцать" DELETE FROM _1soper WHERE docid NOT IN (SELECT iddoc FROM _1sjourn (nolock)) -- проверка правильности заполнения DATE_TIME_DOCID в _1sentry -- вместо проверки - замена на правильный DATE_TIME_DOCID --select _1sentry.DATE_TIME_DOCID,_1sjourn.DATE_TIME_idDOC UPDATE _1sentry SET DATE_TIME_DOCID=_1sjourn.DATE_TIME_idDOC FROM _1sentry (nolock), _1sjourn (nolock) WHERE _1sentry.DOCID=_1sjourn.idDOC AND _1sentry.DATE_TIME_DOCID<>_1sjourn.DATE_TIME_idDOC После всего этого - удаляешь записи в _1scrdoc. | |||
| 30
    
        VladZ 29.02.12✎ 12:07 | 
        Как показывает практика - чаще бывают ошибки по последнему запросу.     | |||
| 31
    
        ALoHA 29.02.12✎ 12:11 | 
        Загружал точно в другую базу или в ту-же пустую?     | |||
| 32
    
        mg-samara 29.02.12✎ 12:13 | 
        (27)
  http://www.kaminsoft.ru/cgi-bin/yabb2/YaBB.pl?num=1221540723 Оттуда.. а как дружится 1С с SQL? Камин точно так же. Правда совет - настройте параметр программы "ДлинаСтрокиПомощника" в значение 0, чтобы данные помощников хранились во внешних файлах, ибо SQL не всегда дружит с 1Совскими длинными строками | |||
| 33
    
        PLUT гуру 29.02.12✎ 12:21 | 
        (0) может самое время на Камин 3.0 переползти?     | |||
| 34
    
        bw 29.02.12✎ 12:37 | 
        Вроде еще была фишка, что реквизит неограниченной длины не должен быть последним реквизитом.     | |||
| 35
    
        And81 29.02.12✎ 12:40 | 
        (29)Данные скрипты прогонял. Ничего не нашли...     | |||
| 36
    
        And81 29.02.12✎ 12:40 | 
        (31)Перед каждой загрузкой создавал новую базу SQL и в нее производил загрузку.     | |||
| 37
    
        And81 29.02.12✎ 12:43 | 
        Да, есть настройка ДлинаСтрокиПомощника. Не знал. Раньше вроде числом была забита в конфе. 
  На что повлияет, если данный параметр будет установлен в 0? Если будет обмен с файлами, то увеличится время доступа? С блокировками могут быть проблемы? | |||
| 38
    
        And81 29.02.12✎ 12:44 | 
        Руководству предоставлены данные о стоимости перехода и ресурсах. Принимают решение... 
  Скорее всего оставят 7-ку.. | |||
| 39
    
        ЧеловекДуши 29.02.12✎ 13:51 | 
        Все таки перед выгрузкой надо было ТиИ прошуршать :)     | |||
| 40
    
        ЧеловекДуши 29.02.12✎ 13:52 | 
        (38)Все таки вы сударь Бездарен :(
  Убили 8-ку :(... | |||
| 41
    
        ЧеловекДуши 29.02.12✎ 13:53 | 
        (37)Безграничные реквизиты переправь на ограниченные, но оченно длинные. :)
  Помогает. | |||
| 42
    
        And81 29.02.12✎ 14:58 | 
        (38)ТиИ?     | |||
| 43
    
        And81 29.02.12✎ 14:59 | 
        (40)Решение руководство принимает, т.к. ему за это платить.     | |||
| 44
    
        And81 29.02.12✎ 15:05 | 
        Прочитал на форуме, что "для ODBC строки неогранич длины должны быть последними." Это может помочь? Как реализовать? Достаточно перенести реквизит в дереве в низ списка?     | |||
| 45
    
        Эльниньо 29.02.12✎ 15:05 | 
        (44) Да     | |||
| 46
    
        And81 29.02.12✎ 15:43 | 
        Сейчас перенесу вниз реквизит с типом строка неограниченной длины. Сделаю выгрузку/загрузку. Отпишусь о результатах.     | |||
| 47
    
        Эльниньо 29.02.12✎ 15:46 | 
        (46) Ждёмс.     | |||
| 48
    
        mg-samara 01.03.12✎ 10:38 | 
        Как дела?     | |||
| 49
    
        mg-samara 01.03.12✎ 10:40 | 
        (0) Автор откликнись! Получилось? У меня у одного клиента точно-такая-же проблема.     | |||
| 50
    
        VladZ 01.03.12✎ 13:58 | 
        (49) Видимо автор погиб под тяжестью непосильной задачи..     | |||
| 51
    
        Эльниньо 01.03.12✎ 14:26 | 
        (50) В строке неограниченной длины оказалось слишком много буковок и его придавило при попытке перенести вниз.     | |||
| 52
    
        And81 01.03.12✎ 17:31 | 
        Разрулил.. Пишу как...     | |||
| 53
    
        And81 01.03.12✎ 17:44 | 
        Перевел базу на MSSQL)))
  Общий реквизит документов, с типом СтрокаНеограниченнойДлины оказался последним в списке реквизитов. Значит в данном случае помех переносу не оказывал. Небольшие базы с той же конфигурацией переводились на MSSQL без проблем. 1. Вначале сделал принудительную переиндексацию(чтобы избавиться от возможных накопившихся битых индексов). 2. В базе, Сервис - Параметры программы установил реквизит ДлинаСтрокиПомощника в 0(чтобы все данные сохранялись в файлах). 3. Воспользовался обработкой, переносящей данные из реквизита "Данные"(тип: строка неограниченной длины) во внешние файлы. Скачать можно здесь: http://www.kaminsoft.ru/products/nz/members/79-2009-01-04-13-50-28/514--q-q.html (если закроют ссылку, пишите, пришлю на почту). Применил ее для видов документов Табель и НачСред за все года. В основном из-за них разрослась таблица 1sblob.dbf в базе. 4. Запустил из конфигуратора - Тестирование и исправление базы(с упаковкой таблиц). В результате таблица уменьшилась раз в 5, а директория DATA, в которой хранятся файлы с данными реквизита, в каталоге ИБ, увеличилась примерно на столько же. 5. Поставил компоненту Unload_Dat_Fix, иначе из большой базы не сделать выгрузку данных. Скачать можно здесь: http://x-romix.narod.ru/. 6. В конфигураторе Администрирование - Выгрузить данные. 7. В MSSQL создаю базу. В 1С создаю пустую базу, настраиваю подключение к MSSQL. Загружаю данные. Похоже проблемы с загрузкой в MSSQL были из-за битых строк неограниченной длины... | |||
| 54
    
        mg-samara 02.03.12✎ 10:59 | 
        (53) Спасибо за подробный отчет!     | |||
| 55
    
        toypaul гуру 02.03.12✎ 11:10 | 
        в базу знаний :)     | |||
| 56
    
        And81 02.03.12✎ 12:39 | 
        Реквизит ДлинаСтрокиПомощника нужно установить хотя бы в 1. Если он равен 0, тогда при переносе данных из помощника в документ, возникает ошика(КАМИН воспринимает нуливое значение из данного параметра как пустую строку(""), а потом сравнивает ее с переменной с типом Число).     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |