Версия для печати темы (https://pro1c.org.ua/index.php?s=da77bce52016121bbe281d768cf9df4a&showtopic=47111)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Конфликт блокировок
Автор: Vidocq05 08.08.18, 14:29
Конфигурация доработанная УТП 1.2 Платформа 8.3.8.2442.
После перехода с 8.2 на 8.3 часто начали появляться ошибки конфликта блокировок.
В часности при прокрутке в форме списка документа "Поступление товаров и услуг" в событии "ПриВыводеСтроки" на строчке кода:
Если НЕ ПустаяСтрока(ДанныеСтроки.Ссылка.НомерВМагазине) Тогда
Пользователи жалуются, что работать стало намного хуже.
8.3 ставилась поверх 8.2.
Кто что подскажет?
Пока в планах выгрузка в dt и потом последующая загрузка с нее. Может поможет.
Автор: andr_andrey 08.08.18, 15:24
Цитата(Vidocq05 @ 08.08.18, 15:29)
Пока в планах выгрузка в dt и потом последующая загрузка с нее. Может поможет.
Какой смысл в этом действии? С чего вдруг исчезнет конфлик блокировок?
Совет: зовите доступного вам специалиста, или начинайте с матчасти, или хотябы с http://pro1c.org.ua/redirect.php?http://www.gilev.ru/deadlock/?csspreview=true?
Автор: Zaval 08.08.18, 21:31
Цитата(Vidocq05 @ 08.08.18, 15:29)
Кто что подскажет?
Дело не в версии платформы. Доработка корявая, почти диверсия.
Автор: Vidocq05 09.08.18, 0:16
Цитата(Zaval @ 08.08.18, 22:31)
Дело не в версии платформы.
Почему тогда проявилось при переходе на 8.3?
Цитата(Zaval @ 08.08.18, 22:31)
Доработка корявая, почти диверсия.
Хотя доработка не моя, но можно подробней? Что в ней настолько критичного?
Автор: andr_andrey 09.08.18, 3:29
Цитата(Zaval @ 08.08.18, 22:31)
Доработка корявая, почти диверсия.
Есть подозрение, что она не единственная, так как автор спокойно смотрит на это.
Автор: Vidocq05 09.08.18, 9:42
А более конкретный ответ кто-то даст?
Что такое блокировки, я знаю. Но скорее всего не в полной мере понимаю этот процесс. Уточняю вопрос: Почему происходит конфликт блокировок конкретно при выполнении данной строчки кода?
Автор: sava1 09.08.18, 9:46
Что есть Ссылка в данных строки?
Автор: Vidocq05 09.08.18, 10:28
sava1 @ Сегодня, 10:46
,
Ссылка на документ "Поступление товаров и услуг".
Автор: andr_andrey 09.08.18, 10:57
sava1 @ Сегодня, 10:46
,
Автор же указал "в форме списка документа "Поступление товаров и услуг" в событии "ПриВыводеСтроки"
Цитата(Vidocq05 @ 09.08.18, 10:42)
Почему происходит конфликт блокировок конкретно при выполнении данной строчки кода?
Если грубо, то "ДанныеСтроки.Ссылка.НомерВМагазине" вызывает неявный запрос для каждой строки на форме.
При каждом запросе в базу 1С накладывает либо автоматические блокировки, либо указанные в коде разработчиком.
Далее умножаете количество неявных запросов на количество одновременно открывающих эту форму и делаете выводы -
Цитата(Zaval @ 08.08.18, 22:31)
почти диверсия.
Автор: Vidocq05 09.08.18, 11:20
Цитата(andr_andrey @ 09.08.18, 11:57)
При каждом запросе в базу 1С накладывает либо автоматические блокировки, либо указанные в коде разработчиком.
В коде не указаны блокировки, во всяком случае в данной процедуре.
Я наверное что-то не знаю. Разве в данном случае накладываются автоматические блокировки?
Есть похожий код в другой базе, только модуле формы списка "Реализация товаров и услуг". Документов там набивается больше, пользователей тоже больше, но конфликта блокировок никогда не было, только тормаза при отображении списка документов (ну это и понятно). Почему здесь возникает конфликт блокировок?
Автор: sava1 09.08.18, 11:21
пропустил "в форме списка".
попробуйте использовать ПриПолученииДанных ?
Автор: Petre 09.08.18, 11:34
Удивительно, что все заговорили о неоптимальности кода. Но то, что это произошло просто при переходе на другую платформу, никого не смущает...
Vidocq05, расскажите лучше порядок действий. Только ли платформу меняли? Что со старой? Клиент-сервер, СУБД? Архитектура, инфраструктура?
Автор: Vidocq05 09.08.18, 11:49
Petre @ Сегодня, 12:34
,
Данный код существует уже давно, но ошибки посыпались резко при переходе на 8.3. Меняли только платформу. Админ установил ее поверх 8.2. База серверная - SQL Server 2005.
Автор: Petre 09.08.18, 12:10
СУБД (не версия, а экземпляр) не менялась? База данных в СУБД? Параметры запуска (клиента / сервера)? Конфигурация не редактировалась (в т. ч. и режим совместимости)? Выполнялись ли рекомендации при переходе на новую платформу (перестроение полнотекстового индекса и прочее)?
Автор: andr_andrey 09.08.18, 12:54
Цитата(Petre @ 09.08.18, 12:34)
Удивительно, что все заговорили о неоптимальности кода. Но то, что это произошло просто при переходе на другую платформу, никого не смущает...
8.3 от 8.2 отличается множеством переделок в доступе к данным (можете проверить в http://pro1c.org.ua/redirect.php?http://downloads.v8.1c.eu/content//Platform/8_3_8_2442/EU/1cv8upd.htm поиском строки "Работа с СУБД").
Нельзя быть уверенным, что ничего не ухудшили в "устаревших" автоматических блокировках. А кто тут без - греха?
Автору остается только смотреть запросы в СУБД и какие блокировки конфликтуют, либо силой мысли искать огрехи в коде.
Автор: Petre 09.08.18, 13:23
QUOTE (andr_andrey @ 09.08.18, 12:54)
можете проверить в Изменениях платформы поиском строки "Работа с СУБД"
Какие ваши подозрения? Я, кроме пунктов об улучшении планов и уменьшении блокировок ничего не нашел...
Уверенным никогда нельзя быть. Возможно даже, что простое изменение платформы на какой-нибудь 8.3.10 релиз исправит ситуацию. В 8.3.8 на багтреке - более шестиста ошибок!
Автор: Vidocq05 09.08.18, 14:11
Цитата(Petre @ 09.08.18, 13:10)
СУБД (не версия, а экземпляр) не менялась? База данных в СУБД? Параметры запуска (клиента / сервера)? Конфигурация не редактировалась (в т. ч. и режим совместимости)?
С СУБД ничего не делали, параметры запуска не менялись, конфигурация не менялась.
Цитата(Petre @ 09.08.18, 13:10)
Выполнялись ли рекомендации при переходе на новую платформу (перестроение полнотекстового индекса и прочее)?
Нет, просто установили платформу и все.
Цитата(andr_andrey @ 09.08.18, 13:54)
8.3 от 8.2 отличается множеством переделок в доступе к данным (можете проверить в Изменениях платформы поиском строки "Работа с СУБД").
Навряд ли дело в версии платформы, т.к. я писал выше:
Цитата(Vidocq05 @ 09.08.18, 12:20)
Есть похожий код в другой базе, только модуле формы списка "Реализация товаров и услуг". Документов там набивается больше, пользователей тоже больше, но конфликта блокировок никогда не было, только тормаза при отображении списка документов (ну это и понятно).
Там стоит такая же версия платформы.
Автор: Vidocq05 28.08.18, 15:15
В общем, победить не удалось. Вернул назад 8.2 и все нормально заработало. Пока нет времени более глубоко с этим разбираться. Возможно нужно 8.3 установить в чистом виде, а не поверх 8.2.
Но пока так...
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua