Обрезание БД удалённого магазина одной кнопкой

18.02.10

База данных - Свертка базы

1С v7.7 DBF-ка. Полностью самописная конфигурация.

Это пример формирования "правильного" BAT-файла (и сам он) который самостоятельно последовательно выполнит ряд действий приводящих к обрезанию БД удалённого магазина и кусок кода для 1С, чтобы она правильно и в нужной последовательности отрабатывала свои запуски в пакетном режиме из BAT-файла.
Предполагается, что выгрузки/загрузки данных у вас уже имеются (или вы в состоянии их сами написать)

Смысл - выполняется периодическое обрезание баз данных на удалённых магазинах .
Был написан (на бумаге) сценарий обрезания.
Успешно всё работает, но это когда я, как программист приезжаю на магазин и делаю всё ручками.
Но некоторые магазины очень далеко (5 часов в один конец на авто).
Вот и решили сделать один Bat-ничек, чтобы технические специалисты обслуживающие магазины на местах могли не париться - запустить его и вот оно - счастье...

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Формирование BAT и его пример
.1242991384 5,54Kb
121
121 Скачать (1 SM) Купить за 1 850 руб.
Выгрузка_Загрузка
.1243404123 24,30Kb
57
57 Скачать (1 SM) Купить за 1 850 руб.

 

 

Пришлось поразмышлять к какой рубрике отнести данное.

Скорее это методические материалы и нужно в статьи, но их мало читают.

Поскольку будет приведён ещё и некий код – отнёс это в программы.

Смысл - выполняется периодическое обрезание баз данных на удалённых магазинах .

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»

Что там делается:

  1. Проверка на возможность обрезания. Если обрезали в последние пол-года и/или размер базы
  2. Создаются 2 папки. Одна для выкладывания собственно BAT-ничка, выгрузи и флажков для 1С. Другая для копии БД.
  3. Удаляются индексы (переиндексация вообще полезна. Тестирование и исправление ещё лучше, но занимает очень много времени, поэтому пошли простым пуьём)
  4. Копируется база на локалку.
  5. Удаляем файлы в USRDEF\*.* , чтобы зайти в 1С безымянным (если имя пользователя мы бы ещё могли вытащить, то его пароль без специальной компоненты - нет)
  6. Запускаем 1С и выгружаем данные.
  7. Удаляем не нужные ДБВ-ки (оставляем только справочники)
  8. Запускаем 1С на тестирование и исправление.
  9. Запускаем 1С и загружаем данные.
  10. Вернём USRDEF на место
  11. Сделаем отдельный батничек с параметрами для тестирования
  12. Выложим флажки для 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);

КонецЕсли;

КонецЕсли;

 

 

ВыгрузкаДанныхПриОбрезании:

  1. Выгрузка остатков (у нас долги в магазинах не ведутся, только остаток товара)
  2. Выгрузка цен (чтоб можно было прибить жирный 1SCONST.DBF)
  3. Выгрузка констант (чтоб восстановить константы)
  4. Выгрузка документов (ДатаНачалаБазы=НачМесяца(ДобавитьМесяц(ПолучитьДатуТА(),-1)))
  5. Отчет остатки товаров с суммой

 

ЗагрузкаДанныхПриОбрезании:

Всё тоже самое, но на загрузку.

 

ВСЁ РАБОТАЕТ !!!!

P.S. Если у кого-то проблемы с написанием выгрузки/загрузки - могу выложить балванки, НО поскольку моя конфигурация полностью самописная, вам придётся переделывать под себя.

А вот показанный пример BAT-файла и механизм отработки запусков 1С - универсальный...

 

По просьбе трудящихся!

27.05.09 добавлены болванки выгрузки и загрузки данных.

Принципы выгрузки-загрузки в статейке опишу (чтоб тут лишнего места не занимать) и ссылку вставлю ;-)

Вот ссылочка
"Принципы выполнения Выгрузки / Загрузки данных при обрезании БД удаленного магазина"
Кстати "плюсики" можно и там ставить :-))))))

Извините предыдущая ссылка чёт не работала, эта вот вроде правильная:

//infostart.ru/blogs/1085/


См. также

Оптовая торговля Розничная торговля ККМ ЭДО и ОФД Обмен с ГосИС Системный администратор Программист Оперативный учет 7.7 Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия Платные (руб)

Подключение фискального регистратора к 1С 7.7 в режиме онлайн-кассы (в соответствии с 54-ФЗ). Поддержка крайних версий драйверов ККТ: ДТО 10 и ДТО 8 для Атол, 4.15, 5.16 для Штрих-М. Поддержка протоколов ФФД 1.0, 1.05, 1.1 и 1.2, развитые настройки для применения частичных оплат и авансов в оптовой и розничной торговле. Поддержка чеков коррекции всех версий. Поддержка розничной продажи маркированной продукции (ЕГАИС, табак, обувь, лекарства, шины, одежда, белье, парфюмерия, молочная продукция, вода и пр.). Вывод электронного чека (на е-майл, телефон) по требованию покупателя, поддерживаются комбинированные типы оплаты, режим эмуляции печати чека на ФР. Полный цикл работы из 1С 7.7 с маркировкой Честный ЗНАК (ГИСМТ, ЦРПТ) из 1С 7.7. ЭДО (табак, обувь, шины, одежда, молочная продукция, вода и прочие группы товаров) для розницы и опта (приемка и оптовая отгрузка маркированной продукции). Поддерживается как объемно-сортовой учет (ОСУ) так и поштучный (поэкземплярный) учет.

2000 руб.

28.03.2017    478493    4446    3488    

2457

Бюджетирование и планирование Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Анализ продаж Пользователь Платформа 1С v7.7 Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

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

28500 руб.

21.04.2017    96400    125    40    

214

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Обмен с ГосИС Программист Бухгалтер Оперативный учет 7.7 Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 1С:Упрощенное налогообложение 7.7 Сельское хозяйство и рыболовство Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Пищевая промышленность Россия Бухгалтерский учет Управленческий учет Платные (руб)

Полностью автоматизированный обмен между конфигурациями 1С 7.7 и ФГИС Меркурий через Ветис.API для всех видов деятельности (Опт, Розница, Производство). Для организации обмена с ФГИС Меркурий требуется минимальная доработка конфигураций (поддерживается "из коробки" 1С: "Торговля и склад ред. 9.2", 1С: "Комплексная ред. 4.5", 1С: "Бухгалтерия 7.7", 1С: "УСН 7.7", 1С Предприниматель, другие конфигурации по заказу, включая нетиповые и самописные). Модуль разработан таким образом, чтобы минимизировать затраты по внедрению в произвольную конфигурацию на базе 1С 7.7. Вы можете БЕСПЛАТНО скачать демо-версию без ограничения по функционалу и опробовать решение в полном объеме перед покупкой. В данном программном продукте реализованы все технические требования Россельхознадзора по обмену в формате 2.0 и 2.1. Решение прошло опытную эксплуатацию и тестирование на крупных объектах всех видов деятельности: Производство, Опт, Розница.

10000 руб.

21.11.2018    53987    156    105    

70

Оптовая торговля Розничная торговля Обмен с ГосИС Бухгалтер Оперативный учет 7.7 1С:Торговля и склад 7.7 Бухгалтерский учет Акцизы Платные (руб)

Дорогие друзья! Предлагаю Вашему вниманию обработку, предназначенную для обмена данными из Вашей учетной системы с ЕГАИС, через универсальный транспортный модуль (УТМ). В обработке реализован весь функционал обмена: - загрузка справочных данных по контрагентам, производителям, импортерам алкогольной продукции; - загрузка справочных данных по номенклатуре алкогольной продукции; - загрузка остатков; - помощник сопоставления справочных данных и запись их в базу данных; - загрузка приходных ТТН и справок Б от поставщиков, отправка по ним актов всех типов, создание по ним приходных документов; - выгрузка расходных ТТН покупателям; - управление Марками и ведение Регистра 3; Обработку возможно использовать автономно, не внося изменений в Вашу Учетную систему. Код открыт.

6000 руб.

13.11.2015    126809    171    2529    

232

Розничная торговля Логистика, склад и ТМЦ Пользователь Оперативный учет 7.7 Оперативный учет 1С:Управление торговлей 10 1С:Торговля и склад 7.7 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Обработка служит помощником для распределения товарных запасов между различными складами. В качестве необходимой информации для анализа, руководитель в отчете может наблюдать: 1. Остатки по выбранным складам 2. Продажи с каждого из складов за выбранный период 3. Возможна группировка по свойствам номенклатуры (для УТ10.3)

5900 руб.

08.07.2011    52067    59    2    

34

Учет доходов и расходов Розничная торговля Бухгалтер Пользователь Платформа 1С v7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Бытовые услуги, сервис Розничная и сетевая торговля (FMCG) Россия Налоговый учет ПСН (патентная система налогообложения) Абонемент ($m)

Отчет позволяет сформировать книгу учета доходов для патентной системы налогообложения (ПСН), используя данные из проведенных документов по выбранной фирме и за выбранный период. По умолчанию используются документы вида "Отчет ККМ" и "Реализация Розница". Можно подключить другие виды документов. Отчет предназначен для использования с конфигурациях "1С:Торговля и Склад 7.7, редакция 9.2" (релиз 932 и выше) и "1С:Комплексная, редакция 4.5" (релиз 446 и выше). Можно легко адаптировать под другие конфигурации, т.к. код открыт. Выкладывается как инструмент для разработки с целью реализации в собственных конфигурациях. Отчет предоставляется в виде внешней обработки, внесения изменений в конфигурацию не требует.

1 стартмани

27.01.2021    8997    21    victuan    2    

10

Розничная торговля Ценообразование, анализ цен Маркетплейсы Программист Оперативный учет 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Россия Управленческий учет Абонемент ($m)

Внешняя обработка для 1С 7.7 конфигураций ТиС и Комплексная конфигурация. Подходит для Windows, которые поддерживают работу с WinHttpRequest.

2 стартмани

10.11.2020    9808    26    user1479046    10    

7

Розничная торговля Обмен с ГосИС Пользователь Платформа 1С v7.7 Конфигурации 1cv7 Розничная и сетевая торговля (FMCG) Россия Абонемент ($m)

Разагрегация (получение кодов маркировки, товаров, входящих в "агрегатированные" поставщиком упаковки) для табачной продукции по коду маркировки коробки - получаем коды всех блоков, входящих в эту коробку, по коду любого блока из нее получить список кодов пачек в блоке. Позволяет запросить в виде дерева содержимое (коды маркировки) табачной продукции. Отсканировав или вставив в строку ШтрихКод упаковки, можно запросить из ЦРПТ вложенные коды Требует наличия ЭЦП(КриптоПро или VipNet, ЕГАИС РуТокен ЭЦП 2.0 не подойдет! ) и регистрации в системе МОТП "Честного знака".

2 стартмани

27.05.2020    17509    42    M_W_W    17    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Fisherru 78 22.05.09 15:29 Сейчас в теме
А вообще у нас ещё много разных интересных технологий ;-)
:-))))
64. vip 01.06.09 15:34 Сейчас в теме
(1) > А вообще у нас ещё много разных интересных технологий ;-)

А вот теперь не сомневаюсь :))
2. anbxp 23.05.09 00:17 Сейчас в теме
Жопа. У вас остаток товара в справочнике хранится?:)
5. Fisherru 78 25.05.09 08:32 Сейчас в теме
(2)
Остатки как и у всех хранятся в регистре.
Поэтому мы и выгружаем их на вечер ДатаОбрезания-1, а затем, в уже пустую базу, загружаем их в ту же дату документом "ВводНачальныхОстатков".
После них уже загружаем оставленный период документов.
3. Mikeware 9 23.05.09 09:34 Сейчас в теме
6. Fisherru 78 25.05.09 08:35 Сейчас в теме
(3)
Про бред не понял :(
Была задача без участия программиста выполнить в автоматическом режиме обрезание БД - задача решена...
Основная сложность была выполнить последовательность неких действий (которые я раньше делал вручную) и чтобы 1С, запущенная из BAT-ничка в пакетном режиме, понимала, что и когда ей делать надо...
11. akon 27.05.09 09:56 Сейчас в теме
(3) Никакой ни бред! Подобная проблема у меня была с аптеками. И тоже периодически занимался "обрезанием" по тому же принципу. Идея "правильная". Пока не смотрел, но заранее спасибо.Да, про (8) не забудь.
55. Mikeware 9 30.05.09 13:53 Сейчас в теме
(11) Проблема не "с аптеками", проблема с ДНК...
56. Fisherru 78 01.06.09 08:45 Сейчас в теме
(55)
Надеюсь выскажу мнение большинства:
"Инфостарт не площадка для пикировок, а место для конструктивного диалога единомышленников" :-)
4. brr 184 24.05.09 13:19 Сейчас в теме
Не понятно: зачем выгружать и загружать документы, вводятся ли начальные остатки? Маловероятно, что после таких манипуляций сходятся остатки.
Автор поработайте над статьей, понять из написаного что либо сложно.
7. Fisherru 78 25.05.09 08:44 Сейчас в теме
(4)
В базе магазина продажи регистрируются расходными накладными. По 200 - 800 документов в день. Через год - полтора документов становится настолько много, что идут реальные подвисания как при создании нового документа, так и при его записи и проведения.
Обрезать "под ноль" - нельзя, так как в магазины периодически повторно перевыгружаются скорректированные документы закупа, корректирующие остатки.
Поэтому оставляем в магазине все документы за 1-2 месяца. Остальное прибиваем.
Выполнять удаление документов за отбрасываемый период в среде 1С, как это делается в стандартной - ооооооооооочень долго.
Поэтому:
Выгружаем остатки на начало оставляемого периода.
Выгружаем все документы за оставляемый период.
Удаляем физически все DBF-ки (кроме справочников) - очень быстро ;-)
В чистую базу грузим остатки на начало периода и все документы в нём.
Остатки сходятся копеечка в копеечку. Что и подтверждается сравнением отчётов по остаткам товаров по входным ценам сделанным ДО и ПОСЛЕ обрезания.
8. ttycoon 27.05.09 03:21 Сейчас в теме
А можно посмотреть болванки загрузки/выгрузки? У нас тоже конфигурация самописная, писали свои обработки, но всегда интересно посмотреть как у других.
А вообще идея замечательная, у самих почти десять объектов, обрезаем раз в несколько лет, но от этого не легче - делали всегда вручную, по бумажке :). Попробуем внедрить у себя.
9. Fisherru 78 27.05.09 08:42 Сейчас в теме
(8)
Вот, первый комментарий по теме :-)
Спасибо за поддержку ;-)
У нас более 130 магазинов и сеть продолжает расти.
По жизни замечено, что при достижении размера *.dbf + *.cdx > 500 Мб - начинается вешалка. А если в магазине (у нас небольшие алкомаркеты) несколько касс, то они вообще конкретно мешают друг другу.
Да, делал обрезание вручную - ручное копирование, удаление *.cdx? куча выгрузок (всё было по отдельности : цены, остатки, документы и прочее), аналогично загрузки. Обрезание шло в одном магазине 40 - 50 мин (магазин стоял).
Когда сделал единую выгрузку (объединив все обработки в одну) и загрузку - стало 20-25 минут, но ручной труд остался.
Сейчас, грубо, управляющий запускает bat-ничек и курить 10-15 минут - всё!
14. SatanClaws 146 27.05.09 15:05 Сейчас в теме
(9): По жизни замечено, что при достижении размера *.dbf + *.cdx > 500 Мб - начинается вешалка. А если в магазине (у нас небольшие алкомаркеты) несколько касс, то они вообще конкретно мешают друг другу.

Т.е. вешалка начинается при 500 метрах на фактически 1 рабочем месте, активно вводящем документы?
Сурово у вас конфа написана, ничего не скажешь...

По теме - идея интересная, такого способа (физически вынося неугодные таблицы) еще не видел...
Чем определяете имена таблиц?
Ручками парсите .dd файл или, скажем, через 1С++?
Данные документов выгружаете/загружаете через "ЗначениеИзСтроки()/ЗначениеВСтроку()"
15. SatanClaws 146 27.05.09 15:06 Сейчас в теме
(14) "Данные документов выгружаете/загружаете через "ЗначениеИзСтроки()/ЗначениеВСтроку()""

это был вопрос :)
20. Fisherru 78 27.05.09 16:28 Сейчас в теме
(15)
>"Данные документов выгружаете/загружаете через "ЗначениеИзСтроки()/ЗначениеВСтроку()""

Нет знаете ли, как-то так исторически сложилось, что всё ручками, каждый реквизит в отдельное поле.
Знаю - не универсально. :-(
Может когда и через метаданные напишем, но коль это уже скока лет живёт, добавить 1-2 новых реквизита - гораздо проще :-)
17. Fisherru 78 27.05.09 16:13 Сейчас в теме
(14)
>Сурово у вас конфа написана, ничего не скажешь...
:-))))))
Самая любимая конфа :-). Писанная с "нуля" и максимально облегченная
НО, факты есть факты.
500 метров при огромной куче маленьких документов - это примерно размер
1SCRDOC.DBF под 100 метров, заголовочной части расх.накл - под 150 Мб, табличной части расх.накл - за 50 Мб - остальное маленькое.
И когда касса пытается под DBF-ом таскать подобные объемы для создать/записать /провести, а сервак - это обычный ПК - реально тормоза...
Специфика, блин.
А когда 2 кассы - вообще пипец. Они вместе(почти) нажимают "Провести" и всё - оба компа надолго задумываются, висят несколько минут - потом вываливаются из 1С из-за блокировок.
В лучшем случае одна касса остается в программе.
Лично наблюдал. После этого и решили резать.
В офисе базы (тоже самописные и гораздо более сложной структуры) более сбалансированные получаются (много мелких документов одного магазина за один день сливаем в один большой документ).
Так что на базах 2-3 Гига работают по 20 - 40 человек.
А нынче вот на SQL перешли. Хоть объем и раздулся, но всё равно веселее стало ;-)
18. Fisherru 78 27.05.09 16:21 Сейчас в теме
(14)
>идея интересная, такого способа (физически вынося неугодные таблицы) еще не видел...
Когда только пришёл в эту компанию (уж лет 8 как), всё так и было как в описанном вами в (16) "классическом методе".
Это после закрытия бокса с компьютером на рынке (раньше так было :-) )
выдирали из него винт, цепляли в офисе на крутую банку и ... вперёд!
Не помню сколько там данных было, но если за ночь обрежется - зашибись ;-)
Очень долго удаляются документы. А если большой период, то тормаза в геометрической прогрессии. Типа 1 месяц - 20 мин, 2-й - 50, 3-й 1,5 - часа и так далее. Чего-то там в 1С не круто реализовано.
А тут знакомый мастер подсказал - не парься : выгрузил, прибил *.dbf, загрузил. Да, нужно поработать - выгрузки загрузки написать...
НО, итог, 20 минут и база обрезана!
19. Fisherru 78 27.05.09 16:25 Сейчас в теме
(14)
>Чем определяете имена таблиц?

Всё просто (это в BAT-нике):
rem - удаление всего кроме справочников
del /Q Путь\*.cdx Путь\dh*.dbf Путь\dt*.dbf
del /Q Путь\ra*.dbf Путь\rg*.dbf Путь\1sblob.dbf
del /Q Путь\1scrdoc.dbf Путь\1sdnlock.dbf Путь\1sjourn.dbf
del /Q Путь\1SCONST.dbf Путь\SYSLOG\*.*

Можно и со справочниками побаловаться, если они распухли и в таком виде не нужны...
10. Fisherru 78 27.05.09 08:43 Сейчас в теме
Выгрузку/загрузку сейчас положу ;)
12. Fisherru 78 27.05.09 10:42 Сейчас в теме
Вот ссылочка
"Принципы выполнения Выгрузки / Загрузки данных при обрезании БД удаленного магазина"
http://infostart.ru/blogs/1085/
Кстати "плюсики" можно и там ставить :-))))))
13. Fisherru 78 27.05.09 10:47 Сейчас в теме
Если есть какие вопросы - пишите ;-)
16. SatanClaws 146 27.05.09 15:09 Сейчас в теме
И еще вопрос - чем не подошел классический метод:
обработка, которая копирует необходимую периодику введенную документами; создает документы вноса остатков, помечает на удаление ненужные документы и т.д.?..
21. Fisherru 78 27.05.09 16:32 Сейчас в теме
P.S.
"Принципы выполнения Выгрузки / Загрузки данных при обрезании БД удаленного магазина"Кстати "плюсики" можно и там ставить :-))))))
Извините предыдущая ссылка чёт не работала, эта вот вроде правильная:
http://infostart.ru/blogs/1085/
22. Ёпрст 1065 27.05.09 16:51 Сейчас в теме
Жесть...
База в 500 метров вместе с cdx - это вообще оооооочччченнннь ммаааало, чтоб её резать.

А длинные строки как, которые в блобе валяются ?
Свёртка + прибитие файлов - вообще мегабоян..
Резать такую маленькую базу не в конце года - вообще моветон.
Книжки покупок/продаж вообще не ведёте?
Взаиморасчеты с клиентосами/поставщиками - тоже ?



24. Fisherru 78 28.05.09 08:41 Сейчас в теме
(22)
В 17 посте уже рассказал что и почему надо резать, привел размеры dbf-ок которые по сети тягаются туда - сюда...
Там где документов мало : 100-200 в день (наши строительные супермаркеты),
нормально доживают и работают и при 1-1,5 Гигах, то есть там приведённые выше размеры активно юзающихся dbf-ок достигаются при 1-1,5 Гигах общего размера базы!
Если нет подобного личного опыта - лучше не комментировать.
Я это не из пальца высосал, а лично наблюдал.
От длинных строк вообще отказались, поэтому блоб пуст.
Открою секрет - длинные строки = страшные тормоза - бегите от них.
Если, к примеру, элементы справочника номенклатура имеют длинную строку (типа описание), то при бегании вверх-вниз по форме списка справочника - страшное замедление. ДАЖЕ если их и не выводим на экран.
В 1С длинные строки реализованы через ж...
25. Ёпрст 1065 28.05.09 08:48 Сейчас в теме
31. Fisherru 78 28.05.09 08:57 Сейчас в теме
32. Ёпрст 1065 28.05.09 09:02 Сейчас в теме
(31) Верить чему ?
Что базу , в !!! 500 !!! метров это вместе с CDX, т.е реально она 100-200 метров нужно резать? И притом, что для учета там всего 1 (ОДИН) регистр ?
Конечно верю!

Свёртка базы путём прибития DBF- ок моветон. В данной статье не учтены все моменты. Подходит она, для оооочень специфических баз. Ибо прибивается вся аналитика вообще за прошлые периоды.
36. Fisherru 78 28.05.09 09:12 Сейчас в теме
(32)
Какие-то пропорции неправильные...
Вот в реально обрезанной базе у нас такие пропорции:
CDX- 168М, DBF-433М
И потом цифру 500 мы для себя выбрали - для профилактики
На самом деле они работают и при больших размерах
Самые-то коллизии начинаются – если 2 и более касс стоят, вот когда они пытаются одновременно юзать по сети
1SCRDOC.DBF под 100 метров, dbf заголовочной части расх.накл - под 150 Мб
Вот тогда пипец – это собственно я и наблюдал...
26. Fisherru 78 28.05.09 08:50 Сейчас в теме
(22)
>Свёртка + прибитие файлов - вообще мегабоян..
Вот это я не понял - все нормальные программисты, делают новые чистые базы, ну или обрезают, через выгрузку(если надо) / удаление dbf / загрузку(если надо) - очень быстро...

>Резать такую маленькую базу не в конце года - вообще моветон.
>Книжки покупок/продаж вообще не ведёте?
>Взаиморасчеты с клиентосами/поставщиками - тоже ?

Замечу, это база магазина (она только для торговли), когда достигает нужного размера или тормоза начинается - тогда и режем...
Вся информация с магазинов стекается в сводную базу в офисе.
Тут и ведём всякие долги и прочее-прочее.
СВОДНУЮ базу режем только с Нового года (если нужно)
Сейчас сводная на SQL превышает в размере 10 Гиг.
В ней активно работают до 20-30 человек - всё путем ;-)

В общем повторюсь - своя специфика, кто её не имеет - тот не поймет.
29. Ёпрст 1065 28.05.09 08:53 Сейчас в теме
(26) У вас в базе - 1 регистр, который ВЫ запросом выгружаете... дальше собственно, разговор можно закрывать...
мини склад млин..
23. Ёпрст 1065 27.05.09 16:58 Сейчас в теме
+22 Посмотрел Выгрузка_Загрузка ... тихий ужас.

27. Ёпрст 1065 28.05.09 08:51 Сейчас в теме
+25 на сегодняшний день в одной базе *.DBF 10,9 Гб
размер самой большой дбф-ки 951 метр ...
база с середины 2008 года..
33. Fisherru 78 28.05.09 09:04 Сейчас в теме
(27)(28)
Везёт ;-)

У нас в магазинах в качестве серваков стоят Интел коре дуо 1,8,
да и винты обычные - может в этом дело?
28. Ёпрст 1065 28.05.09 08:51 Сейчас в теме
+27 активных юзверей - 60-70...и всё летает.
30. Ёпрст 1065 28.05.09 08:56 Сейчас в теме
+29 Причем, выгружаете весьма экзотическим способом...
34. Fisherru 78 28.05.09 09:06 Сейчас в теме
>Посмотрел Выгрузка_Загрузка ... тихий ужас
>Причем, выгружаете весьма экзотическим способом...

А чего не так?
35. Ёпрст 1065 28.05.09 09:08 Сейчас в теме
(34) Да всё..
:)

Выгружать Запросом - моветон, когда есть ВыгрузитьИтоги...
Скидывать всё в dbf, используя XBase ... тоже
Загружать потом обратно, привязываяс к коду справочника - тоже...
Ну и т.д.


39. Fisherru 78 28.05.09 09:23 Сейчас в теме
(35)
Да ладно, работает же ;-)
Всё как-то исторически сложилось :)
А что касается "ВыгрузитьИтоги" - задумаюсь, как-то до сих пор не использовали...
Тем более наша ВыгрузкаОстатков через запрос идёт около 10 секунд. стоит ли париться?

>Скидывать всё в dbf, используя XBase - тоже моветон
а как можно лучше? подскажите...

>Загружать потом обратно, привязываяс к коду справочника - тоже...
а как же по другому?
42. Ёпрст 1065 28.05.09 09:36 Сейчас в теме
(39) А ты сравни метод ВыгрузитьИтоги с установленым фильтрами со своим запросом...
ЗначениеВСтрокуВнутр/ЗначениеИзСтрокиВнутр - поимеешь сразу сам объект, и не надо ничего искать...это самое простое.
44. Fisherru 78 28.05.09 09:42 Сейчас в теме
(42)
Спасибо, вот это интересно.
Проста так обмены ещё до меня были написаны и я особо не углублялся...
53. Fisherru 78 29.05.09 08:46 Сейчас в теме
(42) (46)
Побаловался я с ЗначениеВСтрокуВнутр/ ЗначениеИзСтрокиВнутр
И понял, почему мои предшественники отказались от использования данной технологии...
1. Скорость загрузки/выгрузки никаким образом не меняется ни в какую сторону,
2. Объем выгрузки только возрастает в разы, так как передаем не код – 4-5 цифр, а строку 50 символов – а это возрастание трафика...
3. Код выгрузки загрузки выглядит более компактно, НО
4. ПОЛУЧАЕТСЯ ПОЛНАЯ ЛАЖА

Поэкспериментировал я с выгрузкой загрузкой товаров, по старому с поиском через код и по-новому через ЗначениеВСтрокуВнутр/ ЗначениеИзСтрокиВнутр – сумма остатков загруженных в базы разошлась на большую цифру – порядка 30 %
Начал рыть
Поскольку справочник номенклатуры был только первоначально скопирован на магазин, а потом новые элементы рождались параллельно в сводной базе и базе магазина, то их внутренне представление в этих разных БД различно (не у всех, но у части).

Ниже приведен пример одних и тех же товаров в разных базах, только первый товар совпадает по внутреннему представлению, остальные 2 – нет !!!

Сводная база
Товар = Абсент "Тунел Зеленый" 0,7*6 70% Испания
Товар.Код = "5065"
ЗначениеВСтрокуВнутр(Товар) = "{"B","0","0","14","0","0"," 5061 "}"

Товар = Бренди "Кондор" ХО в п/к 40% 0,7*12 Франция
Товар.Код = "0"
ЗначениеВСтрокуВнутр(Товар) = "{"B","0","0","14","0","0"," 5062 "}"

Товар = Абсент "Тунел Красный" 0,7*6 70% Испания
Товар.Код = "5066"
ЗначениеВСтрокуВнутр(Товар) = "{"B","0","0","14","0","0"," 5063 "}"

База магазина

Товар = Абсент "Тунел Зеленый" 0,7*6 70% Испания
Товар.Код = "5065"
ЗначениеВСтрокуВнутр(Товар) = "{"B","0","0","14","0","0"," 5061 "}"

Товар = Бренди "Кондор" ХО в п/к 40% 0,7*12 Франция
Товар.Код = "0"
ЗначениеВСтрокуВнутр(Товар) = "{"B","0","0","14","0","0"," 5065 "}"

Товар = Абсент "Тунел Красный" 0,7*6 70% Испания
Товар.Код = "5066"
ЗначениеВСтрокуВнутр(Товар) = "{"B","0","0","14","0","0"," 5060 "}"

Поэтому, как хотите, но поиск по коду товара, который всегда одинаков во всех базах – самое правильное решение. Во всяком случае у нас.
57. vip 01.06.09 08:58 Сейчас в теме
(53) А какое отношение имеет код к внутреннему ID элемента справочника?
59. Fisherru 78 01.06.09 15:23 Сейчас в теме
(57)(58)
Может мы о разном говорим?
Код - базовый реквизит элемента справочника.
Кроме того есть ещё внутренний ID элемента.
Они НЕ взаимосвязаны (у части товаров они совпадают(последняя цифра в ЗначениеВСтрокуВнутр), но потом разьезжаются).
Если говорить о том, что мы выгружаем документы, потом прибиваем их, в базе остаются только справочники, а потом мы загружаем документы обратно и нужно их заполнить по справочникам, то нам всё равно по чем искать по Коду элемента или по внутреннему ID, так как справочник как был до обрезания, так и остался после него.
НО, если у нас документы (Закуп, например), как и элементы справочника рождаются в Центральной базе, а потом мигрируют в БД удалённых магазинов,
то "Внутренний ID" использовать нельзя, я показал выше, что в разных базах "Внутренний ID" товаров различается (у меня на практике процентов 10-20 разьехалось).
А поскольку, при заведении элемента справочника в БД удалённого магазина, я принудительно устанавливаю ему КОД как в центре, то они у меня везде одинаковые - его и используем.
61. Ёпрст 1065 01.06.09 15:30 Сейчас в теме
(59) Ну привет.. если разные ID - это автоматом РАЗНЫЕ элементы.
Какая на синхронизация по коду может быть вообще ?


62. vip 01.06.09 15:32 Сейчас в теме
(59) > элементы справочника рождаются в Центральной базе, а потом мигрируют в БД удалённых магазинов,
то "Внутренний ID" использовать нельзя, я показал выше, что в разных базах "Внутренний ID" товаров различается (у меня на практике процентов 10-20 разьехалось).

ответ в (58)

С чем у тебя "Внутренний ID" товаров различается?
Ты не совсем понимаешь, как в базе хранятся элементы справочников.
65. Fisherru 78 01.06.09 16:00 Сейчас в теме
(62)
Правда, очень надеюсь, что понимаю ;-)
А вообще, раньше даже и не заморачивался, описанная выше технология работает на обмен между центром и удалёнными торговыми точками более 13-ти лет.
Прикиньте и работает ;-)
Не забывайте, всё пишем сами и под себя - с "нуля"
(63)
И справочники нужные у нас "с кодом" и крыжики уникальности кода стоят, там где надо, и коды мы сами рождаем в удалённых базах -в общем всё хорошо у нас и все счастливы.

