[РЕШЕНО] Замена начисления в док.НачислениеЗПРабОрганизаций

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

  1. TopicStarter Overlay
    fenlork
    Offline

    fenlork Опытный в 1С

    Регистрация:
    5 сен 2013
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    Прошу помоч найти решение. Суть такова "условие": если в тч документа по одному и тому же сотруднику 2 вида расчета "сделка" и "ночное", тогда в той строке где "ночное" происходит замена вида расчета на др.
    Сперва наперво-был запрос к регистру сведений.срез последних на дату документа, если у него "сделка". то в строке где "ночное" оно заменялось на др.
    [​IMG]
    Код:
    Для каждого ст из тч цикл
        раб=ст.Сотрудник;
        Запрос=Новый Запрос;
        Запрос.Текст="ВЫБРАТЬ
                    |    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник,
                    |    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета
                    |ИЗ
                    |    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(&пер, ) КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних
                    |ГДЕ
                    |    ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета = &ВидРасчета
                    |    И ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник = &Сотрудник";
                    Запрос.УстановитьПараметр("пер",объект.Дата);
                    Запрос.УстановитьПараметр("Сотрудник",раб);
                    Запрос.УстановитьПараметр("видрасчета",сделка);
                    рез=запрос.Выполнить().Выбрать();
                    Если рез.Следующий() Тогда
                        Если  ст.ВидРасчета=ночное тогда
                            ст.ВидРасчета=ночное20;
                        конецесли;
                        //объект.Записать();
                    конецесли;
    конеццикла;
    Все работало. но так как все всегда через одно место. Поставили новое условие, чтобы проверка была не по регистру, а по данной тч-Если в одной строке у сотрудника -сделка, а в другой -ночное, то ночное заменить на др.
  2. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Запрос в цикле :))), жесть.
  3. TopicStarter Overlay
    fenlork
    Offline

    fenlork Опытный в 1С

    Регистрация:
    5 сен 2013
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    посути да -но вот так.вот
    --- Объединение сообщений, 4 фев 2015 ---
    получается нужен запрос к тч без цикла, так ведь?
  4. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Ну вот запрос
    Код:
    ВЫБРАТЬ
        НачислениеЗарплатыРаботникамОрганизацийНачисления.НомерСтроки
    ИЗ
        Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК НачислениеЗарплатыРаботникамОрганизацийНачисления
    ГДЕ
        НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка = &Ссылка
        И НачислениеЗарплатыРаботникамОрганизацийНачисления.ВидРасчета = &ВидРасчетаНочных
        И НачислениеЗарплатыРаботникамОрганизацийНачисления.Сотрудник В
                (ВЫБРАТЬ
                    НачислениеЗарплатыРаботникамОрганизацийНачисления.Сотрудник
                ИЗ
                    Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК НачислениеЗарплатыРаботникамОрганизацийНачисления
                ГДЕ
                    НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка = &Ссылка
                    И НачислениеЗарплатыРаботникамОрганизацийНачисления.ВидРасчета = &ВидРасчетаСделка)
    Выдаст номера строки ТЧ, где есть такие сотрудники.
    Т.е Берем обращаемся к ТЧ и выбираем оттуда сотрудников у кого Вид расчета Ночные, а на сотрудников условие (другой подзапрос), которые из того же документа выдаст сотрудников у кого вид расчета Сделка.

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

    Получили Запросом строки, нашил их и заменили
    fenlork нравится это.
  5. TopicStarter Overlay
    fenlork
    Offline

    fenlork Опытный в 1С

    Регистрация:
    5 сен 2013
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    буду обдумкивать.спасибо

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