8.х Проблема в обработке (очень нужна помощь)

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем RblCbKA, 10 окт 2016.

  1. TopicStarter Overlay
    RblCbKA
    Offline

    RblCbKA

    Регистрация:
    10 окт 2016
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Всем добрый вечер)

    Не могу понять в каком месте обработки и что нужно написать, что бы при формировании файла не двоились Физические лица, а выбирались только те которые указаны в начальном файле.
    Просидев 2 недели с обработкой, вроде бы нашла место в котором имеется загвоздка... но что дальше не знаю...

    Обработка формирует реестр по выплате заработной платы в формате dbf. Если раньше сотрудник работал уже в организации но потом уволился, и через некоторое время вернулся обратно, программа его задваивает, та же ситуация с сотрудниками у которых есть внутреннее совмещение должностей.

    Прошу вас помощи...

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

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