Поиск и замена значений посредством SQL-запросов

Обработка и хранимая процедура предназначены для поиска и замены значений в SQL-базе посредством прямых sql-запросов. UPD Внимание! Работает только при замене любой аналитики на новую! К сожалению, слияние аналитики не работает. Пишу гибридную версию.
UPD Не прошло и года, как я написал гибридную версию:).

Платформа 8.2.13.219. Конфигурация — БП 2.0.20.10. Версия SQL — 2008.

В процессе работы встала задача замены аналитики без перепроводки документов. Стандартная обработка «ПоискИЗамена» не подходила как по скорости работы, так и по вышеуказанному ограничениям. Решил реализовать алгоритм  со стороны базы данных. Результатом служит указанная хранимая процедура и обработка(обработка, главным образом, для красоты и удобства).

Инструмент получился мощный, использовать с осторожностью, на свой страх и риск. После каждого  применения в начале делал ТИИ, ошибок не находил. По понятным причинам после применения требуется пересчет итогов и переиндексация.

Это моя первая публикация, за любую обратную связь буду благодарен.

UPD. Доработал:) Берем архив, распаковываем. Там два текстовых файла и обработка. В текстовых файлах — код процедур поиска и замены. Берем прямо текст и создаем процедуры у себя на сервере СУБД. Внешний вид обработки не изменился.

Внимание! Не использовать для баз с обменом!(Верней, надо тогда будет проводить замену на всех базах, участвующих в обмене)

После применения обработки ОБЯЗАТЕЛЬНЫМ условием является пересчет итогов(ну и проверка ссылочной целостности).

Проверял на УТ, БП, ссылки заменяет корректно, на УТ остатки сходятся, на БП суммы по счетам сходятся. Все ссылки на предыдущий объект пропадают(кроме ссылки в справочнике). Брал контрагенты, склады, товары.

P.s. Ну и, как всегда, пишите. И прошу прощения по срокам, 2 смены работы, и пр. и пр….

57 Comments

  1. Sorm

    Обработка и хранимая процедура предназначены для поиска и замены значений в SQL-базе посредством прямых sql-запросов. UPD Внимание! Работает только при замене любой аналитики на новую! К сожалению, слияние аналитики не работает. Пишу гибридную версию.

    UPD Не прошло и года, как я написал гибридную версию:).

    Перейти к публикации

    Reply
  2. Ish_2

    Серия N+1.

    Хотя , Использование недокументированных возможностей

    1. Противоречит интересам фирмы 1с.

    2. Нарушает лицензионное соглашение.

    Но

    1. Соответствуют законодательству РФ

    2. Отвечает интересам владельца БД(базы данных).

    Reply
  3. Sorm

    Я недавно работаю с 1с, до этого работал с системами, более «близкими» к SQL-серверу, т.е. использующими его функционал гораздо более полно — SP, функции, триггеры, и пр, в т.ч. и интеграцию с другими системами на уровне сервера. Любые «родные» движки этих систем при приближении к объема базы к 1 терабайту(приблизительно) уже не удовлетворяли по быстродействию при выполнении каких=то массовых операций, поэтому все частные задачи решались уже конкретными скриптами. Ну вот я рещил попробовать то же самое с базой 1с. Честно сказать, я не понял, в чем «недокументирование» возможностей — база как база. По поводу нарушения лицензионного соглашения — ну, тут сказать ничего не могу. Но вроде как мое решение некоммерческое и использование связано с определенным риском. Пользуйтесь осторожно или не пользуйтесь — как я и писал.

    Reply
  4. Ish_2
    Любые «родные» движки этих систем при приближении к объема базы к 1 терабайту(приблизительно) уже не удовлетворяли по быстродействию при выполнении каких=то массовых операций, поэтому все частные задачи решались уже конкретными скриптами.

    Вопрос :

    как поставщики решений относились к такому творчеству ?

    Из своего опыта скажу , что также как и 1с ,

    т.е. резко отрицательно , с угрозами снятия с поддержки.

    Reply
  5. Sorm

    Подписки на события и собственные модули ещё никто не отменял, мне кажется. Ну вот подобных принципов придерживаются и все остальные разработчики. И потом, решения для заказчиков с размерами баз терабайт и более, они… «законно» обладают некоторой самостоятельностью. Потому что заказчики не простые.

    Reply
  6. romansun

    (4)

    А можно чуть подробнее про сферу, где такие базы? Очень интересно, до куда уже дотянулась «рука 1С».

    Ну, насколько возможно, разумеется 🙂

    По поводу применения sql в 1С — да, применяется без проблем, можно хоть весь функционал переписать, в 1С оставить только кнопки. Работает только в путь, быстро настолько, что не успеваешь «мама» сказать, когда жмакает F5 в квери аналайзере и в последний момент замечаешь, что мааааааленький косячок-таки закрался в инсерт инто или делейт 😀

    По поводу недокументированности — да, не даёт 1С из под 1С фунционала прямого доступа. Такая вот позиция. Причина — посмотрите, тут на инфостарте есть несколько топиков, где народу помогают с битыми базами, и в каждом третьем посте — «последний бэкап три месяца назад, памагите!!! что делать????». А если б из под 1С-ных запросов можно было не только select писать, а и delete, то новых интересных топиков на ИС было бы в 10 раз больше ))))

    Моё личное мнение — я тоже не восторге от использования sql. Причины — возможная криворукость программистов и плачевные последствия. Плюс — существенное усложнение поддержки. Особенное, если sql используется в постоянно работающих алгоритмах.

    На своей базе иногда использую.

    (3)

    поставщики решений (oracle к примеру) относятся обычно нормально 🙂 — собственно там весь код может быть как раз и есть sql + какая-то интерфейсная приблуда. Примеры: АБС в банках.

    Reply
  7. Ish_2

    (5) У каждого свой опыт.

    Поставщики решений (oracle к примеру) относятся именно так : Боже упаси.

    Хм.. Имею опыт работы с одним таким «мировым лидером».

    Так и не удалось добиться , чтобы в символьное поле комментария(разумеется неключевое) одной таблицы писалась некоторая символьная информация (Update).

    Другими словами , поставщики отказались создать хранимую процедуру ,

    на вход которой я бы посылал два параметра для модификации таблицы : Ключ и символьное значение.

    Reply
  8. Sorm
    А можно чуть подробнее про сферу, где такие базы? Очень интересно, до куда уже дотянулась «рука 1С».

    Она пока туда не дотянулась:) Слишком велики объемы данных, чтобы можно было не использовать компиляцию, индексированные временные таблицы и пр. изыски.

    По поводу недокументированности — да, не даёт 1С из под 1С фунционала прямого доступа.

    И правильно, на мой взгляд. Моя задача и решение — частные, конечно. Просто я вот так вот решил, исходя из опыта и возможностей. А люди делятся на 2 категории — которые делают бэкапы и которые будут их делать.

    Так и не удалось добиться , чтобы в символьное поле комментария(разумеется неключевое) одной таблицы писалась некоторая символьная информация (Update).

    Это цветочки. Ягодки — это когда ты требуешь не разработки, а соблюдения(!) стандартов … ну, хотя бы обмена. «Мировые лидеры» класть хотели на какие-то договоренности, и частенько сообщения приходят с другой структурой полей или другими форматами кодов. Так что базу после обмена приходится «причесывать» шаблонами и разборами. В этом отношении, работая с 1с, просто отдыхаешь.

    Reply
  9. boggonzikov

    Хорошая вещь, если умеешь этим пользоваться.

    Можешь еще сделать, чтобы можно было заменять любой ссылочный тип, а не только справочник ?

    Reply
  10. Sorm

    (8) Да. Открою тайну — я как раз сначала написал более общий случай, замену любых ссылочных типов на другие, но потом решил ограничить дело только справочниками, и подстраховался дополнительно проверкой ссылки по коду и значению. Там процедуру надо немного править для работы с любыми ссылочными типами.

    Reply
  11. Trise

    Решение похожей задачи наблюдал в 77.

    Для полной однозначности заменяеммых значений входными параметрами функции должны быть не код и наименование, а функция УникальныйИдентификатор() ссылки или ЗначениеВСтрокуВнутр смотря как они храняться в SQL.

    Reply
  12. Trise

    Так же данная обработка может быть смертельной, при использовании РИБ (распределенных информационных баз), так как она дожна помечать объекты для фиксирования их в узлах обмена. А там еще встречается логика, такая как пометить для обмена только для определенной организации.

    Reply
  13. Sorm

    (10) «функция УникальныйИдентификатор() ссылки или ЗначениеВСтрокуВнутр смотря как они храняться в SQL.» Результат первой ничего не дает, результат второй надо резать…

    (11) Что касается текущей базы — она помечает, однако, везде, а вот то самое ЗначениеВСтрокуВнутр() в удаленной базе да, придется менять.

    Reply
  14. sound

    (0) Мне нужно заменить один элемент плана видов характеристик на другой (вид субконто), как мне Ваша обработка может помочь?

    Reply
  15. fit686

    Так же необходимо заменить УникальныйИдентификатор() в одном справочнике на соответствующие из другого,или это лучше делать обработкой синхронизации справочников?

    Reply
  16. Sorm

    (13) Заменить — можно, но — конкретные значения по этому субконто куда девать? Тоже надо будет менять.

    (14) УникальныйИдентификатор() — функция, в базе физически лежит другое значение. Надо менять его.

    Reply
  17. sound

    (15) У меня в плане видов характеристик 2 вида субконто, но они ссылаются на один и тот же справочник. Получилось так, что были заведены 2 элемента с одним названием и типом значения, вернее 1 был предопределенный и зачем-то завели еще один точно такой же. На вопрос «а нахрена это было надо?» теперь никто ответить не может. И в плане счетов на одних счетах стоит один вид субконто, а на других другой, соответственно и в бухгалтерском регистре творится такая же хрень. Не знаю чем это может грозить в плане искажения информации, ведь по идее значения этих субконто — это элементы одного справочника, но из-за этого становится невозможным сделать, например, тот же Анализ субконто, и приходится как-то извращаться, чтобы получить то что нужно.

    Ссылки на Виды Субконто ведь «живут», как ни странно, только в регистрах бухгалтерии. Попробовал на копии запустить обработку по переделке всего этого безобразия, почти как «Поиск и замена значений» только в режиме «Обмен.Загрузка = Истина», первые 2 раза (по 3 дня каждый раз) она так и не отработала вынося платформу с критической ошибкой «Нехватка памяти». Потом запустил с сервера, она вроде отработала, но ссылки все остались на месте — ничо не понял, возможно криво написана. Вот поэтому все еще думаю как это победить 🙁

    Reply
  18. Sorm

    (16) Тогда можно. Я имел в виду замену разных типов субконто — контрагенты на материалы, к примеру(уж не знаю, зачем такая блажь, но вдруг…) Виды субконто одного типа можно заменить.

    Reply
  19. sound

    (17) Подскажите, пожалуйста, порядок действий, просто доселе ничем подобным не занимался. Ну создать хранимую процедуру, допустим осилю, а дальше что? Скопировать туда текст Вашей процедуры, ничего в ней менять не нужно? И в обработке вроде там только справочники? Или я что-то не так понял?

    Reply
  20. Sorm

    (18) Мою хранимую процедуру надо упростить. Требуется обойти проверки на то, что это элементы справочника, соотвественно, вот сюда :

    —Получаем ссылки

    exec (‘insert #temp(sourc) select _IDRRef from ‘+@table_name_exclude+’ where _code = »’+@code_sourse+»’ and _description = »’+@desc_source+»»)

    exec (‘insert #temp(dest) select _IDRRef from ‘+@table_name_exclude+’ where _code = »’+@code_dest+»’ and _description = »’+@desc_dest+»»)

    Надо подсунуть ссылки(т.е. идентификаторы) на указанных видов субконто. Посмотреть, где они хранятся, можно обработкой «Описание метаданных»(вроде, навскидку не помню), короче, обработкой, которая показывает, в каких таблицах(верней, таблице) хранятся виды субконто. Получится нечто вроде:

    exec(‘insert #temp(sourc) select _IDRREF from ‘+(таблица определения субконто)+’ where ‘(отличительные признаки вида субконто) = конкретные значения для данного вида субконто.

    И запустить процедуру.

    Это сделать, понятное дело, на тестовой базе+ ВНИМАТЕЛЬНО ПРОСМОТРЕТЬ ЧТО СКАЖЕТ СЕРВЕР! если все ок, сделать ТИИ, пересчитать остатки. Проверить.

    Reply
  21. sound

    (19) Жаль что пока, к сожалению, времени нет на эксперименты, потому что чувствую мне долго придется вкуривать это дело. Но пробовал с помощью Вашей обработки заменить в тестовой базе элементы справочников, выдавалась ошибка SQL сервера, что-то вроде «переполнен журнал транзакций» или что-то в этом духе.

    Reply
  22. boggonzikov

    В чем может быть причина ошибки:

    Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft SQL Server Native Client 10.0): Недопустимое имя столбца «_code».

    CommandSQL.Execute();

    по причине:

    Произошла исключительная ситуация (Microsoft SQL Server Native Client 10.0): Недопустимое имя столбца «_code».

    На некоторых справочниках отрабатывает, на других выдает ошибку

    Или подскажи как переписать хранимую процедуру, чтобы работало по УникальныйИдентификатор?

    Спб

    Reply
  23. boggonzikov

    (21) Нашел в чем причина, не верно определяется таблица хранения

    Строка = ТЗ.Найти(«Справочник.»+строка(тип));

    заменить на

    Строка = ТЗ.Найти(«Справочник.»+ СтарыйОбъект.Метаданные().Имя, «ИмяТаблицы»);

    Reply
  24. Sorm

    Поправил, спасибо

    Reply
  25. kr_andr

    Спасибо

    Reply
  26. garcevis

    Спасибо. Стоит примерно такая же задача. Сейчас скачаю теект процедуры и попробую

    Reply
  27. maxsoft83

    Доброго дня. Загнал процедуру в свою базу под 2005 SQL, запускаю замену одного элемента на другой (причем не из 1С, а на прямую в SQL) крутиться бесконечно долго и никаких результатов. В чем может быть проблемма, есть какиенибуть мысли?

    Reply
  28. maxsoft83

    И так в продолжении справочник номенклатуры 312 тыщ записей, конфа УПП 1.2, запустил на ночь свертку 2 х позиций. Через 1С’овскую обработину глянул сколько ссылок на объекты на каждый было не больше 50 ссылок. Время выполнения свертки 3,40 минут и в итоге вывалились ошибки:

    Сообщение 2601, уровень 14, состояние 1, строка 1

    Невозможно вставить повторяющуюся ключевую строку в объект «dbo._ReferenceChngR2461» с уникальным индексом «_Refere2461_ByDataKey_RR».

    Выполнение данной инструкции было прервано.

    Сообщение 2601, уровень 14, состояние 1, строка 1

    Невозможно вставить повторяющуюся ключевую строку в объект «dbo._AccRgAT21549» с уникальным индексом «_AccRg21549_ByPeriod_TRRRRRN».

    Выполнение данной инструкции было прервано.

    Сообщение 2601, уровень 14, состояние 1, строка 1

    Невозможно вставить повторяющуюся ключевую строку в объект «dbo._AccRgAT21549» с уникальным индексом «_AccRg21549_ByPeriod_TRRRRRN».

    Выполнение данной инструкции было прервано.

    Сообщение 2601, уровень 14, состояние 1, строка 1

    Невозможно вставить повторяющуюся ключевую строку в объект «dbo._AccRgAT21579» с уникальным индексом «_AccRg21579_ByPeriod_TRRRRRN».

    Выполнение данной инструкции было прервано.

    Reply
  29. Sorm

    (27) maxsoft83, Будем разбираться. Спотыкается об уникальный индекс, понятно… У меня такого не вылезало.

    Reply
  30. maxsoft83

    (28) а что по поводу производительности? … получается что сама 1С все это сделает ну так раз 12-15 быстрее. либо 10-20 минут либо почти 4 часа, по идее все должно быть на оборот. в чем может быть загвоздка? может я что-то сделал не так?

    Reply
  31. maxsoft83

    (28)

    Еще я просмотрел количество таблиц получаемых на одну позицию .. получается больше 30000 таблиц … по моему многовато

    я не настолько хороший знаток SQL, но может быть проблема в этом запросе

    Select column_name,table_name from

    (Select

    source.name as column_name

    , tables_name.name as table_name

    from

    (select * from sys.columns where system_type_id = 173) source

    inner join

    (select object_id,name from sys.objects where type = ‘U’) tables_name

    on

    source.object_id = tables_name.object_id) source2

    все ли ограничения наложены … или если у меня более 10 БД на SQL он выбирает ссылки по всем таблицам в этих БД?

    Reply
  32. Sorm

    (30) maxsoft83, Каких 30 тысяч таблиц в сеансе??

    Select distinct table_name from

    (Select

    source.name as column_name

    , tables_name.name as table_name

    from

    (select * from sys.columns where system_type_id = 173) source

    inner join

    (select object_id,name from sys.objects where type = ‘U’) tables_name

    on

    source.object_id = tables_name.object_id) source2

    Выдает 1072 строки таблиц, содержащих ссылки. Бухия 2.0. Дальше смотри по процедуре — там идет отсечка таблиц, не имеющих в какой-либо колонке данного типа упомянутого значения замены. Я прошу прощения, просто занят сильно последнее время, не могу взяться за процедуру и сесть в профайлер. Процедуру придется менять, то ли таблицы остатков отсекать с обязательным пересчетом по окончании работы процедуры, то ли апдейтить их через временные таблицы с группировкой по индексу. Все задачи решаемы, просто времени пока нет.

    Reply
  33. maxsoft83

    (31) Ну как бы у меня УПП))) там таблиц в принципе больше .. ладно попытаю порыть в редбуке, а какое время замены одной позиции на бухе??

    Reply
  34. Sorm

    (32) maxsoft83, Ну не в 10 раз же… Размер базы какой? У меня такая вот фихня отрабатывала 15 минут на базе порядка 20 ГБ.

    Reply
  35. maxsoft83

    У меня база 104 Gb …. так что видимо 15 минут для меня не светят, да и собственно тоже самое что через саму эску ….. потому как бы не вижу смысла заходить со стороны сиквела. если бы это процесс занимал хотябы 5 минут, а так получается то на то и выходит. у меня через эску слегка модифицированная обработка эсовская как раз сворачивает порядка 3 позиций в час.

    Reply
  36. Sorm

    (34) maxsoft83, Можно отловить процедуру в профайлере, которой отыскиваются все ссылки на указанный элемент, разобрать её ответ и уже работать от неё. Попробую.

    Reply
  37. maxsoft83

    (35) будем ждать результатов))) в свою очередь попытаюсь осилить тоже самое со своей стороны, может что получиться)

    Reply
  38. Sorm

    Да, господа, поправил публикацию. К сожалению, механизмы 1с в части модификации остатков трансцедентны и непознаваемы(в реальности просто очень сложны , в сумме потратил 2-е суток на профайлер). В настоящий момент изменил заголовок темы, процедура и скрипт остаются рабочими, но, к сожалению, работать будут только при замене аналитики на полностью новую. Т.е. как если бы вам нужно перекинуть остатки с одного контрагента на нового(только что введенного). Или на новую статью затрат, к примеру. «Слияния» аналитики реализовать не удалось, в настоящий момент пишу гибридную версию, которая в части работы работы с остатками и регистрами будет использовать механизм 1с, а в части работы с документами — механизмы SQL.

    Reply
  39. Sorm

    Доработал, тестируйте. Движок теперь сам считает итоги, остальное делается скриптом.

    Reply
  40. tango

    Как оказалось, я уже плюсовал это дело, так что респект еще раз без +.

    А теперь как-то возник вопрос по поводу

    В процессе работы встала задача замены аналитики без перепроводки документов. Стандартная обработка «ПоискИЗамена» не подходила

    мне и в голову не пришло бы использовать П&З для задачи, поскольку очевидно, что для «без перепроведения» надо менять не только реквизиты, но и аналитику в движениях. Но и в СКЛ бы не полез — пять минут, как говорится, в конфигураторе.

    И раз уж все равно пересчитывать итоги в 1ске, то нафига огород городить? Неужели настолько существенен выигрыш по времени? По комментам судя, выигрыша-то и нет…

    Reply
  41. Sorm

    (39) tango, предполагалось, что все манипуляции с базой данных будут выполнены «за движком» 1с, причем минимальным числом запросов. Т.е. я отпишу Update на таблицу документа по условию, а не сделаю миллион запросов на тот же самый апдейт через движок. Идея была такова. Совсем «за движком» не получилось, приходится анализировать структуру метаданных + исключать итоги(ибо не уверен, что хорошо переводить базу в режим разделения итогов, а без него модифицировать итоги не хочу, ибо не знаю результата), но принцип остался тот же.

    «пять минут, как говорится, в конфигураторе. » Какой примерно алгоритм для замены одного контрагента другого «везде» через конфигуратор?

    Reply
  42. tango
    Какой примерно алгоритм для замены одного контрагента другого «везде» через конфигуратор?

    «везде» как правило, ограничено — это какой-то конкретный, небольшой, список видов документов

    1 запрос — получаем список доков, где реквизит = Контрик

    2. ползем по списку, подставляем реквизит — записываем без проведения. в движениях подставляем контрика. это можно не торопясь в фоновом режиме

    3. если РИБ — записываем состояния изменения

    ну, и итоги, если надо

    весь трабл — в скорости. практически эта задача не требует «реалтайма», лишь бы дошла до конца (за день — другой — нормально)

    Reply
  43. AlexO

    (2)

    так и по вышеуказанному ограничениям

    где вы описали эти вышеуказанные ограничения?

    Reply
  44. AlexO

    (41) tango,

    Михаил, опять очередной студент ринулся править 1С через SQL 🙂

    Не отыскав типовую обработку по поиску и замене (или доработанные от типовой же).

    Плюсики вы свои, конечно, вольны расставлять кому угодно, но любые действия в 1С минуя 1с-платформу — чреваты рассылочностью базы.

    И всегда предупреждаю — не лазить через SQL в 1с8 базу, плохо кончится.

    Но каждый месяц — один-два студента с обработкой «как я ускорил 1С через SQL» … 🙂

    Reply
  45. Sorm

    (41) tango, «весь трабл — в скорости. практически эта задача не требует «реалтайма», лишь бы дошла до конца (за день — другой — нормально». Честно сказать, постепенный рост , к примеру, кредитового сальдо на 60 счете у одного контрагента и уменьшение у другого, как-то слабо себе представляю. Но возможно, возможно. Только бухгалтерам будет странно, достанут.

    (42) AlexO, выше.

    (43) AlexO, условия использования я описал, алгоритм описал. Если обработка кому-то поможет, я буду рад.

    «И всегда предупреждаю — не лазить через SQL в 1с8 базу, плохо кончится. » — полностью согласен. Если был отрицательный опыт — зачем себя пересиливать?

    Reply
  46. tango

    (43) AlexO, дык автор же пишет — граната, абезианов не беспокоиться

    Reply
  47. AlexO

    (45) tango,

    ну хорошо, минус ставить не будем, раз предупредил :))

    Reply
  48. AlexO

    (44)

    (42) AlexO, выше.

    где выше? номер сообщения тогда укажите

    Reply
  49. AlexO

    (44)

    Если был отрицательный опыт — зачем себя пересиливать?

    а, т.е. вы считате — что если вот так залезли и база сразу не рухнула, то все нормально? 🙂

    косяки вылезают как раз в данных, когда они не совпадают по регистрам там или документам.

    Reply
  50. integragirl

    (48) AlexO,

    а, т.е. вы считате — что если вот так залезли и база сразу не рухнула, то все нормально? 🙂

    косяки вылезают как раз в данных, когда они не совпадают по регистрам там или документам.

    а почему не может быть все нормально? Если мы заменяем ссылки во всех таблицах (справочники, документы, регистры… и т.д.), какие могут быть косяки? Плюс пересчитываем регистры.

    Если Вы имеете какой-то опыт опишите его нам.

    Reply
  51. kauksi

    Как бороться с ситуацией: Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Не удается вставить повторяющуюся строку ключа в объект «dbo._InfoRg35761» с уникальным индексом «_InfoR35761_ByDims_R». Повторяющееся значение ключа: (0x9e63c92e28a321ad47e4c3d6b82747a7).

    Reply
  52. Sorm

    (50) kauksi, аналитику заменяете?

    Reply
  53. script

    Ответьте пожалуйста.

    Поможет ли мне обработка, если мне нужно заменить одну организацию на другую везде.

    Есть база с 4-мя организациями — нужно все слить на одну новую, 5-ю организацию.

    Reply
  54. Sorm

    (53) Да.

    Reply
  55. Irwin

    Поиск в таблице справочника идет по коду и наименованию, а потом берется максимальный элемент (хотя есть ссылка, по которой можно получить GUID). В итоге могут быть ошибки — подберется не тот элемент.

    Reply
  56. taki_zuka

    Как справиться с ошибкой: Невозможно вставить повторяющуюся ключевую строку в объект «dbo._InfoRg17321» с уникальным индексом «_InfoRg17321_ByDims_RN» ?

    Reply
  57. Sorm

    (56)

    _ByDims_RN

    Вы пытаетесь заменить один уже существующий элемент на другой? Сожалею, можно только заменить на новый(т.е. грубо говоря, на элемент, по которму ещё не было записи в данном регистре)

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *