Проект по синхронизации «1С-Рарус Магазин» ред.1 и 1С:Розница 2.2

Данный проект я реализовывал на работе. Было проведено предпроектное обследование(не мной) и выяснены примерные потребности клиента. Ниже привожу само проектное задание:

 

Проектное задание

Цель: Внедрение программного продукта 1С: Розница 8 ПРОФ в торговой сети «Рамакс» и настройка обмена между 1С: Розница 8 ПРОФ и текущего ПО Заказчика 1С: Предприятие 7.7.

 

Описание услуг:

  • 1С: Предприятие 8.0: Настройка обмена данными

Разработка обмена между 1С: Розница 8 ПРОФ и 1С: Предприятие 7.7.

Обмен в 2 уровня: между 1с7.7 и Розницей Центральной, и между Центральной розницы и кассовым местом.

Обмен будет происходить с периодичностью 5 минут.

В Розницу загружается:

  • справочник номенклатуры, важно обратить внимание на «код старый», он должен загрузиться в артикул, по этому полю производится поиск товара.
  • Информативные остатки по каждому из магазинов
  • Цены
  • Дисконтные карты
  • Справочник продавцов

Из розницы в 1с7.7:

  • Информация по продажам: чеки и ОРП
  • Личные продажи по продавцам
  • Настройка ПК

Организация сервисной связи до ПК Заказчика

  • Настройка сервера

Настройка серверов Заказчика под ПО 1с Розница 8

  • 1С: Предприятие 8.0: Разработка конфигурации

Разработка дополнительного функционала в программном продукте 1С: Розница 8 ПРОФ

  • Внесения без оформления кассовых ордеров.
  • Проверка информативных остатков по данному магазину и выведение сообщения о недостаточности остатка при добавлении товара в чек и при изменении количества.
  • Убрать в чеке колонку с остатком и показывать информативные остатки, также в подборе должны быть информативные остатки по 2 магазинам.
  • 1С: Предприятие 8.0: Предпусковая настройка системы

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

  • 1С: Предприятие 8.0: Пусковая настройка системы

Настройка кассовых мест с автономной БД, подключение оборудование, обучение кассиров.

Предполагалась совместная работа с отделом внедрения типовых решений(там задействовано два человека). Моя часть проекта — это перенос данных и организация двухстороннего обмена между базами.

В качестве инструмента обмена выбрал типовой инструмент — Конвертацию Данных 2.0 по причине того, что с ним «на ты», хотя опыта по переносу из 1С7.7 посредством конвертации не имел до этого.

Этапы решения задачи:

1. Анализ структуры метаданных и проектировка обмена

Согласно проектному заданию мне необходимо выгружать следующие основные блоки:

— Номенклатуру(в 1с77 это справочник «Номенклатура»);

— Информативные остатки(это регистр сведений в Рознице, заполнять надо из регистра «Остатки товаров»);

— Цены(есть три места, откуда можно их взять: регистр остатков «Розничные цены», периодический реквизит «Цена розничная» из справочника «История цен» и реквизит самого справочника «Номенклатура»);

— Дисконтные карты (по сути, в рознице это элементы справочника «Информационные карты» имеющие вид «Дисконтная». С ними вместе я переношу Котрагента в справочник «Физические лица»);

— Продавцы (в Рознице это элементы справочника «Физические лица», так как для каждого продавца имеется карта со штрихкодом, принял решение переносить их вместе с картами).

Алгоритм по переносу данных спроектировал следующий:

— обмен будет происходить посредством выгрузки-загрузки файлов сформированных посредством КД2.

— выгрузка данных из 1с7.7 будет двух типов: полная и оперативная. Полная выгрузка нужна для разового переноса необходимых данных. Данные переносятся не все и только в необходимом объеме с дозаполнением на стороне розницы на этапе запуска. Оперативная выгрузка будет происходить раз в пять минут.

— В «1С-Рарус Магазин» будет добавлено несколько констант для задания настроек обмена и в справочники будут добавлены реквизиты, которые нам будут нужны для отметки элементов, которые будут выгружаться в оперативной выгрузке;

— На стороне 1С7.7 запускается регламентная процедура, которая проверяет наличие выгрузки из Розницы в заранее заданном каталоге. Если такая выгрузка найдена, то происходит загрузка, а следом выгрузка из 1С7.7;

— На стороне Розницы добавлена внешняя обработка, запускаемая регламентно, которая пытается загрузить данные из файла 1С7.7 и следом выгрузить чеки.

2. Реализация полной выгрузки из 1С-Рарус Магазин

Реализация полной выгрузки из «1С-Рарус Магазин» была осуществлена полностью посредством функционала конфигурации Конвертации данных 2.1.

Конфигурация УС на 1с7.7 имела следующие особенности:

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

— код номенклатуры в 1с7.7 использовался в качестве штрихкода. Соответственно, в Розницу он загружается как штрихкод;

— Справочник «Карточки» выгружается в справочник «Информационные карты». По владельцу определяем, какого типа у нас карта — дисконтная или карта продавца.

