1с 7 как сохранить конфигурацию
После некоторого изучения у меня были инструменты для решения проблемы с сохранением файлов в конфигурации и обработках 1С 7х, которыми я успешно и пользовался.
Поэтому вот решил поделится своими инструментами, ну и результатами исследования проблемы.
Вкратце о файлах:
File2BMP.exe - внедряет файл в картинку BMP.
File2BMP.rar - исходники вышестоящего
ExtForms KZK Starter.ert - моя запускалка защищенных обработок.
Test.rar - тестовая база
Protect.rar - закрытая тестовая база
В оригинальном решении вроде бы все было, но . надо было помнить некую минимальную информацию, а именно: имя файла и его размер. В ходе дискуссии по решению, предлагались идеи использовать палитру картинки, как FAT (не буду подробно писать что это), благо формат BMP. вроде как, размер под палитру не ограничивает.
В ходе чтения дискуссии родилась первая идея: писать картинки в JPEG! Там в конце можно, что угодно дописывать. И первое НО… 1С картинки хранит и выдает (программно) только в BMP. Ж:?(
Ладно … И вот поковырявшись в спецификации, новые идеи … Для простоты, картинку BMP делать 24 бита, и вместо палитры (при этом в спецификации указано, что картинка идет без палитры, но место под нее можно отводить) писать свою информацию. И следующие НО … 1С отводит килобайт под палитру и режет «мусор» в ней… Ж:?(
Ладно, попробуем без палитры… И снова НО. 1С «коверкает» 24-х битную картинку. Почему она «оптимизирует» цвета, для меня осталось загадкой …
ОК. Будем пользовать палитру в 256 цветов, а информацию запишем (правда очень мало) в четвертый неиспользуемый бит … И снова НО … 1С «подчищает» неиспользуемые биты. Ж:?( Ну прямо нет на 1С управы …
После очередных раздумий решил оставить палитру в покое, и писать информацию в «тело» картинки (правда не без ньюансов). А вот здесь и «обманули» 1Съ . Ж:?)
После исследования картинок пришел черед реализации функций. Как мне не хотелось полностью все сделать на 1С, ничего не вышло. Без VBScript не обойтись . Ж:?(
Во-первых, 1С затирает "нетекстовые" символы, во-вторых, не пишет длинные строки через объекты. Поэтому можете даже не экперементировать .
Со «стандартом» формирования «тела» картинки можно ознакомиться в исходниках Delphi. Если что-то еще надо, то допишете… В исходниках 1С все функции опираются на этот «стандарт» (ну типа контроль «внедренного» файла от «настоящей» картинки).
И напоследок еще о некоторых нюансах:
1. Из конфы картинка вытягивается почему-то «корявая» (может только у меня?). В начале файла, почему-то идут 1С-ные размеры картинки (это наверно из стримов МД-шника) … Заложил этот нюанс в функции…
2. Из обработок, специально, картинки «тяну» из (через) MXL. Это дает нам большой запас гибкости и скорости.
3. Чтобы не перегружать чтением из MXL, внедряйте картинки в несколько таблиц. Еще лучше если будут "логические блоки", например таблица с DLL-ками и таблица с ERT-шками. Функция "распаковки" поддерживает смещения, и поэтому читать подряд несколько файлов получится быстрее, чем читать по-одному.
4. Помните что 1С сохраняет картинки последовательно, как их вставляли. Т.е. если вы вставили 10 картинку (файл) в ячейку 1:1, то она и будет 10, а не первой!
5. Идентификаторы картинок в MXL, надо записывать в поле «Расшифровка» в кавычках . Это правило убережет от всякого рода ошибок при действительном использовании MXL . Ну и конечно уникальность идентификаторов, на «Вашей» совести.
Решенные неприятности:
Мой любимый Dr.Web ругался на конфу и внешние отчеты из-за скриптов VB (идет работа с записью на диск) предупреждением "Возможно, инфицирован SCRIPT.Virus".
После подачи и проверки в антивирусной лаборатории исходников, присвоили статус ложного срабатывания и накатили в обновления вирусных баз. Так что, кто со свежими базами - проблем быть не должно.
Пользуйтесь на здоровье!
И как всегда, соблюдайте одно правило: не затирайте цопирайты … Ж:?)
1. Запускаем 1С Предприятие 8 в режиме «Конфигуратор», предварительно выделив нужную информационную базу.
2. Если необходимо, выбираем пользователя с правами администратора и вводим пароль. Проходим авторизацию.
3. В открывшемся окне программы - в меню: «Конфигурация» заходим в подменю «Конфигурация базы данных» и выбираем пункт «Сохранить конфигурацию БД в файл…»
4. В открывшимся окне у нас есть возможность выбрать путь (куда будет сохранена база) и задать имя файла (интуитивно понятное). Нажимаем кнопку «Сохранить».
5. После нажатия на кнопку "Сохранить" в нижнем левом углу появиться информационная надпись: "Сохранение конфигурации в файл. ", свидетельствующая о процессе сохранения. Ждём.
6. Когда сохранение будет завершено - программа выдаст соответствующее предупреждение. Его нужно закрыть по кнопке "ОК". Можно закрыть и окно самой программы 1С.
7. Теперь можем с помощью проводника зайти в директорию для сохранения файла конфигурации, которую выбрали на 4-м этапе. И убедиться, что она там есть.
Готово! Файл конфигурации 1Cv8.cf не содержит персональной учётной информации. Это набор метаданных с кодом 1С Предприятия 8 и его можно передать по почте (прикрепив файл к письму).
Когда один пользователь проводит документ, а другой - тоже пытается проводить документ, то этот второй пользователь загружает сервер непрерывным опросом блокировки. Проблема характерна для 1С:Предприятие 7.7 (DBF и SQL) и файл-серверной версии 8.0. Подробнее:
Книга знаний: Исправление ошибки 1С:Предприятие 7.7/8.0 - 100% загрузка процессора при ожидании блокировки
Потеря производительности при подключении второго пользователя
При подключении второго (и последующего) пользователя к сетевой (не SQL!) базе 1С резко возрастает "торможение" 1С:Предприятие 7.7 при работе по сети. Причем, при отключении второго пользователя торможение сохраняется, до перезагрузки сервера.
- Установить сеть NetWare (где кэш работает нормально)
- Установить программу SuperCache (для некоторых конфигураций обещается ускорение в несколько десятков раз)
- Использовать жесткий диск со встроенным кэш-буфером и повышенной пропускной способностью (обычно – относительно дорогие модели SCSI)
Разрастается журнал транзакций SQL
Долго стартует 1С
Проблема может быть связана с включенным антивирусом Касперского, который (в старых версиях) стремится проверить файл конфигурации (MD) 1С:Предприятие 7.7, причем, делает это несколько минут. Имеет смысл отключить проверку антивирусом файлов с расширениями MD, DD, DDS, DBF, CDX, LST, TMP.
Отключить сохранение времени последнего доступа к файлам
Кеширование при записи
В проводнике выбрать диск -> Properties -> Hardware -> Properties ->Policies установить галку Enable write caching on the disk
Только если есть UPS!
Временная папка пользователя на локальном диске
Промежуточные результаты запросов 1С сохраняет в виде файлов DBF во временной папке пользователя (которая указана в настройках пользователя в Конфигураторе 1С).
Достаточно указать c:\temp или аналогичную папку, а не папку на сетевом ресурсе, чтобы промежуточные результаты сохранялись и использовались быстрее.
Отключение QoS
Сетевая карта Realtek
Оптимизация распределения памяти Windows
Дополнительные действия в XP
Удаление 1cv7.cfg
При разрастании этого файла до нескольких мегабайт наблюдается торможение при работе пользователей в 1С.
Что в файл 1Cv7.CFG в 7.7 записывается?
Использование терминального режима
Если узкое место системы - сеть, то использование терминального режима - на машине пользователей стоят только терминальные клиенты, вся работа происходит на сервере. Ходят слухи, что для имеет смысл делать терминалку только для файлового варианта DBF, не SQL.
(Замечание от romix'a: Не рекомендуют смешивать на одном физическом сервере SQL и терминал. Если же сервера разные, то очень даже можно. Единственная проблема - 100% загрузка процессора при ожидании блокировки - успешно решается патчем [2] и, возможно, будет исправлена в релизах 1С 7.7 выше 25-го.)
Аналогично, если требуется запустить серьезную обработку (перепроведение, переиндексация), лучше это делать на сервере - будет работать быстрее.
Использование компоненты TURBOBL
Снижение транзакционной нагрузки
Некоторым образом можно снизить транзакционную нагрузку, если рассчитывать все движения документа и сохранять их в списке значений (каждому элементу соответствует таблица значений с движениями) в момент, когда пользователь нажимает кнопку ОК или Провести в форме. А при проведении документа брать движения из этой таблицы и записывать их в базу. Можно предусмотреть такую фичу и в программном проведении документа, не только в интерактивном.
Достоинства: снижается длина транзакции.
Недостатки: на время расчета не блокируется база, что может повлечь за собой неточности в движениях, например спишется один и тот же резерв.
Отключение FlushFileBuffers для DBF-варианта
ildus
14 - 18.11.06 - 14:52
(13) самый простой способ включить кэширование записи для всех файлов- отключить вызов FlushFileBuffers(hFile). для этого для платформы 7.70.025 надо пропатчить файлик dbeng32.dll: ищем последовательность "50 FF 15 40 C0 11 1F", заменяем на "B8 FF FF FF FF 90 90". Теперь 1С не будет делать принудительный сброс файловых буферов на диск при каждой записи, т.е. запись на диск будет кэшироваться и сброс файловых буферов будет делаться средствами самой ОС (для NTFS каждые несколько секунд). Значительно уменьшается фрагментация файлов на диске и отпадает необходимость помещать временные файлы на RAM-диск. Этот метод дает очень хорошие результаты для локального и терминального режимов. Использовать это для сетевого режима не рекомендую, т.к. не тестил и вероятно может привести к повреждению базы.
более продвинутый способ - выборочное кэширование файлов. для этого делается перехват вызова FlushFileBuffers() с помощью ВК или подменой dll и проверяется хэндл файла- если например это временный файл или *.CDX базы, то файл кэшируется, если *.DBF базы, то происходит вызов FlushFileBuffers().
Реквизит совершенно левый, надо просто показать какие платежи были проведены по счетам с подписью директора, а какие согласованы по телефону, либо просто технические платежи.
А обновляю путем объедения конфигураций. Просто если изменений будет много, боюсь зависну с обновлениями каждого объекта.
может проще директор сам будет проводить платежи в банк-клиенте ?
Что-то мне подсказывает, что обновлять придется вручную.и сам лично всё перепроверит что/кому/за что скинули
zak555 - тролль.
Toall: Пожаловаться модеру можно, или самому опускать придется?
При вводе платежного поручения, бухгалтером делается отметка, на основании чего был отправлен платеж, в любом случае надо изменять форму создания платежного поручения, потому что никто ничего в конце недели помнить не будет.
Про выгрузки и директора - хорошо. Еще хороший совет - научить директора самому смотреть по платежным поручениям, подписывал он счет или нет.
(10) смысл контроля этого ?
он нужен для директора ?
тогда бух может наипать директора с этим контролем и всё
у каждого документа есть реквизит "комментарий" и будет, полагаю, всегда. Пиши туда кодовое слово/букву, потом шерсти, сколько влезет, своим отчетом. как всегда прыжки в ширину от неумения пользоваться типовыми..
насчет тролля - мал еще решать еще - палочка не выросла
Если ты внесешь изменения в типовую конфигурацию, то она уже не будет типовой.
Читай "обновление не типовых конфигураций"
Понятно. Я тебе сочувствую.
zak555 - типичная ошибка типичного ламера. Тебя не просят помочь налаживать бухгалтерский учет, тебя просят ответить на чисто технический вопрос. А вот как уж выстраивать отношения программист-директор-бухгалтер, это тема для отдельного топика.
//у каждого документа есть реквизит "комментарий" и будет, полагаю, всегда.
Думал над этим.
Формировать запись придется все равно специфическую, потому что поле комментарий иногда заполняется для технических нужд. В таком случае придется, при выведении отчета, проверять поле комментарий на наличие фрагмента подпись есть. Поэтому надо изменить форму самого документа. При обновлении одна созданная кнопочка на форме просто уйдет. В одной форме вручную изменить быстро. Если еще изменения вносить в другие формы, то большое количество задолбаешься отслеживать.
//Если ты внесешь изменения в типовую конфигурацию, то она уже не будет типовой.
О. То есть добавление ОДНОЙ конопки на форме делает конфигурацию НЕтиповой. Отлично.
Неужто никто не придумал внешнюю утилиту, для фиксирования самостоятельных изменений? Вроде есть приблуды для внешнего редактирования файла метаданных.
Читайте также: