Kernel3x - решение проблемы 1 гигабайта для DBFной версии 1С:Предприятие 7.7

08.05.12

База данных - Инструменты администратора БД

Одним из недостатков DBFной версии “1С:Предприятие 7.7” является ограничение на размер файлов – 1 гигабайт. При этом если система эксплуатируется в однопрограммном режиме, то размер файла может быть 2 гигабайта, однако если появится второй пользователь, а файл будет больше 1 гигабайта, то система 1С начинает сбоить по ЧТЕНИЮ, у одного пользователя, если другой выполняет запись/обновление данных. Например, если выполнять цикл по выборке данных, то он может “тихо” прекратиться в любой момент, не предоставив программе всего множества объектов.

Скачать файлы

Наименование Файл Версия Размер
-
.1204118412 41,60Kb
2215
.1204118412 41,60Kb 2215 Скачать бесплатно
-
.1223930460 12,30Kb
724
.1223930460 12,30Kb 724 Скачать бесплатно
Kernel33.zip
.zip 16,61Kb
292
.zip 16,61Kb 292 Скачать

O сути проблемы - FoxPro совместимом формате доступа к DBFам.
Для управления блокировками записи используется функции Win API LockFile() и UnlockFile(). Эти функции обеспечиваю блокировку участка файла “полностью” и по записи и по чтению. Если использовать эти функции непосредственно к участкам файла эквивалентным самим записям DBFа, то теряется возможность чтения записи. Поэтому в FoxPro принят “хитрый алгоритм” – блокируются участки файла начиная со 2GB, упрощенно говоря, отдельные куски файла логически сопоставленные с номерами реальных записей DBFа. Таким образом, реальный участок файла можно читать, т.е. моделируется блокировка по записи, но не по чтению. Если же реальные записи начинают располагаться после 1GB, то “технологические блокировки” наезжают на процесс чтения. Возникает сбой по чтению. В 1С не обрабатывается должным образом аварийный код возврата. Например, в функциях найти по ключу в 1С - получают аварийны код возврата, а в программу пользователя (конфигурацию) возвращают признак – объект не найден.
В Kernel33 делается очень простая вещь. Все обращения к функциям Win API отправляются в kernel32. А для функций LockFile() и UnlockFile() к параметру, указывающему стартовый адрес блокировки, добавляется число 2GB и так отправляется в kernel32. Таким образом, технологические блокировки уходят в 4GB. А так как существует уже другое ограничение на размер DBFов в 2GB, то в 4GB никакая реальная запись не попадёт.

Другие решения для снятия ограничения на размер информационной базы данных в “1С:Предприятие 7.7”:
1) http://www.etersoft.ru/index.php?option=com_content&task=view&id=157&Itemid=1
2) //infostart.ru/projects/1359/
3) //infostart.ru/projects/811/
В разработках номер 2,3 размер таблицы ограничивается количеством записей – 2147483647 штук, а не размером файла.

См. также

Монопольное открытие формы обработки 1с77

Инструменты администратора БД Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Блокировка открытия формы обработки одним пользователем.

1 стартмани

24.05.2023    586    igor7777    1    

0

Групповое переименование файлов для 1С 7.7

Инструменты администратора БД Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Простецкий скрипт переименования файлов в папке в нижний регистр, будет полезен программистам и системным администраторам имеющим навыки програмирования в 1С. Можно легко настроить под себя, спасает мне периодически час времени, может, кому еще будет полезен.

1 стартмани

18.02.2022    3780    0    igor7777    6    

2

[7.7 ТиС. СТОП-БАРДАК] Автоперенос непроведенных документов на текущий день

Инструменты администратора БД Оперативный учет 7.7 1С:Торговля и склад 7.7 Управленческий учет Абонемент ($m)

Боремся с бардаком. Работы в прошлых датах запрещены. Непроведенные документы (по разным причинам) - автоматом переносятся в начало текущего дня при запуске любого первого сеанса 1С в текущем дне. Задержка старта 1С - практически незначима. Не требует настройки, не требует допрограммирования (исключая один оператор вставки в процедуру старта системы). Можно обработку выполнять вручную с любой периодичностью.

2 стартмани

25.05.2020    5684    2    CheBurator    3    

2

Анализ 1С: Предприятие 7.7 с помощью ELK стека

Журнал регистрации Инструменты администратора БД Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Рассмотрим систему на базе Elasticsearch, Logstash и Kibana (ELK Stack) для анализа логов 1С Предприятие 7.7 с целью визуализации и анализа событий 1С.

22.01.2019    11094    phsin    20    

27

Автоматическое объединение конфигураций 1С 7.7

Инструменты администратора БД Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Скрипт позволяет выполнить объединение конфигураций и реструктуризацию из командной строки. Объединение выполняется штатными средствами конфигуратора 1С 7.7, взаимодействие с которым происходит путем посылки нажатий клавиш. Пригодится, если есть необходимость обновить или постоянно обновлять множество ИБ.

1 стартмани

22.04.2017    15666    4    devlabnn    2    

6

Перепроведение по счету

Инструменты администратора БД Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Украина Бухгалтерский учет Абонемент ($m)

Перепроведение по счету для конфигурации Бухгалтерский учет для Украины, 1С: Предприятие 7.7

1 стартмани

23.09.2016    3745    1    Genyak    1    

0

Решение проблем с печатью, предварительным просмотром печати, пакетной печатью 1С: 7.7 в терминале

Инструменты администратора БД Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Периодически сталкивался со следующими проблемами при печати в 1С: 7.7 работающей под терминалом: 1) После замены принтера на клиентской машине 1С пытается печатать на старый принтер. 2) Отсутствует предварительный просмотр при печати. 3) Не работает печать без предварительного просмотра (пакетная печать документов). 4) В некоторых формах печатает, в некоторых нет.

1 стартмани

09.06.2016    27132    18    tux    3    

1

Логирование в 1С

Инструменты администратора БД Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Часто бывает необходимо отслеживать состояние часто повторяющихся регламентных заданий. Например, синхронизация данных с IP-телефонией, которая может производиться каждую минуту, синхронизация с сайтами, синхронизация данных с различными системами. Использовать для этих целей логирование 1С чрезвычайно неэффективно и не удобно. В таких случаях удобно использовать подход, применяемый в Unix-системах: писать логи в обычные текстовые файлы, а потом делать их обработку через эффективно работающие Unix-команды: grep, tail, cat, less и т.п.

18.05.2016    34956    rudjuk    21    

33
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
95. yra111 23.05.13 14:25 Сейчас в теме
Поставил на терминалку 2003виндовс сервера - чтото периодически при запуске 1с рунтайм еррор вылезает, не всегда , но частенько.Что можно пошаманить попробовать?
97. hogik 443 23.05.13 17:00 Сейчас в теме
(95)
"рунтайм еррор вылезает"(с)
Подробнее, пожалуйста. ;-)
(96)
"и потом этот самый еррор"(с)
Если есть подозрение на Kernel3x - отключите. И подождите раза три по "полдня"(с).
Отпишите о результатах...
96. yra111 23.05.13 14:32 Сейчас в теме
ожидание захвата таблицы константы для записи... и потом этот самый еррор, перезагрузить сервак помогает но потом опять надо перезагружать через полдня..
98. porese 23.05.13 17:40 Сейчас в теме
не может из за него вылетать, опенконфиг не стоит случайно (из за него было не раз, лечилось переустановкой опенконфа). И кстати стоит сервер поставить 2008, по сравнению с 2003 - небо и земля, сбоев меньше гораздо и работает шустрее. может еще какие хуки стоят или зараза кернел перехватывает.
Кстати база весит 12 гигов (файл проводок 1.6 гиг, партии 1.4гиг...), использую хук на основе керлер33, но переписанный со слипом. Проблем нет. Если кому интересно выложу.
99. Ёпрст 1063 23.05.13 17:46 Сейчас в теме
(98) опенконф никакого отношения к режиму "Предприятие" не имеет вообще, он только для Пофигуратора предназначен.
100. porese 24.05.13 10:38 Сейчас в теме
Если кого интересует (98) хук называется sleep_dbf_1g кинул на https://www.dropbox.com/sh/u8pc48stjuq4nvd/EGNstMZGm2
(99) если появляется только в режиме предприятия то да.
101. yra111 24.07.13 05:27 Сейчас в теме
При обрезке wrap-ом 7.7предприятия на этапе пометки на удаление документов всё вешаеться с ошибкой
error #:-120
write to file 1SBKTTL.DBF
kernell стоит, но дело возможно не в нем... база вся 4.4 гб, файл 1SBKTTL.DBF 2.15 Гб.
нп диске еще полтора гига свободных , возможно просто не влезает еще раз это файлик записать (2.15)
102. Ёпрст 1063 24.07.13 08:25 Сейчас в теме
(101) предел для дбф - 2 гига.
Ты в него уперся.
Удали файло итогов и сделай пересчет.
103. yra111 24.07.13 16:48 Сейчас в теме
эм, так если сделать пересчет - оно снова 2+ ГБ настрогает.И вопрос - почему не при формировании остатков (когда фалик подрастает ),а при пометке на удаление?
104. Ёпрст 1063 24.07.13 16:52 Сейчас в теме
106. hogik 443 24.07.13 19:59 Сейчас в теме
(103)
Надеюсь, у Вас не используется для этого файла средство исправления другой проблемы:
http://infostart.ru/public/77617/
107. yra111 25.07.13 04:55 Сейчас в теме
(106)нет, там вдвое меньше примерно.
по достижении файликом 2.147 ГБ вылезвает та самая ошибка.
Я так понял мне придеться сформировать итоги, и потом кусками помечать на удаление, и делать ТИИ базы в промежутках.

Я так понял,при отметки док-та на удаление проводки не стираються из файла, просто помечаються как неактивные?
Но всёже странно что файлик при этом увеличивает размер.
108. Ёпрст 1063 25.07.13 08:59 Сейчас в теме
(107) еще раз - идёт пересчет итогов.
105. Ёпрст 1063 24.07.13 16:53 Сейчас в теме
и это, каждый раз при любом проведении/отмене проведения доков идет пересчет итогов как бэ..
у тебя там нулевых записей (те, в которых все числовые показатели по нулям) - до едрени фени в каждом квартале теперь. При пересчете, их не будет.
109. a1ex4ndr 5 16.10.13 11:53 Сейчас в теме
Что то не увидел как подключать kernel33.dll - просто как обычную длл? Через regsvr32?
и кстати в архиве который скачивается в тхт про ограничения 1 гиг ничего, только:
В Kernel33.dll версия 2.0.0.1 внесен алгоритм задержки между опросами блокировки.
Время паузы в миллисекундах задаётся через переменную среды окружения - Kernel33.
Если переменная отсутствует или ее значение меньше или равно нулю, то пауза между
опросами блокировки не выполняется. Рекомендуемой значение от 10 до 100 миллисекунд.
110. hogik 443 16.10.13 20:18 Сейчас в теме
(109)
Александр (a1ex4ndr).
Вы скачали т.н. изменения. Описание и тестирующая обработка в двух других файлах.
P.S. В старом "дизайне" сайта страница скачки была более наглядной.
P.P.S. Обязательно посмотрите (21) сообщение данной темы.
111. a1ex4ndr 5 17.10.13 09:37 Сейчас в теме
112. planod 21.11.13 12:17 Сейчас в теме
Позвольте уточнить: после установки kernel37.dll разработку http://infostart.ru/public/15367/ можно отключить?
113. hogik 443 21.11.13 17:11 Сейчас в теме
(112) Да. Нужно отключить при использовании любой версии Kernel3x.
114. planod 21.11.13 18:11 Сейчас в теме
(113) спасибо большое за уточнение.
А есть ли принципиальная разница между версиями 33 и 37? Выше у одного из участников конференции "взлетело" только версия 37...
115. hogik 443 21.11.13 18:27 Сейчас в теме
(114)
Вроде, про это написано в описании.
Разница в том, что в 37 и вторую версию 33 включен алгоритм решения проблемы про 100%.
116. planod 25.11.13 07:42 Сейчас в теме
После установки, пользователи стали жаловаться на скорость работы. Подскажите, с чем это связано может быть?
117. hogik 443 25.11.13 17:31 Сейчас в теме
(116)
"с чем это связано"(с)
Связано с алгоритмом решения проблемы про 100%.
Скорее всего у Вас система работает в режиме терминал-сервер на не очень слабом железе в части количества CPU (ядер) и скорости CPU+RAM. Тогда надо ставить "вторую" версию и заниматься подбором времени ожидания вплоть до нулевого значения.
118. hogik 443 26.11.13 02:43 Сейчас в теме
(116)
Вот вспомнил. ;-)
Есть вариант задать алгоритм про 100% точно такой как в http://infostart.ru/public/15367/
Для этого надо в Kernel37.dll найти символы 0000010 и заменить их на 0000001.
119. bahus87 06.06.14 10:47 Сейчас в теме
Ткните чайнику... куда именно кидать Kernel37.dll?

Просто "каталог исполнительных модулей 1С" ни о чём не говорит, яндукс тоже...
121. Ёпрст 1063 06.06.14 11:51 Сейчас в теме
120. Ёпрст 1063 06.06.14 11:50 Сейчас в теме
122. venera79 21.01.16 07:36 Сейчас в теме
Можете пояснить, что значит:
К базе данных не должно быть обращений из модифицированной и не модифицированной 1С одновременно, т.к. это приведет к порче базы данных.
123. hogik 443 21.01.16 17:10 Сейчас в теме
(122)
Венера (venera79).
Если пользователи одновременно запускают сессии 1С по отношению к одной базе данных из разных каталогов исполнительных модифицированных и не модифицированных файлов, то будет использоваться различный алгоритм блокировки. А т.к. в СУБД блокировки используются для согласованной обработки информации несколькими задачами (сессиями), то "согласия" ;-) не будет.
124. Cthulhu 1 08.12.17 17:36 Сейчас в теме
******* Win2008r2 x64 ent терминальная сессия solution7 (секретный релиз), kernel32 заменено на kernel33 в bkend.dll, bkend0.dll, seven.dll:
"точка входа в процедуру WriteProcessMemory не найдена в библиотеке DLL KERNEL33.DLL"
******* Win2008r2 x64 ent терминальная сессия, оригинал(./солюшена) kernel32 заменено на kernel33 в bkend.dll, seven.dll:
"точка входа в процедуру GetACP не найдена в библиотеке DLL KERNEL33.DLL"
*******
никто не сталкивался? как лечить?
125. Cthulhu 1 08.12.17 19:30 Сейчас в теме
(124) пардон кривые руки
(уже не отредактировать, администратор, сотрите, пожалуйста, если надо)
131. hogik 443 06.10.20 01:46 Сейчас в теме
(126)
Посмотрите сообщение № 30 в теме:
https://forum.infostart.ru/forum9/topic36308/
132. hydra88 06.10.20 14:36 Сейчас в теме
(131)
Длина полей была небольшая, все дело в отборах и сортировке. Спасибо за информацию)
133. hogik 443 06.10.20 21:24 Сейчас в теме
(132)
Дело в размере ключа получаемого в «индексном» выражении. А если используются отборы/сортировки, то это выражение включает в себя несколько полей. И ключ может стать больше 117 байт даже если размер отдельного поля не больше 117 байт.
Например (из ссылки сообщения 131 данной темы):
I=DESCR |of DESCR |0 |DESCR(UPPER) |DESCR - «индексное» выражение из одного поля: DESCR (Наименование).
I=VI7481 |VI7481 |0 |SP7481(UPPER=128),DESCR(UPPER) |VI7481 - «индексное» выражение из двух полей: SP7481+DESCR.
134. user1889368 12.05.23 13:28 Сейчас в теме
Добрый день, Владимир!

Скачал Вашу разработку, но что с ней делать не понял (хотя я программист). Если можно, опишите процесс установки поподробнее, пожалуйста.
Прикрепленные файлы:
135. hogik 443 12.05.23 19:58 Сейчас в теме
(134) Скачайте все ZIP-ы. В самом раннем есть инструкция.
136. user1889368 15.05.23 09:39 Сейчас в теме
(135) Спасибо, увидел. Так в общем-то и сделал, проблема пропала. Спасибо (в сотый раз)!
Оставьте свое сообщение