Дубли ключей

1. dreamadv 155 10.02.22 15:15 Сейчас в теме +5 $m
Переодически у пользователей не получается перезаписать документ который они редактируют 1С вылетает с сообщением о дублях ключей. Насколько я понимаю это таблица строк документа. Почему 1С не удаляет строки при перезаписи и заново и вставляет в таблицу. Возможно как-то надо по особенному настроить MS SQL чтобы эта проблема с 7.7. платформой не возникала. Используется https://infostart.ru/public/82018/ и MS SQL 2014. Олды :) Хелп !
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ishelper 10.02.22 18:43 Сейчас в теме
(1)
Возможно как-то надо по особенному настроить MS SQL чтобы эта проблема с 7.7. платформой не возникала
Возможно. Но шансы, что кто-то точно скажет - как именно надо настроить под сей раритет - невелики,ИМХО.

Поэтому в крайнем случае может оказаться проще не решить, а обойти проблему, адаптировав к ней код 1С:
обнаружилось, что если вначале сделать документ непроведенным, то все дальнейшие изменения и проведения с ним будут совершаться нормально.
<...>
По аналогии - попробуйте удалить все строки документа с выгрузкой в ТЗ, записать документ без строк, завести строки заново.

Источник: https://forum.ixbt.com/topic.cgi?id=96:395
14. dreamadv 155 13.02.22 21:58 Сейчас в теме
(2) Вариант может и не плохой но с кучей побочек, как вариант можно вообще весь документ потерять если вдруг что-то случится когда пустой документ уже будет записан копия в ТЗ и 1С упадет, так же при этом будут разблокированы временно остатки по регистрам, что сможет их сделать доступными для проведения другого документа. Кстати с первой проблемой именно с перепроведением я тоже сталкивался и тоже решил именно таким способом сначала распроведением и повторной проводкой иначе тоже возникали такие ошибки но по регистру.
3. amelinalx 12.02.22 01:26 Сейчас в теме
Вы абсолютно правы.
Необходимо смотреть код модуля.
В табличной части при перезаписи появляются дублирующие строки - возможно табличная часть наполняется одними и теми же данными, например:
При записи добавили 10, 20, 30 строки, при перезаписи они остаются в табличной части и снова же добавляются туда.

Для документа в конфигурации может быть определен один из двух вариантов работы с номерами строк табличной части.
Первый вариант предполагает возможность редактирования номеров строк. В таких документах автоматически сформированный номер можно изменить при вводе новой строки и в дальнейшем — в процессе редактирования строки.
6. dreamadv 155 12.02.22 21:51 Сейчас в теме
(3) Автоматическая нумерация строк установлена, ошибка плавающая если после вылета перезайти и сделать те же самые изменения документ успешно сохранится.
4. XAKEP 12.02.22 09:05 Сейчас в теме
MS SQL 2014 ???
а винда не 11 :) ?
8. dreamadv 155 12.02.22 21:57 Сейчас в теме
9. ishelper 12.02.22 22:29 Сейчас в теме +2 $m
(8)
SQL 2014 винда 2008 R2
...и костыль. Почему "костыль"? Потому что штатно 1С 7.7 работает только с MS SQL 2000, а всё, что после - самодеятельность, работоспособность которой никем не гарантируется!

Можно, конечно, спросить: "Как нужно раскрасить костыль, чтобы старый одноногий бегун с ним обгонял молодых и здоровых?"... но на серьезный ответ вряд ли стоит рассчитывать.
15. dreamadv 155 13.02.22 22:04 Сейчас в теме
(9) да я в курсе этого всего но мера на данный момент без альтернативная конфигурация полностью самописная перейти на 8-ку крайне трудозатратно и практически бессмысленно.
5. user1203706 13 12.02.22 10:29 Сейчас в теме
(1) посмотреть, стоит ли галка автономерстроки в документе. Выставить её.
первичый ключ, если склероз не изменяет, на номер строки завязан
7. dreamadv 155 12.02.22 21:52 Сейчас в теме
(5) Автоматическая нумерация строк установлена, ошибка плавающая если после вылета перезайти и сделать те же самые изменения документ успешно сохранится.
10. CheBurator 3121 13.02.22 00:14 Сейчас в теме
1. попробовать полечить, тупо сделать выгрузку базы через конфигуратор, потом загрузку базы.
2. работа с транзакциями?
12. dreamadv 155 13.02.22 21:49 Сейчас в теме
(10) 1. думаю врятли это решит проблему.
2. штатная работа с транзакциями т.е. документ просто записывается штатными средствами из формы документа.
11. user1203706 13 13.02.22 11:29 Сейчас в теме
(6) Регламенты хоть ведутся какие в скуле ? Реиндекс\обновление статы.. и т.д ?
Натрави профайлер, посмотри запрос, который вызывает падение..
Ну и в ддс или в самом скуле посмотри, что является примари кей для таблички, сделай выводы, из-за чего он неуникальным становится в момент записи.
Количество строк в доке какое ? lineno 4 знака..
13. dreamadv 155 13.02.22 21:52 Сейчас в теме
(11) Количество строк не большое обычно не более 100. Примари кей это IDDOC + LINENO. Скорее до запроса INSERT есть еще какие-то которые поидее должны либо очищать весь документ полностью либо отдельные строки которые перезаписываются.
16. user1203706 13 14.02.22 12:47 Сейчас в теме
(13) какие вк используются, каков порядок их загрузки ?
turbomd есть ?
Автовввод новой строки есть ?
В коде нет явного установки номера строки ? Через выгрузку-загрузку таб части, например ?
18. dreamadv 155 14.02.22 16:21 Сейчас в теме
(16)
1.
ЗагрузитьВнешнююКомпоненту("1cpp.dll");
ЗагрузитьВнешнююКомпоненту("1sci.dll");
ЗагрузитьВнешнююКомпоненту("vk_sleep_1C.dll");
vk_sleep=СоздатьОбъект("Addin.vk_sleep_1C");
vk_sleep.УстановитьПаузуПриБлокировке(100, "7.7");
vk_sleep.ИмяФайла=КаталогИБ()+"\trlock.tmp";
ЗагрузитьВнешнююКомпоненту("FormEx.dll");
2. при загруженом 1cpp помоему turbobl не нужен
3. Автоввода строки нет
4. установки строк в коде нет
20. ishelper 15.02.22 09:56 Сейчас в теме
(18) Эээ, да у вас там не только "костыль" - там целый зоопарк из разношерстных зверьков!

