Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, дамы и господа Вопрос такой: есть некая таблица, в которой нет первичного ключа (heap). В частности, это табличная часть документа из 1ски. И вот вопрос: есть ли какое - нибудь скрытое системное поле в таблице SQL, по которому всеж - таки можно было однозначно идентифицировать запись в этой таблице? Не знаю, может внутренний ГУИД какой - нибудь, или еще что - то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 09:53 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
ppa32по которому всеж - таки можно было однозначно идентифицировать запись в этой таблице?Если есть unique constraint, то по его полям и можно идентифицировать. Видимо, для административных целей можно и по положению на конкретной странице, но это сложно и, скорее всего, только до её модификации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 09:58 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 09:58 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
tunknownЕсли есть unique constraint Для табличных частей это код родителя и номер строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 10:02 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
Sergey Syrovatchenko Код: sql 1. 2. Для лучшего понимания я все же советовал бы sys.fn_PhysLocFormatter(%%physloc%%) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 10:14 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
Sergey Syrovatchenko, Идея хорошая, но, к сожалению, 1ска перезаписывает табличную часть при изменении. Ну то есть если в документе было 4 строки: 0xE5FFB60001000500 0xE5FFB60001000600 0xE5FFB60001000700 0xE5FFB60001000800 Мы удаляем из интерфейса строку 0xE5FFB60001000700 и записываем документ, то в таблице будет вот так: 0xE5FFB60001000500 0xE5FFB60001000600 0xE5FFB60001000700 где 0xE5FFB60001000700 - это бывшая 0xE5FFB60001000800 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 10:17 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
ppa32, это не 1C-ка перезаписывает, это SQL Server. Данная виртуальная колонка показывает значение физического расположения строки, но это физическое расположение может меняться во множестве случаев - ребилды, сжатия, разделение страниц при вставке, реорганизация и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 10:21 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
tunknown, юник констрейнт, к сожалению, ничего не даст: пара полей, которая в нем есть, при записи документа из интерфейса 1С перезаписывается, и, если кто - то убил строку из середины документа, то поля из убитой строки начинают соответствовать следующей строке документа, которая там была по списку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 10:22 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
Konst_One https://docs.microsoft.com/en-us/sql/t-sql/functions/checksum-agg-transact-sql?view=sql-server-2017 Если две строки идентичны - это значение также будет одинаковым. ну и CHECKSUM_AGG - это агрегатная функция, вы, наверное, имели в виду CHECKSUM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 10:26 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
для отслеживания изменений в таблице применять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 10:27 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
ppa32tunknown, юник констрейнт, к сожалению, ничего не даст: пара полей, которая в нем есть, при записи документа из интерфейса 1С перезаписывается, и, если кто - то убил строку из середины документа, то поля из убитой строки начинают соответствовать следующей строке документа, которая там была по списку.Если вам нужно сослаться на строку такой таблицы вне 1C, то можно закостылить. Если 1C не сильно сопротивляется триггерам, то можно сделать таблицу маппинга и зафиксировать в ней первое значение этой пары полей в качестве идентификатора дополнив текущим значением пары. Потом все соответствующие операции с основной таблицей нужно будет пробрасывать через этот маппинг. Накладные расходы велики, но результата можно добиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 11:13 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
ppa32, а что за задача стоит перед Вами? Возможно ее следует решать на стороне 1С? На всякий случай в 1С документ может быть записан, но не проведен, в этом случае данные в таблице будут, но использовать их или передавать куда-либо, возможно, не требуется. А еще документ может быть помечен на удаление или еще 100 других бизнес-нюансов реализованных на стороне 1С... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 11:40 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
ppa32, хэш подсчитайте. А как 1С находит нужный документ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 13:26 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, По GUID документа, а строчку в табличной части по GUID документа и номеру строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 13:35 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
4d_monster, ну так GUID и номер сроки и есть ключ в этой таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 14:52 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, Автор (вероятно) хочет аналог IDENTITY, чтобы ещё и изменения отслеживать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 15:20 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
4d_monsterВладислав Колосов, Автор (вероятно) хочет аналог IDENTITY, чтобы ещё и изменения отслеживать. Автор, вероятно, хочет изменившиеся записи дергать и где-нибудь в хранилище обновлять. И не знает, как это без ключа сделать. Мне, кстати, это тоже интересно. СТ на куче включить не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 16:16 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
uaggsterАвтор, вероятно, хочет изменившиеся записи дергать и где-нибудь в хранилище обновлять.Если бы знать, что нужно автору? Изменившиеся записи можно отслеживать триггером ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 18:27 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
Что делал я ( это НЕ для таблиц 1С , в адинЦэ я не шарю вообще): 1. Создаётся таблица журналирования - LOG - (RowId bigint identity, RowTime datetime, ActionId bigint, ActionType char(1) {I, D} , WhoCorr nvarchar() (user), ... sysuser nvarchar(), SourceServerNmae nvarchar(), SourceDataBaseName nvarchar(), Updated_fields_mask, далее идут поля исходной таблицы .... 2. На таблицу-LOG вешается триггер, который отслеживает ЧТО добавилось - нужен ТОЛЬКО для того, что бы при вставке записей в ЛОГирующую таблицу информации из триггеров наблюдаемой таблицы (Insert Delete, Update) проставлял на блок один ActionId, равный тому RowId, который для первой вставившейся записи, - это несущественно (при UPDATE записи"наблюдаемой" таблицы в LOG прилетают последовательно по две записи от UPDATE-триггера - одна из deleted, другая - из inserted) , но облегчает жизнь. 3. На наблюдаемую таблицу вешаются триггеры на insert, delete, update для записи в LOG-таблицу того, что нашлось в inserted и deleted... LOG-таблица живёт в отдельной базе на том же инстансе. Работает лет пять. Сервер напрягает не сильно, хотя строки ёмкие и их достаточно. Админ туда периодически лезет посмотреть. И мне иногда приходится "шерстить" когда вдруг(!) пропадают/меняются документы и "Ой!, оно само сломалось..." (предусмотрительно фиксируются не только логин/юзернэйм, но и ssid, connectionId, application_name,.... ,- там чего только не найдёшь ) . Мониторятся две таблицы: шапки документов и шапки платежей. Всё остальное уже можно отыскать по бэкапам зная примерно момент изменения (до этого, правда, я не доходил,- достаточно просто рассказать кто, что и как менял посекундно - народ охреневает и фигни больше не делает). Год назад привернул "чистку LOG-таблиц" - еженощный JOB - удаляется всё, что старше двух (или трёх?) кварталов. ВНИМАНИЕ! Этот вариант хорош только тогда, когда аппликаха (или хранимки) не занимаются "кривым" анализом значений Identity insert после вставки в "контролируемые" таблицы и т.п. ... У меня в одном из случаев наладить похожее протоколирование на продакшне повалились пустые документы. Хотя тесты разработчиков базы были норм ... Ну и в конце концов - есть "отслеживание изменений" (но у меня так ни разу и не "сложилось")... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2019, 00:17 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
А что, самостоятельно добавить поле с identity нельзя? Это сломает работу 1-С? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2019, 11:50 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
tunknown, нечто подобное можно сделать средствами 1с: создать поле в табличной части документа, которое никто не видит, и писать туда рандомный ГУИД, если оно не заполнено. Средставми 1с же и навесить триггер. В терминах 1с он называется "Подписка на событие". Но вопрос в том, что триггеры придется вешать для всех табличных частей, а хочется красивое универсальное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2019, 02:24 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
1C Developer, Проблему и пытаюсь решить на стороне 1с, но вопрос в том, как отследить факт того, что из документа строчку удалили, и какую. Или добавили. Суть задачи в том, чтобы создать полное логирование действий пользователей по всем базам, и консолидировать эту информацию со всех баз 1с в одной SQLной базейке. Потом дописать в 1с интерфейс к ней, и смотреть, кто, где, что, когда и в какой базе 1С поменял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2019, 02:32 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
4d_monster, в точку! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2019, 02:33 |
|
||
|
Внутренний идентификатор таблицы
|
|||
|---|---|---|---|
|
#18+
SIMPLicity_, проблема в том, что таблиц, на которые нужно навесить триггеры, сотни в каждой базе 1с (табличные части дкоументов). И очень не хочется туда влазить. Добавить какие - то свои объекты, думаю, не страшно, а вот таблицы 1с лучше не трогать от греха. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2019, 02:36 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39847343&tid=1687421]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
171ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 262ms |
| total: | 551ms |

| 0 / 0 |
