Версия для печати темы (https://pro1c.org.ua/index.php?s=940368cea1c3e666c9e068c47d7f0220&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 поиском строки "Работа с СУБД").
Нельзя быть уверенным, что ничего не ухудшили в "устаревших" автоматических блокировках. А кто тут без - греха? 44000000.gif
Автору остается только смотреть запросы в СУБД и какие блокировки конфликтуют, либо силой мысли искать огрехи в коде.

Автор: 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