Технология обновления нетиповых конфигураций 1С:Предприятия 8 (редакция 12.04.2012)




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

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

    Reply
  2. coder1cv8

    (1) +1 Где рисунки?…

    И шрифт сделай покрупнее, пожалуйста!

    Reply
  3. YAN

    Автору + хорошо изложенная методика обновления!

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

    Reply
  4. alexk-is

    (3) Данная статья является продолжением/уточнением http://www.infostart.ru/blogs/891/

    Reply
  5. alexk-is

    (3) Кроме этого, я думаю все понимают, что «окончательный код» от версии к версии может координально меняться, всязи с изменением методик используемых/продвигаемых разработчиками фирмы 1С.

    Reply
  6. Valerich

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

    Reply
  7. alexk-is

    (1) (2) Рисунки не потерялись. Просто чтобы опубликовать статью потребовалось 4 часа. Никак не могу совладать с новым движком infostart.

    Reply
  8. warenic

    (6) Эта задача была полностью решена и уже давно. По крайней мере для 7.7. Про GComp поищи материалец…

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

    Reply
  9. poppy

    Почему бы на 3-м этапе два действия:

    используя файл *.cf типовой конфигурации поставщика, выполним обновление. Для этого выберем пункт меню «Конфигурация» à «Поддержка» à «Обновить конфигурацию», «Выбор файла обновления», «Готово» (Рисунок 9), «Выполнить»;

    используя файл work_2.cf, переносим изменения. Для этого выберем пункт меню «Конфигурация» à «Сравнить, объединить с конфигурацией из файла…»;

    не объединить в один?

    используя файл work_2.cf выполним обновление. Для этого выберем пункт меню «Конфигурация» à «Поддержка» à «Обновить конфигурацию», «Выбор файла обновления», «Готово» (Рисунок 9), «Выполнить»;


    Reply
  10. alexk-is

    (9) Все просто.

    1. В этом случае новые объекты поставщика будут поставлены на поддержку;

    2. Повторно сравнение объединение будет выполняться быстрее;

    3. Объем хранимых конфигурационных файлов в базе данных будет меньше.

    Reply
  11. poppy

    (10)

    Просто ли?

    п.1 В другом случае не будут поставлены?

    п.2 О чем речь? При каких условиях, на каких этапах?

    п.3 О как? Ты хотел сказать больше? Ты предлагаешь хранить в базе данных пользователя две конфигурации. В предложенном варианте — это одна конфигурация.

    Лучше если в базе данных у пользователя будет включен режим запрета редактирования конфигурации. В этом случае и конфигураций будет меньше, и пользователь ничего не сможет изменить, и пункт меню Конфигурация» à «Сравнить, объединить с конфигурацией из файла…» работать не будет.

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

    Reply
  12. alexk-is

    (11) Я понимаю, что обновление через создание файлов поставки/обновления решает некоторые проблемы. Например, объем файла обновления, время обновления.

    Я понимаю какой именно порядок выполнения обновления предлагается в 11 посте.

    Я торжественно клянусь подумать над этим и в будущем отразить это в статье.

    Если рассматривать предлагаемый в 11 посте вариант, то применительно к «твоей конфигурации».

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

    п.2 При выполнении этапа 1

    п.3 Поправка. Предлагаю хранить 3 конфигурации: Конфигурация поставщика (старая), Основная конфигурация и Конфигурация базы данных.

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

    Reply
  13. poppy

    (12)

    п.2 При выполнении этапа 1 при очередном обновлении? Почему бы не воспользоваться результатом этапа 2 предыдущего обновления? Если этот результат сохранить, то надобность в 1-м этапе отпадает?

    Reply
  14. alexk-is

    (13)

    2. Повторно сравнение объединение будет выполняться быстрее;

    п.2 О чем речь? При каких условиях, на каких этапах?

    п.2 При выполнении этапа 1

    п.2 При выполнении этапа 1 при очередном обновлении? Почему бы не воспользоваться результатом этапа 2 предыдущего обновления? Если этот результат сохранить, то надобность в 1-м этапе отпадает?

    Совершенно верно. При условии выполнения этапа 1. На этапе 2.

    И при всех последующих обновлениях на этапе 2 минуя этап 1.

    Собственно к этому все и велось — снизить трудоемкость подготовки обновлений.

    Reply
  15. molot

    По первому этапу: я обычно делаю проще. Если разработчик до меня допустил ошибку и версия конфигурации поставщика утратиал актуальность, ее можно актуализировать следующим образом:

    — Запустить обновление до актуальной конфигурации поставщика в режиме «Поддержки»

    — В появившемся списке измененных объектов СНЯТЬ ВСЕ ФЛАГИ

    — Выполнить обновление

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

    Или, может, я специфики не понял?

    Reply
  16. molot

    «Если обновление выполняется через несколько версий и нет файла *.cf, то придется воспользоваться несколькими файлами *.cfu и последовательно выполнить обновления. Это может значительно повысить трудоемкость обновления, т.к. анализ измененных объектов придется выполнить несколько раз. »

    Проще, по-моему, получить актуальный релиз типовой конфигурации, используя ЦФУ, из нее — выгрузить нормальный ЦФ-ник и объединить все одним махом.

    Про обработку удаленных объектов или переименованных объектов — все оч. грамотно написано.

    Reply
  17. molot

    И еще есть проблемы, кроме описаных в статье:

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

    — Сохранить в текстовые файлы тексты обоих модулей методом копи-паст 🙂

    — Воспользоваться стандартным функционалом 1С: «Файл — Сравнить файлы». Там все обычно, как ни странно, корректно! Также можно воспользоваться дополнительным ПО, таким, как Exam2dif.

    2. В статье не рассмотрен, наверное, самый сложный момент поддержки измененных конфигураций: объединение измененных ролей! Но это, скорее, тема отдельной статьи…

    ЗЫ. 100-150 часов — повеселило!!! ппц ребята капусту шинкуют :)))

    В общем, за статью — плюс. Полезно!

    Reply
  18. alexk-is

    (15) Совершенно верно. Это и предлагается сделать. Только с некоторыми уточнениями, которые могут вылиться на втором этапе в необходимость «выгружать, сравнивать, объединять, переобновлять и т.п.»

    (16) Совершенно верно, но только в том случае, если у вас есть необходимый файл поставки для «старой конфигурации поставщика». Если такого файла нет и нет возможности его собрать, то эффект может быть противоположным. Т.к. придется разбирать/сравнивать все объекты которые были изменены.

    (17) «ребята капусту шинкуют». Это наша конфигурация. Мы на ней работаем и затачиваем под себя. 100-150 часов это фактически выполненные работы — на себя, а не на клиента. Т.е. типа «бесплатно». Статья писалась непосредственно в процессе обновления с исправлением допущенных ранее «ошибок». Так что все здесь написаное это из жизни.

    Reply
  19. krv2k

    (18)->(16)

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

    Reply
  20. molot

    (18) «Это наша конфигурация. Мы на ней работаем и затачиваем под себя. 100-150 часов это фактически выполненные работы — на себя, а не на клиента.»

    За что вы себя так :)))

    (19) Поддерживаю.

    На самом деле статья — очень хорошая и полезная для неискушенных в этом деле пользователей. Спасибо!

    Reply
  21. vavvv

    Спасибо. Полезная статья!

    Reply
  22. Diamond_Angel

    Большое спасибо как автору, так и комментирующим.

    Reply
  23. sashocq

    Спасибо, почерпнул кое-что новое.

    А насчет выявления изменений в ролях — тут может помочь вот эта обработка: http://infostart.ru/projects/3407/

    Reply
  24. alexk-is

    Подробнее расписал второй этап…

    Reply
  25. Terv

    Почитал. В общем неплохо, но есть неточности и недочеты.

    Reply
  26. alexk-is

    (25) В чем именно?

    Reply
  27. GeorgKond

    У меня вопрос по первому этапу.

    Не могу сообразить, почему приведение конфигурации поставщика в соответствие с релизом основной конфигурации нельзя сделать так:

    1. Создаём информационную базу из дистрибутива с версией, такой же, как у нашей основной конфигурации.

    2. Сравниваем, объединяем конфигурацию этой базы с конфигурацией из файла work.cf.

    В результате, ведь, должны получить cf с правильным релизом конфигурации поставщика? Или я чего-то не понимаю? Такое ощущение, что здесь подводные камни есть, но не могу понять какие.

    Reply
  28. alexk-is

    (27) В этом случае вы получите конфигурацию, дающюю идентичный результат, при сравнении с методом, описанным в первом этапе, если сравнение выполняется по именам. И совершенно различный результат при сравнении по внутренним идентификаторам. При этом в случае загрузки полученной вами конфигурации могут быть потеряны данные (удалены колонки / добавлены аналогичные, удалены регистры / добавлены аналогичные, и т.д.), что собственно и описано в первом этапе.

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

    Reply
  29. GeorgKond

    Спасибо за ответ! Полегчало)))

    Ещё есть вопрос. Как быть в ситуации, если между релизом Конфигурации поставщика и и релизом Основной конфигурации существуют промежуточные релизы типовых конфигураций. Здесь необходимо обновлять конфигурацию поставщика последовательно, или можно обновить её сразу на последний релиз? Если пойти по первой ветке этого моего предположения, то не получится ли так, что основная конфигурация «обновится» до более старой версии, чем она есть сейчас? А если пойти по второй — обновить сразу на последний релиз типовой, то не возникнет ли каких-нибудь лишних несоответствий?

    Этот последний вопрос у меня возникает из-за незнания вот чего: Конфигурация поставщика нужна только для обновления, или на её метаданные имеются «ссылки» из основной конфигурации? (если не «ссылки», то, видимо связь есть по внутренним идентификаторам?)

    Проясните пожалуйста!

    Reply
  30. GeorgKond

    И, насколько независимо от информационной базы можно оперировать конфигурациями при решении вопроса «Здесь необходимо обновлять конфигурацию поставщика последовательно, или можно обновить её сразу на последний релиз?» из (29). Обновлять с открытием инф.базы в режиме 1С:Предприятие, когда да, а когда нет?

    Reply
  31. alexk-is

    (29) (30) Очень правильный вопрос. Как показывает практика, то при обновлении УПП практически каждый релиз является обязательным. И после обновления необходимо выполнить запуск в режиме 1С:Предприятия. При этом если изучить модуль, отвечающий за переход от версии к версии, то может создастся впечатление, что можно обновиться с любого релиза на последний. На самом деле, к сожалению, это далеко не так.

    Для определения цепочки обновлений самым надежным способом будет — следовать рекомендациям разработчика — фирмы 1С. Пример построения цепочек обновлений можно посмотреть в здесь http://www.infostart.ru/blogs/898/

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

    По поводу конфигураций. В базе данных хранятся: Конфигурация базы данных и Конфигурации поставщиков (чаще всего одна), а также не сохраненные в конфигурации базы данных изменения.

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

    Еще раз повторюсь. В базе хранятся: Конфигурация поставщика, Конфигурация базы данных и изменения к конфигурации базы данных. Основная конфигурация получается из конфигурации базы данных и изменений к конфигурации базы данных (если они есть, т.е. в случае когда основная конфигурация отличается от конфигурации базы данных).

    Reply
  32. gochel

    Имхо, этот способ лучше 😉

    http://izhtc.ru/content/view/136/102/

    Reply
  33. alexk-is

    (32) По моему тоже. Добавили роли, но… По прежнему нет макетов, интерфейсов, типов реквизитов. Во всяком случае в описании нет 🙂

    Нетиповыми бывают не только УПП. При стоимости БП 10 т.р. приобрести еще автоматическое обновление за 400 т.р. 🙂

    Reply
  34. BandW

    (32) Дорого! А судя по их калькулятору стоимости обновления не все так автоматизировано.

    Особенно мне понравилось — Вы знаете стоимость последнего обновления?

    Нет демо версии!

    Но направление верное.

    Reply
  35. MSensey

    >> Особо пристальное внимание следует уделить шаблонам RLS по измененным ролям пользователей.

    Для снижения трудоемкости работ при сравнении ролей можно воспользоваться отчетом «Информация по ролям» http://infostart.ru/projects/3739/

    Если добавишь будут благодарен 😉

    Reply
  36. Hans

    еббб Рисунки че то сбились.

    Reply
  37. stuntman

    Достаточно громоздкий вариант. При обновлении нетиповой конфигурации УПП мало того что очень медленно все эти телодвижения делать, еще и памяти не хватает даже для достаточно мощного компа — вылетает с ошибкой и не дает доделать обновление, пробовал на нескольких компах, видимо для УПП этот вариант обновления будет работать только на мощных станциях. Комп: AMD Athlon 64*2 Corel Processor 4400+, память 2046 RAM и другие аналогичные.

    Reply
  38. alexk-is

    (37) Приведенный вариант ПК для программиста слабоват 🙂

    …у меня RAM 4Gb + RAID 0

    Reply
  39. Merlin12042009

    Добрый день! Вы сейчас на сайте.Помогите, плиз.Очень хотелось бы выделить изменения в конфе УПП 24.2, чтобы легче было перенести в 27-ую через механизм поставки, снимаю галочку «Создать файл поставки», какой файл мне нужно добавить в табличную часть?…

    Reply
  40. alexk-is

    (39) Файл конфигурации поставщика 1.2.24.2

    http://infostart.ru/public/18562/forum/topic/30469/

    Reply
  41. Merlin12042009

    Создала файл cfu для 24-ой, а теперь???

    Reply
  42. Merlin12042009

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

    Reply
  43. alexk-is

    (41) Хм. Даже не знаю с чего начать…

    Попробуйте действовать в порядке описанном в этой статье. Если этого будет не достаточно, то в начале статьи есть ссылка на инструкцию по 7.7. Там расписано несколько подробнее…

    Reply
  44. alexk-is

    (42) Для того, чтобы писать, нужно нажать «Вступить в группу пользователей» 🙂

    Reply
  45. support

    (42) для этого надо просто вступить в группу

    http://infostart.ru/public/18562/enter/

    Reply
  46. palshar

    Хотелось бы уточнить, если конфигурация снята польностью с поддержки, и конфигурация поставщика отсутствует технология такая же будет обновления.

    Reply
  47. alexk-is

    (46) Да. Начиная с 1 этапа.

    Дело в том, что методика описанная в данной статье лишь позволяет снизить издержки на последующие обновления конфигурации. Это совершенно не означает, что не существует других способов обновления конфигураций. Другие способы есть. Их много. В конце концов вы можете разработать свою методику. 🙂

    Reply
  48. palshar

    Спасибо 🙂 Скажите а если, в конфигурации которая снята с поддержки, через меню «Конфигурация» → «Сравнить, объединить с конфигурацией из файла…» мы будем объединять с конфигурацией поставщика т.е. старой на базе которой была создана конфигурация наша и в настройках при объединение мы уберем галку разрешать удалять объекты основной конфигурации, так то же можно начать.

    Reply
  49. palshar

    Спасибо :). Если в конфигурации, которая снята полностью с поддержки мы сделаем объединении через меню «Конфигурация» → «Сравнить, объединить с конфигурацией из файла…» с конфигурацией поставщика и при этом в настройках не будем ставить галочку разрешить удаление объектов основной конфигурации. Как это может повлиять на дальнейший процесс обновление конфигурации.

    Reply
  50. alexk-is

    (48) Да

    (49) Нет

    Точнее так. Раз это влияет на результат, то соответственно в некоторой степени повлияет и на процес. Но я бы не стал на этом зацикливаться. Лучше двигаться дальше. Самое интересное ещё впереди.

    Reply
  51. chigsrOck

    (50) Здравствуйте! Если можно маленький вопросик: При обновлении через поддержку в плане вихов характеристик -> «Виды субконто хозрасчетные» снимаю галочку объединения в строке «Предопределенные» чтобы перенести в новую конфу свои предопределенные элементы. При попытке обновления выскакиевает окно как на рис. 7 только в заголовке что-то типа «Найдены ссылки на объекты не помеченные на участие в объединении» и в нижнем окне список доков, макетов, справочников.

    Честно говоря не совсем понял в чем заключается ошибка, если объект при обновлении никуда не девается???? Как состав предопределенных объектов связан с сылками на объект ПВХ?? Спасибо.

    Reply
  52. alexk-is

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

    Reply
  53. alexk-is

    Обновил содержание статьи

    Reply
  54. alexk-is

    Опубликована последняя редакция статьи от 16.04.2010

    Reply
  55. Kosstikk

    Начал читать статью и сразу появились вопросы..

    Зачем столько гемороя с 1м пунктом, если чтобы обновить конфу поставщика нужно всего лишь:

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

    1. взять типовой cf

    2. зайти в конфигурация-поддержка-обновление, выбрать типовой cf. Т.к. конфа поставщика отстает от основной конфы в типовом cf, то нам будет предложено обновление (обновление на типовой cf работает с любого релиза).

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

    З.Ы. автор пиши в личку, поделюсь опытом =)

    З.Ы.Ы. зачем постоянно ставим «установить порядок объектов по конфигурации поставщика»? — чтобы последующие сравнения быстрее выполнялись, а в итоге не было лишнего мусора в виде измененного порядка объектов при обновлении.

    Reply
  56. alexk-is

    (55) Я так и понял, что статья не была прочитана. В первом пункте конфигурация поставщика конечно же участвует, но цель первого пункта несколько другая.

    приведем в соответствие рабочую конфигурацию к конфигурации поставщика

    Ключевой в данном случае является рабочая конфигурация, а не конфигурация поставщика.

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

    Или это какой-то секретный опыт? Тогда конечно же в личку…

    Reply
  57. Kosstikk

    у тебя конфигурация поставщика 1.2.4.1 обновляешься ты на 1.2.6.2 — на тот релиз, который в основной конфигурации.

    Не очень понятно. Ты хочешь убрать мусор который получился из-за накаток конфигурации вместо обновлений? Какая цель 1го пункта?

    Reply
  58. alexk-is

    (57) Цель: убрать несоответствия, которые могут получиться, если конфигурация собиралась/обновлялась как попало. Например, объекты конфигурации добавлялись копированием, перетаскивались мышью, были набиты вручную. Есть еще вариант, что было проделано то, о чем я только что упоминал в копии, а обновление было свормировано как поставка и устанавливалось не через поддержку. Ну, и т.п.

    Reply
  59. Merlin12042009

    КАК ускорить процесс обновления, если я обновляла конфу, а в это время эта же конфа дорабатывалась еще пару дней активно в старом релизе.Как мне выделить этот кусок, чтобы его просто объединить с тем что я делала ранее?…Может быть у кого-то была аналогичная ситуация?…)))

    Reply
  60. alexk-is

    (59) Нужно сравнить исходную рабочую конфигурацию, которую вы обновляли, с новой рабочей конфигурацией. Исходную конфигурацию можно взять в архиве. Искренне надеюсь, что у вас есть архивные копии http://infostart.ru/public/19363/

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

    Так как не указано с какого релиза на какой выполняется обновление, я предположил, что между релизами не было ключевых http://infostart.ru/public/18596/

    Reply
  61. AfterEclipse

    ммм, а если просто так натыкать галочками процедуры не подходит?:) если надо переносить код причем и со старой конфы и с новой ибо обновление затрагивает изменения в старом коде?

    Reply
  62. alexk-is

    (61) Тут все просто. Нужно найти человека с золотыми руками и светлой головой. 🙂

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

    Reply
  63. AfterEclipse

    в том то и соль что роль этого человека в ближайшее время будет вверена лично мне и я пытаюсь набраться опыта в этом деле:)

    Reply
  64. alexk-is

    (63) Может быть в чем-то поможет разобраться эта статья? http://www.infostart.ru/public/18551/

    Reply
  65. gradus

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

    Все же остался вопрос по дальнейшем обновлению.

    Допустим

    1. Установили клиенту типовую конфигурацию (для примера релиз 1)

    2. На копии внесли изменения (добавили реквизиты существующих объектов)

    3. На копии «Конфигурация» — «Сохранить конфигурацию в файл…» — получаем релиз 1 с доработками.

    4. У клиента на рабочей базе «Конфигурация» — «Сравнить, объединить с конфигурацией из файла…» и подсовываем файл из п.3

    Далее сам вопрос.

    Вышло обновление поставщика (релиз 2)

    Как лучше обновиться?

    А. (У Вас это этап 3)

    1. Взять чистый релиз 2 и внести в него все наши изменения, затем Конфигурация» — «Сохранить конфигурацию в файл…» — получаем релиз 2 с доработками.

    2. У клиента «Конфигурация» — «Поддержка» — «Обновить конфигурацию» — «Выбор файла обновления» и подсунуть типовой релиз поставщика 2

    3. У клиента на рабочей базе «Конфигурация» — «Сравнить, объединить с конфигурацией из файла…» и подсовываем файл из п.1

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

    Б.(а можно ли так?)

    1. Взять копию базы клиента

    2. дальше не знаю 🙁

    Правильно ли я понимаю, что если пропустить п.2 в варианте А, то конфигурация поставщика не обновится?

    И если можно, в двух словах, в чем плюсы и подводные камни обновления через создание файлов поставки? И в каких случаях они рекомендуются?

    С уважением.

    Reply
  66. gradus

    подписался

    Reply
  67. alexk-is

    (66) Предпочитаю вариант Б. Это позволяет сохранить мелкие доработки, которые пользователь может внести самостоятельно. А также этот вариант позволяет проверить работу конфигурации после обновления на реальных данных.

    Reply
  68. gradus

    А какие шаги нужно предпринять в варианте Б?

    2.

    3.

    4.

    С уважением.

    Reply
  69. alexk-is

    (69) Собственно порядок действий описан в статьях и в комментариях к ним. Даже не знаю, что ещё можно добавить.

    http://infostart.ru/public/18551/

    http://infostart.ru/public/18562/

    http://infostart.ru/public/18596/

    Reply
  70. bulpi

    Как это все сложно …

    «В приведенном примере объем работ по обновлению и переносу изменений типовой конфигурации составляет порядка 100-150 часов. »

    За 150 часов я напишу новую базу , оттестирую и внедрю. 😀 😀

    Reply
  71. anig99

    (71) собственно тут есть более короткий вариант… Но хотелось бы посмотреть на человека, который способен за 20 дней написать и оттестировать УПП.

    Reply
  72. bulpi

    (72)

    А кто говорит про УПП ? И вообще про типовую конфу, способную занять сектор рынка ? Если серьезно ( в отличие от моего предыдущего сообщения), такие вещи не делают быстро и в одиночку. Но вот толково автоматизировать учет одной конкретной (непроизводственной!) фирмы за 150 часов вполне реально. Согласитесь, это несопоставимо с тратами 150 часов всего лишь на одно обновление.

    Reply
  73. anig99

    (73) ну да. 150 часов — это ОЧЕНЬ много.

    Reply
  74. alexk-is

    (74) «в моем случае с пары сотен часов, до 8». Пара сотен часов — это не много?

    (73) В статье ведь указано, что ранее при обновлении были допущены ошибки. Как результат — резкое увеличение трудоёмкости обновления. Кроме этого описанный в статье переход через большое количество релизов сопровождался исправлением ошибок, допущенных при предыдущих обновлениях, а также переписыванием некоторых измененных механизмов, связанных с обменом данными, правами пользователей и т.д. Последнее же обновление с подготовкой, тестированием и установкой с 1.2.38.1 на 1.2.39.1 заняло 3 часа. 3 часа — это много?

    Reply
  75. progres488

    ПВы правы лучше отправить на поедение хомякам

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

    (73)

    Но вот толково автоматизировать учет одной конкретной (непроизводственной!) фирмы за 150 часов вполне реально.

    Завод с сезонным производством. РАУЗ. 170 часов.

    Но если уже есть извращенная конфигурация, кто ж тебе даст внедрять другую 😮

    Reply
  77. Fr1eNd_Tver

    Щас буду тестировать вашу методику, я так понял формы все равно придется править вручную?

    Reply
  78. alexk-is

    (78) В большинстве случаев, да, вручную.

    Reply
  79. Koles

    Спасибо. Пригодилось.

    Reply
  80. pmtvv

    За статью спасибо, пригодилась

    Reply
  81. Gar1ck

    Все грамотно описано, плюсанул.

    Reply
  82. krv2k

    Статья очень понравилась, все грамотно расписано.

    К автору несколько замечаний:

    1.

    Если в комплекте поставки новой версии конфигурации существует файл *.cfu для перехода с текущей версии конфигурации, то лучше воспользоваться именно этим файлом. В этом случае в сравнении будут участвовать только измененные поставщиком объекты, соответственно вся процедура обновления может быть выполнена значительно быстрее.

    Обновление через cfu не может быть быстрее, так как сначала платформа на основании конфигурации поставщика и файла обновления создает cf

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

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

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

    Reply
  83. kng67

    Статья понравилась. Помогла в разрешении нескольких вопросов по началу. Да и комментарии по статье вызвали интерес. Распечатала, подложила себе в папку. Может еще кому-нибудь начинающему пригодится.

    Reply
  84. mvgfirst

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

    Я конечно понимаю что лучше один раз сделать руками самому чем языком балаболить… и возможно станет все понятно…

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

    P.S.

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

    Reply
  85. alexk-is

    (85) Изначально статья писалась для сотрудников нашей компании, у которых есть довольно большой работы с 1С. В последствии статья несколько раз переписывалась с учетом вновь открывшихся проблем. Какой именно момент не понятен?

    Reply
  86. olqueen

    Статья понравилась. Попробую на этой неделе обновить конфигурацию.Посмотрим, что получится.

    Reply
  87. ch1mera

    Спасибо. Пригодилось.

    Reply
  88. Lyuba-Lyuba

    Очень пригодилось.

    Reply
  89. владимирп

    Дельная подробная статья. Спасибо автору

    Reply
  90. woozee

    Геморная статья.. Много лишнего. Где то не совсем правильная методика… Сам обновляю разновсяческие конфигурации разной сложности без проблем и всякого лишнего подобно тому что тут написано.

    Reply
  91. IChe

    Спасибо. Нужная статья.

    Reply
  92. Sorry

    да и мне помогло!спасибо

    Reply
  93. Raminus

    Статья несколько загромождена ненужными манипуляциями. ИМХО

    Reply
  94. Пуд

    (91) woozee, Согласен, на днях обновлял свою первую нетиповую, прочитал несколько статей, в том числе и эту. Неподготовленного человека она пугает и запутывает. Методика не прозрачна, потом сравнение по «дважды измененным» при переходе через несколько версий не совсем точное. У меня, во всяком случае, некоторые объекты не попали в отобранные. В общем проще надо быть, конечно.

    mvgfirst пишет:

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

    Я конечно понимаю что лучше один раз сделать руками самому чем языком балаболить… и возможно станет все понятно…

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

    P.S.

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

    Показать

    Тут тоже подписываюсь. Очень сложно и перегружено. А описывать понятное — подробно, а темные моменты — обходить — вполне в духе 1С:)

    Но в любом случае спасибо за труд! Какие-то моменты могут оказаться полезными!

    Reply
  95. F1_1

    Полезная информация

    Reply
  96. ilnur.56

    Спасибо. Пригодилось.

    Reply
  97. DnlAuto

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

    Reply
  98. Пацталоцци

    (86)

    [quote=alexk-is]Какой именно момент не понятен? [/quote]

    Вот конкретный непонятный фрагмент:

    [quote=alexk-is]Итак, по результатам первого этапа готовим две одинаковые базы. Первая (основная) — наш будущий результат. Вторая (вспомогательная) — для выполнения сравнений, открытия конфигураций и других подготовительных действий.

    Используя имеющийся файл новой конфигурации, выполним обновление. Для этого выберем пункт меню «Конфигурация» → «Поддержка» → «Обновить конфигурацию», «Выбор файла обновления», «Готово» (Рисунок 10).[/quote]

    Алексей, в какой базе мы выполним обновление? В какой из двух? В основной или во вспомогательной?

    А ведь нужно всего лишь немного видоизменить фразу:

    «Открываем вспомогательную базу и, используя имеющийся файл новой конфигурации, выполним обновление.»

    Reply
  99. alexk-is

    (146) Понял. Исправил.

    Используя имеющийся файл новой конфигурации, выполним обновление. Для этого в основной базе выберем пункт меню «Конфигурация» → «Поддержка» → «Обновить конфигурацию», «Выбор файла обновления», «Готово» (Рисунок 10).
    Reply

Leave a Comment

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