Пришлось поразмышлять к какой рубрике отнести данное.
Скорее это методические материалы и нужно в статьи, но их мало читают.
Поскольку будет приведён ещё и некий код – отнёс это в программы.
Смысл - выполняется периодическое обрезание баз данных на удалённых магазинах .
1С v7.7 DBF-ка. Полностью самописная конфигурация.
Был написан (на бумаге) сценарий обрезания.
Успешно всё работает, но это когда я, как программист приезжаю на магазин и делаю всё ручками.
Но некоторые магазины очень далеко (5 часов в один конец на авто).
Вот и решили сделать один Bat-ничек, чтобы технические специалисты обслуживающие магазины на местах могли не париться - запустить его и вот оно - счастье...
А сценарий не очень прост:
1. Удаляем индексы (можно bat-ом реализовать)
2. Входим монопольно - переиндексация. Запускаем "Выгрузка"
3. Делаем копию базы на локалку (можно bat-ом реализовать)
4. Удаляем не нужные таблицы оставляя только справочники(можно bat-ом реализовать)
5. Тестирование и исправление (можно bat-ом реализовать)
6. Входим монопольно. Запускаем "Загрузка"
В ходе разработки возникло несколько проблем, которые были подняты в темах:
1. Как запустить пакетно 1С в режиме "Предприятие" и указать какую обработку запустить на выполнение
//infostart.ru/forum/forum9/topic9444/messages/
2. BAT-файл с командами работы с ФС и пакетными запусками 1С
//infostart.ru/forum/forum9/topic9464/messages/
Было интересное обсуждение и реальная помощь.
Спасибо всем.
И вот всё написано и заработало.
В программу 1С добавлена обработка формирующая этот самый единый BAT-ничек.
BAT-ничек нужно формировать по месту (в каждом магазине свой), так как необходимо получить путь к БД этого магазина, а также размещение и имя файла движка 1С (ну sqlтам или net – имена разные)
То есть Первое действие.
Управляющий заходит в программу 1С и запускает обработку «Формирование единого BAT»
Что там делается:
- Проверка на возможность обрезания. Если обрезали в последние пол-года и/или размер базы
- Создаются 2 папки. Одна для выкладывания собственно BAT-ничка, выгрузи и флажков для 1С. Другая для копии БД.
- Удаляются индексы (переиндексация вообще полезна. Тестирование и исправление ещё лучше, но занимает очень много времени, поэтому пошли простым пуьём)
- Копируется база на локалку.
- Удаляем файлы в USRDEF\*.* , чтобы зайти в 1С безымянным (если имя пользователя мы бы ещё могли вытащить, то его пароль без специальной компоненты - нет)
- Запускаем 1С и выгружаем данные.
- Удаляем не нужные ДБВ-ки (оставляем только справочники)
- Запускаем 1С на тестирование и исправление.
- Запускаем 1С и загружаем данные.
- Вернём USRDEF на место
- Сделаем отдельный батничек с параметрами для тестирования
- Выложим флажки для 1С
Второе действие.
Заходим в папку C:\Obr_Mag и запускаем OBREZ_DB.bat
Всё – идём курить, через 6-10 минут БД магазина в 500 метров свернётся.
Результаты – Остатки товаров по входным ценам на ТА ДО и После выложит в ту же папочку.
Что происходит при запусках 1С через этот BAT-ничек.
В процедура ПриНачалеРаботыСистемы()
//проверим, а не обрезание ли это
ЭтоОбрезаниеБД="";
Если ПустаяСтрока(ИмяПользователя())=1 Тогда
Если МонопольныйРежим() = 1 Тогда
Если ФС.СуществуетФайл("C:\Obr_Mag\Unloading.txt")=1 Тогда
ЭтоОбрезаниеБД="Выгрузка";
ИначеЕсли ФС.СуществуетФайл("C:\Obr_Mag\Loading.txt")=1 Тогда
ЭтоОбрезаниеБД="Загрузка";
КонецЕсли;
КонецЕсли;
КонецЕсли;
................................
Обычные действия
..................................
И в конце
Если ПустаяСтрока(ЭтоОбрезаниеБД)=0 Тогда
Если ЭтоОбрезаниеБД="Выгрузка" Тогда
ОткрытьФормуМодально("Обработка.ВыгрузкаДанныхПриОбрезании","Обрезание");
ФС.УдалитьФайл("C:\Obr_Mag\Unloading.txt");
ЗавершитьРаботуСистемы(0);
ИначеЕсли ЭтоОбрезаниеБД="Загрузка" Тогда
ОткрытьФормуМодально("Обработка.ЗагрузкаДанныхПриОбрезании","Обрезание");
ФС.УдалитьФайл("C:\Obr_Mag\Loading.txt");
ЗавершитьРаботуСистемы(0);
КонецЕсли;
КонецЕсли;
ВыгрузкаДанныхПриОбрезании:
- Выгрузка остатков (у нас долги в магазинах не ведутся, только остаток товара)
- Выгрузка цен (чтоб можно было прибить жирный 1SCONST.DBF)
- Выгрузка констант (чтоб восстановить константы)
- Выгрузка документов (ДатаНачалаБазы=НачМесяца(ДобавитьМесяц(ПолучитьДатуТА(),-1)))
- Отчет остатки товаров с суммой
ЗагрузкаДанныхПриОбрезании:
Всё тоже самое, но на загрузку.
ВСЁ РАБОТАЕТ !!!!
P.S. Если у кого-то проблемы с написанием выгрузки/загрузки - могу выложить балванки, НО поскольку моя конфигурация полностью самописная, вам придётся переделывать под себя.
А вот показанный пример BAT-файла и механизм отработки запусков 1С - универсальный...
По просьбе трудящихся!
27.05.09 добавлены болванки выгрузки и загрузки данных.
Принципы выгрузки-загрузки в статейке опишу (чтоб тут лишнего места не занимать) и ссылку вставлю ;-)
Вот ссылочка
"Принципы выполнения Выгрузки / Загрузки данных при обрезании БД удаленного магазина"Кстати "плюсики" можно и там ставить :-))))))
Извините предыдущая ссылка чёт не работала, эта вот вроде правильная:
//infostart.ru/blogs/1085/