И вы хотите "взлететь со всей этой х...ней"? И не просто взлететь, а еще и летать, быстро и без проблем?

Ну-ну...
17. amelinalx 14.02.22 14:36 Сейчас в теме
Наиболее свежий SQL, который поддерживает уровень совместимости SQL Server 2000(80) это SQL Server 2008 R2. Думаю, Вам лучше развернуться на нем, с парой патчей dll.
19. user1203706 13 15.02.22 09:34 Сейчас в теме
(18)
1. выкинуть ромиковское поделие к едрени фени. Оно и так -то работало не как нннадо, а с солюшеном, его кто-то переделывал. Но, проще выкинуть и всем пользователям принудительно выставить время ожидания захвата таблиц в 0.
2.Занафига тебе 1sci ? Ты где-то в коде расскраску текста делаешь ?
3. turbomd<>turbobl, значит, не используешь, а зря. Не понимаю, как можно в клюшках что-то кодить без turbomd
4. 1cpp и формекс каких хоть версий ?
(17)солющен нормально работает с MS SQL2019
ishelper; +1 Ответить
22. dreamadv 155 15.02.22 10:26 Сейчас в теме
(19) 1cpp 3.2.4.3
formex 2.0.5.166

1. не будет вешать проц. на транзакции ?
2. Да нужна была выключу.
3. не входит в 1cpp ? можно и нужно использовать отдельно ? можно ссылку ?
21. user1203706 13 15.02.22 09:58 Сейчас в теме
+19 ромиковская хрень, это vk_sleep_1C.dll, если что.
Время ожидания, можно выставить всем, или проверяя значение флага в cfg каждого пользователя в ПриНачалеРаботыСистемы, и если не какое ннадо - переписывать файл+ повторный заход пользователя, или с помощью вк от trad - там еще проще, просто создать нужный объект при старте системы и установить значение в 0.
вк от trad, эта:
V7AppProfile
23. dreamadv 155 15.02.22 10:27 Сейчас в теме
24. user1203706 13 15.02.22 10:30 Сейчас в теме
(22) при времени в (0) будет сразу отбой при попытке захвата.
1.Если нужно что-то точно провести, то можно в цикл загнать с количеством попыток, например 10.
Но, с временем 0 никто никого не ждёт никогда. Это самый быстрый вариант работы базы.

3.нет, это отдельная вк от Орефкова. Использовать совместно с turbomd.vbs
25. user1203706 13 15.02.22 10:35 Сейчас в теме +3 $m
Тут
https://openconf.1cpp.ru/vk/turbomd/
и тут взять последнюю, правильная 1.0.0.1 от 26.10.06

https://www.1cpp.ru/forum/YaBB.pl?num=1160630298/0
https://www.1cpp.ru/forum/YaBB.pl?num=1341261665

Порядок использования - в ПриНачалеРАботы системы после загрузки 1cpp грузить turbomd.dll,
в пофигураторе использовать OpenConf, в папке скриптов должен валяться turbomd.vbs ( есть кучка версий разных авторов, желательно иметь тот, который еще и моксель умеет выгружать)
Использование - Ctrl+m в пофигураторе - выбрать скрипт- выгрузить в файл/загрузить из файла.
Все изменения У всех сразу в предприятии.
При желании, раз в неделю, сохранять в мд.
Хотя, у нас годами изменения в файле валялись.
dreamadv; +1 Ответить
Оставьте свое сообщение

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