8.х Обработка "Печать трудовых договоров"

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

  1. TopicStarter Overlay
    Spirin
    Offline

    Spirin

    Регистрация:
    8 май 2013
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Добрый день! Есть вопрос.. Конфигурация "Камин:Расчет зароботной платы вер. 3.0 1с 8.2"

    Обработка "Печать трудовых договоров"

    Проблема в том, что из документа "Приём" не заполняются данные: номер договора,дата,должность,начало работы.

    Вот как это выглядит: картинка камин1.


    теперь код:

    Код:
    Процедура ЗаполнитьРеквизитыНаСписокРаботников()
    
    л_Запрос = Новый Запрос("ВЫБРАТЬ
    | ГражданствоСотрудниковСрезПоследних.Резидент,
    | ГражданствоСотрудниковСрезПоследних.Гражданство,
    | ГражданствоСотрудниковСрезПоследних.Сотрудник
    |ИЗ
    | РегистрСведений.ГражданствоСотрудников.СрезПоследних(&Дата, Сотрудник В (&СписокСотрудников)) КАК ГражданствоСотрудниковСрезПоследних");
    л_Запрос.УстановитьПараметр("Дата",	 Дата);
    л_Запрос.УстановитьПараметр("СписокСотрудников", м_ДокументВладелец.ТаблицаДокумента.ВыгрузитьКолонку("Сотрудник"));
    л_ТаблицаГражданство = л_Запрос.Выполнить().Выгрузить();
    
    Для каждого л_СтрокаТЧ Из м_ДокументВладелец.ТаблицаДокумента Цикл
    л_Сотрудник = л_СтрокаТЧ.Сотрудник;
    л_Документ = л_Сотрудник.Документ;
    Если л_СтрокаТЧ.СистемаОплаты = Перечисления.СистемыОплаты.ПоОкладу Тогда
    л_Оплата = "оклад в сумме " + л_СтрокаТЧ.Ставка + " " + л_СтрокаТЧ.ВидСтавки;
    ИначеЕсли л_СтрокаТЧ.СистемаОплаты = Перечисления.СистемыОплаты.ПоТарифу Тогда
    л_Оплата = "заработная плата исходя из тарифной ставки " + л_СтрокаТЧ.Ставка + " " + л_СтрокаТЧ.ВидСтавки;
    Иначе
    л_Оплата = "<Укажите вознаграждение!>";
    КонецЕсли;
    Если  ТипЗнч(м_ДокументВладелец) = Тип("ДокументОбъект.Прием") Тогда
    л_ИспытательныйСрок = ?(л_СтрокаТЧ.ЕстьИспытательныйСрок, Строка(л_СтрокаТЧ.ИспытательныйСрок) + " " + СокрЛП(л_СтрокаТЧ.ИспытательныйСрокМес), "");
    Иначе
    л_ИспытательныйСрок = "";
    КонецЕсли;
    л_СтрокаТабДок = ТаблицаОбработки.Добавить();
    л_СтрокаТабДок.ВидВознаграждения  = л_Оплата;
    л_СтрокаТабДок.ВидДокумента	= л_Документ.ВидДокумента.Наименование;
    л_СтрокаГражданство = л_ТаблицаГражданство.Найти(л_Сотрудник, "Сотрудник");
    Если л_СтрокаГражданство <> Неопределено Тогда
    Если л_СтрокаГражданство.Резидент Тогда
    л_СтрокаТабДок.ГражданинСтраны = ? (л_Сотрудник.Пол = Перечисления.Пол.М, "гражданин", "гражданка") + " РФ";
    Иначе
    л_СтрокаТабДок.ГражданинСтраны = ? (л_Сотрудник.Пол = Перечисления.Пол.М, "гражданин", "гражданка") + " " + Врег(ПолучитьВРодительномПадеже(л_СтрокаГражданство.Гражданство, Неопределено));
    КонецЕсли;
    КонецЕсли;
    л_СтрокаТабДок.ДатаДоговора	= л_СтрокаТЧ.ДатаДоговора;
    л_СтрокаТабДок.ДатаНачалаРаботы   = л_СтрокаТЧ.ДатаПриема;
    л_СтрокаТабДок.ДнейВНеделе	= л_СтрокаТЧ.Табель.ДнейВНеделе;
    л_СтрокаТабДок.ДолжностьРаботника  = л_СтрокаТЧ.Должность;
    л_СтрокаТабДок.ДополнительныйОтпуск  = ?(л_СтрокаТЧ.ДополнительныйОтпуск > 0, " и дополнительный отпуск продолжительностью " + л_СтрокаТЧ.ДополнительныйОтпуск + " календарных дней", "");
    л_СтрокаТабДок.ИспытательныйСрок  = л_ИспытательныйСрок;
    л_СтрокаТабДок.КемВыданДокумент   = Формат(л_Документ.ДатаВыдачи, "ДЛФ=DD") + " " + л_Документ.КемВыдан;
    л_СтрокаТабДок.НомерДоговора   = л_СтрокаТЧ.НомерДоговора;
    л_СтрокаТабДок.НомерДокумента   = л_Документ.НомерДокумента;
    л_СтрокаТабДок.ОсновноеМестоРаботы  = ? ((ТипЗнч(м_ДокументВладелец) = Тип("ДокументОбъект.Прием") И м_ДокументВладелец.ВнешнийСовместитель) Или (ТипЗнч(м_ДокументВладелец) = Тип("ДокументОбъект.Совместительство")), "совмещением", "основной");
    л_СтрокаТабДок.ОсновнойОтпуск   = л_СтрокаТЧ.ОсновнойОтпуск;
    л_СтрокаТабДок.Подразделение   = л_СтрокаТЧ.Подразделение;
    л_СтрокаТабДок.ПричинаДоговора   = "<Укажите причину заключения договора!>";
    л_СтрокаТабДок.СерияДокумента   = л_Документ.СерияДокумента;
    л_СтрокаТабДок.Сотрудник	= л_Сотрудник;
    л_СтрокаТабДок.СрокДоговора	= ? (л_СтрокаТЧ.Постоянно, "неопределенный срок", "срок до " + Формат(л_СтрокаТЧ.ДатаУвольнения, "ДЛФ=D"));
    л_СтрокаТабДок.ФИО	  = Гл_ФИО(л_Сотрудник,,,Дата);
    л_СтрокаТабДок.ФлагДобавленИзДокумента = Истина;
    л_СтрокаТабДок.ЧасовВДне	= ? (л_СтрокаТЧ.Табель.ДнейВНеделе <> 0, Цел(л_СтрокаТЧ.Табель.ЧасовВНеделе / л_СтрокаТЧ.Табель.ДнейВНеделе), 0);
    КонецЦикла;
    
    КонецПроцедуры
    


    Код:
    Процедура ЗаполнитьРеквизитыРаботников()
    
    Если м_ДокументВладелец.Список Тогда
    ЗаполнитьРеквизитыНаСписокРаботников();
    Иначе
    Если Не м_ДокументВладелец.Сотрудник.Пустая() Тогда
    Если м_ДокументВладелец.СистемаОплаты = Перечисления.СистемыОплаты.ПоОкладу Тогда
    л_Оплата = "оклад в сумме " + м_ДокументВладелец.Ставка + " " + м_ДокументВладелец.ВидСтавки;
    ИначеЕсли м_ДокументВладелец.СистемаОплаты = Перечисления.СистемыОплаты.ПоТарифу Тогда
    л_Оплата = "заработная плата соответствующая тарифу " + м_ДокументВладелец.Ставка + " " + м_ДокументВладелец.ВидСтавки;
    Иначе
    л_Оплата = "<Укажите вознаграждение!>";
    КонецЕсли;
    Если ТипЗнч(м_ДокументВладелец) = Тип("ДокументОбъект.Прием") Тогда
    л_ИспытательныйСрок = ?(м_ДокументВладелец.ЕстьИспытательныйСрок, Строка(м_ДокументВладелец.ИспытательныйСрок) + " " + СокрЛП(м_ДокументВладелец.ИспытательныйСрокМес), "");
    Иначе
    л_ИспытательныйСрок = "";
    КонецЕсли;
    ЗаполнитьРеквизитыРаботника(ТаблицаОбработки.Добавить(), м_ДокументВладелец.Сотрудник, Истина, л_Оплата, л_ИспытательныйСрок);
    КонецЕсли;
    КонецЕсли;
    
    КонецПроцедуры
    


    Код:
    Процедура ЗаполнитьРеквизитыРаботника(п_СтрокаТЧ, п_Сотрудник, п_ФлагДобавленИзДокумента, п_ВидВознаграждения = "<Укажите вознаграждение!>", п_ИспытательныйСрок = "")
    
    п_СтрокаТЧ.Сотрудник   = п_Сотрудник;
    
    Если п_ФлагДобавленИзДокумента И  (ТипЗнч(м_ДокументВладелец) = Тип("ДокументОбъект.Прием") или ТипЗнч(м_ДокументВладелец) = Тип("ДокументОбъект.Совместительство")) Тогда			
    п_СтрокаТЧ.НомерДоговора  = м_ДокументВладелец.НомерДоговора;
    п_СтрокаТЧ.ДатаДоговора   = м_ДокументВладелец.ДатаДоговора;
    Иначе
    п_СтрокаТЧ.НомерДоговора  = "";
    п_СтрокаТЧ.ДатаДоговора   = "";
    КонецЕсли;
    л_Запрос = Новый Запрос("ВЫБРАТЬ
    | ГражданствоСотрудниковСрезПоследних.Резидент,
    | ГражданствоСотрудниковСрезПоследних.Гражданство
    |ИЗ
    | РегистрСведений.ГражданствоСотрудников.СрезПоследних(&Дата, Сотрудник = &Сотрудник) КАК ГражданствоСотрудниковСрезПоследних");
    л_Запрос.УстановитьПараметр("Дата",   Дата);
    л_Запрос.УстановитьПараметр("Сотрудник", п_Сотрудник);
    л_Выборка = л_Запрос.Выполнить().Выбрать();
    Если л_Выборка.Следующий() Тогда
    Если л_Выборка.Резидент Тогда
    п_СтрокаТЧ.ГражданинСтраны = ? (п_Сотрудник.Пол = Перечисления.Пол.М, "гражданин", "гражданка") + " РФ";
    Иначе
    п_СтрокаТЧ.ГражданинСтраны = ? (п_Сотрудник.Пол = Перечисления.Пол.М, "гражданин", "гражданка") + " " + Врег(ПолучитьВРодительномПадеже(л_Выборка.Гражданство, Неопределено));
    КонецЕсли;
    КонецЕсли;
    
    п_СтрокаТЧ.ФИО	  = Гл_ФИО(п_Сотрудник,,,Дата);
    
    л_Документ	   = п_Сотрудник.Документ;
    п_СтрокаТЧ.ВидДокумента	= л_Документ.ВидДокумента.Наименование;
    п_СтрокаТЧ.СерияДокумента   = л_Документ.СерияДокумента;
    п_СтрокаТЧ.НомерДокумента   = л_Документ.НомерДокумента;
    п_СтрокаТЧ.КемВыданДокумент   = Формат(л_Документ.ДатаВыдачи, "ДЛФ=DD") + " " + СокрЛП(л_Документ.КемВыдан);
    п_СтрокаТЧ.ДолжностьРаботника  = ? (п_ФлагДобавленИзДокумента, СокрЛП(м_ДокументВладелец.Должность.Наименование), "");
    п_СтрокаТЧ.ДатаНачалаРаботы   = ? (п_ФлагДобавленИзДокумента, м_ДокументВладелец.ДатаПриема, Дата( 1, 1 ,1));
    п_СтрокаТЧ.ПричинаДоговора   = "<Укажите причину заключения договора!>";
    п_СтрокаТЧ.ВидВознаграждения  = п_ВидВознаграждения;
    п_СтрокаТЧ.ФлагДобавленИзДокумента = п_ФлагДобавленИзДокумента;
    п_СтрокаТЧ.ИспытательныйСрок  = п_ИспытательныйСрок;
    КонецЕсли;
    КонецПроцедуры

    и плюс кнопка заполнения(на картинке "обновить из документа"):

    Код:
    Процедура КоманднаяПанель2ОбновитьРеквизитыРаботников(Кнопка)
    
    Для каждого л_СтрокаТЧ Из ТаблицаОбработки Цикл
    ЗаполнитьРеквизитыРаботника(л_СтрокаТЧ, л_СтрокаТЧ.Сотрудник, л_СтрокаТЧ.ФлагДобавленИзДокумента);
    КонецЦикла;
    
    КонецПроцедуры
    

    при нажатии на "обновить из документа" ничего не происходит


    вот как-то так...

    Вложения:

  2. TopicStarter Overlay
    Spirin
    Offline

    Spirin

    Регистрация:
    8 май 2013
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Ребят, я понимаю, что Камин тут мало кому знаком)))) но ошибка то где-то в стандартном коде 1с..
  3. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    398
    Баллы:
    104
    Нашли код где все это заполняется и не можете найти решение проблемы?! Странно. Посмотрите что и где заполняется. Такие вопросы решаются путем анализа кода.
  4. TopicStarter Overlay
    Spirin
    Offline

    Spirin

    Регистрация:
    8 май 2013
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    получается то,что мне нужно заполняется в
    Код:
    Процедура ЗаполнитьРеквизитыРаботника(п_СтрокаТЧ, п_Сотрудник, п_ФлагДобавленИзДокумента, п_ВидВознаграждения = "<Укажите вознаграждение!>", п_ИспытательныйСрок = "")
    и строки
    Код:
    Если п_ФлагДобавленИзДокумента И  (ТипЗнч(м_ДокументВладелец) = Тип("ДокументОбъект.Прием") или ТипЗнч(м_ДокументВладелец) = Тип("ДокументОбъект.Совместительство")) Тогда  
    п_СтрокаТЧ.НомерДоговора  = м_ДокументВладелец.НомерДоговора;
    п_СтрокаТЧ.ДатаДоговора   = м_ДокументВладелец.ДатаДоговора;

    при анализе ошибок нет, в том то и дело, я не могу понять почему он из сторонних документов не может выгр######ти информацию.
  5. TopicStarter Overlay
    Spirin
    Offline

    Spirin

    Регистрация:
    8 май 2013
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    п_СтрокаТЧ.ДолжностьРаботника = ? (п_ФлагДобавленИзДокумента, СокрЛП(м_ДокументВладелец.Должность.Наименование), "");

    вот еще строка. кажется мне дело все в п_ФлагДобавленИзДокумента.

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