Вернусь к (62)
Я привел пример:
Что один и тот же товар в сводной базе и базе удалённого магазина имеют раный внутренний ID
Сводная база
Товар = Абсент "Тунел Красный" 0,7*6 70% Испания
Товар.Код = "5066"
ЗначениеВСтрокуВнутр(Товар) = "{"B","0","0","14","0","0"," 5063 "}"

База магазина
Товар = Абсент "Тунел Красный" 0,7*6 70% Испания
Товар.Код = "5066"
ЗначениеВСтрокуВнутр(Товар) = "{"B","0","0","14","0","0"," 5060 "}"

То есть если я выгружу из сводной ID "{"B","0","0","14","0","0"," 5063 "}",
То в базе магазина он найдёт мне совершенно другой товар.

66. Ёпрст 1065 01.06.09 16:04 Сейчас в теме
(65) Это - РАЗНЫЕ элементы с одним названием.. неужели не понятно?
69. vip 01.06.09 16:11 Сейчас в теме
(66) Есть смутные сомнения, что у автора не УРБД, а самопальный обмен.
По молодости таким баловался, работало, но проклял все на свете.
71. Ёпрст 1065 01.06.09 16:12 Сейчас в теме
(69) Нам этого не понять.. Люди понимашь, на собственной нетленке с !одним! регистром учет ведут 10 лет и режут базу при 500 метров..
А ты говоришь кода..кода..
:)
72. Fisherru 78 01.06.09 16:13 Сейчас в теме
(69)
Ага, самописное всё :-)
Не, у нас нормально, всё катит.
73. vip 01.06.09 16:15 Сейчас в теме
(72) Так все-таки не УРБД?
Тогда вопросов больше не имею.
68. vip 01.06.09 16:06 Сейчас в теме
(65) > То в базе магазина он найдёт мне совершенно другой товар.

И правильно сделает, т.к. это и будет совершенно другой товар.

> Правда, очень надеюсь, что понимаю ;-)

Зря надеешься.
37. Ёпрст 1065 28.05.09 09:13 Сейчас в теме
Если уж так хочется резать, путём прибития DBF, то хотя бы так:

del -Y *.cdx
del -Y 1sjourn.dbf
del -Y dt*.*
del -Y dh*.*
del -Y ra*.*
del -Y rg*.*
del -Y 1SACCS.DBF
del -Y 1SBKTTL.DBF
del -Y 1SBKTTLC.DBF
del -Y 1SENTRY.DBF
del -Y 1SOPER.DBF
del -Y cj*.*

Далее ТиИ + галка очищать ссылки, удалять данные объектов.

Останется база токма со справочниками.. без лишних ссылок на объекты..
Потом думать о периодике и прочей муре.


40. Fisherru 78 28.05.09 09:24 Сейчас в теме
(37)
del -Y 1SACCS.DBF
del -Y 1SBKTTL.DBF
del -Y 1SBKTTLC.DBF
del -Y 1SENTRY.DBF
del -Y 1SOPER.DBF
del -Y cj*.*

у нас в торговле этого нет
38. Ёпрст 1065 28.05.09 09:15 Сейчас в теме
+37 Но один хрен, если ведётся книга покупок/продаж - так не делают...
Если нужна аналитика в партиях (для тис, к примеру) тоже...
если нужна аналитика по КредДокументу - тоже..
и т.д.
41. Fisherru 78 28.05.09 09:28 Сейчас в теме
Нету у нас? самописное всё с "нуля"
> книга покупок/продаж
> аналитика в партиях
> аналитика по КредДокументу

И вообще, я тут собственно с другого начал - с BAT-ника
Выгрузки/загрузки - не презентовал, не хвалюсь я ими - самые рядовые
Просто люди попросили глянуть для примера как у нас - вот и выложил
43. Fisherru 78 28.05.09 09:40 Сейчас в теме
А справочники ни с регистрами ни с документами никак не связаны - не трогаем их и всё.
Если просто убить регистры и документы и почистить периодику - то просто получим чистую базу для нового магазина.
45. Fisherru 78 28.05.09 09:49 Сейчас в теме
>ЗначениеВСтрокуВнутр/ЗначениеИзСтрокиВнутр - поимеешь сразу сам объект, и не надо ничего искать

Не очень догнал
Сейчас, при загрузки документа, я для заполнения у него реквизита "склад", например, ищу по переданному коду склада в справочнике складов и подставляю найденный элемент.
А как будет по новому?
Можно кусок кода для примера?
46. Ёпрст 1065 28.05.09 10:01 Сейчас в теме
(45) а так не будешь искать, а сдлаешь Склад = ЗначениеИЗСтрокиВнутр(ранее сохраненная строка, как ЗначениеВСтрокуВнутр(Склад));
48. Fisherru 78 28.05.09 13:32 Сейчас в теме
(46)
Кстати, экспериментальным путем получено, что при использовании
ЗначениеВСтрокуВнутр(Объект) длинна возвращаемой строки 44 символа или бывает больше?
Сколько нужно в Dbf-ке на длину поля резервировать?
49. UncleVader 129 28.05.09 17:08 Сейчас в теме
(48) Вообще-то DBF для обмена данными - прошлый век, я юзаю XML и всем советую
50. SatanClaws 146 28.05.09 18:01 Сейчас в теме
(49) Помниться, XML-парсер из v7plus.dll в чем-то был нестабилен...

