Маленькі хитрощі при роботі з 1С:Підприємством 7.7
Написав Гораєцький Р.С. Неділя, 07 листопада 2010
Дуже часто в різних електронних конференціях з програм сімейства "1С:Предприятие" попадаються питання, пов'язані з адмініструванням баз даних. Бажання поділитися досвідом, накопиченим майже за три роки роботи і обкатаними прийомами в даній області з одного боку і природна лінь, - з іншої (у сенсі набридло раз від разу відповідати на одні і ті ж питання) і викликало бажання якось систематизувати все це в одному - загальнодоступному місці. Все нижчевикладене стосується програм мережевої файл-серверної версії 7.5 (на 7.7 і SQL я тільки ось-ось перейду), т.ч. у разі використання більш старших версій (як і SQL версій) можливо буде потрібно якась адаптація коду : Окрім цього розуміється, що читач хоч би поверхнево знайомий з комп'ютерною технікою, мережами, з основами MS Windows і основами роботи з програмою "1С:Підприємство". Код, що приводиться в конфігураціях, що додаються, не "прив'язаний" якійсь окремій компоненті програми (Оперативний облік, Бухгалтерія, Розрахунок), а тому може бути використаний в будь-яких конфігураціях.
і все - ми маємо двічі в день автоматична архівація нашої бази, щодня - з понеділка по п'ятницю. Здається просто і самодостатньо. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] "DefaultUserName"="YourProfileName" "DefaultDomainName"="Comp" "AutoAdminLogon"="1" "DefaultPassword"="YourPass" де YourProfileName - ім'я профілю адміністратора на сервері (за умовчанням Administrator), Comp - мережеве ім'я сервера, YourPass - пароль аміністратора на сервері (обов'язково повинен бути не порожнім).
Отже, ви розпакували важку жовто-червону коробочку з логотипом 1С, і що ж далі?
Як і яку в'язати мережу, що для цього потрібне і інші технічні питання ми тут розглядати не будемо - це окрема тема - припустимо, що мережа вже є:
Також не зупинятимемося на процедурі інсталяції програми 1С, як правило тут питань не виникає. Єдине, що хочеться відзначити - я б не радив проводити "адміністративну" установку програми (суто особиста думка, напевно у мене тут же знайдуться опоненти). Простіше встановити програму локально кожному клієнту - мені здається, що такий режим "людяніший" по відношенню до мережевого трафіку.
Хочу відразу ж застерегти - для роботи в мережі каталог бази даних краще розмістити на спеціально відведеному для цих цілей комп'ютері - сервері. По можливості не слід навантажувати його ще чим-небудь (типу MS Office), тобто зробити "виділеним", також слід пам'ятати, що тактико-технічні характеристики даного апарату безпосередньо впливають на комфортність вашої роботи, тому тиснути тут не стоїть.
Що вибрати як операційну систему для вашого мережевого файл-сервера бази даних? Однозначна відповідь - у жодному випадку не Microsoft Windows 9X ! Річ у тому, що у цих операційних систем існує обмеження на число файлів (1К: 1024), що одночасно відкриваються, - в результаті з таким "сервером" в мережі зможуть працювати лише декілька користувачів (конкретна кількість залежить від числа файлів в конфігурації вашої бази). Особисто я вважаю за краще користуватися системою Microsoft NT 4.0. Якщо ви упевнені, що число клієнтів вашої мережі не перевищить 10, то можна встановити на сервер NT Workstation (більше число з'єднань їй просто не підтримується), інакше не обійтися без NT Server. Як альтернатива для серверної системи можна використовувати і Nowell Netware, але я з нею на жаль (або мабуть на щастя) не знайомий, тому нічого порадити не можу : Також вже почали з'являтися перші захоплені відгуки про використання довгожданої Windows 2000 (NT 5) в зв'язці з 1С, але мені здається не варто квапити події, 17 лютого вже не за горами, поживемо - побачимо.
Спершу приведу ключі запуску програми з командного рядка (як не дивно, багато раз із здивуванням переконувався, що не всім вони відомі): 1cv7.exe MODE [ /M | /D | /U | /N | /P ] де MODE - режим запуску, може приймати тільки одне з трьох значень : config - режим конфігуратора; debug - режим відладчика; enterprise - нормальний (робочий) режим. наступні ключі опциональны : /M - запуск програми в монопольному режимі; /D - каталог бази даних; /U - робочий каталог користувача (каталог із списку користувачів ігнорується); /N - ім'я користувача; /P - пароль користувача; Наприклад при виконанні такої команди : 1cv7 enterprise /DD:\Dbase /NИванов /P123 відбудеться запуск програми без висновку діалогів про вибір бази і режиму роботи, а також без запиту імені і пароля користувача.
Також хочу тут зупинитися ще на одному нюансі. У режимі конфігуратора в пункті меню "Файл" є дві команди : "Вивантажити дані" і "Завантажити дані" (не плутати з командами "Сохранить/Восстановить" - це просто архівація). Практично вони призначені для перенесення інформаційних баз між файл-серверной і клієнт-серверній (SQL) версіями. Але у них є одна приємна особливість - в процесі вивантаження - завантаження проводиться верифікація коректності початкових даних на рівні інформаційних об'єктів (тобто констант, довідників, документів і ін.). Тому якщо в базі містяться помилки, що з'явилися в процесі роботи із-за збоїв устаткування або програми, при виконанні даної процедури база з великою часткою ймовірності буде коректно відновлена. Отже в процесі роботи корисно періодично проводити цю дію для упевненості в коректності даних (хоча дана процедура займає близько декількох десятків хвилин - залежно від заліза і об'ємів бази) - я обов'язково виконую її раз в місяць. Окрім цього бажано по частіше переиндексировать базу (особливо якщо є документи, проведені "заднім числом") - геть зносимо *.CDX і відкриваємо базу в монопольному режимі, у мене це робиться автоматично щоночі. Оскільки всі користувачі в мережі працюють з базою в режимі реального часу, то необхідно при включенні клієнтських комп'ютерів виконувати синхронізацію їх таймерів з таймером сервера - у мене в автозавантаженні на клієнтах виконується наступний командний файл : @ECHO OFF NET TIME \Server /SET /Y (тут Server - мережеве ім'я сервера бази).
Подалі покладеш - ближче візьмеш
Регулярно виконувати резервну архівацію потрібно обов'язково, щоб не було потім образливо за безповоротно загублені дані. Чим це робити - це питання швидше за смак. Існує наприклад спеціально "заточена" 1С програми "Хранитель" від ростовської фірми "Гендальф" http://www.gendalf.ru/, яка уміє робити масу корисних речей, але мені вона здається дуже переобтяженою для таких простих цілей, я користуюся старим добрим RAR'ом. Архівувати слід тільки файли бази *.dbf і самі метадані (1cv7.dd/md), ну ще LOG-файл і ваші оригінальні файли (якщо вони є). Зпочатку приведу вміст декількох командних файлів (розширення *.cmd працює тільки під Win NT, якщо використовується Win'9X, то розширення повинне бути *.bat): ARCH.CMD REM використовувані каталоги (повинні існувати) REM D:\1C\DB - робоча база REM C:\Temp\DB - часова копія бази REM C:\BACKUP - архів бази REM \Adm\Storage - резервний архів бази (на іншому комп'ютері мережі) @echo off ; чистимо тимчасовий каталог Del С:\Temp\DB\*.* ; копіюємо в нього файли робочої бази, що архівуються (*.md,*.dd,*.log,*dbf) Copy D:\1С\DB\1cv7* С:\Temp\DB Copy D:\1C\DB\*.dbf C:\Temp\DB ; зберігаємо попередню версію архіву під новим ім'ям сміттю C:\BACKUP\db.rar C:\BACKUP\db0.rar ; створюємо новий архів rar.exe u -r -m1 -dh -std C:\BACKUP\db.rar С:\Temp\DB\*.* if errorlevel 0 goto rpl echo P_A_C_K_I_N_G___E_R_R_O_R__! goto end :rpl ; зберігаємо копію архіву в надійному місці net use Z: \Adm\Storage сміттю C:\BACKUP\*.rar Z: net use Z: /delete :end
Виконувати цю процедуру можна не перериваючи виробничого процесу (нікого з бази виганяти не треба), саме для цього ми архівуємо не саму базу, а її часову копію. На цьому все, залишилося всього навсего запустити системну службу Sсhedule: Explorer-ControlPanel-Services-Schedule-Startup-Automatic (підтримується тільки під Win NT, для Win'9X потрібні спеціальні зовнішні утиліти) і набрати з командного рядка що-небудь аналогічне : At 13:00 /Every:M,T,W,Th,F C:\COMMAND\arch.cmd At 18:00 /Every:M,T,W,Th,F C:\COMMAND\arch.cmd At 07:00 /Every:M,T,W,Th,F C:\COMMAND\shutdown /l /r /y /c
Як часто потрібно робити архіви - це залежить від інтенсивності документообігу у вашій організації, я роблю двічі в день, т.ч. якщо що, то доведеться відновлювати документи максимум за пол-дня (тьфу-тьфу): Тепер про третій рядок в команді AT - в плані автоматизиции рутинних дій я пішов ще далі, як я вже згадував у мене щоночі проводиться реиндексация бази, для цього використовується такий командний файл : REINDEX.CMD @echo off ; каталог бази set db=D:\1С\DB ; каталог програми set pr="C:\Program Files\1cv75\bin\1cv7" ; примусово зносимо індекси del %db%\*.cdx /Q ; запускаємо програму монопольно під "фіктивним" користувачем %pr% enterprise /D%db% /M /NЧистяков /Pstart
Цей командний файл вставляється в теку автозавантаження на сервері, утиліта SHUTDOWN.EXE (з Windows NT Resource Kit - це набір додаткових сервісних утиліт) проводить перезавантаження сервера, для того, щоб по завантаженню не натискати магічну комбінацію з трьох пальців (Ctrl-Alt-Del) і не вводити пароль, а завантажити сервер автоматично, потрібно підправити системний реєстр NT (запустити з командного рядка regedit.exe):
Отже підведемо підсумок - в заданий нами час відбувається автоматичне перезавантаження сервера з переиндексацией бази, для того, щоб програма після закінчення переиндексации сама завершилася необхідно в глобальному модулі конфігурації передбачити якісь нестандартні дії по обробці входу в програму исскуственного "фіктивного" користувача (Чистяков - без пароля) - вони приведені в демонстраційній конфігурації (архів Adm.rar). У принципі ніхто не забороняє піти ще далі - і разом з переиндексацией бази ночами виконувати будь-які бажані дії, наприклад групове перепроведение документів для відновлення межі послідовності або формування "ваговитих" звітів, з подальшим збереженням їх результатів в *.mxl файлах, розсилки прайсів факсом або e-mail'у і т.д. Все обмежується тільки вашою фантазією.
Прибирання сміття в DBF-файлах Ідеологія використання DBF/CDX-файлов побудована таким чином, що при видаленні об'єкту бази проводиться тільки позначка об'єкту як видаленого, фізично ж запис про цей об'єкт залишається в базі як "сміття". Якщо не вживати ніякому спеціальному заходу, то це сміття копиться, база пухне, дорогоцінний мережевий трафік забивається дарма. У принципі "прибирання сміття" можна проводити в конфігураторі через вивантаження-завантаження даних, але це не дуже зручно, оскільки, як я вже згадував вище, виконання даної процедури може вимагати значних часових витрат: Альтернативний шлях - використовувати для цих цілей зовнішні утиліти, призначені для роботи з DBF/CDX-файлами (наприклад утилітка DBU.EXE з Clipper'а) теж не дуже хороший, оскільки звичайно вони не уміють працювати з маскою файлів (*.dbf), а "підсовувати" їм по одному файлу з сотні - задоволення нижче середнього. У теж час вбудована мова програм "1С:Предприятия" підтримує відповідний DBF-примітив (метод об'єкту Xbase Стиснути()), тому я свого часу і написав на 1С невеликої конфігурації, призначеної виключно для цих цілей і користуюся їй регулярно дотепер (раз в тиждень). Окрім "чищення" бази в ній також попутно передбачена можливість використання стандартного зовнішнього архіватора WinZip/WinRAR для архівації бази, власне сама конфігурація в архіві Cleaner.rar, невеликий опис приведене в цьому ж архіві у файлі Read.me.
Є хто живим?
Як відомо, до складу мережевих версій програми 1С:Предприятие входить вбудована утилітка - монітор користувачів (пункт головного меню програми "Допомога", далі пункт меню "Про програму" і кнопка "Монітор"), призначення її очевидно - відображати хто в даний момент знаходиться в системі, причому реалізована вона як зовнішній додаток (..\1cv75\bin\usrmon.exe). Свого часу, на ранніх релизах версії 7.5 я зіткнувся з украй незадовільною роботою даної утиліти - або шалено довго запускалася, або взагалі вбивала систему. Але ж річ те потрібна і я вирішив побудувати щось аналогічне засобами 1С. Ідея проста - я завів новий довідник "Сеанси", у якого текстове поле код - це ім'я користувача, а найменування - текстове представлення часу входу в систему. Далі, при вході кожного нового користувача в програму створюється новий елемент даного довідника, при виході - відповідний елемент знищується. Тепер для того, щоб дізнатися хто працює в програмі, нам досить просто вибрати всі елементи даного довідника і відобразити їх в зручному вигляді. Докладний код, реалізуючий даний механізм можна знайти у все тій же демонстраційній конфігурації - adm.rar. Знову ж таки, при такому підході можна піти далі - додати додаткові поля в даний довідник і зберігати в них все що заманеться. Наприклад, рік тому у мене були проблеми з мережею, майже щодня хтось з користувачів аварійно відвалювався, потрібно було якось автоматично відстежувати хто саме. Я додав до даного довідника поле, в яке один раз в 15 хвилин для кожного користувача записувався поточний час (робилося це в глобальному модулі через процедуру ОбработкаОжидания(), тобто якщо користувач вмирав, то запис відповідно не проводився). Перед кожним записом з елементу довідника прочитувалося попереднє значення часу і якщо різниця між ним і поточним значенням часу перевищувала 18 хвилин (15 мин. + якийсь запас), то констатувався факт "смерті" користувача із збереженням некролога в LOG файл. Це свого часу допомогло зекономити мені масу сил і нервів - не довелося допитувати з пристрастю бідних користувачів "А чи коректно ви сьогодні закінчили роботу ?" і звіряти результати допиту з вмістом LOG-файлу - підраховувати для кожного користувача число входів/виходів в/з систему/системи
Як зрозуміли, прийом
Часто буває украй корисно мати під рукою засоби інтерактивного спілкування по мережі, наприклад, попросити всіх "вийти он" на 5 мин. для переиндексации бази, або користувач просить мене відкрити йому доступ для авансового резервування товару (виписати рахунок на товар, який вже прийшов, але ще не оприбуткований), врешті-решт просто послати кого-небудь куди подалі : Штатні засоби, призначені для цих цілей (WinPopUp і ін.) не завжди зручні, - вони повинні бути встановлені і запущені у всіх клієнтів - загалом морока. Загальновідомо, що в типових конфігураціях Торгівлі, здається починаючи з Редакції 6, з'явився довідник "Блокнот", призначений саме для цих цілей. Але моя реалізація мені подобається більше, до того ж на момент її написання - не тільки 6, але і Редакції 5 ще в помині не було. Ну а наскільки я об'єктивний - судити вам. Суть в наступному - є довідник "Повідомлення" з наступними полями : "Найменування" - адресат повідомлення, "Запис" - власне текст повідомлення, "Прочитано" - прапор 1/0 (дійшло до адресата чи ні), "Хто" - відправник повідомлення і "ДВ" - дата і час відправки. Для кожного активного користувача системи (знову ж таки нам тут став в нагоді довідник "Сеанси") кожні 30 секунд перебираються елементи довідника "Повідомлення", у разі збігу імені користувача і значення поля "Адресат" і нульового значення прапора "Прочитано", виводиться повідомлення "Вам лист!" і відкривається відповідна форма з текстом повідомлення. Після закриття даної форми, що припускає прочитання адресатом повідомлення, прапор "Прочитано" автоматично встановлюється в 1. При виході користувача з системи все прочитані ним повідомлення автоматично віддаляються. Кожен "звичайний" користувач може послати повідомлення тільки одному з користувачів, активних в даний момент. І лише адміністратор (для себе коханого можливість) може послати повідомлення для всіх користувачів відразу. Така організація здається мені найбільш оптимальній виходячи із співвідношення сервісні можливості / завантаження трафіку. Реалізація приведена все в тій же конфігурації - adm.rar.
Комусь можна, комусь нi
Достатньо часто зустрічаються питання, а як проводити авторизацію користувачів з однаковим набором має рацію - скажемо є 5 менеджерів і бажано зробити так, щоб доступ у кожного з них був тільки до своїх документів. Це робиться досить просто - за допомогою зумовлених процедур глобального модуля ПриУдалении() і ПриОтменеПроведения(), все це абсолютно очевидно з коду демонстраційної конфігурації adm.rar, тому затримуватися на цьому не буду. Ще один момент - мені здається досить зручним, коли кожному користувачу відповідає свій цифровий префікс (точніше його частина) в нумерації документів (звичайно ж за умови, що користувачів не дуже багато). Механізм реалізації цього можна подивитися там же
Посилання на корисний софтвер (всякі всякості)
Оскільки всі наші дані зберігаються у форматі DBF/CDX, дуже часто буває корисно, а деколи і просто необхідне засіб для перегляду / редагування даних на рівні файлів. Таких утиліт існує множина, єдиний недолік - не всі з них уміють самі розбиратися з тією, що перекодувала ANSI-OEM (та ще і з кирилицею), в цьому сенсі сама на мій погляд зручна - це DBFView від фірми "Гендальф", викачати її можна абсолютно безкоштовно тут: http://www.gendalf.ru/DOWNLOAD/wDBFview.zip Тепер зупинимося докладніше на власне засобах системного мережевого адміністрування. Їх зараз з'явилося дуже багато, тому тут я згадаю тільки ті, з якими я сам постійно працюю і які мені подобаються.
Почну з своєї коханої програми Hyena від фірми "Adkins Resource Inc." http://www.asdkins-resource.com/. Подаруй простіше перерахувати чого вона не уміє, чим навпаки : З її допомогою ви зможете дістати повний доступ до локальних дисків клієнтів, проглядати журнали подій на комп'ютерах мережі, запускати і зупиняти service'ы на клієнтах, змінювати їх права, ну загалом майже все що може придти в голову. Загалом настійно її рекомендую. Так, варто згадати, що як і належить, працює вона тільки з Windows NT 4 / 2000, т.ч. любителям Windows 9X можна не турбуватися.
Гідні також пильної уваги продукти, призначені для цілей мережевого адміністрування фірми "Aelita Software" http://aelita.net/. Їх цілий ряд, на мій погляд найбільш корисні MultiReg - засіб для видаленого редагування системного реєстру клієнта, EventAdmin і Journal - база даних для накопичення і подальшого аналізу системних журналів подій на клієнтських машинах, ну і подаруй ще ERDisk - утиліта для створення копій завантажувачів і системних файлів мережевих клієнтів (у разі "Blue Screen of Death" - це перше і, подаруй єдиний засіб). Всі ці продукти також підтримують тільки Windows NT.
Останнім часом з'явився цілий ряд програм для повного віддаленого доступу до мережевих комп'ютерів. Власне Norton pcAnywere створений давно і досить добре відомий, але він не є кращим продуктом цього класу. Я експериментував з двома аналогічними програмами - це WinOp (окреме велике спасибі BigHarry) фірми "Danware A/S" http://www.danware.com/ і Remoute Administrator нашого співвітчизника Дмитра Зносько http://www.famatech.com/, функціональні можливості у них приблизно однакові, але перша мені подобається більше, мені здалася, що вона розумніше обходиться з мережевим трафіком, т.ч. я працюю з нею. Що ж вона уміє, а майже все - підтримує всі мережеві протоколи від Microsoft, включаючи MSDN і модемний Dial-Up (чуствуете які перспективи відкриваються для ледачих админов!). Програма складається з два компонент - host (встановлюється на клієнтів) і guest (ставиться на комп'ютер адміністратора). Причому клієнтська частина під WINNT може встановлюватися як service в stealth-режимі, абсолютно прозоро для клієнта. При запуску guest'а і підключенні до клієнта ви бачите на своєму моніторі його екран, ваші клава і миша працюють як клієнтські, тобто доступ дійсно повний ! Більш того, ви можете погасити екран клієнта, заблокувати його клаву і миша і навіть видалено перезавантажити його комп'ютер : Є ще такі речі як chat, файловий обмін і ін. Загалом штука надзвичайно корисна. Працює швидко і надійно (і до речі підтримує Windows 9X/3.1). Єдине хочу застерегти від зловживань - трафік те не гумовий, тобто користуватися їй потрібно тільки тоді, коли це дійсно необхідно. Отже підсумуємо - використовуючи всі ці засоби у сисадмина з'являються реальні можливості для проведення свого робочого часу цілком у рідного комп'ютера, метушня по клієнтах канула у лету
Ну і наприкінці хочу привести декілька корисних посилань на різні FAQ'и по Windows NT: http://www.ntfaq.com/ - це класика, FAQ від John Savill (до речі там є і локальний варіант, тобто можна викачати файл (html/hlp/txt) і вивчати його в off-line), тут можна знайти відповіді абсолютно будь-які питання;
http://www.pvv.spb.ru/ - дуже приємний і корисний для будь-якого комп'ютерника російський FAQ по Windows 9X/NT/2000 від Владислава Пестова, настійно рекомендую;
http://windowsnt.miningo.com/mlibrary.htm - це просто величезний каталог всього (ресурси, публікації, посилання на сайти і т.д.), що зв'язане з WINNT.
Владимир Козлов (mailto:
Ця електронна адреса захищена від спам-ботів, Вам потрібно включити JavaScript для перегляду
ICQ/UIN 26870123) Санкт-Петербург, січень 2000 КЛУБ ПРОФЕСІОНАЛІВ "1С"
АВТОРИЗАЦІЯ
Наші послуги
Обслуговування по ІТС
Диски ІТС (інформаційно-технологічного супроводу) - новий проект фірми 1С. Гасло фірми "1С" "Доступно і серйозно" означає, що програми автоматизації доступні підприємствам будь-якого рівня добробуту, користувачам будь-якого рівня підготовки, можуть бути придбані у партнерів у будь-якому регіоні країни і містять усі можливості, необхідні для ведення обліку.
Установка програмного забезпечення 1С
При купівлі у нас або наших партнерів економічного програмного забезпечення серії 1С:Підприємство, кожен користувач отримує можливість на безкоштовну установку.
Абонентське обслуговування
Абонентське обслуговування є консультаційними послугами з використання ПП "1С:Підприємство 7.7", оновленню і підтримці програмного забезпечення на підставі договору c постійною щоквартальною фіксованою оплатою, фіксованого переліку і обумовленого об'єму робіт.
Сервіс при придбанні програмного забезпечення 1С
Наші фахівці безкоштовно доставлять програмне забезпечення в зумовлений Вами час прямо до Вас в офіс. Крім того, буде зроблено встановлення придбаного Вами програмного забезпечення та при необхідності перенесення залишків і довідників.
Популярні продукти
Хто онлайн
Підписка на новини
Гаряча новина
Після продажна доставка програмних продуктів, встановлення на робочі станції Замовника (останній актуальний реліз продуктів), встановлення на сервер 1С (для клієнт-серверних варіантів поставки).
Первинне навчання та налаштування конфігурації: введення даних про підприємство та його підрозділи, налаштування облікової політики та параметрів ведення обліку, навчання основним принципам роботи з системою.
А також: послуги Лінії консультацій, реєстрація програмних продуктів у фірмі 1С.
Хмарка тегів
відправити партнеров окремих констант представники галузь ефективну кластера dt434 присвоить гораєцьких послідовності файлу розробником купівлі початкового величезний правою поліграфія відбулося правильно деньги досягнути индексмассива аналізує змін можливо своєму впровадженнях листопада отримає список людину члени вами залах bpeмя описують прогнозу розраховується mysqlbase регламент ведеться частиною звітний повторно рекоменд кутку реалізацію різноманітних встановлення телефону субконто зручними ризику citylist верифікація інвентаризацію депонування; 196000 адміністрування показники підприємства» google об’єктів вашого звичайної станцій законами майбутнє вбудований збирання індивідуальні півріччя працівників 2005» контрагента говорив тієї порівняння настановний рекламороспосюджувача завантаженні этой збільшився посадовими термінали ефективному спроле режими перспективи моменту автоматизованого накопичений єднані ліцензійна 4601546073815 відповідним трекера sc46 пропорційно зможете необхідних авторського переробні сума труднощі серверного відрізняються відповідальність виникло виплати розмови намагаються захищених господарськими інтерес сплати стає типового











