Улучшенная свертка торговли




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

99 Comments

  1. mihenius

    Пока не резал, но однозначно + видно большая была проделана работа

    Не хватает подробного описания по шагам.

    Хотя из интерфейса все понятно, но может не всем 😉

    Резали базу ТиС?

    Переделать запросы и выборки на прямые запросы было бы быстрее

    Reply
  2. mihenius

    Сворачиваются ли периодические реквизиты или просто удаляются до даты свертки?

    Reply
  3. mihenius

    Проставьте в каких компонентах происходит свертка 😉

    В названии есть, а вот в параметрах нету.

    Reply
  4. Shaman100M

    Спасибо за заочный плюс.

    Периодика «сворачивается» вариантно:

    Вар. 1. последнее значение на дату свертки.

    Вар. 2. запись в дате свертки суммы периодич. значений по дату свертки (для числовых «накопительных» реквизитов)

    Вар. 3. Вариант 2 только для значений, прописанных документами.

    Указывается на второй закладке для каждого периодического реквизита, по умолчанию вариант 1.

    Периодику можно предварительно сохранить

    Reply
  5. Shaman100M

    +(4) Периодика и ссылки сохраняются в подкаталог ИБ «SVERTKA» Т.е. предварительно их можно сохранить в копии, потом просто перекинуть папку в основную базу, обработка файлы найдет.

    Свертка для компоненты «Торговля и склад» (обычная, не

    Reply
  6. Shaman100M

    (1) базу резал два-три раза, можно сказать, определенный уровень отладки пройден. Прямыми запросами будет быстрее, но не на порядок, — в целом алгоритм стандартной свертки «тяжеловат» (идея была основной ход алгоритма сохранить). Долю времени по запросам можно посмотреть в листинге выполнения.

    Подробное описание будет позднее. Хотя, оно больше касается «деталей» типа (5).

    Reply
  7. CheBurator

    +1 несомненно.

    пригодится тем, кто предпочитает сворачивать базы алгоритмами, близкими к штатным…

    Reply
  8. Shaman100M

    (7) В отсутствие подробного описания: периодические значения по справочникам и константам можно свертывать в любой базе.

    Reply
  9. CheBurator

    еще бы добавить не просто свертку периодических, а и удаление незначащих пер.значений

    Reply
  10. Shaman100M

    (9) Что означает «незначащих» и где будет удаление?

    Reply
  11. Shaman100M

    Имхо, по периодике ничего лишнего: п. 4 — сохранение периодики на дату свертки; п. 11 — удаление прошлых (читай — по дату свертки) периодических значений; п 12 — восстановление периодики в дате свертки.

    Reply
  12. CheBurator

    (10) незначащие — значит лишние.

    как пример история периодического значения может иметь такой вид:

    01.10.2007 — 123.00

    05.10.2007 — 123.00

    06.10.2007 — 125.00

    периодическое значение 123 на дату 05.10.2007 — лишнее…

    Reply
  13. Shaman100M

    Ну, так-то можно, да и не сложно это. Наверно, стоит вынести обработку периодики в отдельную программу, добавить твоё предложение. Тогда ее будет можно использовать с нестандартными свертками, где обработки периодики нет.

    Reply
  14. Shaman100M

    изменения от 30.10.2007

    Исправлена ошибка: в сворачиваемом периоде не распроводились документы «ВводОстатков…» сформированные предыдущими «свертками» (наличие в реквизите «Комментарий» словосочетания «СверткаБазы»). Строки кода 3114-3116 закомментированы. Сорри, проверял на «девственной», ни разу не свернутой базе.

    Reply
  15. Shaman100M

    изменения от 06.11.2007. Новое: — встроенное удаление помеченных документов; ведение лога; закрытие сеанса 1с после выполнения

    Reply
  16. Shaman100M

    Обновление

    Reply
  17. Glide

    Сунулся с этой сверткой в сильно-переработанную ТиС 8.7. Исправлял, исправлял мелочи типа глНазваниеДокументаВЖурнале и т.д. И в итоге заткнулся на Перечислениях и совершенно другом составе реквизитов ДокументовВводаОстатков. Пришлось бросить.

    А вообще очень понравилась Ваша Свертка, хоть и не пригодилась.

    Reply
  18. mihenius

    (17) Эта обработка под 9.2, Под 8.7 нужно использовать универсальные или дорабатывать текущую. В описании неявно указано:

    «Отличия от штатной свертки ТиС v9:»

    Reply
  19. Shaman100M

    (17) Под 8.7 дорабатываться, скорее всего не будет. Имхо, если переделывать, смотреть на сколько отличаются между собой штатные 8.7 и 9.2 . В этой версии планируется добавить восстановление ГП.

    Reply
  20. mihenius

    Да и не нужно ;0)

    а (Glide) пускай разбирается с универсальными, на сайте есть парочку неплохих

    Reply
  21. GJosh

    Блестящая вещь. По скорости — фантастика!

    Reply
  22. mihenius

    ДокОст.НоваяСтрока();

    {\…СВЕРТКА ОТ ШАМАНАSVERTKA_1340SVERTKA.ERT(788)}: Не выбран документ!

    Разбираюсь почему не смог создаться документ.

    Reply
  23. mihenius

    А вот это из лога

    21.01.2008;10:06:59;Администратор;1С:Предприятие;Свертка;Информация;3; 12 : 00 : 00 : 00 : 1 471 / 558 608 : Документ ВводОстатковПокупателя Регистр КнигаПродаж. Выгрузка в ТЗ;;;

    21.01.2008;10:07:00;Администратор;1С:Предприятие;Свертка;Информация;3; 12 : 00 : 00 : 01 : 1 471 / 147 100 : Документ ВводОстатковПокупателя Регистр КнигаПродаж. Производные колонки;;;

    21.01.2008;10:07:00;Администратор;1С:Предприятие;Свертка;Информация;3; 12 : 00 : 00 : 00 : / : Документ ВводОстатковПокупателя Регистр КнигаПродаж. Сортировка ТЗ;;;

    21.01.2008;10:07:00;Администратор;1С:Предприятие;Ошибка времени выполнения;Ошибка;5;ДокОст.НоваяСтрока(); : {\…СВЕРТКА ОТ ШАМАНАSVERTKA_1340SVERTKA.ERT(788)}: Не выбран документ!;;;

    21.01.2008;10:09:03;Администратор;1С:Предприятие;Документ создан;Информация;3;;;Ввод остатков ТМЦ МП-0002517 31.12.2007;

    21.01.2008;10:09:08;Администратор;1С:Предприятие;Документ не записан;Информация;3;;;Ввод остатков ТМЦ ГП-0000001 31.12.2007;

    Получается документ создается позже или теряется ссылка текущего ввода

    Reply
  24. mihenius

    По ценам. Чтобы не менять ручное изменение цен, можно использовать спец документ для фиксации периодики.

    Reply
  25. mihenius

    На разрешении 1024*768 не виден ряд кнопок.

    Приходится отключать панель окон или фиксить обработку 😉

    Reply
  26. sis

    супер, 1,8гб. до 300мб. за час!!! +++

    Reply
  27. Shaman100M

    (22) и (23) За что боролся ( см. http://infostart.ru/profile/8196/blogs/298/ ), на то и напоролся 🙂

    Почему не смог создаться документ. Предполагаю, что в остатках присутствуют записи с пустыми измерениями (которые как раз и служат реквизитами-ключами при создании нового документа) Видимо, пустые ключи совпали с пустыми измерениями первой записи, — условие на создание нового документа было пропущено.

    Обновил, добавил в условие создания нового документа проверку первой записи таблицы.

    Тезка, сообщи о результатах, — по алгоритму данной свертки, созданный документ с пустыми реквизитами обязательного заполнения д.б. помечен как BAD и не проводиться.

    (24) Я понял. Идея хорошая, тем более, реализуется не сложно.

    (25) Фиксить насыщенный диалог, чтобы он остался удобным и красивым, — долго, сделаю позднее с добавлением возможности восстановления ГП. Пока для себя перемести на первой закладке галки с рамками вниз, а кнопки с обновляемым текстом — наверх.

    Reply
  28. mihenius

    Пока все работает 😉

    Премного благодарен за оперативность.

    Куда перечислять благодарности?



    Еще бы хотелось синхронизации по Вводам.

    Например поменяли что-то в архивной базе (оч. редко но бывает). Теперь формируем новые вводы на конец в архивной БД, а вот в новой хотелось бы не только создание новых доков, но и проверка отличий от текущих вводов. Надеюсь объяснил понятно %)

    Reply
  29. mihenius

    Попробую объяснить поподробнее.

    После свертки получаются 2 базы:

    А(до свертки), Б(после свертки)

    Вдруг понадобилось в базе А исправить один из документов (крайняя мера, но бывает и такое)

    После изменений в базе А формируем новые вводы.

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

    Т.е. у нас получается архив с возможностью синхронизации с текущей базой (Правда там возможны проблемы со ссылками, но они решается замыканием на документ ввода)

    Reply
  30. mihenius

    По поводу ошибки. Так и есть

    По несколько строк в КнПрод и КнПок без фирм

    Сейчас разбираюсь откуда такое может висеть

    Reply
  31. Shaman100M

    (28) спасибо.

    (29) По поводу синхронизации, — оперировать документами «ВводОстатков…» скорее всего не стоит, — большой объем поиска, сравнения и перепроведения. В общем, вижу такой способ:

    Для базы А(до свертки) хранить таблицы значений с запросами по регистрам на конец даты свертки.

    При синхронизации:

    1. В базе А выполняем запросы по регистрам повторно, выгружаем в таблицы значений.

    2. Восстанавливаем сохраненные таблицы, находим разницу с п.1.

    3. По оле соединяемся с базой Б,

    4. В базе Б по оле удаляем прежние «корректурные» Вводы остатков

    5. По таблицам-«разницам» создаем новые «корректурные» вводы остатков и проводим их.

    Второй вариант — синхрить каждый измененный документ отдельно, — в таком случае

    оперируем разницей между движениями регистров до и после изменений, п. 4 пропускаем, синхронизацию проводим сразу.

    Однако, думаю не все так просто, — отрицательную разницу свертка обрабатывает иначе, да и объекты, удаленные в базе Б могут «всплыть», придется всю цепочку по ним передавать… — писать вторую выгрузку загрузку… Если делать, то совсем просто: нет объекта — нет синхронизации.

    Reply
  32. Shaman100M

    (30) У вас Кораблев-Пустынный не работает случаем?

    Reply
  33. mihenius

    (31)часть регистров закрываю «срезами регистра» (спецдоки) со встроенной возможностью выгрузки загрузки итогов. Это оч. удобно. Конечно так делать стоит только по регистрам, у кот. нет в измерениях типа документ.

    Делаю синхронизацию по ОЛЕ, проверяю по ключевым полям, если документ изменен перегружаю его полностью в новую базу

    (32)нет

    Reply
  34. MansurKa

    прекрасная обработка 🙂 еще бы дождаться автоматического восстановления ГП 🙂

    Reply
  35. spryn

    Крутанская обработка, сильно помогла, спасибо!!!

    Reply
  36. rdv

    Возможно ли её использовать для комплексной, з/п не ведется.

    БИ здесть естественно не обрабатываются.

    Reply
  37. rdv

    Может быть грохнуть все проводки и перепровести все документы

    Reply
  38. Shaman100M

    А остатки?

    Да даже если бы и бух. не велась, только оперучет, — структура регистров и документы переноса остатков должны совпадать с ТиС.

    Reply
  39. rdv

    Структуру регистров и документы переноса еще не анализировал.

    Необходимо будет сформировать БИ на начало, ну и все таки перепровести

    остальные документы, чтобы сформировалисть проводки.

    Reply
  40. bob_phaser

    Доброе время суток ! Помогите, пожалуйста — Торговля и склад для Украины 7.70.008

    При запуске Вашей обработки такие сообщения :

    глПриИзмененииФирмы<<?>>(Док2);

    {C:TMPTESTEXTFORMSSVERTKA.ERT(541)}: Процедура не обнаружена (глПриИзмененииФирмы)

    ГлПриИзмененииФирмы<<?>>(ДокОст);

    {C:TMPTESTEXTFORMSSVERTKA.ERT(834)}: Процедура не обнаружена (ГлПриИзмененииФирмы)

    Сообщить(«Распроведен » + глПредставлениеДокумента<<?>>(Док.ТекущийДокумент()));

    {C:TMPTESTEXTFORMSSVERTKA.ERT(3697)}: Функция не обнаружена (глПредставлениеДокумента)

    Сообщить(«Распроведен » + глПредставлениеДокумента(Док.ТекущийДокумент()<<?>>));

    {C:TMPTESTEXTFORMSSVERTKA.ERT(3697)}: Неопознанный оператор

    ЗаписатьЛог(«Распроведен » + глПредставлениеДокумента<<?>>(Док.ТекущийДокумент()));

    {C:TMPTESTEXTFORMSSVERTKA.ERT(3699)}: Функция не обнаружена (глПредставлениеДокумента)

    ЗаписатьЛог(«Распроведен » + глПредставлениеДокумента(Док.ТекущийДокумент()<<?>>));

    {C:TMPTESTEXTFORMSSVERTKA.ERT(3699)}: Неопознанный оператор

    ЗаписатьЛог(«Распроведен » + глПредставлениеДокумента(Док.ТекущийДокумент()))<<?>>;

    {C:TMPTESTEXTFORMSSVERTKA.ERT(3699)}: Ожидается ключевое слово ‘КонецЕсли’ (‘EndIf’)

    ЗаписатьЛог(«Распроведен » + глПредставлениеДокумента(Док.ТекущийДокумент()))<<?>>;

    {C:TMPTESTEXTFORMSSVERTKA.ERT(3699)}: Ожидается ключевое слово ‘КонецЕсли’ (‘EndIf’)

    <<?>>КонецЕсли;

    {C:TMPTESTEXTFORMSSVERTKA.ERT(3700)}: Ожидается ключевое слово ‘КонецПроцедуры’ (‘EndProcedure’)

    Я _полный_ дилетант. Очень нужно обрезать базы, ситуация крайне запущена 🙁

    4 года это все живет. Штатные средства никуда не годятся.

    Reply
  41. Shaman100M

    Доброе.

    Эта свертка для Российской ТиС v9.хх, для другой версии может не работать,

    перенос отсутствующих функций из глобального модуля в обработку может не спасти.

    Reply
  42. rustork
    Reply
  43. Golub

    Все отлично работает.Спасибо разработчику, просто выручили. Стандартная обработка «работала» 9 суток без перерыва на базе в 1.5ГБ, пришлось все равно прервать. На той же самой базе на все операции, включая проверку неуникальности документов ушло около пяти часов.

    Reply
  44. Shaman100M

    (43) Выложил обновление. В качестве платы за оперативность оставляю тестирование на Вас, rustork (там не страшно, всего 3 добавленных строки). 🙂

    Указанная ошибка могла возникнуть при установленном фильтре по фирмам.

    Успехов.

    Reply
  45. brr

    Отсутствует контроль режима работы: монопольный или нет.

    Reply
  46. brr

    Дата свертки меняется до того как свертка была произведена, если что не так приходиться лезть в константы

    Reply
  47. brr

    Упс, дата свертки берется не из констант, еще не лучше. И что теперь восстанавливать базу из архива?

    Reply
  48. brr

    Извиняюсь, спешка блин, достаточно пометить на удаление новые документы ввода остатков и дата свертки «вернется обратно»

    Reply
  49. brr

    Транзакция каждые полминуты:

    16 : 00 : 05 : 56 : / : ТА назад…

    16 : 00 : 00 : 00 : 80 / 21 333 : Свертка и удаление документов за Февраль 2003 г.

    16 : 00 : 00 : 01 : 402 / 36 054 : Свертка и удаление документов за Март 2003 г.

    16 : 00 : 00 : 01 : 561 / 61 089 : Свертка и удаление документов за Апрель 2003 г.

    16 : 00 : 00 : 01 : 772 / 64 603 : Свертка и удаление документов за Май 2003 г.

    16 : 00 : 00 : 00 : 525 / 78 947 : Свертка и удаление документов за Июнь 2003 г.

    16 : 00 : 00 : 01 : 828 / 59 640 : Свертка и удаление документов за Июль 2003 г.

    16 : 00 : 00 : 01 : 1 069 / 57 525 : Свертка и удаление документов за Август 2003 г.

    16 : 00 : 00 : 01 : 1 354 / 66 864 : Свертка и удаление документов за Сентябрь 2003 г.

    16 : 00 : 00 : 01 : 1 285 / 68 839 : Свертка и удаление документов за Октябрь 2003 г.

    16 : 00 : 00 : 01 : 1 225 / 69 602 : Свертка и удаление документов за Ноябрь 2003 г.

    16 : 00 : 00 : 04 : 1 887 / 27 348 : Свертка и удаление документов за Декабрь 2003 г.

    ЗафиксироватьТранзакцию();

    {C:DOCUMENTS AND SETTINGSSYCHEVРАБОЧИЙ СТОЛSVERTKASVERTKA_1340SVERTKA.ERT(395)}: Ошибка при выполнении процедуры ЗафиксироватьТранзакцию

    Reply
  50. Shaman100M

    Код посмотрю.

    Однако, транзакция «срывается» если в ней сработало Исключение в конструкции «Попытка…», о чем в листинге сообщается, — советую просмотреть его еще раз и за больший промежуток времени (хотя бы полминуты)

    Reply
  51. Shaman100M

    В коде все нормально вродь…

    Reply
  52. Shaman100M

    Да, монопольный режим я, однако, забыл проконтролировать. 😉

    Хотя… немонопольно можно запускать предварительные этапы свертки.

    Reply
  53. brr

    Монопольный режим нужно контролировать если стоят галки Переброска ТА

    Reply
  54. Just

    У меня такая же фигня (50) при установке транзакции (по этапам) винда говорит, что недостаточно виртуальной памяти,

    пробовал несколько раз, всегда одно и тоже,

    База 5гигов, не сворачивалась с 2003 г. (на 2007 подает), комп двух ядерный, оперативы 2гига, свободного места на винте 80 гигов.

    Reply
  55. Shaman100M

    (55) Попробуй установить транзакцию через каждые полминуты, 8-й пункт выполнить отдельно, если все равно останавливается — запускай его повторно, пока не дойдет до конца, затем продолжить оставшиеся пункты.

    Скл базу можно без транзакции запустить.

    Что еще можно придумать? Чаще, чем полминуты фиксировать транзакцию, ну, например, добавить условие на количество обрабатываемых объектов (300, например):

    В строке 394 модуля формы изменить условие

    Код
     Если  (_getperformancecounter()   - Тран_ПослВремя > 30000) Или (ТекУровень   = 2) Тогда 

    Показать полностью

    на

    Код
     Если  (_getperformancecounter()   - Тран_ПослВремя > 30000) Или (ТекУровень   = 2) 

    Показать полностью

    ИЛИ (Тран_КолОбъектов > 300)

    Код
     Тогда 

    Показать полностью

    Reply
  56. Just

    что-то все равно тоже самое, при любом виде транзакции

    Reply
  57. Shaman100M

    (57) попробуй отдельно 8 пункт свертками из патча. пароль на архив 4606224005911

    Reply
  58. Just

    архив вроде бы не полный (скачал пару раз) только одна обработка разворачивается,

    а так у меня уже второй день запущена свертка(основная) без транзакции ,

    пока нормально вроде, как закончит напишу

    Reply
  59. Shaman100M

    (59) обновил архив по патчам, без пароля.

    Reply
  60. Just

    Ну я основной сверткой без использования транзакций пробовал, двое суток работало по 8-му пункту,

    нормально отработало (файловый вариант), спасибо за обработку.

    Reply
  61. mihenius

    Баловался с выгрузками — загрузками документов ввода из одной базы в другую и свертками.

    Можно сделать выгрузку-загрузку вводов в файлы (тем более уже почти все готово) по аналогии с Periodic.ert (только по тем регистрам, где нет документов, хотя можно и по всем, но мороки больше с переносом связанных доков)

    Смысл я уже объяснял раньше.

    Например у меня есть след. базы: 2006, 2007, 2008 годов

    Нехорошие люди поменяли остатки в 2006 году, теперь их нужно перенести 2006->2007->2008

    Конечно можно через OLE или еще как, но удобнее иметь все в одной обертке свертки 😉

    Т.е. делаем «псевдо» свертку в 2006 году, только с формированием доков Ввода на конец года. Переносим их в 2007, проводим вводы, перепроводим «нужные доки» (отдельная обработка сравнивает, что менялось) в 2007 и по аналогии с 2006 делаем в 2007.

    Reply
  62. Shaman100M

    Думаю, можно проще… Есть «Сравнение регистров», — в 2006 запустить сохранение, в 2007 — сравнение, и там же «разницу» подать в свертку как «штатную ТЗ полученную из запросов по регистрам», по ним создать Вводы остатков — корректуры. Но, блин, подводных камней не избежать… К старой базе отношение м.б. менее серьезное, чем к рабочей, и переносить из нее «косяки»… Как быть с удаленными ссылками в более свежей базе? Делать загрузку объектов? 😉

    Reply
  63. mihenius

    Точно, добавить кнопку «Исправить Регистры», найти доки ввода и править их …, притом старые док можно скопировать непроведенными и добавить в подчинение текущим (для истории)

    С другой стороны по ОЛЕ получается лучше, тем что если чего нет в приемнике, то оно перенесется …

    Reply
  64. agdedov

    Ваша свертка понравилась, она наиболее полная, по сравнению с тем, что предлагают другие авторы. А это то, что и требуется.

    Reply
  65. psychotoad

    Если базу разместить на RAM диске — >1Гб меньше часа, спасибо!

    Reply
  66. Valentin_N

    упс… у меня проблемы граждане…

    не пинайте сильно, т.к. сворачиваю базу первый раз…

    проблема в следующем:

    — есть база с 2003 года, в период с 2003 по 2008 документов 83102

    — сворачиваю выше выложенной обработкой на дату 31.12.08

    — после сверстки остаются шапки документов в кол-ве 38296 (2003-2008 года)

    удалить их не возможно, так как они находятся в подчинении документов созданных сверсткой…

    как их удалить? Может я что то не так делаю?

    Reply
  67. CheBurator

    (67) скорее всего эти документы используются в вводе остатков по долгам покупателей/поставщиков — используются в качестве кредитных документов, по которым зафиксирован долг (вообще-то такое большое колво «остатков» долгов по кредитным докам вызывает вопросы); можно сделать следующее: универсальной обработкой очистить реквизит «кредитный документ» в доках ввода остатков долгов по взаиморасчетам покупателей/поставщиков и перепровести эти доки ввода остатков — тогда в качестве кредитных доков возникновения долга в регистрах будут зафиксированы доки ввода остатков (потом можно чохом пометить на удаление старые оставшиеся доки и удалить их штатно).

    Reply
  68. CheBurator

    тьфу, (68) относится к результатам штатной свертки… но, надеюсь, идея понятна, в нештатной свертке можно сделать аналогично — на место упомянутых кредитных доков прописать ссылку на сам документ ввода остатков.

    Reply
  69. Valentin_N

    (69) спасибо, смысл понятен, нужно в документах ввода остатков реквизит «кредитный документ» очистить, удалить шапки и перепровести все доки…

    А не подскажете, какой обработкой можно очистить реквизит по всем документам ввода?

    Reply
  70. CheBurator

    (70) Берем диск ИТС и устанавливаем набор универсальных отчетов и обработок, используем универсальную обработку подбора объектов

    Reply
  71. Shaman100M

    (68) А как же ссылки в конфе на реквизиты заменяемого документа, — в документе «ВводОстатков…» таких одноименных может не оказаться.

    Мыслю, что лучше проанализировать ТЧ Ввода остатков, по-сворачивать ее по ограниченному набору измерений, — глядишь и выяснится, что в итоге по некоторым контрагентам взаиморасчеты = 0. Вот по этим контрагентам удалить строки из ввода остатков совсем. Как «По-сворачивать»? Можно с пом. «Сравнение регистров», сравнивая остатки в той же базе на ту же дату, но с разным составом измерений регистров.

    Reply
  72. Shaman100M

    Конечно, прикрутить эту феньку (68) к свертке легче, чем прописывать «родные» документы в регистры. Или же просто изменить модуль проведения Ввода остатков, заменить

    …. .КредДокумент = ТекущийДокумент();

    Reply
  73. Shaman100M

    (67) По сокращению кол-ва неудаленных документов: отключи два регистра при свертке КнигаПродаж и КнигаПокупок (однако, если они не используются) или удали уже готовые документы ввода остатков по ним.

    Reply
  74. CheBurator

    (72) не втыкнул про что речь… при вводе остатков по взаиморасчетам никаких ссылок на РЕКВИЗИТЫ (заменяемых) документов — нет, так что спокойно можно занулить реквизит кредитный документ (или прописать в него ссылку на документ ввода остатков)

    Reply
  75. Shaman100M

    Во вводе остатков по взаиморасчетам нет, а в отчетах, обработках конфы — ссылки на реквизиты КредДокументов есть.

    Reply
  76. CheBurator

    (76) а на какие именно? я знаю на кредДокумент и ДатаОплаты.. и все…

    Reply
  77. Shaman100M

    поиск во всех текстах «КредДокумент.»

    ДатаОплаты есть, часто проверяется вид() КредДокумента, наличие реквизитов в шапке.

    Reply
  78. Shaman100M

    Если подойти к вопросу глобально — очистка и замена КредДокумента — это та же свертка (по набору измерений регистров) внутри свертки. Нужна такая вешь?

    Reply
  79. xela

    Хотелось бы узнать можно-ли убрать шапки документов после свертки по подробней??

    Reply
  80. Shaman100M

    (80) что ж они, с непокрытой головой будут? )))

    А если серьезно, самое простое:

    1. Если не используются регистры «КнигаПродаж» и КнигаПокупок» — отключи их.

    2. Если есть закрытые фирмы — отключи их.

    3. Покопать ошибки и перекосы в остатках Взаиморасчетов по документам

    Если свертка уже сделана, — удалять соответствующие этим регистрам и фирмам Вводы остатков.

    Reply
  81. totoros

    Добрый день!!!

    У меня на уже один раз свернутой 1с ТиС при попытке открытия выдает

    Если Док.ФлагСвертки = 1 Тогда

    {D:1C_UMKA1СSVERTKASVERTKA_1340SVERTKA.ERT(1676)}: Поле агрегатного объекта не обнаружено (ФлагСвертки)

    Что можно сделать подскажите?

    Reply
  82. totoros

    Могу сразу сказать, запускал на базе предыдущей свертке, работает всё отлично и великолепно. База 3.6 Гб свернулась за 55 минут убрав при этом информацию за три года!!!!

    Reply
  83. Shaman100M

    Предыдущая и текущая базы разные?

    Reply
  84. Shaman100M

    Сама ошибка означает, что в базе есть непомеченный на удаление документ, с именем начинающимся на «ВводОстатков…» у которого нет реквизита шапки «ФлагСвертки». И расположен он, судя по тому, что раньше свертка запускалась без ошибок, позднее предыдущей даты свертки. Скорее всего, какой-нить новый, добавленный вид документа «ВводОстатков», только без этого реквизита.

    Что делать?

    Совет для пользователя — найти его в полном журнале по отбору по виду документа, и если он(и) не проведен (ы) — пометить на удаление. Или ждать обновление.

    Reply
  85. totoros

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

    Если Док.ФлагСвертки = 1 Тогда

    {D:1C_UMKA1СSVERTKASVERTKA_1340SVERTKA.ERT(1676)}: Поле агрегатного объекта не обнаружено (ФлагСвертки) ……

    Reply
  86. Shaman100M

    Конфигуратором владеешь, хоть чуть-чуть?

    Reply
  87. totoros

    Спасибо пробую найти документы и поправить их.

    Reply
  88. totoros

    Да. В принципе знаний хватает на правку отчетов на создание всяких мелочей. Конфигуратор знаю юзаю…

    Reply
  89. Shaman100M

    (86) Обновил файлы. Добавил проверку на наличие реквизита «ФлагСвертки» в документах «ВводОстатков». Документы с отсутствущим реквизитом в дате свертки включаются обработкой в общий список документов ввода остатков, даже если они были созданы другим способом.

    Reply
  90. totoros

    Документы нашел и пометил на удаление. Но что то всё равно выдает туже ошибку.

    Reply
  91. Shaman100M

    + (90) + много сообщений от таких документах

    Reply
  92. Shaman100M

    (91) качай новую версию

    Reply
  93. totoros

    (92) Спасибо щяс буду пробывать… 🙂

    Reply
  94. Shaman100M

    Обновление. Очистка ссылок на документы.

    Reply
  95. crazy_il

    Обработка — замечательная. Базу свернул быстро. Но столкнулся с непонятным явлением(в природе которого сейчас разбираюсь): Сворачивал базу ТиС 9.2 на 31.12.2008. Пропали из базы несколько документов в периоде с января 2009 по февраль 2009. Пропали несколько заявок покупателя и счетов-фактур. В остальном — обработка отработала на 5+

    Reply
  96. Shaman100M

    (96) Ошибка в программе, п.16 (рис. 931, первый скрин). В течение часа выложу обновление

    Reply
  97. Shaman100M

    Обновлены файлы

    «Свертка + листинг + описание» (первый)

    «03.03.09 Свертка с очисткой измерений регистров типа Документ» (пятый)

    Reply
  98. Walkerrf

    Доброго всем времени суток. Хотел узнать как сделать чтоб данная обработка не брала во внимание склады и номенклатуру помеченную на удаление и не вормировала по ним остатки. Заранее благодарен…

    Reply
  99. Shaman100M

    Это, похоже, системное сообщение, инициируется методом УдалитьОбъекты(), если база распределенная….

    А вопрос выдается в периферийной или в центральной ИБ? Галка «Отключить контроль прав» не помогает?

    В принципе, можно обойти, используя в случае УРИБ не УдалитьОбъекты(<УдаляемыеОбъекты>,1), а НайтиСсылки(<УдаляемыеОбъекты>,<ТаблицаСсылок>) и удаляя каждый объект из <УдаляемыеОбъекты> c пом. метода Удалить(1) и обрабатывая <ТаблицаСсылок> . Будет долго.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *