Inforg 1c что за таблица
Всем привет.
Имеем в наличии УТ11 (8.3.5.1119 / 11.1.7.60).
Проблема: при перепроведении по партиям товаров ругалась на отсутствие ДокументВозвратСырьяизПереработки . Запустила тестирование chdbfl. Получила сообщение: Повреждены данные таблицы ‘_INFORG6383’. Восстановлено 18860 из 151845 записей.
Хочется просто узнать что это за таблица и как узнать кто и где мог полазить руками, что эта таблица «крякнулась». И как этого избежать потом.
Спасибо
Спасибо, конечно. Но мне, наверное, это все равно ничего не скажет. Лучше обратиться к обслуживающей компании?
(2) Скорей всего сеть полетела или жесткий диск, или электрическтво скакнуло. Бывает.
Ошибка SDBL 1С: как исправить некорректное использование local global в set generation
Специфика современных версий учетных программ обуславливается использованием многоуровневого кода. Логично, что чем сложнее структура — тем выше вероятность возникновения внеплановых ситуаций, с которыми приходится сталкиваться рядовым пользователям конфигурации. В отдельных случаях даже сотрудники администрирующих служб предприятия не всегда способны сразу определить исходную причину появления неполадок, поэтому работа по устранению неудобств может занять немало времени. Одной из наиболее часто встречающихся проблем является классическая ошибка SDBL 1С, источники и способы устранения которой мы и рассмотрим в сегодняшнем обзоре.
Общее представление
Взаимодействуя с учетной программой, пользователи выполняют различные операции, каждая из которых, так или иначе, формирует запрос к базе данных. Создание нового документа, интеграция библиотеки, плановое обновление — во время любого из процессов есть вероятность получить в ответ уведомление от системы, свидетельствующее о том, что одна из логических цепочек была нарушена. Распространенный вариант — когда на экране появляется сообщение об ошибке SDBL 1С ожидается выражение (pos = 6) (а также 15, 57, 198, 250, 469, или любой другой номерной идентификатор). Фактически это говорит о наличии технического сбоя, с которым чаще всего сталкиваются пользователи, самостоятельно обновляющие конфигурацию автоматическими средствами. Важно понимать, что при работе с программой (и в том числе при установке новых релизов) необходимо иметь определенный уровень навыков и знаний, достаточный для внесения изменений и управления функциональными возможностями платформы.
Впрочем, сильно переживать не стоит. Появление ошибки SDBL 1С еще не значит, что структура базы данных предприятия разрушена полностью — в большинстве случаев исправить проблему можно при помощи стандартного набора способов, реализовать которые под силу даже начинающим пользователям.
Причины возникновения
Один из главных факторов, о котором многие забывают в процессе работы с учетной системой — необходимость соответствия платформы и конфигурации обновления. То есть перед тем как начать использовать новый релиз, нужно создать условия, в которых он сможет нормально функционировать. Простейший вариант — доверить контроль за установкой профильному специалисту, который поможет избежать технических сбоев в программе. Если говорить об уже упомянутой ранее ошибке SDBL 1С «ожидается выражение (pos = 144)» (или 48, 153, 13 — не столь принципиально), то в этом случае ключевым обстоятельством становится повреждение базы данных, обусловленное нарушением системных логических циклов. К числу распространенных причин возникновения, отмечаемых специалистами, относят не только применение устаревшей конфигурации или платформы, но также и проблемы, связанные с серверным кешем. Кроме того, всегда существует вероятность случайного запуска с некорректной учетной записи, не обладающей достаточным набором прав.
Чаще всего системные ошибки происходят в процессе очередного обновления БД, а также при обращении к ней — через запрос на добавление документов, во время тестовой проверки логической целостности, или же в иных ситуациях. Критической проблемой при установке расширений может стать и «некорректное использование LOCAL/GLOBAL в SET GENERATION», не позволяющее полноценно сохранить базу даже после выборочного удаления. Стоит отметить, что стандартное решение в виде перезагрузки программы обычно не помогает, поэтому для восстановления работоспособности придется воспользоваться альтернативными методиками.
Какие сообщения возникают
Уведомление о технических неполадках отражает специфику возникшей проблемы, и может появиться как во время обновления конфигурации, так и в процессе работы с обменом данных. Как правило, текст в информационном окне раскрывает специфику возникшей ошибки SDBL 1С: «не является именем поля», «ожидается идентификатор» или «выход за пределы размерности результата 1C», и т. д. Встречаются и вспомогательные приписки, причем их количество зависит от конкретной неточности, допущенной в ходе сборки и настройки обновленного расширения:
- предпринята попытка ввести неприемлемый тип значения «NULL»;
- пропущена точка с запятой;
- нарушение индексирования с полным текстом;
- неоднозначное определение некоторого поля;
- отсутствует выражение (pos =) — с различными числовыми идентификаторами в скобках.
Практика работы с типовыми конфигурациями показывает, что количество сообщений достаточно велико, и определенно выходит за рамки приведенного списка, в котором собраны только наиболее часто встречающиеся варианты.
ПРОБЛЕМА НЕУНИКАЛЬНЫХ ИНДЕКСОВ 1С:ПРЕДПРИЯТИЕ 8
В этой статье будет описано, что делать, если при работе с 1С:Предприятие 8.1 Вам встретилось сообщение, содержащее строки:
Cannot insert duplicate key row in object
Попытка вставки неуникального значения в уникальный индекс.
Что такое индекс?
Подобно содержанию в книге, индекс в базе данных позволяет быстро искать конкретные сведения в таблице.
Индексы представляют собой структуру, позволяющую выполнять ускоренный доступ к строкам таблицы на основе значений одного или более ее столбцов.
Индекс содержит ключи, построенные из одного или нескольких столбцов таблицы или представления, и указатели, которые сопоставляются с местом хранения заданных данных.
Индексы сокращают объем данных, которые необходимо считать, чтобы возвратить результирующий набор.
Хотя индекс и связан с конкретным столбцом (или столбцами) таблицы, все же он является самостоятельным объектом базы данных.
Индексы таблиц в базе данных 1С:Предприятие создаются неявным образом при создании объектов конфигурации, а также при тех или иных настройках объектов конфигурации.
Физическая сущность индексов в MS SQL Server 2005.
Физически данные хранятся на 8Кб страницах. Сразу после создания, пока таблица не имеет индексов, таблица выглядит как куча (heap) данных. Записи не имеют определенного порядка хранения.
Когда вы хотите получить доступ к данным, SQL Server будет производить сканирование таблицы (table scan). SQL Server сканирует всю таблицу, что бы найти искомые записи.
Отсюда становятся понятными базовые функции индексов:
— увеличение скорости доступа к данным,
— поддержка уникальности данных.
Несмотря на достоинства, индексы так же имеют и ряд недостатков. Первый из них – индексы занимают дополнительное место на диске и в оперативной памяти. Каждый раз когда вы создаете индекс, вы сохраняете ключи в порядке убывания или возрастания, которые могут иметь многоуровневую структуру. И чем больше/длиннее ключ, тем больше размер индекса. Второй недостаток – замедляются операции вставки, обновления и удаления записей.
В среде MS SQL Server 2005 реализовано несколько типов индексов:
- некластерные индексы;
- кластерные (или кластеризованные) индексы;
- уникальные индексы;
- индексы с включенными столбцами
- индексированные представления
- полнотекстовый
- XML
Уникальный индекс
Уникальность значений в индексируемом столбце гарантируют уникальные индексы. При их наличии сервер не разрешит вставить новое или изменить существующее значение таким образом, чтобы в результате этой операции в столбце появились два одинаковых значения.
Уникальный индекс является своеобразной надстройкой и может быть реализован как для кластерного, так и для некластерного индекса. В одной таблице может существовать один уникальный кластерный и множество уникальных некластерных индексов.
Уникальные индексы следует определять только тогда, когда это действительно необходимо. Для обеспечения целостности данных в столбце можно определить ограничение целостности UNIQUE или PRIMARY KEY, а не прибегать к уникальным индексам. Их использование только для обеспечения целостности данных является неоправданной тратой пространства в базе данных. Кроме того, на их поддержание тратится и процессорное время.
1С:Предприятие 8.1 начиная с версии 8.1 активно использует кластерные уникальные индексы. Это означает, что при конвертации с 8.0 или переходе с 8.1.7 можно получить ошибку неуникального индекса.
Если неуникальность заключается в датах с нулевыми значениями, то проблема решается созданием базы с параметром смещения равным 2000.
Что делать?
1. Если проблема загрузкой базы данных, то:
1.1. Если Вы делаете загрузку (используйете dt-файл) в базу MS SQL Server, то при создании базы перед загрузкой укажите смещение дат — 2000.
Если уже база создана со смещением 0, то создайте новую с 2000.
1.2. Если есть возможность в файловом варианте работать с базой, то выполните Тестирование и Исправление, а также Конфигурация — Проверка конфигурации — Проверка логической целостности конфигурации + Поиск некорректных ссылок.
1.3. Если нет файлового варианта, попробуйте загрузить из DT в клиент-серверный вариант с DB2 (который менее требователен к уникальности), и затем выполнить Тестирование и Исправление, а также Конфигурация — Проверка конфигурации — Проверка логической целостности конфигурации + Поиск некорректных ссылок.
1.4. Для локализации проблемы можно определить данные объекта, загрузка которого не удалась. Для этого надо включить во время загрузки трассировку в утилите Profiler или включите запись втехнологический журнал событий DBMSSQL и EXCP.
1.5. Если доступна узел (планы обменов), то выполнить обмен. Можно также дополнительно перед обменом выполнить пункт 2.3.5
2. Если проблема неуникальности проявляется во время работы пользователей:
2.1. Найти с помощью метода пункта 1.4 проблемный запрос.
2.1.2. Иногда ошибка возникает во время исполнения запросов, например:
Данная ошибка возникает из-за того что в модуле регистра накопления «Рабочее время работников организаций» в процедуре «ЗарегистрироватьПерерасчеты» в запросе не стоит служебное слово «РАЗЛИЧНЫЕ».
Запрос = Новый Запрос(
«ВЫБРАТЬ РАЗЛИЧНЫЕ
| Основные.ФизЛицо,
В последних выпущенных релизах ЗУП и УПП ошибка не возникает, т.к. там стоит «РАЗЛИЧНЫЕ».
2.2. После нахождения проблемного индекса из предыдущего пункта, необходимо найти неуникальную запись.
2.2.1. «Рыба» скрипта для определения неуникальных записей с помощью SQL:
SELECT COUNT(*) Counter, from
GROUP BY
HAVING Counter > 1
2.2.2 Пример. Индекс в ошибке называется «_Document140_VT1385_IntKeyIndNG».
Перечень полей таблицы:
_Document140_IDRRef, _KeyField, _LineNo1386, _Fld1387, _Fld1388, _Fld1389, _Fld1390, _Fld1391RRef, _Fld1392RRef, _Fld1393_TYPE, _Fld1393_RTRef, _Fld1393_RRRef, _Fld1394,
_Fld1395, _Fld1396RRef, _Fld1397, _Fld1398, _Fld1399RRef, _Fld22260_TYPE, _Fld22260_RTRef, _Fld22260_RRRef, _Fld22261_TYPE, _Fld22261_RTRef, _Fld22261_RRRef
Перед выполнением приведенной ниже процедуры сделайте резервную копию базы данных.
Выполните в MS SQL Server Query Analizer:
select count(*), _Document140_IDRRef, _KeyField
from _Document140_VT1385
group by _Document140_IDRRef, _KeyField
having count(*) > 1
С его помощью узнайте значения колонок _Document140_IDRRef, _KeyField, дублирующихся записей (id, key).
При помощи запроса:
select *
from _Document140_VT1385
where _Document140_IDRRef = id1 and _KeyField = key1 or _Document140_IDRRef = id2 and _KeyField = key2 or …
посмотрите на значения других колонок дублирующихся записей.
Если обе записи имеют осмысленные значения и эти значения разные, то исправьте значение _KeyField на уникальное. Для этого определите максимальное занятое значение _KeyField (keymax):
select max(_KeyField)
from _Document140_VT1385
where _Document140_IDRRef = id1
Замените значение _KeyField в одной из повторяющихся записей на правильное:
update _Document140_VT1385
set _KeyField = keymax + 1
where _Document140_IDRRef = id1 and _LineNo1386 = lineno1
Здесь _LineNo1386 = — дополнительное условие, которое позволяет выбрать одну из двух повторяющихся записей.
Если одна (или обе) из повторяющихся записей имеет очевидно неправильное значение, то ее нужно удалить:
delete from _Document140_VT1385
where _Document140_IDRRef = id1 and _LineNo1386 = lineno1
Если повторяющиеся записи имеют одинаковые значения во всех колонках, то из них нужно оставить одну:
select distinct *
into #tmp1
from _Document140_VT1385
where _Document140_IDRRef = id1 and _KeyField = key1
delete from _Document140_VT1385
where _Document140_IDRRef = id1 and _KeyField = key1
insert into _Document140_VT1385
select #tmp1
drop table #tmp1
Описанную процедуру необходимо выполнить для каждой пары повторяющихся записей.
2.2.3. Второй пример:
SELECT COUNT(*) AS Expr2, _IDRRef AS Expr1, _Description
FROM _Reference8_
GROUP BY _IDRRef, _Description
HAVING (COUNT(*) > 1)
2.3.4 Пример определения неуникальных записей с помощью запроса 1С:Предприятие:
ВЫБРАТЬ Справочник.Ссылка
ИЗ Справочник.Справочник КАК Справочник
СГРУППИРОВАТЬ ПО Справочник.Ссылка
ИМЕЮЩИЕ КОЛИЧЕСТВО(*) > 1
или для бухгалтерии
ВЫБРАТЬ
Подзапрос.Период,
Подзапрос.Регистратор,
,
СУММА(Подзапрос.КоличествоЗаписей) КАК КоличествоЗаписей
ИЗ
(ВЫБРАТЬ
Хозрасчетный.Период КАК Период,
Хозрасчетный.Регистратор КАК Регистратор,
,
1 КАК КоличествоЗаписей
ИЗ
РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный) КАК Подзапрос
СГРУППИРОВАТЬ ПО
Подзапрос.Период,
Подзапрос.Регистратор,
ИМЕЮЩИЕ
СУММА(Подзапрос.КоличествоЗаписей) > 1
2.3.5 Сделать индекс субд не уникальным. Заксриптовать индекс с помощью Management Studio.
Далее удалить текущий индекс, скорректировать текст и создать скриптом неуникальный индекс.
2.3.6 Частный случай при обмене в РБД. Ошибка приходится на «вспомогательные» таблицы, связанные с расчетом итогов или аналитики. Например:
Ошибка при вызове метода контекста (Записать): Попытка вставки неуникального значения в уникальный индекс:
Microsoft OLE DB Provider for SQL Server: Cannot insert duplicate key row in object ‘dbo._AccntRegED10319’ with unique index ‘_Accnt10319_ByPeriod_TRNRN’.
HRESULT=80040E2F, SQLSrvr: Error state=1, Severity=E, native=2601, line=1
В этом случаи перед загрузкой выключить использование итогов, загрузить сообщение, включить использование итогов и пересчитать.
Продажи | slava@gilev.ru | gilev_slava | @uskorim1c | |||
Платежи, документы | andrey@gilev.ru | andrey.gilev | @andrey_gilev | |||
Техническая поддержка | support@gilev.ru | nukewin |
Мы любим электронный документооборот (ЭДО). ЭДО сокращает время и ускоряет решение задач. У нас используется система ”Диадок”. |
Таблицы объектов метаданных 1С версия 8
Каждому объекту конфигурации соответствует одна или несколько таблиц информационной базы в зависимости от вида объекта и его структуры.
Таблицы информационной базы, определяемые структурой метаданных, имеют имена, создаваемые по одному и тому же правилу. Имя таблицы начинается с буквенного префикса, который обозначает принадлежность таблицы определенному виду объектов.
После префикса следует номер (далее обозначается ), который позволяет различать таблицы объектов одинакового вида. Таблицы, содержащие табличные части объекта, имеют тот же номер , что и основная таблица объекта. После префикса и номера, определяющих принадлежность к некоторому объекту конфигурации, идет префикс _VT, указывающий, что это таблица табличной части, и номер (далее обозначается ), позволяющий различить несколько табличных частей одного и того же объекта конфигурации.
Рассмотрим, какие таблицы существуют для каждого из прикладных объектов метаданных. При этом, конечно же, не будем использовать привязку к какой-либо конкретной конфигурации.
Константы
- _Consts – таблица констант. Все значения констант, определенных в конфигурации, хранятся в одной таблице.
- _ConstsChngR – таблица регистрации изменений констант. Создается, если хотя бы одна константа участвует хотя бы в одном плане обмена.
Планы обмена
- _Node – основная таблица плана обмена.
- _Node_VT – табличная часть плана обмена.
Справочники
- _Reference – основная таблица справочника.
- _Reference_VT – табличная часть справочника.
- _ReferenceChngR – таблица регистрации изменений справочника. Создается, если справочник участвует хотя бы в одном плане обмена.
Документы
- _Document – основная таблица документа.
- _Document_VT – табличная часть документа.
- _DocumentChngR – таблица регистрации изменений документа. Создается для каждого объекта метаданных Документ, который участвует хотя бы в одном плане обмена.
Последовательности
- _Seq – таблица регистрации документов в последовательности.
- _SeqB – таблица границ последовательности. Эти таблицы имеют сквозную нумерацию.
- _SeqChngR – таблица регистрации изменений последовательности. Создается для каждой последовательности, которая участвует хотя бы в одном плане обмена.
Журналы документов
- _DocumentJournal – таблица журнала документов.
Перечисления
- _Enum – таблица перечисления.
Планы видов характеристик
- _Chrc – основная таблица плана видов характеристик.
- _Chrc_VT – табличная часть плана видов характеристик.
- _ChrcChngR – таблица регистрации изменений плана видов характеристик. Создается, если план видов характеристик участвует хотя бы в одном плане обмена.
Планы счетов
- _Acc – основная таблица плана счетов.
- _Acc_ExtDim – таблица видов субконто плана счетов. Эта таблица создается в том случае, если максимальное количество субконто больше нуля.
- _Acc_VT – табличная часть плана счетов.
- _AccChngR – таблица регистрации изменений плана счетов. Создается, если план счетов участвует хотя бы в одном плане обмена.
Планы видов расчета
- _CKind – основная таблица плана видов расчета.
- _CKind_BaseCK – таблица базовых видов расчета. Эта таблица создается, если у плана видов расчета свойство Зависимость от базы имеет значение, отличное от Не зависит.
- _CKind_DisplacedCK – таблица вытесняемых видов расчета.
Эта таблица создается в случае, если для плана видов расчета установлен флаг Использует период действия. - _CKind_LeadingCK – таблица ведущих видов расчета.
- _CKindDN – вспомогательная таблица для порядка вытеснения. Эта таблица создается в случае, если у плана видов расчета установлен флаг Использует период действия.
- _CKind_VT – табличная часть плана видов расчета.
Все таблицы плана видов расчета имеют один и тот же номер , за исключением вспомогательной таблицы для порядка вытеснения. Для нее используется сквозная нумерация. - _CKindChngR – таблица регистрации изменений плана видов расчета. Создается, если план видов расчета участвует хотя бы в одном плане обмена.
Регистры сведений
- _InfoRg – таблица движений регистра сведений.
- _InfoRgChngR – таблица регистрации изменений регистра сведений. Создается, если регистр сведений участвует хотя бы в одном плане обмена.
Регистры накопления
- _AccumRg – таблица движений регистра накопления.
- _AccumRgT – таблица итогов регистра накопления. Эта таблица создается в случае, если регистр накопления поддерживает остатки.
- _AccumRgTn – таблица оборотов регистра накопления. Эта таблица создается, если регистр поддерживает обороты.
- _AccumRgOpt – таблица настроек хранения итогов регистров накопления. Эта таблица создается одна на все регистры накопления.
- _AccumRgAgg – таблица агрегатов регистра накопления.
- _AccumRgAggOpt – таблица опций сети агрегатов.
- _AccumRgSt – таблица статистики регистра накопления.
- _AccumRgBf – таблица буфера новых оборотов регистра накопления.
- _AccumRgDl – таблица новых оборотов регистра накопления.
- _AccumRgAggDims – таблица кодов измерений регистра накопления.
- _AccumRgAggGrid – таблица сети агрегатов.
Эти таблицы имеют сквозную нумерацию. - _AccumRgChngR – таблица регистрации изменений регистра накопления. Создается, если регистр накопления участвует хотя бы в одном плане обмена.
Регистры бухгалтерии
- _AccRg – таблица движений регистра бухгалтерии.
- _AccRgED – таблица значений субконто регистра бухгалтерии. Эта таблица создается в том случае, если регистр бухгалтерии ссылается на план счетов, у которого максимальное количество субконто больше нуля.
- _AccRgAT0 – таблица остатков и оборотов по счетам и субсчетам.
- _AccRgAT– таблица остатков и оборотов по счетам, субсчетам и субконто.
Эти таблицы создаются в том случае, если регистр бухгалтерии ссылается на план счетов, у которого максимальное количество субконто больше нуля. Номер i изменяется от 1 до максимального количества субконто. - _AccRgCT – таблица итогов оборотов между счетами. Эта таблица создается только для регистра бухгалтерии, поддерживающего корреспонденцию.
- _AccRgOpt – таблица настроек хранения итогов. Эта таблица создается одна на все регистры бухгалтерии.
- Все таблицы регистра бухгалтерии имеют сквозную нумерацию.
- _AccRgChngR – таблица регистрации изменений регистра бухгалтерии. Создается, если регистр бухгалтерии участвует хотя бы в одном плане обмена.
Регистры расчета
- _CRg – таблица движений регистра расчета.
- _CRgActP – таблица фактического периода действия. Эта таблица создается в том случае, если у регистра расчета установлен флаг Период действия.
- _CRgRecalc – таблица перерасчета регистра расчета.
Все таблицы регистра расчета имеют сквозную нумерацию. - _CRgChngR – таблица регистрации изменений регистра расчета. Создается для каждого регистра расчета, участвующего хотя бы в одном плане обмена.
- _CRgRecalcChngR – таблица регистрации изменений перерасчета. Создается, если перерасчет участвует хотя бы в одном плане обмена.
Бизнес-процессы
- _BPr – основная таблица бизнес-процесса.
- _BPr_VT – табличная часть бизнес-процесса.
- _BPRPoints – таблица точек маршрута бизнес-процесса.
Таблицы, содержащие табличные части бизнес-процесса, имеют тот же номер , что и основная таблица бизнес-процесса, однако для таблицы точек маршрута бизнес-процесса используется сквозная нумерация. - _BPrChngR – таблица регистрации изменений бизнес-процесса. Создается для каждого бизнес-процесса, участвующего хотя бы в одном плане обмена.
Задачи
- _Task – основная таблица задачи.
- _Task_VT – табличная часть задачи.
Таблицы, содержащие табличные части задачи, имеют тот же номер , что и основная таблица задачи. - _TaskChngRec – таблица регистрации изменений в задачах. Создается для каждого объекта метаданных Задача, который участвует хотя бы в одном плане обмена.