Раз в неделю мы с заботой отбираем самые полезные новости для пользователя 1С!
Служба заботы ООО "Инженер-Центр" :)
Волжский
|Волгоград
|Камышин
1С-ПЕРЕГРУЗКА ДАННЫХ. Обмен данными между Бухгалтерией и Торговлей.
Настройка обмена между давно работающей 1С-Бухгалтерией 8 (редакция 2) и давно работающей 1С-Управление Торговлей 8 (редакция 10.3)
Это реальное описание реальных событий. Это отчёт программиста о проделанной работе с некоторыми дополнительными комментариями и материалами.
Надеемся, что этот отчёт позволит пользователям и начинающим программистам понять объём и состав работ, которые приходится выполнять при настройках обмена данными между разными программами 1С.
Руководство компании Инженер-Центр выражает отдельную благодарность Алексею Даниленко за подготовленный формальный и неформальный отчёт по своей проведено работе. Мало кто из программистов способен внятно описать свою проделанную работу.
01 ДЕНЬ РАБОТЫ
Встретились с Заказчиком. Посмотрели базы, с которыми надо работать. Одна база 1С:Бухгалтерии 8. Две базы 1С:Управление Торговлей 8 редакция 10.3. В 1С:Бухгалтерии ведётся две организации. Организации очень разные по набору номенклатуры, документообороту и у одной из них есть свои особенности при заполнении документов. Поэтому Заказчик принял решение разделить 1С:Бухгалтерию на две базы. И наладить отдельный обмен с каждой из баз из каждой отдельной базы 1С:Управление Торговлей.
Составили Техническое задание. Смотрите Приложение 1.
02 ДЕНЬ РАБОТЫ
Был предложен следующий порядок разделения базы 1С:Бухгалтерия 8 на две части: Смотрите Приложение 2.
Из наряда на выполнение работ программиста за 02 день:
Создание копии бухгалтерии. Разделение базы на две организации. Удаление помеченных объектов. По 3-4 часа на каждое разделение. Написание обработок синхронизации номенклатуры и контрагентов.
ЗАТРАЧЕНО 8 часов работы.
Более неформальные комментарии программиста за 02 день:
Была поставлена задача: настроить обмен документами между одной базой бухгалтерии 2.0 и двумя торговлями 10.3. До этого было произведено очень много перебросок документов че-рез планы обменов. При выполнении первого плана обмена настраивается соответствие объектов информационных баз. Так как в базе бухгалтерии было очень много задвоенных и затроенных справочников и документов, то можно предположить, что обмен не был настроен правильно. А удалить его не смогли.
Первое, что было сделано - это база бухгалтерии была разделена на две в разрезе организаций (таким было поставлено тех задание). Соответственно затем, в каждой базе были помечены на удаление и частично удалены лишние документы чужой организации.
03 ДЕНЬ РАБОТЫ
Была предложена схема синхронизации справочников 1С:Бухгалтерии 8 и 1С:Управления Торговлей 8 редакция 10.3. Смотрите в Приложении 3.
Из наряда на выполнение работ программиста за 03 день:
Свертка каждой базы на конец 2011 года. Перенумерация в обоих базах номенклатур и контрагентов. Изменение правил обмена для ручной выгрузки/загрузки. Изменение самой обработки для загрузки/выгрузки.
ЗАТРАЧЕНО 6 часов работы.
04 ДЕНЬ РАБОТЫ
Из наряда на выполнение работ программиста за 04 день:
Создание обработки для установки пометки на удаления лишних номенклатур с одинаковым наименованием. Доработка правил обмена. Пробная выгрузка остатков на копии.
ЗАТРАЧЕНО 6.5 часов работы.
Более неформальные комментарии программиста за 03-04 день:
Вторым шагом нужно было синхронизировать справочники номенклатура и контрагенты. Мне было предложено выгрузить наименования и коды номенклатуры из баз торговли в текстовый файлик, затем «пропарсить» его (разобрать данные) и выполнить замену кодов в бухгалтерии. Со справочником контрагентов примерно аналогично, только выгружать ещё нужно было ИНН и КПП.
Поступил я иначе. Первое, что я сделал - это изменил префиксы в торговлях (до этого у них они были одинаковы). Затем перенумеровал справочники Номенклатура и Контрагенты в обеих базах торговли соответственно с префиксами УТА и УТБ. Мой следующий шаг – это перегрузка этих справочников, как они есть в бухгалтерию и уже там с помощью обработки ПоискИЗаменаДублирующихсяЭлементов отдать предпочтение элементам с кодами УТА и УТБ. Другие, соответственно, удалить.
05 ДЕНЬ РАБОТЫ
Из наряда на выполнение работ программиста за 05 день:
Проба выгрузки из Торговли в Бухгалтерию. Произошла ошибка. Вылавливание ошибки в конфигураторе. Найдена ошибка. В одной номенклатуре в качестве родителя была указана она же, что приводило к бесконечному циклу выгрузки данных. Около 3 часов.
Исправление ошибок в правилах обмена. После загрузки объектов, должны были проставляться счета учета в нужных документах. К сожалению, в некоторых случаях передавалось пустое значение вместо документа и, соответственно, происходила ошибка при попытке заполнения счетов учета. Исправление и нахождение ошибки все оставшееся время.
ЗАТРАЧЕНО 7 часов 50 минут работы.
Более неформальные комментарии программиста за 05 день:
Теперь я обратил свой взор на правила для обмена между УТ 10.3 и БП 2.0 находящиеся в папке с шаблонами. Простая попытка прочитать эти правила в обработке универсального обмена – выдала ошибку: «Не найден (Узел для обмена)». Полез искать в Интернете описание проблемы. С трудом нашёл легкое решение этой проблемы, так как везде советовали править сами правила и удалить куски кода с этим узлом. Решение оказалось простым. Нужно было всего лишь добавить такой реквизит с типом значения «План обмена между торговлей и бухгалтерией КОРП». Соответственно, добавил реквизит и создал узел плана обмена во всех базах.
Следующее, что я увидел, загрузив в конвертацию данных, правила обмена– это то, что все объекты ищутся по уникальному идентификатору, то есть по ссылке. Иначе говоря, выполнив выгрузку-загрузку, я бы получил задвоение абсолютно всех объектов, так как у меня не сопоставлены объекты информационных баз. Пришлось снимать в конвертации данных галочки поиска по уникальному идентификатору и удалять все поля поиска.
Следующим шагом было добавление в правила нового скрытого от пользователя параметра с артикулом выгружаемой базы (нужно как-то различать созданные в бухгалтерии документы и загруженные в неё из разных торговель). Соответственно, к каждому документу я добавил комментарий «#Загружено из такой-то базы с таким–то артикулом».
Начинаю выполнять пробную выгрузку и загрузку данных из торговли в бухгалтерию. Результат – загрузка не выполнялась. Ошибка не выдавалась. Путем долгого ковыряния в конфигураторе была найдена ошибка. В Торговле у одной группы номенклатуры в качестве родителя была указана она же. В результате этой ошибки в документах не проставлялись счета учета номенклатуры. Исправил.
Во избежание подобных проблем, сделал тестирование и исправление. Сначала внешней компонентой (chdbfl.exe), затем внутренней.
После этих «небольших» манипуляций, выгрузка и загрузка прошла успешно.
06 ДЕНЬ РАБОТЫ
Из наряда на выполнение работ программиста за 06 день:
Исправление префиксов некоторых документов в одной базе торговле, чтобы при выгрузке из обоих баз торговли в бухгалтерию коды документов различались. До этого момента префиксы у организаций совпадали. Поэтому документы могли загрузиться друг на дружку. Около 40 минут.
Изменение печатных форм в расходной накладной, счете-фактуре и Торг-12. Добавление к одному физическому лицу строчки с номером приказа о доверенности. Около 30 минут.
Выгрузка в бухгалтерию всех документов из обоих конфигураций 1С:Управление Торговлей за 2012 год. Около 30 минут.
Замена дублирующихся по наименованию номенклатур и контрагентов. Около 3 часов.
Изменение правил обмена для выгрузки из бухгалтерии в торговлю. Настройка реквизитов для поиска. Проверка. Исправление. Около 1 часа.
Тестирование и исправление базы бухгалтерии. Все оставшееся время.
ЗАТРАЧЕНО 7 часов работы.
07 ДЕНЬ РАБОТЫ
Из наряда на выполнение работ программиста за 07 день:
Добавление возможности создания документа переоценки в розничной продажи на основании оприходования товара. Так как сейчас в УТ 10.3 создано много Приходных накладных товаров (несколько сотен) и нужно сделать переоценку стоимости товара без документа поступления, то для удобства была добавлена такая возможность. Около 15-20 минут.
Доработка правил обмена. Выявились новые ошибки. Документ перегружается, но движения не производит. Ещё одна ошибка. Происходило задвоение номенклатур и контрагентов с полностью идентичными реквизитами. Решено. Около 3-4 часов.
Проверка правил. Тестирование выгрузки из бухгалтерии в торговлю и наоборот. Около 2 часов.
Доработка возможности по отбору выгружать из бухгалтерии поступление, списание на расчетные счета и поступление товаров и услуг в разные базы торговли. Так как бухгалтерия одна, а торговли – две, то нужно как-то делить документы, чтобы иметь возможность перегружать в торговлю только нужные документы.
ЗАТРАЧЕНО 7 часов работы.
Более неформальные комментарии программиста за 06-07 день:
Немного подправил обработку ПоискИЗаменаДублирующихсяЭлементов. Ранее она отдавала автоматически предпочтение тем элементам, по которым имеется наибольшее число ссылок. Путем комментирования одной строчки и написания кусочка кода, где предпочтение отдается элементами с кодами УТБ и УТА, я благополучно убрал дубли. За исключением той номенклатуры, которая уже была задвоена в торговле. С этим они пусть разбираются сами.
Ура! Выгрузка и загрузка документов прошла успешно. Задвоения номенклатуры и документов не происходило. Пошёл смотреть оборотку. Ничего не увидел. В смысле ни одного движения. Оказывается, в правилах не было прописано проведение документов. Они уже перегружались проведенными без движений. Следует отметить, что при использовании планов обмена не было бы этих ошибок, но планы обмена на данный момент нам недоступны. Сроки были поставлены короткие и сидеть мучить месяц планы обмена, просто, не было времени.
Снова открыл конвертацию данных. Дописал не сложный код. В событии «После загрузки объекта», внутри попытки, пробую провести документ с флажком проведен, установленным в «Истина».
Снова выгрузка и загрузка. Теперь документы не хотели проводиться, так как счета учета номенклатуры согласно правилам проставляются во всех документах после загрузки всех объектов. Пришлось нагло скопировать весь код проставления счетов учета в событие «После загрузки объекта».
После всех этих манипуляций, выгрузка и загрузка происходит успешно. Можно открывать шампанское и праздновать!
08 ДЕНЬ РАБОТЫ
Из наряда на выполнение работ программиста за 08 день:
Контрольные проверки и доработка возможности группировать документы реализации для выгрузки из торговли в бухгалтерию идентичные по контрагенту, но с разными складами.
Переброска документов наработанных за 3 дня из основной базу в тестовую и замена основной на тестовую. Демонстрация работы Заказчику.
6 часов работы.
ПОДВЕДЁМ ПРОМЕЖУТОЧНЫЕ ИТОГИ:
Вышеописанные работы выполнены за 48 часов 20 минут работы.
Но на этом не всё ещё закончилось. Заказчик может выдать замечания. Может быть, в процессе работы выявится ещё что-то. Вся работа выполнялась на рабочем месте Заказчика.
ПРИЛОЖЕНИЕ 1.
Приводим текст Технического Задания:
Техническое Задание на проведение работ по организации обмена между базами 1С:Бухгалтерия 8 редакция 2.0 и двумя базами 1С:Управление Торговлей 8 редакция 10.3.
Задача:
Разделить базу 1С:Бухгалтерия 8 на две базы. В каждой базе одна фирма.
Наладить обмен данными между двумя базами 1С:Бухгалтерия 8 редакция 2.0 и двумя базами 1С:Управление Торговлей 8 редакция 10.3.
Вся товарная Номенклатура заводится строго в базах 1С:Управление Торговлей 8 редакция 10.3.
Контрагенты в основном заводятся в базах 1С:Управление Торговлей 8 редакция 10.3. Иногда Контрагенты могут заводиться в 1С:Бухгалтерии 8 редакция 2.0. Только для внесения в документы Банка и Кассы.
Из баз 1С:Управление Торговлей 8 редакция 10.3 в базы 1С:Бухгалтерия 8 редакция 2.0 переносятся документы товарооборота – Поступление, Реализация, Списание и т.д.
Из баз 1С:Бухгалтерия 8 редакция 2.0 в базы 1С:Управление Торговлей 8 редакция 10.3 переносятся документы Банка и Кассы.
Все документы переносятся за указанный пользователем период. При переносе имеющиеся в базе-приёмнике документы замещаются документами, переносимыми из базы-источника.
Если необходимо перенести измененные документы прошлых периодов – их необходимо явно вручную указать их в процедуре выгрузки документов.
Порядок производства работ и их объёмы.
1. Готовим к перегрузке 1С:Бухгалтерию 8.
А) Перенумерация справочников в 1С:БП и 1С:УТ. Делаем обработку. 1 час.
Б) Синхронизация справочников 1С:БП и 1С:УТ. Приоритет тем, по которым есть обороты в 2012 году. Обработка синхронизации. Обработка проверки оборотов и переброски в отдельную группу. 8 часов.
В) Свёртка остатков на начало 2012 года. 2 часа.
Г) Перенос остатков из 1С:Управление Торговлей 8. Выделение Номенклатур, по которым не было оборотов в 2012 году. 4 часа.
Д) Сверка и уборка ненужных Номенклатур в БП. 1 час.
ИТОГО: 16 часов.
2. Готовим и отлаживаем выгрузку из 1С:Управления Торговлей в 1С:Бухгалтерию 8 документы Поступление, Реализация, Отчет По Розничным Продажам.
А) Определяем перечень документов, выгружаемых из УТ. Проверяем их правила выгрузки. 2 часа.
Б) Корректируем правила выгрузки документов и справочников. Добавляем собственные процедуры проверки Наименований, ИНН. Добавляем собственные процедуры проверки и изменения кодов. 8 часов.
В) Проверка и отладка выгрузки. 8 часов.
ИТОГО: 18 часов.
3. Готовим и отлаживаем выгрузку из 1С:Бухгалтерии 8 документы Банк и Касса в 1С:Управление Торговлей 8.
А) Проверка стандартных правил выгрузки из БП в УТ Банка и Кассы. 2 часа.
Б) Корректировка правил выгрузки из БП в УТ Банка и Кассы. 4 часа.
В) Проверка и отладка выгрузки из БП в УТ Банка и Кассы.. 4 часа.
ИТОГО: 10 часов.
ВСЕГО: 44 часа.
ПРИЛОЖЕНИЕ 2.
Порядок разделения базы 1С:Бухгалтерия 8 на две части:
1. Делаем копию базы. Если есть возможность просим пока в исходной базе не работать. Либо пусть работают, но документы за день нужно будет догрузить стандартной выгрузкой и загрузкой. ВыгрузкаЗагрузкаДанныхXML_8_2.epf
2. Делаем две копии 1С:Бухгалтерии. В каждой удаляем документы одной из Организаций. Можно использовать обработки ПометкаНаУдалениеДокументовГдеЕстьОрганизацияПоДатам.epf или ПометкаНаУдалениеДокументовГдеЕстьОрганизация.epf – но они для управляемого приложения – надо немного переделать. Все документы одной из организаций будут помечены на удаление. Удаляем документы, помеченные на удаление.
3. Делаем свёртку каждой из баз на 31.12.2011. Используем обработку: SvertkaBazy_KORP_v2_85HG.epf . Дату свертки ставишь на 31.12.2011. Ограничивать количество строк в документе ввода остатков = 10 000. Нажимаем кнопку «Выполнить все».
4. После сверток. Удаляем документы, помеченные на удаление.
5. Потом надо написать и выполнить обработки Синхронизации Справочников, которые я раньше описывал.
ПРИЛОЖЕНИЕ 3.
Задача синхронизации справочников перед началом обмена данными между конфигурациями 1С:Управление Торговлей и 1С:Бухгалтерия 8 (Бухгалтерия Предприятия).
Направление будущей выгрузки: Документы товарооборота строго из 1С:Управление Торговлей в 1С:Бухгалтерию 8. Документы Банк и Касса из 1С:Бухгалтерии 8 в 1С:Управление Торговлей.
Сокращения:
УТ – 1С:Управление Торговлей.
БП – 1С:Бухгалтерия 8 (Бухгалтерия Предприятия).
Есть два справочника. Для нашей задачи это справочник Номенклатура. Один из справочников в 1С:Бухгалтерии. Другой справочник в 1С:УТ 10.3.
Нам надо синхронизировать справочник в БП со справочниками в УТ.
Результат – нам нужно чтобы в БП в справочнике Номенклатура сидели те же Номенклатуры (с теми же кодами и Наименованиями), что и в УТ. Понятно, что коды Номенклатуры в УТ и БП могут не совпадать. Поэтому при переносе уникальных Номенклатур из УТ в БП присвоим этим уникальным Номенклатурам коды с префиксом «Н» или «Р». Будем называть базу УТ: УТ-Н.
Синхронизация может выполняться несколько раз – в несколько заходов. Это нам надо учесть.
Синхронизация справочника Номенклатура должна строиться таким образом.
Берем Номенклатуру из УТ-Н и ищем её по Наименованию в Номенклатуре БП. По результатам поиска действуем следующим образом:
- НЕ НАШЛИ. Тогда вносим Номенклатуру из УТ-Н в Номенклатуру БП с тем же кодом что в УТ-Н, но префикс ставим «Н». То есть, пишем новую Номенклатуру из УТ-Н в БП.
- НАШЛИ такой же, но ОДИН. Проверяем нет ли у кода префикса «Н»:
Если есть – мы уже синхронизировали этот элемент, поэтому ничего не делаем.
Если префикса «Н» у кода нет, то пишем из кода Номенклатуры в УТ-Н, этот же код в Номенклатуру БП с префиксом «Н». То есть, меняем только код у найденной Номенклатуры в БП.
- НАШЛИ таких же и МНОГО. Проверяем как в предыдущем случае наличие префикса в коде и если надо, то пишем из кода ПЕРВОЙ НАЙДЕННОЙ Номенклатуры в УТ-Н, этот же код в Номенклатуру БП с префиксом «Н». То есть, меняем только код у ПЕРВОЙ найденной Номенклатуры в БП.
Делать придётся так – выгружать данные по Номенклатуре из УТ-Н в текстовый файл (в формате Код, Наименование). Потом идём по текстовому файлу. Ищем по выбранному из текстового файла Наименованию элементы в Номенклатуре БП.
Синхронизация справочника Контрагенты.
Со справочником Контрагенты надо поступить так же, но выгружать из УТ-Н Контрагентов в текстовый файл для поиска придётся форматом: ИНН, Код, Наименование, Полное Наименование.
Наша задача – добиться, чтобы в БП были все те же Контрагенты что и в УТ-Н, с теми же Наименованиями, ИНН и теми же кодами, но с префиксом «Н».
Поиск в БП вести сначала по ИНН, выбранному из текстового файла:
- Если НЕ НАШЛИ такой ж ИНН, тогда ИСКАТЬ по Наименованию:
Если НАШЛИ по Наименованию тогда надо сообщить в диалоговое окно все данные по найденному Контрагенту (ИНН, Код, Наименование, Полное Наименование) и данные по Контрагенту из УТ-Н (ИНН, Код, Наименование, Полное Наименование). Пусть пользователь сравнит и примет решение . Решения должны быть такими:
ПЕРЕНОСИМ ИЗ УТ-Н ВСЁ. Пишем в Контрагента в БП все поля – Код с префиксом «Н», Наименование, Полное Наименование, ИНН.
НАДО ПОПРАВИТЬ данные Контрагента в УТ-Н по данным в БП. Здесь выдаём сообщение в текстовое окно, которое надо будет использовать для правки Контрагента в УТ-Н по данным из БП (может быть ошибка в написании ИНН). Потом после правки в УТ-Н надо будет синхронизировать ещё раз.
Если НЕ НАШЛИ по Наименованию, тогда вносим в БП нового Контрагента с данными из УТ-Н: ИНН, Код, Наименование, Полное Наименование. Код ставим с префиксом Н.
- ЕСЛИ НАШЛИ такой же ИНН, тогда делаем сверку по Наименованию:
Если Наименования НЕ СОВПАЛИ надо пользователю принимать решение:
Замещаем данными из УТ-Н.
Не замещаем, а надо править в УТ-Н – сообщить об этом.
Если СОВПАЛИ Наименования, тогда проверим:
Если код уже имеет префикс «Н», значит, мы уже синхронизировали этого Контрагента, ничего не делаем.
Если префикса «Н» нет, то переносим из УТ-Н все данные, код ставим с префиксом «Н».
После синхронизации справочников приступим к работе с XML-выгрузкой.
Инженер-Центр: