27.01.22 — 12:04
есть большая база, 1с рекомендует выставить при обновлении параметр реструктуризации оптимизированный
выставляю — получаю ошибку.
а как просто посмотреть кол-во проводок в БП , может и старым методом пройдёт , там от 100 000 пишут новый запускать ?
админы сторонние , ошибку им передал, но и тут спрошу, может кто в курсе
В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:Program FilesJavajre1.8.0_321binjava.exe
Действие: prepare
Process ID: 5340
Код возврата: 1
Ошибка: Exception in thread «main» com._1c.dmf.v8.cli.ApplicationException: com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: «The server selected protocol version TLS10 is not accepted by client preferences [TLS12]». ClientConnectionId:de2212d4-8a77-49f8-8f42-0bfd41a57046
at com._1c.dmf.v8.cli.jdbc.mssql.MsSqlDataSourceFactory.getYearOffset(MsSqlDataSourceFactory.java:105)
at com._1c.dmf.v8.cli.jdbc.mssql.MsSqlDataSourceFactory.create(MsSqlDataSourceFactory.java:51)
at com._1c.dmf.v8.cli.Migration.run(Migration.java:81)
at com._1c.dmf.v8.cli.Migration.main(Migration.java:65)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: «The server selected protocol version TLS10 is not accepted by client preferences [TLS12]». ClientConnectionId:de2212d4-8a77-49f8-8f42-0bfd41a57046
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2435)
at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1816)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2022)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1687)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1528)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:866)
at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnectionInternal(SQLServerDataSource.java:968)
at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnection(SQLServerDataSource.java:69)
at com._1c.dmf.v8.cli.jdbc.V8DataSource.getConnection(V8DataSource.java:36)
at com._1c.dmf.v8.cli.jdbc.mssql.MsSqlDataSourceFactory.getYearOffset(MsSqlDataSourceFactory.java:86)
… 3 more
Caused by: javax.net.ssl.SSLHandshakeException: The server selected protocol version TLS10 is not accepted by client preferences [TLS12]
at sun.security.ssl.Alert.createSSLException(Unknown Source)
at sun.security.ssl.Alert.createSSLException(Unknown Source)
at sun.security.ssl.TransportContext.fatal(Unknown Source)
at sun.security.ssl.TransportContext.fatal(Unknown Source)
at sun.security.ssl.TransportContext.fatal(Unknown Source)
at sun.security.ssl.ServerHello$ServerHelloConsumer.onServerHello(Unknown Source)
at sun.security.ssl.ServerHello$ServerHelloConsumer.consume(Unknown Source)
at sun.security.ssl.SSLHandshake.consume(Unknown Source)
at sun.security.ssl.HandshakeContext.dispatch(Unknown Source)
at sun.security.ssl.HandshakeContext.dispatch(Unknown Source)
at sun.security.ssl.TransportContext.dispatch(Unknown Source)
at sun.security.ssl.SSLTransport.decode(Unknown Source)
at sun.security.ssl.SSLSocketImpl.decode(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1753)
… 11 more
1 — 27.01.22 — 12:11
2 — 27.01.22 — 12:37
(1) не осилит.
3 — 27.01.22 — 13:03
(0) короче, нужно в java.security найти строки с tlsv1
4 — 27.01.22 — 13:03
и удалить из алгортима
5 — 27.01.22 — 13:04
6 — 27.01.22 — 13:05
открыть java.security, найти jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, и в ней удалить TLSv1, TLSv1.1
7 — 27.01.22 — 13:05
усё.
8 — 27.01.22 — 14:28
(2) с чего бы ?
зы у меня прав нет, админам передал
Епрст- спасибо, но вроде всё понятно там
9 — 27.01.22 — 14:36
(8) т.к. не владеет минимальным базовым навыком пользования поисковыми сервисами интернет.
т.е. проф. непригодны
10 — 27.01.22 — 14:53
Самое простое удалить эту джаву и установить из дистрибутива с сайта 1С
11 — 27.01.22 — 15:10
(10) спасибо !
12 — 27.01.22 — 15:12
(0)
>>>>а как просто посмотреть кол-во проводок в БП
какой формат базы, для начала..файловая что ле ?
13 — 27.01.22 — 15:14
(12)
sql
вопрос был средствами 1с
зы я консультант
14 — 27.01.22 — 15:14
(13) ИР открой да гляди.
Перед реструктуризацией V2 прибей все итоги V2, тогда даже не заметишь, как и пройдёт.
15 — 27.01.22 — 15:15
* прибей все итоги РБ
16 — 27.01.22 — 15:16
и да, 20 релиз я бы не ставил, лучше 18
17 — 27.01.22 — 15:18
(16) да, это понятно, везде 18 ставим
18 — 27.01.22 — 15:19
(14) точно
19 — 27.01.22 — 15:51
(10) а как узнать какую из 4ёх на сайте ?
20 — 27.01.22 — 17:49
(19) Достаточно JRE, JDK нужно для разработчиков. 11 или 8 — У вас сейчас стоит 8, но я бы выбрал 11.
21 — 27.01.22 — 17:55
(20) а в принципе любая должна подойти, чтобы реструктуризация по новому на sql взлетела? правильно я понимаю ?
или там возможны заморочки?
22 — 27.01.22 — 19:07
(21) Да
23 — 27.01.22 — 23:28
Ваша проблема вызвана тем, что в новых сборках Java (JDK/JRE) старый протокол TLS 1.0 запрещен как небезопасный, а MS SQL Server пытается использовать именно ее
Какие могут быть решения:
1) Использовать более старую версию Java (не релиз, а именно версию внутри врупного релиза т.е какую более раннюю версию Java
2) Изменить умолчания Java, как описано в (6)
3) Обновить MS SQL Server, чтобы он использовал более современные версии TLS
У Microsoft есть подробная инструкция
24 — 27.01.22 — 23:28
25 — 28.01.22 — 00:12
в рабочее время отгрузки, так что я могу только вечером делать
(22) установил с сайта 1с 11 версию , сначала не видело яву, прописал в кфг
стало ругаться на TLSv1, TLSv1.1
прописал в секюрити явы — написало нету классов в 11 яве
поставил 8ую, снова прописал путь в кфг и поправив секьюрити — взлетело
(24) я не особо в теме, а админы особого желания разбираться не изъявляли, ну и имхо это сложнее , чем исправить секьюрити
всем спасибо !
МихаилМ
26 — 28.01.22 — 00:30
(25) если админы не понимают устно ,то переходите на письменно. это азы правил корпоративного выживания. за одно и свою персону прикроете.
Как исправить зависание Центра обновления Windows?
Windows — одна из самых популярных операционных систем, а также одна из самых «подверженных проблемам» операционных систем.
Когда мы говорим о Windows, в первую очередь мы думаем об обновлениях.
В большинстве случаев процесс обновления не сильно беспокоит пользователей, но иногда во время работы обновление Windows зависала, и это могло быть проблемой.
В этой статье мы расскажем, как исправить застывание или зависание обновления Windows.
Как исправить зависание Центра обновления Windows?
Как узнать, зависло ли обновление Windows?
Если вы видите одно из этих сообщений в течение длительного времени (более 3 часов), скорее всего, обновление зависло (применимо для Windows 10/8/7/Vista).
- Подготовка к обновлениям Windows, не выключайте компьютер (обычно встречается в Windows 10),
- Настройка обновлений Windows, xyz% завершено, компьютер не выключайте (часто встречается в Windows 7/8/Vista),
- Работаем над обновлениями, xyz% завершен, не выключайте компьютер (Windows 10/8/7),
- Не выключайте компьютер, пока это не будет сделано. Установка обновления x из x… (Windows 7/Vista),
- Готовим Windows, не выключайте компьютер.
Мы рекомендуем вам подождать не менее 3-4 часов, если вы увидите какое-либо из вышеперечисленных сообщений, как будто процесс обновления идет нормально, и вы пытаетесь что-то сделать, могут возникнуть дополнительные сложности.
Причин очень много, но одна из распространенных причин, по которой обновление может зависнуть, заключается в конфликте существующего программного обеспечения с существующими обновлениями.
Если у вас есть старый ноутбук с индикатором жесткого диска, вы можете определить, зависло ли обновление или нет.
Если индикатор мигает с регулярным интервалом, это означает, что ОС обновляется, и вам не нужно ничего делать.
Однако если индикатор не мигает, можно предположить, что обновление зависло.
Возможные решения проблемы зависания Центра обновления Windows
1. Перезагрузка компьютера
Не нужно беспокоиться о появлении на экране сообщения «Пожалуйста, не выключайте компьютер».
Вы можете вернуться к Windows 10 после принудительного выключения без каких-либо проблем.
В худшем случае вы можете столкнуться с ошибками на диске, которые Windows автоматически исправит при следующей загрузке.
Нажатие «Ctrl + Alt + Del» также иногда срабатывает, если обновление застряло на определенной фазе.
Если это произойдет, компьютер перезагрузится, и вас встретит загрузка Windows.
2. Загрузитесь в безопасном режиме
Если с вашим компьютером что-то не так, вы можете определить проблему, загрузившись в безопасном режиме.
В безопасном режиме Windows загружается с минимальным набором драйверов, отвечающих за загрузку вашего компьютера, при отключении других ненужных функций.
Если с обновлением что-то пойдет не так, вы автоматически загрузитесь в безопасном режиме.
Кроме того, существует множество способов загрузиться в безопасном режиме.
Один из часто используемых методов — это переход в меню «Питание — Выбор варианта перезапуска», удерживая клавишу «Shift».
Это вызовет дополнительные параметры, из которых вы можете перейти в «Параметры запуска — Включить безопасный режим» и нажать на перезагрузку.
Затем вы можете перезагрузить компьютер и нормально загрузиться в Windows.
3. Использование восстановления системы
При каждом обновлении Windows создает точки восстановления, которые можно использовать, если в процессе обновления что-то пойдет не так.
Сделать это можно так:
Зайдите в «Панель управления».
Перейдите в «Система и безопасность — Система».
Найдите «Защита системы» слева от логотипа Windows.
В открывшемся новом окне найдите и нажмите «Восстановление системы».
Остальная часть процесса довольно очевидна.
После того, как все будет сделано, нажмите кнопку перезагрузки, и вы загрузитесь с предыдущими обновлениями Windows.
4. Использование дополнительных параметров для запуска восстановления
Если обновление зависло и компьютер не загружается, вам нужно будет создать загрузочный USB-накопитель с Windows 10 на нем.
Вы можете сделать это с помощью «Rufus», который является отличным инструментом для создания загрузочных USB-накопителей.
Когда вы закончите создание загрузочного USB, войдите в меню загрузки, нажав клавишу F2 / F12, когда во время загрузки появится логотип производителя.
Выберите параметр «Загрузить с USB / DVD-привода», чтобы загрузить программу установки Windows 10.
Внизу вы найдете опцию «Восстановить Windows 10», нажмите на нее, и вы войдете в меню «Дополнительные параметры».
5. Тестирование на сбой памяти
Повторная установка ОЗУ или жесткого диска — еще одно решение этой проблемы.
Эта проблема встречается реже, но если вы пробовали любой другой метод и не увидели результатов, вам следует продолжить и протестировать память с помощью таких инструментов, как «MemTest86».
6. Переустановка Windows
Если ничего из вышеперечисленных методов не работает, вероятно, ОС или ее файловая система повреждены и нуждаются в переустановке.
Шаги для этого такие же, как шаги, упомянутые в разделе номер 4 «Использование дополнительных параметров для запуска восстановления».
Единственная разница в том, что вместо того, чтобы нажимать «Восстановить Windows 10», вам нужно нажать «Пуск» и пошагово следовать процессу.
Если вы не столкнулись ни с одной из вышеперечисленных проблем и пришли сюда просто для получения знаний, мы предлагаем вам сделать резервную копию вашего жесткого диска.
В большинстве случаев упомянутый выше метод «Переустановки Windows» должен устранить проблему.
Однако ничто не решает проблему — не остается другого варианта, кроме переустановки Windows.
Если вы нашли решение проблемы с застыванием или зависанием обновления Windows, прочитав эту статью, сообщите нам об этом в разделе комментариев ниже.
Поделитесь этим с кем-нибудь из ваших знакомых, кто сталкивается с той же проблемой.
Долго выполняются дополнительные процедуры обновления 1С
После обновления программы 1С запускается обработка для дополнительной обработки данных. Иногда она зависает и может висеть очень долга. При этом пользователи не могут работать в 1С, не могут провести документы. При этом если запустить базу, что выходит окно “Результаты обновления программы”
Результат обновления программы
Версия программы успешно обновлена на версию 11.4.13.148
Выполняются дополнительные процедуры и обработки данных на версию 11.4.13.148
Работа с этими данными временно ограничена
Приоритет: Работа пользователей или Обработка данных 8 потоками
Как принудительно обновить 1С
Если столкнулись с такой проблемой, то можно ускорить процесс обновления 1С. Для этого переходим в меню НСИ и Администрирование – Обслуживание – Регламентные операции – Регламентные и фоновые задания”:
На закладке “Регламентные задания” находим строку с названием “Отложенное обновление ИБ”, устанавливаем на нее курсор и нажимаем кнопку “Выполнить сейчас”
Через несколько минут в окне, где ранее было зависшее обновление 1С начнется процесс обновления и вскоре увидите окно с сообщением “Дополнительные процедуры обработки данных завершены”. Закрываете его и можно начинать работу.
Как ускорить процесс реструктуризации и обновления 1С в разы
Нам всем знакомо, как долго может идти обновление: это может занимать несколько часов, а в некоторых случаях – даже
несколько дней.
Однако, его можно заметно ускорить. А для этого нужно немного погрузиться в детали и поговорить о реструктуризации 🙂
Когда в 1С изменяются метаданные (добавляются документы, реквизиты, индексы), происходит изменение структуры таблиц.
При запуске обновления создается полная копия таблицы, включая индексы – уже с новой структурой. Этот процесс называется реструктуризацией. Разумеется, это все занимает довольно заметное время.
Для случаев, когда объемы данных небольшие, это не так чувствительно.
Но реструктуризация больших баз, в которых содержатся таблицы с десятками миллионов строк, может затянуться на несколько часов или даже дней. Потеря такого количества времени – это уже весьма болезненно.
Еще в платформе 8.3.11 появился механизм, который помогает ускорить реструктуризацию в разы, а в некоторых случаях – на порядки.
С момента выхода этого релиза прошло уже 5 лет, но, судя по вопросам в Мастер-группе, до сих пор многие не знакомы с этим механизмом и не знают о его преимуществах.
Сегодняшнее видео закрывает этот вопрос:
- Объясняем, чем механизм, который появился в 8.3.11, отличается от стандартного способа реструктуризации
- Показываем, как настроить и использовать новый механизм
- Демонстрируем его преимущества и рассказываем о его недостатках
- Объясняем, кому необходим этот механизм, а кому переходить на него не стоит.
Если Вы недовольны тем, с какой скоростью проходит реструктуризация в ваших базах, это видео обязательно к просмотру.
Но даже если Вы работаете в маленькой компании и с этой проблемой еще не столкнулись – рекомендуем все-таки найти 17 минут и посмотреть его. Если завтра Вы поменяете работу и столкнетесь с такой проблемой – не придется волноваться из-за того, что Вы не в курсе таких нюансов.
Ключевые моменты видео:
- 00:00 – Постановка задачи
- 00:28 – Старый способ реструктуризации и его недостатки
- 01:50 – Новый способ реструктуризации
- 02:17 – Плюсы нового способа
- 03:04 – Установка Java на сервер 1С
- 04:18 – Настройка файла conf.cfg на клиенте
- 05:40 – Демонстрация работы старого механизма
- 07:36 – Демонстрация работы нового механизма
- 08:58 – Особенности использования нового механизма
- 09:10 – Включение протокола TCP/IP для СУБД
- 10:52 – Проверка сторонних индексов
- 13:20 – Настройка параметра MAXDOP в MS SQL
- 16:36 – Итоги
Умение находить и устранять причины медленной и нестабильной работы систем на 1С обязательно для программистов 1С
После курса Вы сможете:
- Оценивать состояние системы в любой момент времени
- Быстро находить причины замедления в программном коде – и сразу писать его так, чтобы замедления в будущем не было
- Отслеживать динамику производительности за определенный период
- Устранять ожидания на блокировках и решать проблемы со взаимоблокировками
Для кого этот курс
- Писать код, за который не стыдно – в нестабильное время особенно важно быть в компании на хорошем счету
- Быть востребованным специалистом – на каждом втором собеседовании спрашивают про умение оптимизировать 1С
- Не терять клиентов из-за того, что «ваша 1С тормозит, а вы ничего не делаете» – это и раньше было нехорошо, а теперь и вовсе непозволительная роскошь
Комментарии / обсуждение (26):
Добрый день, вижу только текстовый материал, по какой-то причине видео отсутствует или не отображается на странице, почему?
Здравствуйте, Анастасия!
Проверили — видео на странице воспроизводится корректно.
Попробуйте почистить кэш и cookie-файлы. Если это не решит проблему, стоит проверить настройки браузера, установленные в нем расширения и плагины либо воспользоваться другим браузером.
Добрый день!
Включал новый механизм. Вроде бы прошло. После пришлось поставить версию java выше 8. Стала появляться ошибка.
Отключил новый механизм, но стала появляться ошибка:
“В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:Program FilesBellSoftLibericaJRE-11-Fullbinjava.exe
Действие: revert
Process ID: 5764
Код возврата: 1
Ошибка: Exception in thread “main” java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:4061)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3157)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$100(SQLServerConnection.java:82)
at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3121)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7151)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2478)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2026)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1687)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1528)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:866)
at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnectionInternal(SQLServerDataSource.java:968)
at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnection(SQLServerDataSource.java:69)
at com._1c.dmf.v8.cli.jdbc.V8DataSource.getConnection(V8DataSource.java:36)
at com._1c.dmf.v8.cli.jdbc.mssql.MsSqlDataSourceFactory.getYearOffset(MsSqlDataSourceFactory.java:86)
at com._1c.dmf.v8.cli.jdbc.mssql.MsSqlDataSourceFactory.create(MsSqlDataSourceFactory.java:51)
at com._1c.dmf.v8.cli.Migration.run(Migration.java:81)
at com._1c.dmf.v8.cli.Migration.main(Migration.java:65)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
… 17 more”
Можете подсказать в чем тут дело?
Значит у вас в файле conf по прежнему стоит параметр для использования нового механизма обновления. Проверьте файл conf и на клиенте и на сервере.
Проверял и на сервере и на клиенте. Все убрал. Но все равно выходила ошибка. Выходила не на всех базах, только на одной. Хотя все базы расположены на одном сервере 1С.
Помогла переустановка платформы на сервере.
Нам всем знакомо, как долго может идти обновление: это может занимать несколько часов, а в некоторых случаях – даже
несколько дней.
Однако, его можно заметно ускорить. А для этого нужно немного погрузиться в детали и поговорить о реструктуризации
Когда в 1С изменяются метаданные (добавляются документы, реквизиты, индексы), происходит изменение структуры таблиц.
При запуске обновления создается полная копия таблицы, включая индексы – уже с новой структурой. Этот процесс называется реструктуризацией. Разумеется, это все занимает довольно заметное время.
Для случаев, когда объемы данных небольшие, это не так чувствительно.
Но реструктуризация больших баз, в которых содержатся таблицы с десятками миллионов строк, может затянуться на несколько часов или даже дней. Потеря такого количества времени – это уже весьма болезненно.
Еще в платформе 8.3.11 появился механизм, который помогает ускорить реструктуризацию в разы, а в некоторых случаях – на порядки.
С момента выхода этого релиза прошло уже 5 лет, но, судя по вопросам в Мастер-группе, до сих пор многие не знакомы с этим механизмом и не знают о его преимуществах.
Сегодняшнее видео закрывает этот вопрос:
- Объясняем, чем механизм, который появился в 8.3.11, отличается от стандартного способа реструктуризации
- Показываем, как настроить и использовать новый механизм
- Демонстрируем его преимущества и рассказываем о его недостатках
- Объясняем, кому необходим этот механизм, а кому переходить на него не стоит.
Если Вы недовольны тем, с какой скоростью проходит реструктуризация в ваших базах, это видео обязательно к просмотру.
Но даже если Вы работаете в маленькой компании и с этой проблемой еще не столкнулись – рекомендуем все-таки найти 17 минут и посмотреть его. Если завтра Вы поменяете работу и столкнетесь с такой проблемой – не придется волноваться из-за того, что Вы не в курсе таких нюансов.
Ключевые моменты видео:
- 00:00 – Постановка задачи
- 00:28 – Старый способ реструктуризации и его недостатки
- 01:50 – Новый способ реструктуризации
- 02:17 – Плюсы нового способа
- 03:04 – Установка Java на сервер 1С
- 04:18 – Настройка файла conf.cfg на клиенте
- 05:40 – Демонстрация работы старого механизма
- 07:36 – Демонстрация работы нового механизма
- 08:58 – Особенности использования нового механизма
- 09:10 – Включение протокола TCP/IP для СУБД
- 10:52 – Проверка сторонних индексов
- 13:20 – Настройка параметра MAXDOP в MS SQL
- 16:36 – Итоги
После курса Вы сможете:
- Оценивать состояние системы в любой момент времени
- Быстро находить причины замедления в программном коде – и сразу писать его так, чтобы замедления в будущем не было
- Отслеживать динамику производительности за определенный период
- Устранять ожидания на блокировках и решать проблемы со взаимоблокировками
Для кого этот курс
Вам нужен этот курс, если Вы хотите:
- Писать код, за который не стыдно – в нестабильное время особенно важно быть в компании на хорошем счету
- Быть востребованным специалистом – на каждом втором собеседовании спрашивают про умение оптимизировать 1С
- Не терять клиентов из-за того, что «ваша 1С тормозит, а вы ничего не делаете» – это и раньше было нехорошо, а теперь и вовсе непозволительная роскошь.
<?php // Полная загрузка сервисных книжек, создан 2023-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='
Related Posts
- Восстановление последовательности документов при закрытии месяца в Бухгалтерия 3.0 не завершается
- Заполнение табличных частей
- Формирование сводных актов выполненных работ
- Ввод поступления в переработку на основании передачи сырья (между организациями)
- Конспект по установке сервера 1С на linux
- Получение имени компьютера и его IP локально и в терминале
46 Comments
-
-
(1) да, весьма в тему, спасибо!
Reply ↓
-
Буду тестировать скоро отключение режима совместимости 8.2))) БД почти 3 ТБ.
Reply ↓
-
Двойственные чувства.
С одной стороны слава тебе Господи, наконец-то 1С сподобилась взяться за то, что куча народа ждало еще со времён 7.7. С другой стороны тут и Java, тут и Powershell… А сплясать в водолазном костюме в гамаке не надо?
Reply ↓
-
(4) аналогичные чувства… только обрадоваться хотел, но остался вопрос, почему нельзя сделать это всё прямо из платформы, по кнопке «сделать всё хорошо»?
Reply ↓
-
(4) Java — это отголоски наработок по платформе 1C 8.4. Развитие этой версии идет медленно и новостей давно не слышно, но ее наработки постепенно появляются в 8.3. На Java никто писать не заставляет, а представить машину без JRE сейчас сложно. И судя по всему с Java придется дружить всё больше — EDT, сервер взаимодействия и т.д.
Powershell для примера же приведен. Там кроме команды запуска 1С с параметрами «UpdateDBCfg -Server -v2» и нет ничего, одна консольная команда. Не внешнюю же обработку для выполнения одной консольной команды писать…
Reply ↓
-
Я один раз пробовал.
Мне вывело сообщение ошибка и на какой то внутренний модуль.
Гугл сказал что ничего не светит. я сказал ок и по старому за 6 часов обновился.
Обидно конечно.
Reply ↓
-
Интересно что за данные в базе на 1тб.
Reply ↓
-
(6)
Там кроме команды запуска 1С с параметрами «UpdateDBCfg -Server -v2» и нет ничего
CMD не подойдёт?
Reply ↓
-
(8)скорее всего продажи, чеки, заказы на перемещение / перемещения на магазины.
У нас база 3 Тб
Reply ↓
-
(8)Размер базы обычной небольшой торговой сети, может быть еще с небольшим производством…
Reply ↓
-
Можно и cmd. Друзья, конечно это не одна кнопка «сделать всё хорошо», но уже существенный задел. База — склад, продажи, логистика. Плюс у нас ещё и РИБ. Механизм обновления активно используем, все работает… На ИТС информации мало, поэтому посчитал нужным поделиться опытом и отчитаться об успехе) в дальнейшем неплохо было бы иметь возможность обновляться пакетно с возможностью логгировать ход обновления
Reply ↓
-
(12)пока логирование обновления можно наблюдать на стороне базы данных
Reply ↓
-
У конфигурации режим совместимости был 8.3.11? Или ниже?
Reply ↓
-
(14) режим совместимости был выключен. Но думаю, в режиме совместимости 8.3.11 должно отработать
Reply ↓
-
(15) значит как и завялено при режиме совместимости 8.3.10 все будет по старому!
Reply ↓
-
О даааа!!!!! Это случилось! В 1С выучили Alter Table!
Reply ↓
-
Малину портит только » На сервере 1С обязательно должен быть установлен runtime Java 8″. Вопрос «зачем так» наверное риторический…
Reply ↓
-
(18) весь «интеллект» умных скриптов T-SQL написан на Java, в недрах платформы, насколько я понял ))
Reply ↓
-
(19) т.е. можно в принципе написать левый скрипт на Java, который реструктуризует базу под новую конфигурацию и зальет туда измененный cf с гитхаба или с какого нибудь каталога?
И все будет работать?
Reply ↓
-
(19) в недрах платформы Java нет, иначе мы бы это уже «почувствовали».
Пока надеюсь что и не будет.
Reply ↓
-
-
(20) можно декомпильнуть то что написано, подправить и юзать как хочется теперь 🙂
Reply ↓
-
(23) на каждое добавление булева не надекомпилируешься. Но сама идея о неразрывном совмещении данных в базе и их интерфейса достаточно спорная.
При том, что на все итоги и индексы, целостность которых якобы гарантирует платформа, существуют процедуры SQL, выполняющие пересчеты.
Reply ↓
-
(22) ну как-то же она тексты скриптов собирает, в зависимости от выполненных действий в конфигураторе
Reply ↓
-
(26) мы бы тоже хотели знать как и почему alter возник только сейчас. Исторически сложилось, что реструктуризация выполнялась таким образом в DBF. Сначала все измененные файлы складывались в папку NewStru, затем копировались вместо находящихся в базе. Почти цитирую старый мануал: при возникновении сбоя на первом этапе файлы в базе будут первоначальных вариантов и никакие данные не будут утеряны.
При возникновении сбоя на втором этапе часть данных в базе может стать некорректной, но всегда есть возможность скопировать файлы из NewStru и завершить процесс реструктуризации вручную. Исходили из положения что бакап и изменение структуры в процессе работы с DBF по-горячему сделать невозможно, а программист, обслуживающий конфигурацию не полезет в dbf и работу платформы, но точно знает основы работы с файлами в файловом менеджере.
В SQL есть возможность добавить колонку в таблицу в процессе работы. Немонопольно. Это не проблема для SQL, это проблема конфигуратора, который не умеет работать одновременно с разными версиями данных (до и после) какой то реструктуризации.
Reply ↓
-
(7)
Вот такое у меня сейчас. Ковыряемся. Ради спортивного интереса хочу докопаться до причин.
В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:Program FilesJavajre1.8.0_181injava.exe
Действие: prepare
Process ID: 22296
Код возврата: 1
Ошибка: Exception in thread «main» java.lang.IllegalStateException: Duplicate key ae4a0c5e-f97b-4cf4-96d8-c040bf8e222b
at java.util.stream.Collectors.lambda$throwingMerger$0(Unknown Source)
at java.util.HashMap.merge(Unknown Source)
at java.util.stream.Collectors.lambda$toMap$58(Unknown Source)
at java.util.stream.ReduceOps$3ReducingSink.accept(Unknown Source)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.ReferencePipeline.collect(Unknown Source)
at com._1c.dmf.v8.converters.parameters.documentjournal.GraphContent.<init>(GraphContent.java:24)
at com._1c.dmf.v8.cli.modelparsing.ConfigurationModelParser.deserializeGraphContent(ConfigurationModelParser.java:352)
at com._1c.dmf.v8.cli.modelparsing.ConfigurationModelParser.deserializeValue(ConfigurationModelParser.java:208)
at com._1c.dmf.v8.cli.modelparsing.ConfigurationModelParser.deserializeParameter(ConfigurationModelParser.java:172)
at com._1c.dmf.v8.cli.modelparsing.ConfigurationModelParser.deserializeAttributeParameter(ConfigurationModelParser.java:155)
at com._1c.dmf.v8.cli.modelparsing.ConfigurationModelParser.deserializeEntityParameters(ConfigurationModelParser.java:139)
at com._1c.dmf.v8.cli.modelparsing.ConfigurationModelParser.deserializeParameters(ConfigurationModelParser.java:112)
at com._1c.dmf.v8.cli.modelparsing.ConfigurationModelParser.parse(ConfigurationModelParser.java:92)
at com._1c.dmf.v8.internal.integration.Arguments.getOldModel(Arguments.java:84)
at com._1c.dmf.v8.internal.integration.DmfService.prepareMigration(DmfService.java:64)
at com._1c.dmf.v8.cli.Migration.run(Migration.java:90)
at com._1c.dmf.v8.cli.Migration.main(Migration.java:65)
Reply ↓
-
(28)
at java.util.HashMap.merge(Unknown Source)
Да что то очень похожее.
Причем все базы кроме нужной реструктурировались новым методом нормально.
Но там было не к спеху, и я просто сделал по старинке.
Изменений очень много было, может в этом была проблема?
Reply ↓
-
(28) поставь Яву не 181, а 171 или младше
Reply ↓
-
(21) я на java драйвера для фискальных регистраторов пишу, очень удобно, т.к. один код работает под виндой, линуксом и андроидом. Что я делаю не так? С++ я тоже умею.
Reply ↓
-
(31) драйвера или обёртки для готовых dllso ?
Reply ↓
-
(32) библиотеки работы с com/usb готовые, драйвера мои что-то типа….
@Override
public ByteBuffer getCommand() {
ByteBuffer data = ByteBuffer.allocate(12 + cashier.length() + cashierFiscalId.length());
data.order(ByteOrder.LITTLE_ENDIAN);
data.putShort((short) 2); // отчет об открытии смены
data.putShort((short) (4 + cashier.length() + 4 + cashierFiscalId.length()));
data.putShort((short) 1021);
data.putShort((short) cashier.length());
data.put(cashier.getBytes(Charset.forName(«IBM866»)));
data.putShort((short) 1203);
data.putShort((short) cashierFiscalId.length());
data.put(cashierFiscalId.getBytes(Charset.forName(«IBM866»)));
setData(data);
return super.getCommand();
}
Reply ↓
-
(0) Спасибо за интересный материал! Не подскажите, режим совместимости с 8.2.13 возможно заставить работать этот механизм?
Reply ↓
-
(34) к сожалению, нет. Вам придется прибегать к другим методам… О том, как добавлять колонки и индексы в большие таблицы БД — куча статей есть на ИС, в том числе и у меня (не реклама)
Reply ↓
-
Надо добавить, что для клиент — серверного варианта базы нужно перезапустить службу сервера 1С
У меня возникла ошибка
В процессе обновления конфигурации базы данных при работе механизма реструктуризации второй версии произошла критическая ошибка
по причине:
При работе механизма реструктуризации второй версии возникла ошибка. Код возврата: 1. Операция: execute.
Версия платформы 8.3.13.1513
Reply ↓
-
(0) молодцы! ждем вьюхи
Reply ↓
-
(21) Ну при всей моей нелюбви к Джаве, я бы все-таки не стал называть ее мусором 🙂 Тот же Apache Kafka на ней написан и шустр до безобразия.
Reply ↓
-
(2) и еще в догонку по теме «для тех кто тюнингует 1С+MS SQL» http://v8.1c.ru/predpriyatie/questions_licence.htm#lrvs1cpp
это к последнему апдейту
ВАЖНО: Если обновление по v2 падает с ошибкой — одна из причин может быть в том, что в вашей БД есть индексы, отличные от стандартных платформенных (добавленные вручную) — их необходимо физически удалить (именно удалить, а не отключить) перед запуском обновления.
Reply ↓
-
А, говорят, Java теперь платная, Oracle денег просит за её использование
не в домашнем применении.
Reply ↓
-
(4) я думал только у меня такое ощущение)
Reply ↓
-
почти типовая УПП…
В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:Program Files (x86)Javajre1.8.0_221injava.exe
Действие: prepare
Process ID: 2660
Код возврата: 1
Ошибка: Exception in thread «main» java.lang.OutOfMemoryError: Java heap space
Reply ↓
-
Эта проблема решилась добавлением опции JavaOpts=-Xmx2048m в conf.cfg, но теперь ошибка без расшифровки
Критическая ошибка работы Java-процесса.
Путь к Java: C:Program Files (x86)Javajre1.8.0_221injava.exe
Действие: prepare
Process ID: 3392
Код возврата: 1
Ошибка:
Reply ↓
-
повышение режима совместимости УПП до 8.3.1 результатов не дало. Видать сырая еще опция
Reply ↓
-
(44) механизм работает с версии 8.3.11. Совместимость должна быть не ниже этой версии
Reply ↓
-
(45)
Неверно. У меня в режиме совместимости 8.3.6 отрабатывает.
Reply ↓
-
(1) Ирония в том, что в старом механизме реструктуризации указание MAXDOP=0 используется по умолчанию, она добавлена в качестве опции в запросе на создание индекса.
А вот в новом механизме, который описан в данной статье, разработчики почему-то забыли эту опцию включить в запрос и если в настройках сервера MAXDOP равен 1, то реструктуризация будет медленнее чем хотелось бы . Возможно следует в статье 4-м пунктом добавить, что включение на сервере MAXDOP=0 на время реструктуризации, дополнительно ускорит этот процесс.
Reply ↓
Leave a Comment
Ваш адрес email не будет опубликован. Обязательные поля помечены *
1
ответов
В процессе обновления конфигурации базы данных при работе оптимизированного механизма обновления произошла критическая ошибка
по причине:
Критическая ошибка работы Java-процесса.
Путь к Java: C:Program FilesJavajre1.8.0_221binjava.exe
Действие: prepare
Process ID: 9364
Код возврата: 1
Ошибка: Exception in thread «main» com._1c.dmf.sqlframework.SqlExecutionException: При выполнении запроса возникла ошибка
SQL reason: ERROR: column __alias3.adsrc does not exist
Позиция: 303
SQL state: 42703
SQL: SELECT __alias1.relname AS table_name, __alias2.attname AS column_name, __alias2.attnum AS column_index, format_type(__alias2.atttypid, NULL) AS type, __alias2.atttypmod AS type_specific_data, __alias2.attstorage AS type_storage, __alias2.attnotnull AS not_nullable, __alias2.atthasdef AS has_default, __alias3.adsrc AS default_value FROM (((pg_catalog.pg_attribute AS __alias2 INNER JOIN pg_catalog.pg_class AS __alias1 ON ((__alias1.OID = __alias2.attrelid) AND (__alias1.relkind = ‘r’))) INNER JOIN pg_catalog.pg_namespace AS __alias4 ON ((__alias1.relnamespace = __alias4.OID) AND (__alias4.nspname = ‘public’))) LEFT JOIN pg_catalog.pg_attrdef AS __alias3 ON ((__alias3.adrelid = __alias2.attrelid) AND (__alias3.adnum = __alias2.attnum))) WHERE ((NOT __alias2.attisdropped) AND (__alias2.attnum > 0)) ORDER BY __alias1.relname, __alias2.attnum
at com._1c.dmf.internal.sqlframework.SqlRowSet.<init>(SqlRowSet.java:80)
at com._1c.dmf.internal.sqlframework.SqlRowSetFactory.createSqlRowSet(SqlRowSetFactory.java:23)
at com._1c.dmf.internal.sqlframework.SqlConnection.executeQuery(SqlConnection.java:228)
at com._1c.dmf.internal.sqlframework.postgresql.PostgresqlDatabaseIntrospection.getTables(PostgresqlDatabaseIntrospection.java:90)
at com._1c.dmf.v8.internal.integration.Arguments.isFilePartMode(Arguments.java:234)
at com._1c.dmf.v8.internal.integration.Arguments.getFile(Arguments.java:150)
at com._1c.dmf.v8.internal.integration.Arguments.getOldModel(Arguments.java:84)
at com._1c.dmf.v8.internal.integration.DmfService.prepareMigration(DmfService.java:64)
at com._1c.dmf.v8.cli.Migration.run(Migration.java:90)
at com._1c.dmf.v8.cli.Migration.main(Migration.java:65)
Caused by: org.postgresql.util.PSQLException: ERROR: column __alias3.adsrc does not exist
Позиция: 303
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2310)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2023)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:217)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:421)
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:318)
at org.postgresql.jdbc.PgStatement.executeQuery(PgStatement.java:281)
at com._1c.dmf.internal.sqlframework.SqlRowSet.<init>(SqlRowSet.java:65)
… 9 more