Пример настройки РИБ 8.1




Принцип обмена данными из 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='\

59 Comments

  1. Cyberboy

    Много очень важного не было сказано, на пример, что делать если нужно внести в основную базу изменения и как потом обновлять удаленные базы, а так же про права на обмен. Если автору интересно то могу поделиться опытом.

    Reply
  2. wildhog

    (1) Думаю автор в курсе )

    Для тех, кто первый раз делает РИБ — пригодится.

    зы. ставлю + за много буков и картинки.

    Reply
  3. CheBurator

    (3) я думаю, что на данном уровне изложения — такая терминология впролне допустима. особенно если для пользователя периферийной базы эта РАСПРЕДЕЛЕННАЯ БАЗА выглядит как отдельная база, связанная с ДРУГОЙ (ЦЕНТРАЛЬНОЙ) БАЗОЙ только посредством автообменов..

    Reply
  4. iov

    (0) Автор старался писал — плюс заслужил

    (3) Ну все были чайниками. НО согласен что формулировка должна быть максимально точной дабы не вводить в заблуждение.

    Reply
  5. PowerBoy

    (0) Картинки у меня почему-то отсутствуют. 🙁

    «В нашем случае рабочая база только одна и данные двигаются только в одном направлении.» — Не увидел в описании где это настраивается.

    Reply
  6. snp123

    Неясно причем тут медленные каналы связи?

    Попробуйте в базе с 16000 доков за месяц сделать групповое перепроведение за месяц и потом запустите типовой обмен РИБ…

    Я думал будет описание реализации обмена только документами БЕЗ ДВИЖЕНИЙ, и в дальнейшем в каждой БД фоновое допроведение/удаление/распроведение документов.

    Reply
  7. anig99

    УРБД в 4 шага. Уже классическая статья. Не надо велописедов изобретать. Тем более так плохо их описывать.

    Reply
  8. mad_maksim

    Даже с выходом 8.2 продолжаю всем советовать терминальный доступ.

    РИБ требует очень прямых рук каждый день и имеет ряд минусов.

    Reply
  9. igor_gk

    Ну наехали…

    Старался человек, с людьми поделиться знаниями хотел… Стока букафф натыкать…

    Плюс.

    Reply
  10. ghostishe

    Хм… А чем это отличается от статьи на ИТСе, которая еще на 8.0 начала выходить? Там то же самое с картинками и примерами. В 2006м году видел ее на ИТСе…

    Reply
  11. koliaff

    Автору плюс авансом. Ждём описания того, какие действия надо предпринять, если была изменена структура конфигурации. Как заметил

    Cyberboy в первом посту, это важно !

    Reply
  12. ghostishe

    Читаю… Коммент за комментом… Изменения в структуре проходят по обмену тем же файлом и Происходит реконфигурация. Народ, почитайте статью на ИТС. Там сама 1С грамотно и подробно описала на примерах мех-м РИБ.

    Reply
  13. Vovka_Kiev

    Автору «респект». Статья написана простым языком с илюстрациями — как раз для начинающих.

    Reply
  14. ghostishe

    Меня тут никто не слышит =)

    Reply
  15. daulberg

    Сейчас на этом сайте зарегистрировано более 82000 пользователей.

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

    Вопрос: что делают на сайте оставшиеся 70000 пользователей?

    Я думаю, что это не программисты, а «продвинутые» пользователи, которые активно работают с системой 1С. У них, естественно, возникают вопросы и они на этом сайте ищут ответы.

    Поэтому эта статья — обмен опытом в доступной нормальному пользователю форме.

    Она не всеохватывающая и на документацию по РИБ эта статья не претендует.

    Reply
  16. ghostishe

    (16) Просто мне почему-то кажется, что больше 80% зарегистрированных пользователей знают, что такое ИТС. Если есть уже написанная доступным языком документация с примерами и картинками, смысл повторять это? Описанные здесь примеры ни сложнее, ни легче ИТСовских 😉 А дкоументация по РИБ на ИТСе страниц то ли 9, то ли 12 занимает… В основном, из-за картинок. Ладно, я не бочку качу, просто всем, кто читает это сообщение: Господа, есть отличная инструкция для чайников по РИБ на диске ИТС.

    Reply
  17. koliaff

    (ghostishe) Без этой статьи многие бы и не узнали о существовании подобной статьи на ИТС. Так что статья полезная ! А тебе спасибо за дополнение !

    Reply
  18. koliaff

    Да, и ещё, картинки и правда отсутствуют. Может техподдержка сайте поможет решить данную проблему ? У меня IE 8.0

    Reply
  19. ghostishe

    У меня Google Chrome тож не вижу картинок

    Reply
  20. Vovka_Kiev

    Скачайте статью в вордовском формате с помощью кнопки «Статья с картинками(398кб)». Смотрите выше… Там все есть.

    Reply
  21. vitac

    А в удаленном филиале тоже должны видеть все изменения, которые делают в базе в центральном офисе?

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

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

    Reply
  22. mirco

    Статья сворацивается до слов «смотрите ИТС+ справку+книги в поставке».

    Но все равно плюс.Только сделай картинки (я понял что в вордовском йайле они есть, а здесь ?), и исправь по пожеланиям. Да и на самом деле опиши-ка нормально.

    ПОКА плюс, но если не сделаешь хотя бы описание «минус, плюс,подводные камни» поставлю минус ! 😀

    Reply
  23. zzerro

    А с картинками в последнее время, после обновления платформы сайта, у меня тоже косяк… Дома вижу, а на работе не вижу…

    Reply
  24. boatswain

    Народ, подскажите. Риб я в УТ настраивал все без проблем, почему в бухгалтерии при создании начального образа в подчиненную базу не переносяться документы, а только справочники???????

    Reply
  25. boatswain

    Все ступил, вопрос снимаеться:)))

    Reply
  26. Dimka74

    «Никто не пинает дохлую собаку» (С) Д. Карнеги

    Автору РЕСПЕКТ!!!, и однозначно «+». Жду продолжения…

    Reply
  27. specialist.1c

    спасибо.

    Reply
  28. halushka

    Мда… а тут давеча все про рабочие столы ворчали… Типа мало мыслей, да код суровый… А тут вольное прочтение хелпа + ленность в прочтение ИТС. Низачот 😮

    А насчет что человек написал многа букофф и надо плюс за енто — дык, давайте я с понедельника буду вписывать в инфостарт войну и мир. Там на год работы…. Мне плюсов двадцать хватит….

    Reply
  29. zzz86

    только терминальный доступ

    Reply
  30. daulberg
    Reply
  31. Agema

    Компонента «Управление распределенными ИБ»

    Основные принципы работы компоненты

    http://develop1c.com/komponenta-upravlenie-raspredelennyimi-ib-/osnovnyie-printsipyi-rabotyi-komponentyi.html

    Более полное описание.

    Reply
  32. sashtet

    Спасибо за работу.

    Reply
  33. Gringj

    Автору респект, на ИТС подобной статьи не нашел, чтобы с картинками.

    Может сможете помочь, как по электронной почте настроить обмен? Чтобы в Главном узле данные выгружались, посылались по почте подчиненному узлу, и наоборот.

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

    Reply
  34. Gringj

    Подскажите, как в 1с: бухгалтерии предприятия 8.1типовой настроить обмен через почту? плииз. запарился искать. Вот допустим выгрузил я файл в каталог, а дальше что? — как его по почте отправить из главного узла и принять в подчиненном?

    Получается к типовой бухии еще надо какой-то отчет приделывать? нигде в справке ответа на этот вопрос не нашел, и на итс не нашел в простом и понятном виде: Типа файл выгрузили, сделайте то-то и то-то, чтобы отправить его по почте.

    Reply
  35. Gringj

    в общем обмен через електронную почту есть в типовой УПП, в типовойЗУПе, а в типовой бухгалтерии нету….

    Reply
  36. daulberg

    (34)-(36) Через электронную почту можно вести обмен только в ручном режиме, т.е. отправлять и принимать почту с вложениями вручную. Вложения выкладывать в папку обмена на том и на другом узле. Может быть можно автоматизировать в какой-нибудь почтовой программе. Я пользуюсь стандартным Outlook Express — там возможностей авмоматического сохранения вложений нет.

    Пересылку пакетов обмена можно вести через mail.ru — там практически нет ограничений на объем вложения.

    В общем смысл обмена следующий:

    1. на главном узле программа генерирует файл обмена в папку;

    2. этот файл вручную отсылается по электронной почте;

    3. на на починенном узле принимают почту, файл обмена сохраняют в папку обмена;

    4. прогамма обрабатывает этот файл, выдает файл подтверждения + свои данные;

    5. этот файл вручную отправляют по почте;

    6. на главном узле принимают почту, сохраняют файл в папку обмена;

    7. программа на главном узле обрабатывает полученный файл, генерирует новый

    и снова по циклу 1-6.

    Может быть есть почтовые агенты, автоматизирующие пересылку, а так — вручную.

    Reply
  37. Gringj

    (37) Спасибо автору за подробный ответ, сам факт определенности много значит, а как автоматизировать — батниками и т.д. — это уже следующий этап.

    Просто не знал как решать данную типовую задачу, думал, что может чего-то не учел и т.д. 🙂

    Reply
  38. PLadmin

    А как права настроить? Не хватает у рядового пользователя прав для того, чтобы под его учетной записью выполнялись регламентные задания по обмену 🙁

    Reply
  39. rasswet

    » Теперь новую ИБ необходимо скопировать в центральный офис» желательно сделать чтобы терминолия была одна. главная база и подчиненная база. у Вас же: главный узел. Копия БП, центральный офис, удаленный филиал, рабочая ИБ. Слишком много названий. не понятно что есть что.

    Reply
  40. svetakubert

    А подскажите как сделать перенос всех пользователей

    Reply
  41. Log1c

    Норм все написано, не на 5 конечно, но разобраться можно.

    Что-то не видно вопроса, а что делать если:

    0. В ЦБ делаем изменния в конфигураторе.

    1. Из ЦБ выгружаем данные.

    2. В ФБ(филиальная база, копия БП и т.д.) их загружаем, получаем сообщение что надо обновить конфигурацию.

    3. Обновляем конфигурацию.

    4. Выгружаем данные из ПБ (о том что все загружено).

    5. В ЦБ пытаемся загрузить данные и получаем

    «Данные принимаются от узла, для которого зарегистрированы и

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

    Reply
  42. Trof@

    (42) Изменения конфигурации допускаются только в корневом узле РИБ с последующим ее распространением по иерархии от корневого узла к его подчиненным. (в этом случае в базе филиала)

    цитата из Радченка Проф разработка

    Reply
  43. Log1c

    Спасибо но проблема не в этом.

    РИБ, если выгружать данные с измененной конфигурацией из главного узла в подчиненный — загрузит только конфигурацию и попросит её обновить(конфигурацию).

    Заходим обновляем и ЕЩЕ РАЗ загружаем те же данные. И только потом формируем ответное сообщение.

    Reply
  44. onyx

    в свое время очень даже помогло…..

    Reply
  45. GreenFox

    Хорошая статья , мне помог пункт 3. Очень сильно, а то я уже ломанулся писать свои обработки, а тут уже все готово.

    Reply
  46. aronskiy

    Спачибо автору, помогло

    Reply
  47. Lyuba-Lyuba

    Хорошая статья, пригодилось

    Reply
  48. Inkeeper

    отличная статья!!!

    Reply
  49. rina4

    Большое спасибо, надо было очень срочно, так на итс не нашла, а по вашей статье все оч красиво получилось)

    Reply
  50. faridpost

    Не всем доступны диски ИТС, а как поисковая система по проблемам они, мягко говоря, проигрывают интернету. Большинство осваивает 1С не по дискам ИТС. За курсы платят большие деньги, а там ведь просто информация с дисков ИТС!

    Reply
  51. diesel_ru

    Автору спасибо. Понятным и простым языком написал, когда-то по этой статье первый раз настраивал РИБ. Очень помогла.

    Reply
  52. DnsRzv

    Спасибо, автору.

    Не большое исправление. Написано:

    Для автоматического запуска заданий необходима дополнительная настройка в меню «Предприятие / Настройка параметров учета / Обмен данными». Необходимо заполнить эту закладку.

    Нужно:

    Для автоматического запуска заданий необходима дополнительная настройка в меню «СЕРВИС / НАСТРОЙКА ПРОГРАММЫ / Обмен данными». Необходимо заполнить эту закладку.

    Может кто-то сэкономит 5 минут на поиске вкладки «Обмен данными». 🙂

    Reply
  53. cubic

    Может кто поможет с такой проблемкой:

    Имеем РИБ с десятком подчиненных узлов (УТ 10.3 на MSSQL). При создании нового подчиненного узла (для нового магазина) выгрузка происходит с черепашьей скоростью, а после 200мб вообще стоит на месте: 4-8 КБ(!) в минуту!!!

    Почему такая низкая скорость? Как исправить? СПАСИБО!

    Reply
  54. y-ha

    (55) cubic,

    Если еще актуально, а может и кому еще поможет — есть статья, как сделать базу для нового узла.

    Статья на KB.Mista.ru

    Сейчас как раз изучаю данный вопрос.

    Reply
  55. stas1kbob

    картинки потерялись

    Reply
  56. Ann13a

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

    Reply
  57. DarkDaemon

    А для розницы 2.0 есть подобная инструкция, какие нюансы использования РИБ в рознице 2.0 по сравнению с БП8?

    Reply
  58. DarkDaemon

    (57) stas1kbob, (58) Ann13a, картинки в файле «Статья с картинками», который вы можете скачать бесплатно, нажав на соответствующую кнопку внизу статьи.

    Reply
  59. advanter

    Как настроить риб в 1с 8.3 или в 1С 8.2? Настройка распределенной информационной базы. Пошаговая инструкция | Подробнее: http://www.advanter.net/?p=2749http://www.advanter.net/?p=2749

    Reply

Leave a Comment

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