Имя: Пароль:
1C
1C 7.7
v7: Через раз отображаются данные и некорректно выполняются обработки
,
0 walcot
 
13.04.20
09:28
Добрый день, нужен совет намученных опытом граждан)
Имеется файловая 1Сv7, бухгалтерия для РБ. С недавнего времени стали происходить странные вещи, вот пара таких:
1. Построили оборотку, далее двойным кликом пытаемся провалиться в любую строку, но дальше показывает пустой отчёт. Ок, закрываем и ещё раз пытаемся провалиться, и так два-три раза и только потом корректно показывает данные. Также бывали случаи, когда не полностью попадают данные в ту же самую обработку, т.к. 1-2 документа словно их нет.
2. Иногда случается, при работе внутренней обработке (загрузка банковской выписки), она внезапно заканчивает работу и формирует документ наполовину загруженный. Хотя по окончании работы обработка должна выдать окно с предложением провести этот документ.
Пока критичного ничего не случилось, но это дело времени. Кажется, что с базой есть какие-то проблемы, что можно попробовать сделать?
1 Bigbro
 
13.04.20
09:45
если проблему удается воспроизвести - запускаем отладчик и смотрим что идет не так.
2 trad
 
13.04.20
09:49
ТИИ на копии
3 Ёпрст
 
13.04.20
10:08
(0) для начала, удалите все файлы *.cdx и зайдите монопольно, если не поможет, удалите 2 файла бух итогов и сделайте полный пересчет бух итогов

(2) воооттт этого не надо делать.
4 andrewalexk
 
13.04.20
12:38
(3) :) это чем же на копии да повредит-то?
5 Ёпрст
 
13.04.20
12:49
(4) ну если не жаль потраченного времени с неизвестным результатом, то пусть делает
6 Cthulhu
 
13.04.20
12:58
размер какого-то dbf-файла превысил 1гб (или если используется кернел33х - 2Гб). судя по симптомам это скорее всего файл журнала документов (или проводок или отборов). в таких случаях процесс обработки (перебора результатов) любой выборки тупо прерывается если кто-то другой записывает данные в базу.
для проверки гипотезы - попробуй то же самое протестировать в монопольном режиме. если в монопольном режиме все работает корректно, а в разделенном "тоработает-тонеработает" -- значит оно (тем более если есть дбф-ки больше 1Гб)
7 Cthulhu
 
13.04.20
13:02
(6)+: "что делать" в таких случаях:
1) на первых порах можно установить kernel33x (гуглвпомощь) - это решение "оттягивает конец" - т.е. предельный размер дбф-ки, при котором не возникают подобные косяки, с таким решением уже не 1гб а 2гб.
2) следующий необходимый шаг - обрезка базы и/или переход на скл.
8 andrewalexk
 
13.04.20
15:11
(5) :) ну я согласен - там есть нюансы (можно исправить то что тии не делает) но попытка не пытка
9 walcot
 
13.04.20
15:58
(6) да, размер 1SENTRY.DBF перевалил за 1 Гб. Видимо подошло время обрезки БД. Спасибо за наводку, буду учить про Kernel3x.
10 walcot
 
20.04.20
12:13
Чтобы я правильно понял, после интеграции kernel33 появится возможность писать в таблицы пока они не вырастут до 2 Гб. После ничего уже не запишешь, выдаёт error 120. Эту ошибку уже не победить, останется только резать базу или SQL?
11 Djelf
 
20.04.20
12:37
(10) Можно и больше 2Gb: https://gyazo.com/622763c039b65907291289f4c9ec1206
С dbeng32 от Wirth https://cloud.mail.ru/public/3mVX/4trK45on8
Это альтернативный движок работы с dbf, а не патч, которым является kernel33.
Только это уже не классический dbf получается, vfp его уже не прочтет. До 2Gb лучше не доводить.
12 walcot
 
20.04.20
14:08
(11) а какие подводные камни с новым движком могут быть, придётся код править? Как я понял достаточно просто заменить dbeng32.dll при старом kernel32?
13 Djelf
 
20.04.20
14:58
(12) Никаких подводных камней не должно быть. Просто подменить библиотеку и все.
Бонусом еще идет снятие загрузки на процессор при блокировке. Возможно патчи ромикса по этому поводу будут конфликтовать.
Хотя кто-то писал что на ней стало вылетать, но там и 1с++ и formex древние были, но тот кто это сообщил так и не ответил закончились ли вылеты после обновления.
Но у меня лет 6 работает в терминале. В 3х конторах. И ничего такого из-за нее замечено мной не было.
14 Djelf
 
20.04.20
14:59
+(13) Да, и kernel** ставить с ней тоже не надо.
15 Злопчинский
 
20.04.20
20:01
(14) а что в вирте еще есть такого что в родном нет?
16 Djelf
 
20.04.20
20:37
(15) А хрен его знает, что там еще может быть ;)
Но 2Gb+ и отсутствие 100% проца при блокировки там точно есть.
"Закладок" нет, не нашел, смотрел Гидрой от АНБ ;)
17 Злопчинский
 
20.04.20
21:20
(16) там же вроде какое-топодобие в вирте клиент-сервера прикручено было. и даже кто-то и не один - юзали базы в таком варианте..?
18 Cthulhu
 
20.04.20
23:05
(11):
codebase? не катит - там блокировки кривые. автор решения поэтому сам отказался.
advantage? там дфигища чего "по-другому".
или еще что-то? ссылку бы не кривую (не мылру и не гуандекс) плз?
19 walcot
 
21.04.20
09:07
(13) А если база изредка используется не только через терминал, то файл из dbeng32_wirth.7z для машин откуда изредка запускается база, а файл из dbeng32_wirth_nofb.7z на сервере/терминале?
20 Djelf
 
21.04.20
10:20
(17) Да, было. Последний клиент/серверный и бесплатный v7dbnet https://cloud.mail.ru/public/4HaY/4D52dsiPC

(18) Протух сайт wirth.ru, давно протух. Что-то есть в архиве интернета, но темы с этим движком там нет.  И это не codebase и не avantage. Движок был переписан с нуля.

(19) Ну там я применил такой же патч, как и к оригинальному Подскажите про корректировку dbeng32.dll
По сетке библиотеку с таким патчем использовать нельзя.
21 Arbuz
 
21.04.20
12:54
(17) я юзаю давно и успешно.
(15) там много чего есть.
Сервер Вирт:V7DBNet – создан специально для работы с 1С:Предприятием 7.7, для повышения производительности работы
платформы в режиме DBF. Перевод 1С:Предприятия из режима блокировок в режим транзакций, а также кэширование данных на
стороне клиента, устраняет падение производительности 1С при работе по сети («проблема второго пользователя»). Файлы DBF не предоставляются в общий доступ, с ними работает только один сеанс – сервер, что позволяет не использовать специальных «серверных» операционных систем, а также снизить требования к «железу» сервера. Также тот факт, что файлы находятся на защищенной области диска, интересен с точки зрения политики безопасности организации.
Клиентская часть разработки перехватывает обращения к файлам DBF и CDX и передает запросы на сервер, сервер возвращает
результат в виде кэш-страниц. Далее клиент работает с такой страницей без обращения к серверу, пока сервер не сообщит о потере ее актуальности.
Для обеспечения надежности каждый сеанс работает с сервером через изолированную транзакцию, что помимо стабильности
обеспечивает полную параллельность доступа по чтению, даже если в данный момент происходит запись в таблицы.
Запись происходит также в отдельной изолированной транзакции, но поочередно. Клиент подает запрос серверу на запись, сервер добавляет его в очередь ожидания, или сразу дает разрешение. Сервер регулирует очередность записи, разделяя время между претендентами, сводя к минимуму «Ошибку блокировки транзакции». Также, для исключения неудачного захвата транзакции, в клиенте, стандартный вопрос 1С о невозможности захвата транзакции заменен на вопрос с автоповтором попытки через 3 секунды.
Если клиент сообщает, что он завершает запись успешно, и других измененных данных не будет, сервер отражает измененные
данные в файлах и фиксирует совою транзакцию. В случае неудачного завершения транзакции, она просто удаляется, никаких
изменений не происходит.

и это не всё. есть ещё, например, перенос индексов в отдельный каталог (на рам-диск), сообщения пользователям, определение кто блокирует, заверение сеансов, управление транзакциями на чтение или на запись, оперативная блокировка базы на новые подключения, определение необходимости реиндексации, исключение IDELETED из определённых таблиц.
это какой-то джедайский меч - выводит работу с клюшками на совершенно иной уровень, например можно работать через впн с достаточно узким каналом (4 мбит).
и главное - работает 1sqlite. есть конечно и проблемы, но за годы использования они более-менее изучены.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.