Переход с 8.1 на 8.2. Этапы, некоторые особенности, проблемы




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2025-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='\

56 Comments

  1. Vladuha

    На курсе перевода прикладных решений на 8.2 перед конвертацией рекомендуют делать тестирование логической целостности, а после конвертации — реструктуризацию таблиц

    Reply
  2. Saipl
    Написанную «с нуля» конфигурацию при желании перейти на 8.2 нужно переписывать полностью

    Это еще почему ????

    Reply
  3. Alraune

    (1) Спасибо за дополнение! Тестирование никогда не помешает, Вы абсолютно правы.

    (2) Где-то видела на сайте 1С, но этот пункт мной не опробован по причине отсутствия примера такой конфигурации, так что, наверно, сейчас его уберу. Спасибо!

    Reply
  4. noprogrammer
    Отменять режим совместимости сразу не стоит! Во всяком случае, на рабочей базе. Если конфигурация не подготовлена к этому, то могут произойти странности в оформлении

    Очень бы хотелось узнать что за странности могут возникнуть (конкретнее)


    (возможно, и более серьезные проблемы), в частности, при тестовом переходе в одном случае со всех форм пропали табличные части и страницы.

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

    Reply
  5. noprogrammer

    Вообще в 8.2 сильно изменилась лишь одна процедура «ОбработкаЗаполнения»), вот ее придется переписатьподкорректировать тем у кого конфы написаны с нуля (в типовых скорее всего либо переписали уже либо перепишут)

    Reply
  6. Alraune

    (4) Не было — и хорошо! Это же не истина в последней инстанции, а частное впечатление, оно у каждого свое, если кто-то столкнулся с одними проблемами, это не значит, что с ними столкнутся и все остальные. Я всегда считаю, что чем больше знаешь про грабли, на которые наступали другие, тем меньше вероятности сделать это самому.

    А за дополнения — спасибо!

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

    Reply
  7. DanilaDru

    Если говорить про грабли дальше после перехода, то после публикации базы на веб-сервисе и динамическом обновлении базы пользователи не всегда могут зайти под веб-клиентом. Надо рестартовать IIS/Apache.

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

    Reply
  8. Alraune

    (7) Спасибо за дополнение!!!

    Reply
  9. slovopotam

    Я думаю на Инфостарт до конца субботы ходить не стоит. 😉

    Кроме потока учебных статей ничего не будет.

    Reply
  10. Арчибальд

    Мой плюс №10 🙂

    Reply
  11. Шёпот теней

    молодцы 1С … активная … настойчивая … и БЕСплатная (для неЁ) реклама …

    … теперь ВСЕ … озадумаются переХодом … дурь конечно — но такая слАдкая …

    … вот …

    Reply
  12. Шёпот теней

    на повестке дня только один не отвеченный вопрос: «А зачем ПЕРЕходить на 1с 8.2. … ? … » …

    … пять лучших ответов получат соответствующее количество «плюсов» за любые ветки победителей …

    … вот …

    п.с. … а если ничего не меняется — то зачем ??? …

    Reply
  13. Ish_2

    (10) Хитрый угодник.

    Reply
  14. alexk-is

    (12) Варианты:

    1. 1С:Сервер под 8.2 падает реже и с меньшим стуком

    2. У предприятия уже есть мощный сервер и Oracle, покупать ещё один сервер и MS SQL не дают

    3. Необходимо организовать оперативную работу удаленных складов по дохлым каналам связи на дохлых ПК

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

    5. А на семинаре сказали, что все уже работают на 8.2 и им очень нравится

    Reply
  15. alexk-is

    (15) Вообще-то это ответы тех кто уже перешел на 8.2

    Reply
  16. afanasko

    (12)

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

    Остальные плюшки (особенно интерфейсные) вызывают довольно противоречивые чувства.

    Reply
  17. Шёпот теней

    (16) … хм … а разве есть разница … ? (между тем кто перешёл и рекламой 1с) …

    … любой перешедший (лох) всегДА говорит что теперь стало лучше … а куда ему деваться … прекрасно помню очень живые крики отличия 8 от 7 -ки ине менее живые сравнения типа «жигули 7 модели с 600 мерседесом» … и что … ? …

    … известный факт — ИТ не увеличила производительность труда (максимум эффект обозначен как 5-7 процентов) … множат информацию — да … но к производительности это не имеет никакго отношения … а ужжж к экономике …

    … вот …

    Reply
  18. Шёпот теней

    (17) … а кто мешает совершенстовоаться в рамках старой парадигмы … (позвольте по-умничать) … вот … (и есть ли потребность у всех … которые за всЁ это заплатятЬ …) … совсемВОт …

    Reply
  19. fishca

    (14)

    1С:Сервер под 8.2 падает реже и с меньшим стуком

    Это смотря какой релиз 😉

    Reply
  20. Шёпот теней

    … дык сказали же … ре-же-па-да-ет … т.е. не сказали что НЕпадает … а остально это знаете-ли от лукавого … всЁ тАААк относительно … и всё тАААк НЕодНОзначно … ))) … вот …

    Reply
  21. Alav

    (14) Половина из тезисов подходит как причина перехода с 8.х на 7.7. Останется добавить

    — На 7.7 не приходиться раз в 3 года адаптировать обработки из-за смены платформы.

    Reply
  22. afanasko

    (19) Ну это вроде бы и есть «старая парадигма». Ведь это эволюционный подход, а не революционный — по сравнению с 8.0 не так уж много изменилось.

    Потребности может и не у всех есть, но кто заставляет? Многие до сих пор на 7.7 работают и в ус не дуют (и мы в том числе).

    Опять же насчет «заплатятЬ»: платформа 8.2 бесплатная для тех кто уже платит 😉 (ИТС). Отказываться глупо, так же как владельцам Windows от очередного сервис-пака.

    Вот.

    Reply
  23. Шёпот теней

    (23) … ох … ! … ох слАдки твои речи … особенно в части «кто заставляет» … говорИИИшь … ))) …

    … вОт …

    Reply
  24. Арчибальд

    Вот в тему http://infostart.ru/public/75335/

    Reply
  25. Шёпот теней

    … в целом ситуация будет только ухудшаться … и вот уже в качестве ПК установлены Серверы 3-5 летней давности … количество информации увеличивается в геометрической прогрессии каждые 3 года … перепроведение документов занимает часы …

    … но обЪём работа Бухгалтера остался прежним … правда их количество, вместе с обслугой (отдел ИТ) — увеличилось в трое …

    … хм …

    п.с. лучше Семёрки — может быть только Семёрка …

    … вот …

    п.с.2. кстати: мамонты вымирают …

    … вотУЖЖЖвот …

    Reply
  26. wumka

    «не было у бабы забот, купила баба… 8.1, а потом апгрейдила до 8.2».

    (это я про себя)

    «Как известно, с 2011 года фирма 1С собирается перестать развивать платформу 8.1» — мне подобное было неизвестно, более того, переписываясь с разработчиками 1С по поводу 8.1, те ни словом в своём ответе о подобном не упомянули, как не упомянули и о возможности апгрейда до 8.2.

    Тем более удивляет, что апргейд до 8.2 позволяет решить возникающую в 8.1 проблему: в 8.1 Базовая версия нет возможности автоматически начислять уральский коэффициент, в 8.2 — есть.

    Reply
  27. Шёпот теней

    «»Как известно, с 2011 года фирма 1С собирается перестать развивать платформу 8.1″ — мне подобное было неизвестно, более того, переписываясь с разработчиками 1С по поводу 8.1, те ни словом в своём ответе о подобном не упомянули, как не упомянули и о возможности апгрейда до 8.2. » …

    … вот это и имелось ввиду «а кто заставляет переходить на 8.2» … никто и не заставляет ))) …

    … вот …

    … вполне советское «хамское отношение» … пИпОл, он же лОх — хавает …

    Reply
  28. afanasko

    (24) Согласен, я может слишком категоричен )). Семерку сейчас довольно сложно купить, будут усиленно отговаривать. Наверное будет точнее относить мои слова к переходу на самые свежие версии. Платформу 8.1 может обновлять и перестанут, но обновления конфигураций никто не прекратит по крайней мере лет 5-ть. Кажись для 8.0 до сих пор выпускают, или нет?

    Вообще, переход на новые версии — не самая большая проблема 1С. 😉

    Reply
  29. almas

    Привет, насчет того, что падает меньше, не сказал бы, происходят непонятные сбросы сеансов, и зависания сеансов. При этом писюлек никаких. В 8.1. если тебя кинули, мало-мало понятно, а в 8.2…. То, что работаетбыстрее — ФАКТ. Из замеченных проблемз — по другому определяются типы объектов. В 8.1 можно было добраться из ссылки.метаданные(), в 8.2 — ИндейскаяХижина :D. Зер гуд насчет организации модульной структуры. 1с-ники наконец-то стали проводить вынесение ВСЕ на сервер…

    Reply
  30. Yackov

    «Конфигурация 1.6 под 8.1 и 8.2 – это РАЗНЫЕ конфигурации, с разными обновлениями» — ничего подобного..модули абсолютно одинаковые и ПроверкаКонфигурацииДляПереводаНа82.epf выдает кучу ошибок если ее запустить в типовой 8.2..

    Reply
  31. Alraune

    (31) Спасибо за уточнение. Очень может быть, материал опробован на практике только частично, а частично взят с различных обсуждений на форумах. Времени было мало, а написать было надо срочно. Поэтому неточности могут быть.

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

    Reply
  32. prog-eg

    (31) Модули одинаковые, но могут быть разные значения свойств; ПроверкаКонфигурацииДляПереводаНа82.epf, как я поняла, осуществляет поиск уязвимых мест, а требуется или нет доработка — определяется визуально.

    Reply
  33. w-w-w-w-w-

    Не совсем понял.

    Написано — типовые конфигурации можно сразу конвертировать.

    У меня Бухгалтерия предприятия, редакция 2.0 (2.0.14.5) на платформе 8.1

    Если файл с обработкой ПроверкаКонфигурацииДляПереводаНа82.epf запустить выдаёт список на 6 страницах — типа несоответствует.

    Или на это можно не обращать внимаение — при дальнейшем обновлении на платформе 8.2 всё прокатит..

    Reply
  34. Alraune

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

    Список «типа несоответствует» — это не ошибки.

    Reply
  35. vdi1950

    Спасибо за статью.

    Извините за возможно наивные вопросы. К сожалению, я не программирую.

    1)Правильно ли я понимаю,что режим управляемого приложения для типовых решений реализован только для конфигурации «Управление небольшой фирмой»?

    2) Если это так, то при переводе, например, типовой бухгалтерской программы с ред. 2.0 с платформы 8.1 на 8.2 оставляем режим совместимости с 8.1. При условии, что нас не интересует тонкий клиент, веб-клиент и увеличение быстродействия конфигурации. Так?

    3) Если в п.2 меня интересует только увеличение быстродействия, тогда отключаю совместимость с 8.1. Но возникает еще два вопроса.

    4) Надо ли снимать конфигурацию с поддержки?

    5) Вы пишите «Для отключения режима совместимости, возможно, потребуется внести некоторые изменения в конфигурацию, по различным оценкам, в среднем на это требуется 1 день». Можете ли вы сказать хотя бы обзорно, о каких изменениях идет речь, если перевод осуществляется для типовой конфигурации.

    Reply
  36. Alraune

    (36) Спасибо. Статья была написана как учебная, как, впрочем, из комментариев понятно. По вопросам.

    1. Не могу ответить, к сожалению.

    2. Да, это так.

    3. 8.2, кстати, и так работает быстрее, чем 8.1

    4. Нет, не надо.

    5. «по различным оценкам» — информацию пришлось собирать где только можно, поэтому дана усредненная цифра, как я понимаю, что-то типа средней температуры по больнице. Но вообще-то как раз изменения нужны для НЕтиповых, если она типовая, то ничего делать не надо. А если изменений много, то примерно оценить необходимость изменений может помочь обработка с ИТС ПроверкаКонфигурацииДляПереводаНа82.epf, только надо учесть, что она выдает все кажущиеся ей подозрительными места, а на деле там может быть все нормально.

    На ИТС есть еще материалы о переходе «Адаптация конфигураций 1С:Предприятия 8.1 к работе на платформе 1С:Предприятие 8.2 без режима совместимости с версией 8.1», «Перевод конфигураций на версию 8.2 с частичным использованием управляемого приложения, на примере УПП 1.3».

    Reply
  37. Nigelist

    Здравствуйте, возникли сложности с установкой обновлений на 8.2 после перехода с 8.1. А именно, после обновления конфигурации сохраняю изменения в самой конфигурации, потом пытаюсь обновить конфигурацию ИБ. Сразу же начинается реструктуризация базы. На этапе реструктуризации регистра бухгалтерии.налоговый приложение зависает. Может кто-нибудь уже встречался с этой проблемой?

    З.Ы. Конфигурация — Бухгалтерия для Казахстана 2.0.2.10, до была 1.5.19.5 (ее же конвертировал). ИБ весит ~ 8Гб. Старая платформа — 8.1.15.14, новая платформа 8.2.13.219.

    Reply
  38. Lara.Builova

    (38)

    1. Конвертация 1.5.19.5 на 8.2.

    2. Сохранение конфигурации.

    3. Сохранение базы данных.

    4. Обновление сконвертированной базы на 2.0.2.10 через поддержку.

    5. Сохранение конфигурации.

    6. Сохранение базы данных.

    На каком конкректно этапе зависает?

    Reply
  39. Nigelist
    Lara.Builova пишет:

    На каком конкректно этапе зависает?

    На шестом этапе, а именно при реорганизации регистра бухгалтерии — налоговый.

    Reply
  40. Lara.Builova

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

    Reply
  41. Nigelist
    Lara.Builova пишет:

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

    Вы хотите сказать, что не смотря на сообщение диспетчер задач «приложение Не отвечает». Необходимо ждать, пока процесс реструктуризации не завершиться?

    Reply
  42. Lara.Builova

    (42) Да. Очень часто во время реструктуризации приложение не отвечает.

    Сколько времени висит процесс?

    Reply
  43. Nigelist
    Lara.Builova пишет:

    Да. Очень часто во время реструктуризации приложение не отвечает. Сколько времени висит процесс?

    Висит с утра воскресения.

    Кто-нибудь пробовал разбить процесс ТиИ на несколько этапов?

    Reply
  44. Lara.Builova
    Кто-нибудь пробовал разбить процесс ТиИ на несколько этапов?

    Опа. Так оно у тебя ТиИ не проходит?

    Ошибки выдает?

    Reply
  45. Nigelist
    Lara.Builova пишет:

    Опа. Так оно у тебя ТиИ не проходит? Ошибки выдает?

    До ТиИ не дошло. 🙂

    Reply
  46. Dushka

    пригодилось…благодарю

    Reply
  47. Angeros

    Непонятно как такая статья набрала столько плюсов — одна вода. Ну и оформление — кричащий шрифт…

    Reply
  48. ign

    Спасибо, с вашей помощью благополучно перешли на 8.2. До этого год медитировали.

    Reply
  49. kozai05

    Да вроде не сложно, даже не типовую — конвертация конфигурации при запуске в конфигураторе — да и все. Правда жаль потом обратно при необходимости никак не конвертнуть — бывает у тебя свежая платформа стоит, а у клиентов более старые, не всегда удобно потом ездить им обновлять.

    Reply
  50. AndreyNit

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

    Reply
  51. lees

    Спасибо! после прочтения отпадает сразу куча вопросов!

    Reply
  52. xzevsx

    После прочтения удовлетворил своих бухгалтеров)

    Reply
  53. v.l.

    Если в обоих базах (8.1 и её сконвертированной в 8.2 копии) завести полный план обмена и обмениваться, то можно и откатиться назад, просто запуская 8.1 вместо 8.2

    Reply
  54. klirinda

    спасибо, очень полезная статья

    Reply
  55. Новиков

    Спасибо. В 2015 еще актуально!

    Reply
  56. Светлый ум

    На этой странице, можно скачать обработку бесплатно:

    http://its.1c.ru/db/metod8dev#content:3272:hdoc:_top:проверкаконфигурациидляпереводана82

    Кнопка «Копировать»

    Reply

Leave a Comment

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