— Место, откуда требуется брать актуальные розничные цены, программист заказчика указывал несколько раз разное и всё время оказывалось, что не все актуальные позиции имеют цену. В итоге было решено брать актуальные цены прямо из карточки товара, куда они записывались в модулях соответствующих документов;

На этапе разработки полной выгрузки значительное число проблем возникло в связи с плохим знанием структуры конфигурации 1с77 «1С-Рарус Магазин» и тем, что я не имел опыта использования конвертации данных в 1с77.

Результатом данного этапа явилась база 1С:Розница, прототип — была необходима более тщательная настройка данной базы для осуществления в ней полноценной торговли. Данную работу выполнял уже внедренец.

3. Реализация выгрузки изменений из 1С-Рарус Магазин

Предполагается, что обмен будет происходить следующим образом:

  • В константе 1с7.7 хранится путь к каталогу обмена. каталог обмена содержит подкаталоги:
  1. «Rules» — содержит правила обмена данными;
  2. «ExtForms» — содержит внешние обработки 1с7.7;
  3. «Date» — предназначен для хранения файла обмена.

Файл обмена из 1с7.7 выгружается с именем: «for_retail.xml», файл обмена из Розница выгружается с именем «from_retail.xml».

  • По расписанию(планировщик Windows) будет открываться 1С7.7 в режиме предприятие под пользователем «Retail». В конфигурации 1с7.7 для данного пользователя в событии «при начале работы системы» прописан последовательный запуск загрузки чеков из файла «from_retail.xml» и, при удаче, выгрузка данных об изменениях в файл «for_retail.xml».
  • Если не найден файл продаж, то сеанс завершается, если файл продаж найден, то происходит загрузка продаж и последующая выгрузка изменений в Розницу.

В качестве основы для выгрузки изменений использовались всё те же правила обмена данными из предыдущего пункта, но основательно доработанные. Кроме того, потребовалась доработка конфигурации 1С77, так как согласно техническому заданию, была необходимость выгружать элементы справочников, а в 1с77 отсутствует нативный механизм по регистрации изменений, подобный планам обмена в 1с.8.

Правила обмена для выгрузки изменений я спроектировал следующим образом:

  • выгрузка осуществляется за период, кратный дню(значение регулируется константой);
  • в каждый справочник, который должен выгружаться, я добавляется реквизит «Дата изменения», при записи элемента я значение данного реквизита становится равным текущей дате;
  • для выгрузки отбираются все элементы с датой изменения попадающей в период глубины выгрузки(Текущая дата — константа дней выгрузки данных);
  • для выгрузки документов используется дата документа;
  • выгружаются не сами документы, а только текущие остатки и цены по номенклатурным позициям из их табличных частей
  • после выгрузки дата изменения в выгруженных элементах справочников очищается.

Правила обмена были спроектированы таким образом, что при загрузке элементы справочников 1с77 загружались в соответствующие им элементы справочников Розницы, для отражения изменения цен использовался документ Установка цен номенклатуры, который создавался единственный за день, а для отражения изменения остатков создается при наличии изменений документ Корректировка регистров на разницу.

Данный этап оказался самым сложным в реализации и занял больше всего времени.

4. Реализация загрузки в 1С:Розница

Для реализации загрузки в 1С:Розница чтоб сэкономить время, не стал пользоваться типовым механизмом обмена ввиду того, что там пришлось бы значительное внимание подгонке выгрузки из 1с77 под типовой формат. Потому сделал отдельную внешнюю обработку, которая вызывала для выгрузки-загрузки данных типовую обработку «Универсальный обмен данными в формате xml». Для хранения настроек я использовал справочник «Файлы», так как в нём есть возможность хранить сериализуемые значения. Обработка вызывается регламентно и имеет форму настройки выгрузки.

5. Реализация выгрузки чеков из 1С:Розница

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

На этом этапе сложности возникли в связи с особенностями архитектуры УС 1с77: имелась основная база, которая использовалась только для обмена между всеми остальными распределенными. Каждая касса находилась в своей распределенной базе. Обмен был между базами раз в пять минут. Первоначально воспользовавшись функционалом библиотеки «formex.dll» сделал запуск процедуры обмена по таймеру в сеансе «Retail», но такой вариант оказался неподходящим из-за того, что заказчик не мог назначить ответственного, который бы запускал данный сеанс «Retail» утром и завершал вечером. Это надо было бы делать обязательно, так как ночью происходили дополнительные расчеты, требующие монопольного запуска. Потому сделал запуск обмена через планировщик Windows. Впоследствии выяснилось, что и этой меры недостаточно, так как при загрузке чеков из Розница и одновременной загрузке данных РИБ периодически возникали блокировки. Потому пришлось писать скрипт, который проверяет — запущен ли какой-либо сеанс работы в базе 1с7.7 и в случае, если не запущен, запускает сеанс «Retail» монопольно.

Текст скрипта:

@echo off

start C:WindowsSysWOW64regsvr32.exe /s C:WindowsSysWOW64v7plus.dll
IF not EXIST «F:Centrrarus1Cv7.LCK» (
START D:1cv77_BIN1cv7.exe enterprise /DF:Centrrarus /NRetail /P»» /M 
)

Заключение:

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