gifts2017

Методика пошагового перехода из решения для платформы 7.7 "Торговля и склад" на решение для платформы 8 "Управление торговлей"

Опубликовал Паша Лаптев (vugluscr1991) в раздел Обмен - Перенос данных из 1С7.7 в 1C8.X

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

Вам нужно перейти на "восьмерку", итак ...

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

Проблемы штурмового перехода из ТиС в УТ знакомы лишь тем, кто в этом принимал непосредственное участие. Отсутствие же такого опыта у человека, принимающего решение о переходе внутри своей компании, естественно, ведь переход осуществляется один раз. Часто подобный переход происходит одновременно с ротацией ИТ персонала: сокращается количество тех, кто поддерживал 7.7, и нанимаются те, кто будет поддерживать 8.х. В таких условиях сборную ИТ команду нельзя назвать сработанной. Кто же является основным источником информации при переходе? Продающая сторона.

Дай Бог, чтобы внедренец со стороны поставщика продукта появился ещё на стадии обсуждения покупки. Бывают и такие случаи, когда покупатель знакомится с внедренцем уже после приобретения и установки (силами сборной ИТ) решения УТ. В таких крайних вариантах внедрения УТ появление внедренца от поставщика похоже на появление чертенка, который выпрыгивает из табакерки с криком "Ну что! Встряли!".

Методика постепенного перехода, представленная в этой статье, позволяет сперва увидеть свои учетные данные в базе УТ, продолжая работать в базах ТиС. И уже гладя на конечный результат, принимать решение о сроках и остальных этапах перехода.

Эта методика перехода не является концептуальным ноу-хау автора. Многие аналогичные публикации на ресурсе "Инфостарт" также рекомендуют поэтапный переход и предоставляют возможности выгрузки документов. Отличие этой публикации в технических деталях организации процесса выгрузки документов и справочников. Прежде всего в том, что выгрузка автоматизирована. Не нужно интерактивно запускать некоторую обработку, выбирать период и смотреть на прогрессбар процесса выгрузки /загрузки документов. Загрузку документов осуществляет "робот" (регламентное задание с параметрами из какой базы брать и что именно загружать).

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

Как же робот "узнает", какие документы изменились в базе данных ТиС? Неужели придется покупать компоненту УРБД или автор предлагает использовать её без покупки?

Информацию об измененных документах робот узнает из журнала записи интерактивных действий пользователей (файл 1cv7.mlg)

Туда могут не попадать действия с документами и справочниками, которые производятся через написанные ИТ службой (или кем-то ещё) обработки, если при написании этих обработок авторы не озаботились записью информации о произведенных изменениях. Конечно в таком случае эти обработки нужно "доделать". Обработки с диска ИТС написанные специалистами Фирмы "1С"  для баз данных на платформе 7.7 имеют в наборе своих алгоритмов процедуры записи выполняемых изменений, использование этих обработок не ведет к потере информации об измененных объектах в журнале 1cv7.mlg, и робот может принимать решение о загрузке соответствующих измененных документов или справочников в базу УТ.

Основной идеей построения решения была конвертация идентификаторов ссылочных сущностей (справочники, документы) из того вида, в котором они хранятся в базах 7.7, к виду в котором они хранятся в 8.х

Для тех, кто видел как данные записаны в файлах наглядным будет такое пояснение:

{"B","","796",""," 34222МАГ"} -> {7fd98943-5c4c-08b9-0317-99f235792bbf}

Такой подход к конвертации позволит не тащить всякий раз при обмене информацию о наборе полей поиска соответствия справочников и документов, а также не тащить все выгруженные по ссылкам данные, связанные с выгружаемым объектом. Для таких простых объектов, как к примеру, справочники "банки" или "валюты", можно даже не хранить соответствия идентификаторов элементов в базе 7.7 и в базе 8.х, для случая, когда база данных 7.7 только одна. Для более сложных сущностей, таких как элементы справочника "контрагенты", приходится держать такой регистр соответствий для того чтобы "сливать" элемент справочника "Сторонние юридические лица" и элемент справочника "Контрагенты" из базы 7.7 в один элемент справочника "Контрагенты" в базе 8.х, а также для того, чтобы "сливать" в один элемент справочника в базе 8.х одинаковые элементы справочника "Контрагенты" в разных базах 7.7 (для разных Юридических лиц в компании). То есть различия в методиках учета сущностей для баз ТиС и УТ ставят задачу разделить один элемент из ТиС на две (или больше) сущности в зависимости от контекста использования в УТ или же наоборот слить несколько дублирующих сущность элементров из ТиС в один элемент из УТ.

Основное методическое решение для учета контрагентов: пара ИНН + КПП означает одного уникального контрагента. Заполнение данных по контрагенту реализовано через web-сервис для баз данных ЕГРЮЛ и ЕГРИП.

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

Особое внимание при переносе нужно обратить на стандартизацию. В моих алгоритмах переноса стандартизируются адреса доставок и другая адресная информация согласно классификатору ФИАС, а большинство адресов успешно геокодируюся.

Зачастую случается так, что в базах ТиС имеющих более чем годовую историю использования, накапливаются нестандартизированные адреса, телефоны. Как и с контрагентами, правильно заполненными считаются данные из ФИАС, а старые значения адресов с приписками на тему кого и когда спрашивать можно сохранять в наименовании соответствующего справочника или в поле комментария для регистра контактной информации.

Правила обмена данными имеют особенности построения.

Как и при использовании "Конвертации данных" от поставщика, без некоторого дополнительного понимания особенностей процесса переноса данных и методик учета в алгоритмах конфигураций ТиС и УТ (ну то есть вообще с нуля), свои собственные правила для переноса написать нельзя. Здесь приведу в качестве примера ситуацию, когда один и тот же договор ("Основной") используется в ТиС и для продажи, и для поставки, а в УТ согласно реализованным методикам учета договора должны быть разными и иметь разные признаки отношений "с покупателем" и "с поставщиком" соответственно. Анализ того, как эта ситуация отработана в моем решении, позволяет наглядно увидеть архитектуру обмена данными изнутри. Сначала документ (пусть к примеру поставки) преобразовывается согласно правилам в объект базы данных документ вида "ПоступлениеТоваровУслуг", затем происходит анализ заполненных в объекте реквизитов и для тех сущностей, которых в базе УТ ещё нет, происходит их запрос из базы ТиС. Все объекты сериализуются и записываются в пакет для загрузки.

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

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

Правила обмена интуитивно понятны программисту 1С.

Вот пример

  // Справочник Проекты

РегистрыСведений.ОписанияОбъектовОбмена.УстановитьПравилоОбменаДанными("B/796", ТекущаяБаза, "СтрМенеджерОбъекта", "Справочник.Проекты");
РегистрыСведений.ОписанияОбъектовОбмена.УстановитьПравилоОбменаДанными("B/796", ТекущаяБаза, "ОписаниеРеквизитов", "B/796/Реквизиты");
    
РегистрыСведений.ОписанияОбъектовОбмена.УстановитьПравилоОбменаДанными("B/796/Реквизиты", ТекущаяБаза, "Родитель", "Скрипт~ОбменСИП77СкриптыПостобработка~ЗаписатьДляНовых~Ссылка.Родитель~ТолькоДляНовых");
РегистрыСведений.ОписанияОбъектовОбмена.УстановитьПравилоОбменаДанными("B/796/Реквизиты", ТекущаяБаза, "ТипГруппы", "Ссылка.ТипГруппы");
РегистрыСведений.ОписанияОбъектовОбмена.УстановитьПравилоОбменаДанными("B/796/Реквизиты", ТекущаяБаза, "Телефон", "Ссылка.Телефон");
РегистрыСведений.ОписанияОбъектовОбмена.УстановитьПравилоОбменаДанными("B/796/Реквизиты", ТекущаяБаза, "КодПартнера", "Ссылка.КодПартнера");

