Перегрузка документов из ЗиК 7.7 в ЗУП 8.2 через текстовый файл (без конвертации данных)

Перегрузка наиболее распространённых документов из ЗиК 7.7 в ЗУП 8.2. Работает через текстовый файл и не использует конвертацию данных. Предназначена для оперативного переброса документов из 7-ки в 8-ку — в случае, когда учёт ведётся параллельно в 2 программах (в 7-ке и в 8-ке) — в первый месяц после перехода. В отличие от конвертации данных, не переносит отсутствующие реквизиты документов (но это малокритично). Рассчитана на программиста 1С, т.к. может требовать программного корректирования обработчиков загрузки (но это на порядок проще, чем работать с конвертацией данных).

Мы перешли с 1С:Зарплата и Кадры 7.7 на 1С:Зарплата и Управление Персоналом 8.2 в середине года. Перенос осуществлялся штатной обработкой.

После перехода было принято решение о том, что в первый месяц после перехода (июль 2013) учёт зарплаты будет вестись параллельно в старой и в новой программе.

Но возникла проблема — документов, оформляемых каждый день в 7-ке было настолько много, что перенабивать их в 8-ке вручную было просто нереально. Возникла задача — как-то оперативно перебрасывать вновь создаваемые документы из 7-ки в 8-ку. Как это сделать?

Я не умею пользоваться конвертацией данных, и вообще не люблю это крайне неудачное и бестолковое творение от компании 1С. Поэтому я создал упрощённую самодельную перегрузку наиболее ходовых документов из 7-ки в 8-ку. Упрощённую — потому, что она (в отличие от конвертации данных) не перегружает отсутствующие реквизиты документов, а рассчитывает на то, что они и так имеются в обеих программах. Так оно, собственно, и есть — сразу после переноса данных из 7-ки в 8-ку типовой обработкой.

Здесь на Инфостарте есть аналогичные разработки — работающие через COМ-подключение. Мне это не нравится — потому что COМ-подключение — это лишняя проблема, к примеру, портабельная 7-ка вообще не способна организовать приём COМ-подключения. Поэтому моя обработка работает просто через обычный текстовый файл. Вернее, у меня в пакете 2 обработки — одна выгружает данные из 7-ки в текстовый файл, а вторая — загружает данные из текстового файла в 8-ку.

Вот таблица соответствий перегрузки документов 7.7 — 8.2:

Документы 1С 7.7 Документы 1С 8.2
Выплата заработной платы Зарплата к выплате организаций
Приказ по отпуску Отпуска организаций
Начисление заработной платы Начисление зарплаты сотрудникам организаций
Приказ об увольнении Увольнение из организаций
Индивидуальный наряд Сдельный наряд на выполненные работы
Невыходы Невыходы в организациях
Начисление отпуска Начисление отпуска сотрудникам организаций
   Расчет при увольнении сотрудника организаций
Невыходы в организациях (если отпуск за свой счет)
Ввод расчета сотруднику Регистрация разовых начислений сотрудников организаций
   Регистрация разовых удержаний сотрудников организаций
Премии сотрудников организаций
Ввод расчета списку сотрудников Регистрация разовых начислений сотрудников организаций
  Премии сотрудников организаций
Приказ на оплату по среднему заработку Оплата по среднему заработку
Больничный лист Начисление по больничному листу
Кадровое перемещение Кадровое перемещение организаций

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

Если Вам понадобится перегрузить ещё какие-то виды документов — то потребуется добавить программный код обработчиков выгрузки-загрузки. Это относительно несложно сделать (особенно прост код выгрузки).

Описание использования

Открываем в ЗиК обработку «ВыгрузкаДокументов77.ert». Выставляем диапазон дат выгружаемых документов. Указываем каталог, куда будут выгружаться файлы переноса. Далее можно выгрузить весь справочник «Должности» — он нам потребуется потом в 8-ке — хотя бы для кадровых перемещений. Кнопка «2. Выгрузить новых сотрудников» означает, что мы выгружаем всех тех сотрудников, кто присутствует в документах «Приём на работу», попавших в диапазон дат выгрузки. Кнопка «3. Выгрузить расценки» нужна не всем — а только тем, кто использует сдельные наряды — тут выгружается справочик «Нормы».

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

Загрузка в 8-ке.

Открываем в ЗУП обработку «ЗагрузкаДокументов82.epf». Указываем организацию и каталог импорта. Загружаем справочник «Должности организаций» кнопкой. Загружаем новых физлиц (только если есть приказы и приёме на работу). Загружаем расценки (только если есть сдельные наряды).

Загрузка документов происходит отдельно по каждому виду документа (в отличие от 7-ки, где выгружались все виды документов одновременно). Пользователь выбирает в выпадающем списке, какой вид документа он хочет загрузить, и нажимает кнопку «4. Загрузить документы».

Технические подробности

Чтобы добавить в 7-ку выгрузку своего вида документа, нужно в модуле формы в самом внизу описать выгрузку Вашего документа вызовами всего лишь нескольких функций. Это просто — смотрите на пример уже готовых выгрузок.

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

Функция ПолучитьСтатьюУвольнения(КодОКИН) Экспорт

Если КодОКИН = "08" Тогда

Возврат Справочники.ОснованияУвольненияИзОрганизации.НайтиПоНаименованию("п. 3 ст. 77 ТК");

ИначеЕсли КодОКИН = "13" Тогда

Возврат Справочники.ОснованияУвольненияИзОрганизации.НайтиПоНаименованию("Расторжение срочного трудового договора Ст. 79 ТК РФ");

Иначе

Сообщить("Не опознана причина увольнения с кодом """ + КодОКИН + """.");

Возврат Неопределено;

КонецЕсли;

КонецФункции // ПолучитьСтатьюУвольнения()

Как видите, ничего запредельного.  Всё, что Вам может потребоваться — добавить туда ещё одну ветку «Если…». Документы из 7-ки выгружаются построчно, все реквизиты шапки выгружаются в одну строку, и такая строка всегда начинается с символа «#». Каждая строка многострочной части семёрочного документа выгружается в одну строку текстового файла.

В 8-ке ядром обработки загрузки служит процедура «ЗагрузитьДок(ДокВид77, ДокВид82)», которая читает построчно текстовый файл переноса, и для каждой строки с описанием шапки документа вызывает процедуру «ЗаполнитьШапку», а для каждой строки с описанием строки многострочной части вызывает процедуру «ЗаполнитьСтроку».

Каждая из процедур «ЗаполнитьШапку» и «ЗаполнитьСтроку» делится, в свою очередь, на десяток-другой вызовов ЗаполнитьШапку1, ЗаполнитьШапку2, ЗаполнитьШапку3, ЗаполнитьШапку4, … (ЗаполнитьСтроку1, ЗаполнитьСтроку2, ЗаполнитьСтроку3, ЗаполнитьСтроку4, …), где ЗаполнитьШапку1 и ЗаполнитьСтроку1 — это специализированные обработчики заполнения конкретного вида восьмёрочного документа. Можете добавить аналогичный обработчик — для своего вида документа.

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

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

17 Comments

  1. makas

    Плюс за самоотверженную борьбу с ЗиКом!

    Reply
  2. dock

    Еще жива на наших просторах 7-ка!

    Reply
  3. Hla

    Плюсую. Забираю в копилку. Работаем пока в 7-ке.

    Reply
  4. tana1257

    Плюсанула, тоже пока выбираю варианты для перехода на 8.

    Reply
  5. LeXXik

    Хоспади, когда же этот монстр (ЗиК) упадёт-то, а? Как вспомню док НачалоМесяца, с охренитительными положительными и отрицательными сальдо по одному сотруднику… БР-Р-Р!

    Reply
  6. gull22

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

    Reply
  7. fomix

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

    А твое утверждение, что КД «крайне неудачное и бестолковое творение от компании 1С» сам же и объясняешь тем, что не умеешь пользоваться этим полезным инструментом… Пора бы уже и научиться. Потому как КД сама все за тебя сделает. Причем проще и без напряга. Тем более, что есть готовые правила переноса здесь же на Инфостарте.

    Reply
  8. Черный Плащ

    (8) Согласен

    Reply
  9. fomix

    (НЕ РЕКЛАМА!)

    По СКД есть классный бесплатный видеокурс от Гилева Е. Очень рекомендую: http:// /free/. Гилев все объясняет очень доходчиво и с примерами.

    Ссылка на бесплатные курсы по КД от него же, тут: http://www.spec8.ru/free-materials.

    Будет полезно почитать: http://infostart.ru/public/169528/.

    Сайт, полностью посвященный КД, живет тут: http://sysadmins.ru/topic240431.html (Конвертация данных 2. Вопросы и ответы).

    Ссылку на правила переноса ЗиК-ЗУП поищу и тоже скину чуть позже.

    Reply
  10. scape

    (8)

    Абсолютно…

    Это «творение» пользователь осваивать вряд ли захочет и будет, а программисту легче ручками программу написать.

    Reply
  11. prodines
    Reply
  12. fomix

    Это был просто пример с ручной настройкой.

    Не считаю себя корифеем по КД, но скажу, что частенько пользуюсь правилами переноса — потому, что сделать перенос с ее помошью получается быстрей, не надо думать о потере части данных и используются типовые механизмы и обработки.

    Хотя и в КД есть свои издержки. Если выгружаемых данных слишком много — процесс выгрузки может прерваться на самом интересном месте из-за банальной нехватки памяти, т.к. файл сначала формируется полностью в оперативке и только потом записывается на диск. + сам по себе XML-файл избыточен. Приходится выгружать порционно либо оптимизировать выгружаемые сведения.

    Обмен данными через текстовый файл от этого избавлен.

    Reply
  13. wunderland

    Переводил 2 крупных предприятия, 2500 и 4000 чел., но делал без переноса документов — только справочники и остатки, ну и данные для расчетов средне конечно. И считаю что это правильно. Оба проекта завершились успешно.

    Reply
  14. asdPerepel

    Как бэ афтар халявщик. Отпуск переносится без расчета среднего. Зря потратил мани.

    Reply
  15. asdPerepel

    Хотя поставил плюс. Всё таки не с нуля набивать.

    Reply
  16. asdPerepel

    Строки с 1283 исправьте пожалуйста. Должно быть так:

     Явка = Справочники.КлассификаторИспользованияРабочегоВремени.Работа; //Справочники.КлассификаторИспользованияРабочегоВремени.НайтиПоНаименованию(«Явка»);
    
    НочныеЧасы = Справочники.КлассификаторИспользованияРабочегоВремени.РаботаНочныеЧасы; //Справочники.КлассификаторИспользованияРабочегоВремени.НайтиПоНаименованию(«Ночные часы»);
    
    Выходной = Справочники.КлассификаторИспользованияРабочегоВремени.ВыходныеДни; //Справочники.КлассификаторИспользованияРабочегоВремени.НайтиПоНаименованию(«Выходные дни»);
    
    Reply
  17. Светлый ум

    (10) fomix, впервый раз про этот сайт слышу

    http://sysadmins.ru/topic240431.html

    Reply

Leave a Comment

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