8.х ОБМЕН Последовательность переноса данных в 1С 8.1 ЗУП

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем Neon_tmn, 9 окт 2009.

  1. TopicStarter Overlay
    Neon_tmn
    Offline

    Neon_tmn Опытный в 1С

    Регистрация:
    7 окт 2009
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте, возможно кто-то знает такую программу как Зарплата-DOS Инфософта. Это старенькая досовская программа. Вот появилась необходимость данные перенести из нее в 1С-ку ЗУП. В Инфософте данные хранятся в dbf файлах, в принципе уже разобрался в каких таблицах что находится и связи таблиц разобрал. Пишу обработку, которая должна перенести справочники из dbf в ЗУП, но интересует последовательность переноса.
    Что уже готово:
    Заносятся данные о физических лицах:
    В справочник физ. лиз (+ в регистр сведений ФИО и паспортные данные)
    Затем создаю сотрудников (делаю привязку каждого сотрудника к конкретному физ лицу).


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

    И еще вопрос, при таком программном переносе, возможно ли что где то могут потом вылезут глюки?

    И еще, напишите пожалуйста что где взять, например сотрудника я создал, нужно на него оформить приказ на прием в организацию, это в документах - ПриемНаРаботуВОрганизацию. В программировании на 1С есть опыт небольшой, но ЗУП знаю поверхностно, хотелось бы заносить всю информацию правильно, в том прядке и там где она должна быть.
  2. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    в целом правильно! )
    А не проще сформировать отчеты по сотрудникам и сохранив их , например в эксель, загрузить в 1С... чтоб не вылавливать по dbf
  3. TopicStarter Overlay
    Neon_tmn
    Offline

    Neon_tmn Опытный в 1С

    Регистрация:
    7 окт 2009
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    Если правильно понял, то речь идет о том чтобы выгрузить данные из инфософта в эксель? Если честно не знаю может ли она выгружать в эксель, а если и может то мне этоне поможет, так как фирма находится в Уренгое, у меня только база их (dbf файлы). Но с чтением dbf-ок проблем нет, все нормально бегаю и собираю данные.
    Просто хотелось бы узнать алгоритм переноса, человеским или программным языком, во избежание ошибок именно с позиции зарплатиста.
  4. TopicStarter Overlay
    Neon_tmn
    Offline

    Neon_tmn Опытный в 1С

    Регистрация:
    7 окт 2009
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    Добавил физ лиц, добавил сотрудника, его принял на работу, дал ему оклад, вид расчета, теперь вопрос еще, как и где мне указать некий статус работника? Например "Работает постоянно" или "отпуск по уходу за ребенком" или совместительств. или это я возможно что то не то понимаю. в той самой досовской программе из которой переношу есть статусы работников:
    1 Работает постоянно
    2 Отпуск по уходу за ребенком
    3 Работает по совместительству
    4 Сокращ.рабочий день/неделя
    6 Работает временно
    7 Гражданско правовой договор

    В 1С в карточке сотрудника есть поле "Вид занятости", что то напоминающее эти статусы работников, но я в сомнениях, на сомнения наталкивает например отпуск по уходу за ребенком. Где это проставить, не понятно.
  5. TopicStarter Overlay
    Neon_tmn
    Offline

    Neon_tmn Опытный в 1С

    Регистрация:
    7 окт 2009
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    Или этот форум никто не посещает или никто не знает ответов!
    Может кто подскажет где при создании документа "ПриемНаРаботуВОрганизацию" проставляется номер и дата трудового договора?
  6. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!

    1. Я бы порекомендовал Вам занести остатки в ЗУП, и не тащить всю базу за собой, иначе Вам все равно рано или поздно нужно будет её сворачивать.

    2. Последовательность переноса.

    а) Перечисления
    б) Справочники
    в) Регистры сведений
    г) Документы

    Не в коем случае не переносите документы раньше справочников, и справочники раньше документов.

    3. Подберите соответствубщую конфигурацию 1С, и изучите её метаданные, главное выдержать порядок передачи объектов.

    4. Перепроведите ИБ после загрузки данных для формирования движения по регистрам.

    Удачи!
  7. TopicStarter Overlay
    Neon_tmn
    Offline

    Neon_tmn Опытный в 1С

    Регистрация:
    7 окт 2009
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    mialord, а какие итоги забить? скажите четко какие именно.
    Документы тащить не собираюсь, только первоначальные данные, типа как сотрудники, физ лица, организации, банки, и т.п. Но мне к сотрудника нужно привязать трудовые договоры. проставил ставку, вид расчета во вкладке трудовой договор, не могу найти где программно ставить номер и дату договора.
    В итоге 2 вопроса:
    1. Какие итоге и куда перенести в зарплате.
    2. Где проставить номер и дату трудового договора.
  8. TopicStarter Overlay
    Neon_tmn
    Offline

    Neon_tmn Опытный в 1С

    Регистрация:
    7 окт 2009
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    Номер трудового догова и дата ставится не в документе ПриемНаРаботуВОрганизацию, а у сотрудника Сотрудник.НомерДоговора.

    Товарищи, развивайте тему, кому то ведь это будет нужно и полезно.

    Создали физ лицо (+Регистр.ФИОФизЛиц + Регистр.ПаспортныеДанныеФизЛиц)
    Создали сотрудников с ссылкой на физ лиц.
    Каждого сотрудника приняли на работу Документы.ПриемНаРаботуВОрганизацию
    Каждому сотруднику дали оклад, дату и номер договора, вид расчета, график работы.

    Что дальше делаем?
  9. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    а что дальше то надо? Внес сотрудников.. молодец.. дальше расчет ЗП) или тебе еще что то нужно?
  10. TopicStarter Overlay
    Neon_tmn
    Offline

    Neon_tmn Опытный в 1С

    Регистрация:
    7 окт 2009
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    То есть программно я все выполнил получается? Теперь можно просто ручками считать ЗП? все так просто чтоли?
  11. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    Ну да... основное то это первичные данные по сотруднику и приказы на работу о приеме.. и все.. а дальше делорасчетчиков что они там хотят...
  12. TopicStarter Overlay
    Neon_tmn
    Offline

    Neon_tmn Опытный в 1С

    Регистрация:
    7 окт 2009
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    Ну ладно. в понедельник лечу на крайний север :) ох и отпинают меня там зарплатисты, уж очень они не хотят переходить с досовской Инфософта на 1С ЗУП 8.1. Приеду, оптшусь.
  13. TopicStarter Overlay
    Neon_tmn
    Offline

    Neon_tmn Опытный в 1С

    Регистрация:
    7 окт 2009
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    Вобщем перенос прошел удачно. Справочники перенеслись успешно :)
  14. TopicStarter Overlay
    Neon_tmn
    Offline

    Neon_tmn Опытный в 1С

    Регистрация:
    7 окт 2009
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    знаю что темка уже не новая, но все же по этой же теме проблема есть. Я перенес по указанной последовательности, зп считает на один месяц, если считать этим людям на новый месяц зп, то люди перенесенные этой обработкой не попадают в "Подбор". Пробовали сами создавали руками физлицо,
    сотрудника, прием на работу в организацию, у этого человека нормально с зп. Я думаю что я что-то не дописываю куда-то.
  15. TopicStarter Overlay
    Neon_tmn
    Offline

    Neon_tmn Опытный в 1С

    Регистрация:
    7 окт 2009
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    Вот все событие по нажатию на кнопку. Что тут не дописываю, сам не понимаю, вроде все добавляется,в се связывается, чисто визуально все в порядке. Но при начислении ЗП проблема следующего месяца.


    Код:
    XBCom = Новый XBase;
    XBCom.ОткрытьФайл(Путь+"SPR02.DBF");
    XBCom.Кодировка = КодировкаXBase.OEM;
    
    XBCom.Первая();
    Пока XBCom.ВКонце()=0 Цикл 
    
    // Добавление физ лица //
    ФизЛицо = Справочники.ФизическиеЛица.СоздатьЭлемент();
    ФизЛицо.Наименование = СокрЛП(XBCom.FIO);
    Если XBCom.POL = 1 Тогда
    ФизЛицо.Пол = Перечисления.ПолФизическихЛиц.Мужской
    Иначе
    ФизЛицо.Пол = Перечисления.ПолФизическихЛиц.Женский;
    КонецЕсли;    
    
    ADP01 = Новый XBase;
    ADP01.ОткрытьФайл(Путь + "�ADP01.DBF");
    ADP01.Кодировка = КодировкаXBase.OEM;
    ADP01.Индексы.Добавить("IDX_vE", "TBN", Ложь, Ложь);
    ADP01.СоздатьИндексныйФайл(Путь + "�ADP01.IDX");
    ADP01.ТекущийИндекс = ADP01.Индексы.IDX_vE;
    ADP01.Ключ.TBN = СокрЛП(Формат(XBCom.TBN, "ЧГ=")); // Передаем значение табельного номера
    ADP01.НайтиПоКлючу("=");
    
    ФизЛицо.ДатаРождения = Дата(Сред(ADP01.DTR, 7, 4), Сред(ADP01.DTR, 4, 2), Сред(ADP01.DTR, 1, 2));
    ФизЛицо.ИНН = СокрЛП(ADP01.INN);
    ФизЛицо.МестоРождения = "0," + ADP01.PNP + "," + ADP01.PRA + "," + ADP01.POB + "," + ADP01.PST;
    ФизЛицо.СтраховойНомерПФР = СокрЛП(XBCom.SNO);
    
    ФизЛицо.Записать();
    // Конец Добавление физ лица //    
    
    
    
    // Добавлние паспортных данных в регистр сведений и увязка //
    МенеджерЗаписиПД = РегистрыСведений.ПаспортныеДанныеФизЛиц.СоздатьМенеджерЗаписи();
    МенеджерЗаписиПД.ФизЛицо = ФизЛицо.Ссылка;
    МенеджерЗаписиПД.ДокументВид = Справочники.ДокументыУдостоверяющиеЛичность.НайтиПоРеквизиту("КодИМНС", СокрЛП(Строка(ADP01.VDC)));
    
    МенеджерЗаписиПД.ДокументСерия = СокрЛП(ADP01.SER);
    МенеджерЗаписиПД.ДокументНомер = СокрЛП(ADP01.NMB);
    МенеджерЗаписиПД.Период = Дата('2008, 02, 01');
    МенеджерЗаписиПД.ДокументДатаВыдачи = Дата(Сред(ADP01.PDV, 7, 4), Сред(ADP01.PDV, 4, 2), Сред(ADP01.PDV, 1, 2));
    МенеджерЗаписиПД.ДокументКемВыдан = СокрЛП(ADP01.PKV);
    МенеджерЗаписиПД.Записать(Истина);
    // Конец Добавлние паспортных данных в регистр сведений и увязка //            
    
    
    
    // Добавлние ФИО в регистр сведений и увязка //
    МенеджерЗаписиФизЛиц = РегистрыСведений.ФИОФизЛиц.СоздатьМенеджерЗаписи();
    МенеджерЗаписиФизЛиц.ФизЛицо = ФизЛицо.Ссылка;
    МенеджерЗаписиФизЛиц.Период = ТекущаяДата();
    МенеджерЗаписиФизЛиц.Фамилия = СокрЛП(XBCom.FAM);
    МенеджерЗаписиФизЛиц.Имя = СокрЛП(XBCom.NAM);
    МенеджерЗаписиФизЛиц.Отчество = СокрЛП(XBCom.SNM);
    МенеджерЗаписиФизЛиц.Записать(Истина);
    // Конец Добавлние ФИО в регистр сведений и увязка //                        
    
    
    
    // Добавлние в справочник сотрудников и увязка //
    Сотрудник = Справочники.СотрудникиОрганизаций.СоздатьЭлемент();
    Сотрудник.Физлицо = ФизЛицо.Ссылка;
    Сотрудник.Организация = Справочники.Организации.НайтиПоКоду("000000001");
    Сотрудник.Наименование = СокрЛП(ФизЛицо.Ссылка.Наименование);
    Сотрудник.Актуальность = Истина;
    Сотрудник.Код = СокрЛП(Формат(XBCom.TBN,"ЧГ=0"));
    Сотрудник.ВидДоговора = Перечисления.ВидыДоговоровСФизЛицами.ТрудовойДоговор;
    Сотрудник.ВидЗанятости = Перечисления.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы;
    Сотрудник.ЗанимаемыхСтавок = 1;
    
    SPS01 = Новый XBase;
    SPS01.ОткрытьФайл(Путь + "�SPS01.DBF");
    SPS01.Кодировка = КодировкаXBase.OEM;
    SPS01.Индексы.Добавить("IDX_vE", "CSP", Ложь, Ложь);
    SPS01.СоздатьИндексныйФайл(Путь + "�SPS01.IDX");
    SPS01.ТекущийИндекс = SPS01.Индексы.IDX_vE;
    
    SPS01.Ключ.CSP = "12"; // График работы
    SPS01.НайтиПоКлючу("=");
    ТекЗапись=SPS01.НомерЗаписи();
    Пока СокрЛП(Формат(SPS01.CSP, "ЧГ=")) = "12" Цикл
    Если СокрЛП(Формат(SPS01.COD, "ЧГ=")) = СокрЛП(Формат(XBCom.GRF, "ЧГ")) Тогда
    Сотрудник.ГрафикРаботы = Справочники.ГрафикиРаботы.НайтиПоНаименованию(СокрЛП(SPS01.NAM));
    КонецЕсли;
    SPS01.Следующая();
    КонецЦикла;
    
    
    SPS01.Ключ.CSP = "10"; // Должность
    SPS01.НайтиПоКлючу("=");
    ТекЗапись=SPS01.НомерЗаписи();
    Если СокрЛП(XBCom.DOL) = "0" ИЛИ СокрЛП(XBCom.DOL) = 0 Тогда
    Сотрудник.Должность = Справочники.ДолжностиОрганизаций.НайтиПоНаименованию(СокрЛП("Не определена"));
    Иначе        
    Пока СокрЛП(Формат(SPS01.CSP, "ЧГ=")) = "10" Цикл
    Если СокрЛП(Формат(SPS01.COD, "ЧГ=")) = СокрЛП(Формат(XBCom.DOL, "ЧГ=")) Тогда
    Сотрудник.Должность = Справочники.ДолжностиОрганизаций.НайтиПоНаименованию(СокрЛП(SPS01.NAM));
    КонецЕсли;
    SPS01.Следующая();
    КонецЦикла;
    КонецЕсли;
    
    
    
    
    
    SPS01.Ключ.CSP = "2"; // Структурное подразделение
    SPS01.НайтиПоКлючу("=");
    ТекЗапись=SPS01.НомерЗаписи();
    Пока Формат(SPS01.CSP,"ЧГ=") = "2" Цикл
    Если  СокрЛП(Формат(SPS01.COD,"ЧГ=")) = СокрЛП(Формат(XBCom.PDR,"ЧГ=")) Тогда
    Сотрудник.ПодразделениеОрганизации = Справочники.ПодразделенияОрганизаций.НайтиПоНаименованию(СокрЛП(SPS01.NAM));
    КонецЕсли;
    SPS01.Следующая();
    КонецЦикла;
    
    
    
    
    Если СокрЛП(XBCom.TOP) = "1" Тогда
    Сотрудник.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоЧасам;
    Иначе
    Сотрудник.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00003");
    КонецЕсли;
    
    Сотрудник.ТарифнаяСтавка = XBCom.OKL;
    Сотрудник.Записать();
    
    
    
    ДокПриема = Документы.ПриемНаРаботуВОрганизацию.СоздатьДокумент();
    ДокПриема.Организация = Справочники.Организации.НайтиПоКоду("000000001");
    Если (СокрЛП(XBCom.DTP)) <> "01.01.0001 0:00:00" ТОгда
    ДокПриема.Дата = Дата(Сред(XBCom.DTP, 7, 4), Сред(XBCom.DTP, 4, 2), Сред(XBCom.DTP, 1, 2));
    Иначе
    ДокПриема.Дата = Дата("19700101");
    КонецЕсли;            
    
    ТабличнаяЧасть = ДокПриема.РаботникиОрганизации.Добавить();
    ТабличнаяЧасть.ФизЛицо =  ФизЛицо.Ссылка;
    
    ТабличнаяЧасть.ПодразделениеОрганизации = Сотрудник.ПодразделениеОрганизации;
    ТабличнаяЧасть.Должность = Сотрудник.Должность;
    Если СокрЛП(XBCom.DTP) <> "01.01.0001 0:00:00" ТОгда
    ТабличнаяЧасть.ДатаПриема = Дата(Сред(XBCom.DTP, 7, 4), Сред(XBCom.DTP, 4, 2), Сред(XBCom.DTP, 1, 2));
    Иначе
    ТабличнаяЧасть.ДатаПриема = Дата("19700101");
    КонецЕсли;                
    
    ТабличнаяЧасть.Сотрудник =  Сотрудник.Ссылка;
    ТабличнаяЧасть.ГрафикРаботы = Сотрудник.ГрафикРаботы;
    //ТабличнаяЧасть.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда. ПоЧасовойТарифнойСтавке;
    ТабличнаяЧасть.ЗанимаемыхСтавок = 1;
    Оклады = ДокПриема.ОсновныеНачисления.Добавить();
    Оклады.ФизЛицо = Физлицо.Ссылка;
    Оклады.Сотрудник = Сотрудник.Ссылка;
    Если СокрЛП(XBCom.TOP) = "1" Тогда
    Оклады.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоЧасам;
    Иначе
    Оклады.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00003");
    КонецЕсли;
    
    Оклады.Показатель1 = XBCom.OKL;
    
    Окладыы = ДокПриема.ОсновныеНачисления.Добавить();
    Окладыы.ФизЛицо = Физлицо.Ссылка;
    
    Окладыы.Сотрудник = Сотрудник.Ссылка;
    Окладыы.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.РайонныйКоэффициент;
    Окладыы.Показатель1 = 70;
    
    ДокПриема.Записать(РежимЗаписиДокумента.Проведение);
    
    
    
    
    
    // Конец Добавлние в справочник сотрудников и увязка //            
    
    ADP01.ЗакрытьФайл();
    
    SPS01.ЗакрытьФайл();
    
    
    XBCom.Следующая();
    КонецЦикла; 
    
    
    XBCom.ЗакрытьФайл();
    
    Предупреждение("Сотрудники успешно перенесены!");
    
    
    
    
  16. TopicStarter Overlay
    Neon_tmn
    Offline

    Neon_tmn Опытный в 1С

    Регистрация:
    7 окт 2009
    Сообщения:
    142
    Симпатии:
    0
    Баллы:
    26
    Может потому что я не создаю РегистрыСведений.Работники?
    Или это не обязательно делать?

Поделиться этой страницей