А с ДБФ - все просто и примитивно.
К тому же - есть индексация.
51. UncleVader 129 28.05.09 18:36 Сейчас в теме
(50) Хм... что-то я не наблюдал никакой нестабильности
Примитивность ДБФ накладывает ограничения и неудобства
52. Fisherru 78 29.05.09 08:20 Сейчас в теме
(49)
А в чем выигрыш?
В объеме выгрузки или в скорости?
С XML-лем немного баловался когда делал выгрузку данных из 1С на платёжный терминал...
Там структура передаётся построчно и, субъективно по мне, мене визуально читабельная, чем четко определенные поля DBF.
47. Fisherru 78 28.05.09 10:05 Сейчас в теме
54. Fisherru 78 29.05.09 08:52 Сейчас в теме
+53
Поправлюсь.
Для обрезания одной базы (выгрузка и загрузка в одной базе)- это подходит, но только из-за красоты кода - стоит ли переписывать?

А вот для выгрузок и обменов документами и справочниками между Сводной базой и базами магазинов - это недопустимо
58. Ёпрст 1065 01.06.09 09:07 Сейчас в теме
>>>>"Поэтому, как хотите, но поиск по коду товара, который всегда одинаков во всех базах – самое правильное решение."

Бред сивой кобылы в лунную ночь...
Даже лень объяснять почему...
60. Fisherru 78 01.06.09 15:26 Сейчас в теме
(58)
Отсылаю к моему посту (56)
63. Ёпрст 1065 01.06.09 15:32 Сейчас в теме
"Нам всё равно по чему искать"

Ну что за бред..
Товаров с одинаковым кодом можно наплодить до едрени фени, а вот с одинаковыми ID - хрен.
И еще, у некоторых справочников, вообще нет ни кода ни наименования.
70. Fisherru 78 01.06.09 16:11 Сейчас в теме
А вообще, я это все затевал ТОЛЬКО для представления технологии использования BAT-файла.
Выгрузки / загрузки выложил по просьбе конкретных людей - они (эти обработки) ни на что не претендуют. Просто у нас вот так, и всё хорошо.
Если у вас тоже всё хорошо, но по-другому - замечательно...
(63)(64)
А вы правда верите, что я всю эту тему замутил, чтобы просто постебаться?
Реально, на всю работу потрачено много времени и экспериментов (не имею ввиду технологию выгрузки/загрузки их заготовки брал из того, что уже 100 лет используем, только доработал что нужно) - и работа завершена.
Результатом стало то, что в случае тормозов магазина из-за размера базы (а 500 это метров или 5 Гиг - без разницы).
Я звоню в магазин, управляющая входит в 1С, запускает обработочку, которая делает BAT-файл, выходит из 1С, запускает BAT-файл и идет курить.
10 - 20 минут и база обрезана до минимальных 100 Метров - можно работать.
Всё :-)
67. Ёпрст 1065 01.06.09 16:06 Сейчас в теме
74. Fisherru 78 01.06.09 16:28 Сейчас в теме
А у нас всё автоматизировано (ну почти всё)
На примере 1-го направления (деятельности).
Есть оптовая компания, которая работает с клиентами и тарит нашу розничную сеть на 95% номенклатуры - 1 база.
Розничная компания - 1 сводная + 135 (пока) удаленных магазинов (БД).
Примерный режим работы:
1.Офис-менеджеры приходят на работу, выбирают магазину к затариванию на завтра, хлоп кнопочку (анализируем остатки, оптимальный запас) – есть заявки.
2. Если нужно, офис-менеджеры их корректируют и хлоп кнопочку – заявки в БД оптовой компании выгрузились / загрузились в виде отгрузок (разбитые по тоннажу, складам, товарному составу)
3. Если нужно, офис-менеджеры их корректируют и хлоп кнопочку и эти отгрузки в виде закупа обратно в сводную базу розничной сети улетают, а заодно и корректировавшиеся (в оптовой базе) отгрузки предыдущих периодов (автоматом) прихватываются.
4. Офис-менеджеры хлоп кнопочку и этот «Закуп» и изменёнными закупами предыдущих периодов на магазины по инету уезжают. Каждый пакет на свой магазин.
5. Там управляющие их грузят.
Ну а справочники – вечером выгрузили – хлоп кнопочку – всё на магазины по инету уезжает.
И никакого УРБД-ного гемора...
Правда хочу вместо этих 4-к кнопок – 1 большую нарисовать, но руководство пока морально не готово :-)))))))))))))
75. Fisherru 78 18.02.10 14:34 Сейчас в теме
P.S.
Перед новым годом около 100 магазинов были обрезаны в этом автоматическом режиме. Обрезали не только я программист, но и другие люди просто умеющие работать с компьютером (копировать например ;) )
Грабли были, но единожды, из-за вирусов.
Вирус держал файл когда производилось первоначальное копирование базы и копирование слетело, прошла выгрузка, а потом по BAT-нику грохнуло все регистры и документы
Поскольку у меня таким образом не осталось копии ДО обрезания, пришлось тормозиться и вытаскивать ночную копию. Потом лечились от вирусов и всё по новой.
В дальнейшем стали перед обрезанием делать ещё одну предварительную копию, чтоб наличие вирусов вычислить...
Оставьте свое сообщение