Загрузка документов из ЗиК 7.7 в ЗУП 3.1 по OLE


Обработка предназначена для загрузки документов из ЗиК 7.7 в ЗУП 3.1.

1С официально прекратила поддержку ЗиК 7.7. Это печально, т.к. клиенты работали в ЗиК 7.7 более 15 лет и ещё бы продолжали работать, но теперь придется как всем менять конфигурацию по прихоти 1С 🙂

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

Подключение к базе 7.7 происходит по OLE. Реквизиты документов переносятся напрямую, вся логика прописана в коде обработки, перенос долгий, но точный и можно его легко доработать.

При загрузке на первом этапе данные считываются из 7.7 и сохраняются в Структуре, на втором этапе из данных Структуры формируются документы в 8.3

Для синхронизации используются дополнительные сведения (Ссылка77 и Запрет загрузки из 7.7), которые можно создать нажатием кнопки [Создать доп. реквизиты]

Загруженный документ будет только "заготовкой" для нормального документа, т.е. после загрузки нужно будет открыть каждый документ проверить заполнение и провести. После того как документы проверены и проведены им устанавливается признак "Запрет загрузки из 7.7". (особенно это важно для документов, где есть расчет среднего и удержание НДФЛ)

Настроен перенос следующих документов

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

 

Название начислений в базах у всех могут называться по разному, мои начисления прописаны в модуле функции ПолучитьВидРасчета. Для Начислений  в ЗУП 3.1 настроен дополнительный реквизит "Начисление для переноса из ЗиК 2.3", по нему будут синхронизироваться начисления в документах типа "Ввод расчета сотруднику" в 1С 7.7

Обработка тестировалась на ЗУП 3.1.9.108 и ЗиК 2.3 (7.70.370)

Небольшой бонус: "простое" сравнение двух табличных документов. Сравнение потребовалось для сравнения расшифровок начислений 7.7 и 8.3, в 7.7 начисление сотрудника может указываться двумя строками и сравнить списки без такой обработки довольно сложно. 

Обработка предоставляется как есть и вы используете её на свой страх и риск 🙂 Пробуйте на сначала на копии.

Также обработка может быть полезна для написания своих "прямых" переносов из баз 1С 7.7

С благодарностью всем пользователям Инфостарт за то, что ваши обработки помогают мне экономить время!

15 Comments

  1. al_ban

    А сотрудники (или физлица) при загрузке «Приказов о приеме» вообще не создаются, то есть, переносятся пустые приказы? Как это вообще происходит?

    Reply
  2. Mx00

    (1) Сотрудники создаются, после переноса нужно открыть приказ, проверить и провести.

    Reply
  3. al_ban

    Адаптировал Вашу обработку для загрузки разовых начислений списком работников (алгоритм «Фиксированная сумма»), а загрузка списка работников списком с начислением по алгоритму «Процент от базы» (Премия в %) никак не проходит: в документе 8.3 «Плановые начисления» список работников формируется, а показатель «ПремияПроц» не устанавливается — просто пустые поля, хотя название и настройка начисления «Премия в %» в 7.7 и в 83 совпадают. Убил немало времени… Это я к тому, не планируете ли обновить обработку?

    Reply
  4. Mx00

    (3) дорабатывать не планирую, думал посмотреть ваш вопрос «для общего развития», но судя по всему что-то не так в самом вопросе 🙂

    я не нашел ни документа «Плановые начисления» ни реквизита «ПремияПроц»

    Reply
  5. al_ban

    (4) В ЗУП 3.1 есть документ «Назначение планового начисления» (раздел «Зарплата» — «Изменение оплаты сотрудников»), в котором в качестве собственно начисления можно выбрать начисления, в настройках к-рых указано как выполняемые «Ежемесячно». В качестве такого начисления для назначения премии в процентах списку работников я настроил начисление «Премия в процентах», в формуле расчета к-рой указано «(ПремияПроц/100) * (ВремяВЧасах * СтоимостьЧаса)», где «ПремияПроц» — это показатель, к-рый создается в «показателях расчета з/п» (с настройкой «постоянное использование»). При создании такого документа с плановым начислением «Премия в процентах» в табл. части документа образуется список с колонками «№», Сотрудник, Дата назначения, Дата окончания, ПремияПроц. Вот эта колонка «ПремияПроц» и остается пустой при переносе документа «Ввод расчета списку сотрудников» из ЗиК 7.7, где вид расчета такой же как ЗУП 3.1 «Премия в процентах» (с тем же названием). Все колонки переносятся, а процент премии (табличная часть в ЗУП 3.1 называется «ПоказателиСотрудников») — никак не сопоставляется.

    Reply
  6. Mx00

    (5)

    не сопоставляется

    — судя по всему именно в этом корень проблемы. Объяснение достаточно подробное, но как раз в последнем предложении не написано как производится сопоставление…

    там есть реквизит ИдентификаторСтрокиСотрудника — вы по этому реквизиту «сопоставляете» ?

    Reply
  7. al_ban

    (6) Просто приведу фрагмент кода обработки списка (зациклил часть имеющегося кода по списку сотрудников):

    #ОБЛАСТЬ НазначениеПлановогоНачисления
    ////////////////////////////////////////////////////
    Если ВидДокумента83=»НазначениеПлановогоНачисления» Тогда
    …
    // ТАБЛИЧНЫЕ ЧАСТИ
    // Сотрудники
    //АА+-
    Списком = Ложь;
    Попытка
    Если Док77.КоличествоСтрок() <> 0 Тогда
    Списком = Истина
    КонецЕсли;
    Исключение КонецПопытки;
    
    Если Списком Тогда
    Ид = 0;
    МассивСтрокТабличнойЧасти = Новый Массив;
    Док77.ВыбратьСтроки();
    Пока Док77.ПолучитьСтроку()=1 Цикл
    Ид = Ид + 1;
    ТекСотрудник=ПолучитьСотрудника(Док77.Сотрудник);
    СтруктураТабличнойЧасти = Новый Структура();
    СтруктураТабличнойЧасти.Вставить(«ИмяТабличнойЧасти»,»Сотрудники»);
    СтруктураСтроки = Новый Структура;
    СтруктураСтроки.Вставить(«Сотрудник»,      ТекСотрудник);
    СтруктураСтроки.Вставить(«ДатаНазначения»,     ПолучитьДатуОЛЕ(Док77.Начало));
    СтруктураСтроки.Вставить(«ДатаОкончания»,     ПолучитьДатуОЛЕ(Док77.Окончание));
    СтруктураСтроки.Вставить(«Размер»,       ?(ТипЗнч(Док77.Величина)=Тип(«Число»),Док77.Величина,0));
    //     СтруктураСтроки.Вставить(«ВидТарифнойСтавки»,    Новый Структура(«Выполнить»,»Перечисления.ВидыТарифныхСтавок.ДневнаяТарифнаяСтавка»));
    СтруктураСтроки.Вставить(«ИдентификаторСтрокиСотрудника», Ид);
    МассивСтрокТабличнойЧасти.Добавить(СтруктураСтроки);
    СтруктураТабличнойЧасти.Вставить(«МассивТабличнойЧасти»,МассивСтрокТабличнойЧасти);
    МассивТаличныхЧастей.Добавить(СтруктураТабличнойЧасти);
    //АА+
    СтруктураТабличнойЧасти = Новый Структура();
    СтруктураТабличнойЧасти.Вставить(«ИмяТабличнойЧасти»,»ПоказателиСотрудников»);
    МассивСтрокТабличнойЧасти = Новый Массив;
    СтруктураСтроки = Новый Структура;
    // Начисление %изм% ФормаТруда -> Показатель
    СтруктураСтроки.Вставить(«Показатель»,      ПолучитьОсновнойПоказательНачисления(ПолучитьВидРасчета(Док77.Расчет)));
    СтруктураСтроки.Вставить(«Значение»,      ?(ТипЗнч(Док77.Величина)=Тип(«Число»),Док77.Величина,0));
    СтруктураСтроки.Вставить(«ИдентификаторСтрокиСотрудника», Ид);
    МассивСтрокТабличнойЧасти.Добавить(СтруктураСтроки);
    СтруктураТабличнойЧасти.Вставить(«МассивТабличнойЧасти»,МассивСтрокТабличнойЧасти);
    МассивТаличныхЧастей.Добавить(СтруктураТабличнойЧасти);
    //АА-+
    КонецЦикла;
    
    Иначе
    …

    Показать

    Reply
  8. Mx00

    (7) в обработке есть #ОБЛАСТЬ ВедомостьНаВыплатуЗарплатыВБанк

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

    ваш код я прочитать не могу, т.к. название СтруктураТабличнойЧасти не понятно к какой табличной части это относится. Я понимаю, что данные собираются в «непонятную систему нагромождения структур и массивов» но в 8.3 другой передачи между клиентом и сервером не предусмотрено 🙂 — сделайте как в ведомости и всё должно получиться.

    Reply
  9. al_ban

    (8) OK, попробую

    Reply
  10. tosia

    Добрый день! Подскажите, что делать. Вот такая ошибка

    Reply
  11. tosia

    Дополнение к ошибке

    возникает она при попытке прочитать данные из 7.7. по видам документов:

    — прием на работу

    — кадровое перемещение

    — начисление отпуска

    — приказ на оплату по среднему

    остальные документы переносятся(тоже некоторые с ошибками)

    Обе базы типовые. 7-ка версия 7.70.366. ЗУП 3.1.10.78

    возможно что-то из-за обновлений в новой зарплате, можете подсказать, что сделать чтобы выгрузились документы. Могу предоставить удаленный доступ

    p.s. Численность организации большая 900 человек, поэтому и документов много. а ручками заносить не хочется

    Reply
  12. Mx00

    (11) я сейчас проверил на 7.70.370 и 3.1.10.78, на «моих данных» ошибка не появляется, я думаю, что у вас специфические начисления и их загрузку нужно настраивать в модуле обработки, это работа для программиста. Если у вас 900 человек, то думаю программисты у вас есть 🙂 если нет, то пишите на mx@mail.ru

    Reply
  13. al_ban

    Здравствуйте! При очередном запуске обработки и подключения к базе, при нажатии кнопки «Создать доп. реквизиты» начало появляться сообщение об ошибке «Поле объекта не обнаружено» (ПланВидовРасчета_Начисления) (см. влож.). Раньше всё было ОК.

    Ошибка появляется в этой процедуре:

    Процедура ПроверитьНаличиеДополнительногоРеквизитаИлиСведения(Наименование, Назначение, ТипЗначения, Имя, Общий=Ложь, Виден=Истина, Доступен=Истина, ЭтоДополнительноеСведение=Истина)
    Если ТипЗнч(Назначение)=Тип(«Строка») Тогда
    Если (Лев(Назначение,9)=»Документ_»)или(Лев(Назначение,11)=»Справочник_»)или(Лев(Назначение,17)=»ПланВидовРасчета_») Тогда // ПланВидовРасчета_Начисления == Начисления по наименованию
    Спр_НаборыДополнительныхРеквизитовИСведений_Ссылка=Справочни­ки.НаборыДополнительныхРеквизитовИСведений[Назначение];
    Иначе
    Спр_НаборыДополнительныхРеквизитовИСведений_Ссылка=Справочни­ки.НаборыДополнительныхРеквизитовИСведений.НайтиПоНаименованию(Назначение);
    КонецЕсли;
    Иначе
    Спр_НаборыДополнительныхРеквизитовИСведений_Ссылка=Назначени­е; // Предполагается, что указана ссылка на Справочники.НаборыДополнительныхРеквизитовИСведений
    КонецЕсли;
    

    Показать

    Reply
  14. Mx00

    (13) по скриншоту не понятно в какую базу вы загружаете

    напишите полное название релиза

    а так де нажмите на кнопку [Подробно…] при возникновении ошибки и то, что там показывает тоже мне нужно увидеть

    Reply
  15. al_ban

    (14) Версия ЗУП 3.1.10.135. Ошибка возникла после обновления конфигурации. В ходе отладки обработки выяснил, что из справочника Справочники.НаборыДополнительныхРеквизитовИСведений в обновленной версии исчезли практически все предопределенные элементы, начинающиеся на Документ_ / Справочник_ / ПланВидовРасчета_, они заменились на сходные по названию элементы, но которые начинаются на «УдалитьДокумент_», «УдалитьСправочник_», «ПланВидовРасчета_» (поэтому и возникала ошибка в строке Спр_НаборыДополнительныхРеквизитовИСведений_Ссылка=Справочни­ки.НаборыДополнительныхРеквизитовИСведений[Назначение]) и т.д. Что это означает, решил не выяснять и путем сравнения конфигураций вернул на место элементы справочника «Справочники.НаборыДополнительныхРеквизитовИСведений» (взял из прежней версии конфигурации). Пока всё работает. Кстати, попробуйте сами обновить конфу, я думаю, ошибка и у Вас проявится.

    Reply

Leave a Comment

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