Почему не "Конвертация данных" (КД): автономность, скорость, автоматическое определение измененных объектов, плавность процесса перехода.

Ещё раз пройдемся по архитектуре формирования базы перехода в предлагаемой методике:

  1. Регистрация измененного объекта в базе ТиС в журнале 1cv7.mlg.
  2. Автоматическая выборка записей журнала регистрации регламентным заданием в базе УТ согласно заданного расписания - гибкая настройка частоты появления в УТ новых документов.
  3. Запрос данных измененного объекта с использованием OLE взаимодействия с запущеным сеансом работы в ТиС.
  4. "Раннее связывание" ссылок и значений данных в полученном объекте, дополнительные запросы в ТиС для ссылок в УТ на отсутствующие документы и справочники (которые представляются в базе данных как <объект не найден>).
  5. Сериализация всех новых согласованных и связанных объектов и запись их в пакет для загрузки.
  6. Запись десериализованных объектов из пакета в базу УТ и "позднее связывание" полученных сущностей с методиками их нового учета в УТ.
  7. Проведение записанных документов.

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сергей Рудаков (fishca) 31.10.16 11:14
Интересно много ли динозавров еще работающих на семерке и планирующих перевестись на восьмерку? Да еще и с не типовыми конфами.
2. Sergei (kauksi) 31.10.16 15:20
поток сознания... а по факту ни методики... ни роботов переноса...
3. DenisCh Гейтс (DenisCh) 31.10.16 15:29
(0) шаг первый (начальный) - забыть о таком переносе, если исходная конфигурация выполняет свои задачи.
4. DenisCh Гейтс (DenisCh) 31.10.16 15:30
за решение "Информацию об измененных документах робот узнает из журнала записи интерактивных действий пользователей" - можно и пристрелить.
УРБД использовать - кто запрещает? дальше читать не стал
5. rjhev korum (корум) 31.10.16 15:56
(4) УРБД в 7.7 платная. 1500 р, что ли, если официально.
Не учи плохому! Инфостарт против наркотиков пиратства.
6. DenisCh Гейтс (DenisCh) 31.10.16 15:58
(5) Задача непрерывной интеграции - тоже не за кружку пив чая делается. А ответственность выше на порядки.
7. rjhev korum (корум) 31.10.16 16:16
(6) не обижай Вуглускра, в общем. Он качает как умеет (ц)
8. DenisCh Гейтс (DenisCh) 31.10.16 16:27
(7) в углу пусть он делает, что хочет. но если есть менее болезненные способы...

И да, я не обижаю. его способ достоен внимания, но в редких случаях. например, мне приходилось таскать документы, созданные обработкой. Соответственно - ни следа в ЖР.
9. Паша Лаптев (vugluscr1991) 31.10.16 18:27
(5) корум, Думаю, что будет полезно сделать в партнерке соответствующую заявку и увидеть, что розничная цена этого продукта ("1С:Предпр.7.7.Управление распред. информ. базами USB") 25 000 рублей.
10. Виталий Глазунов (Altez) 01.11.16 00:30
Задача непрерывной интеграции - тоже не за кружку чая делается


Пусть цветут все цветы(с), особенно в кризис.
По журналу переносил УТ10-УТ10 из убитой базы в бэкап, зная, что обработками в радиусе предприятия никто не пользуется - все рады.

зы. Паш, как там никсы в энтерпрайзе, с чем волгоградские 1сники сталкиваются,
Wine или native, торговое оборудование, мало инфы по теме в сети.
11. rjhev korum (корум) 01.11.16 10:53
(9) Эпическая сила! Дороговато за одну ДЛЛ.
12. Паша Лаптев (vugluscr1991) 01.11.16 19:48
(10) Виталий, перечислю все linux проекты (их 4): 7.7 ТиС на мебельной фабрике, 7.7 ТиС + 8.3 Камин в фирме по канцелярке, 7.7 ТиС в продаже спецодежды и 8.3 БП3 + 8.3 Камин в муниципальном хозяйстве. Везде, где 7.7 там WIne Etersoft, купленный, с поддержкой. В других версиях Wine считаю продакшн неприемлемым. Везде, где 8.3 клиент родной линуксовый, который в 8.3 и появился. Везде терминальная среда на базе freeNX, патчи приходилось искать на просторах интернета, в муниципальном хозяйстве RX Etersoft. Основной недостаток - операции с Clipboard-ом. Можно со своего кармана перекидывать английское и русское в удаленный, но не наоборот. Хотя Etersoft-овцы считают этот вопрос закрытым и я х/з почему. Есть хак для решения вопроса по печати для любого кривого принтера, если он подключен в winXP. Если принтер подключен к win7 или старше, то там есть линукс служба печати и дай бог, чтобы в линукс дистрибутиве был драйвер. Все внедрения сделаны на дистрибутивах CentOS. Клиент под 8.3 линукс ведет себя с недостатками. Которые типа "проходят", иногда. И если они прошли, то, слава богу, (и почему я х/з) не возвращаются.
С мебельной фабрики (пока я был в отпуске) стерли линукс ушлые конкурренты, стерли вместе с базами (дибилы) проблемы решали дальше без моего участия. Что со спецодежной я тоже уже не слежу, там конкуренты влезли и обещали перетащить их ТиС в УТ (флаг им всем в руки и остальные места). Остальные проекты я вижу, линукс там живет и работает от меня отдельно. Народ даже сервак перегружать не умеет. В их жизнь прочно вошла реальность, что они на работу приходят, а там их ждет рабочий стол. Надо, может, логи почистить, да только с некоторых пор ИТ стала статьей жестокой экономии ...
А в связи с какой моей публикацией возник вопрос и где я про это писал?
13. г. Казань Рустем Гумеров (Rustig) 02.11.16 01:42
(0) замысловатый проект! плюс поставил. сколько времени ушло на поиск и анализ решения, на реализацию и отладку? я так понимаю, делали все вы один?
(1) да полно еще клиентов на 7-ке, у которых проблема перейти на 8-ку - спецов не могут найти, которые взялись бы за переход, и это 2016 год :)
14. Убийца Джедаев (vakham) 02.11.16 09:46
(1) fishca, достаточно. И не планируют.
15. Убийца Джедаев (vakham) 02.11.16 09:48
(13) Rustig, дело даже не в спецах, а в стоимости 8-ки. 7-ка работает и приносит прибыль, внедрение "игрушки для программистов" ЧП-ник считает прямыми и безвозвратными убытками.
16. Паша Лаптев (vugluscr1991) 02.11.16 09:57
(13) Рустем, спасибо.
Это решение - "работа над ошибками". У меня перед этим проектом была ещё одна задача непрерывной интеграции (как тут в комментариях ее называют), в гугле можно найти по ключу "v8: РИБ 7.7 - 8.2". И вот там я запнулся на ситуации, когда в пакете обмена есть ссылка на сущность, которой нет в базе 8-ки. Прошлое решение мне разонравилось. Из-за этой досадной ситуации пришлось вводить лишнюю сущность и потом заменять её по факту появления. Костыль.
Это решение в чистом времени съело месяца 2. Делал один.
17. Вадим Коржав (KRJ) 02.11.16 11:27
(1) fishca, я что такого есть в 8.х для малой организации чего нет в 7.7? Конфы 8 заточены на большие организации. Для малых организаций это только лишние навороты.
18. Алексей Станиславович (Drizer2000) 03.11.16 11:16
(1) fishca, у нас сильнодоработанная комплексная 1с 7.7, для перехода на 8-ку требуется много времени и средств. Задачи свои конфига выполняет. Переход ради перехода нет смысла.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа