8.х Найти "АктОбОказанииПроизводственныхУслуг" в которых не стоит скидка ручная и сумма не равна количес

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

  1. TopicStarter Overlay
    bannov
    Offline

    bannov Опытный в 1С

    Регистрация:
    17 дек 2008
    Сообщения:
    185
    Симпатии:
    0
    Баллы:
    26
    1С 8 УПП.
    Обработка должна находить документы "АктОбОказанииПроизводственныхУслуг" в которых не стоит скидка ручная и сумма не равна произведению количества и цены. Далее надо чтобы обработка автоматически заменяла не правельную сумму на результат который получается в произведении количества на цену.
    Вот что я написал, дальше не знаю как:
    Код:
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |	АктОбОказанииПроизводственныхУслугУслуги.Количество КАК Количество,
    |	АктОбОказанииПроизводственныхУслугУслуги.Цена КАК Цена,
    |	АктОбОказанииПроизводственныхУслугУслуги.Сумма КАК Сумма,
    |	АктОбОказанииПроизводственныхУслугУслуги.ПроцентСкидкиНаценки,
    |	АктОбОказанииПроизводственныхУслугУслуги.Ссылка.Номер,
    |	АктОбОказанииПроизводственныхУслугУслуги.Ссылка.Дата
    |ИЗ
    |	Документ.АктОбОказанииПроизводственныхУслуг.Услуги КАК АктОбОказанииПроизводственныхУслугУслуги
    |ГДЕ
    |	АктОбОказанииПроизводственныхУслугУслуги.Сумма <> АктОбОказанииПроизводственныхУслугУслуги.Количество * АктОбОказанииПроизводственныхУслугУслуги.Цена
    |	И АктОбОказанииПроизводственныхУслугУслуги.ПроцентСкидкиНаценки = 0 и АктОбОказанииПроизводственныхУслугУслуги.Ссылка.Дата МЕЖДУ &ДатаС И &ДатаПо";
    
    Запрос.УстановитьПараметр("ДатаС",ДатаС);
    Запрос.УстановитьПараметр("ДатаПо",ДатаПо);
    
    
    
  2. kotletka
    Offline

    kotletka

    Регистрация:
    7 дек 2009
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    а вам батенька сумма документа нужна или сумма из таблицы каждой услуги
  3. TopicStarter Overlay
    bannov
    Offline

    bannov Опытный в 1С

    Регистрация:
    17 дек 2008
    Сообщения:
    185
    Симпатии:
    0
    Баллы:
    26
    сумма из таблицы каждой услуги
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    В общем случае - это неправильный поиск.
    Классический пример:
    Аренда за три месяца (количество = 3) стоит 10000 рублей.
    Цена никогда не совпадет с суммой.
  5. kotletka
    Offline

    kotletka

    Регистрация:
    7 дек 2009
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    примерно так
    Код:
    Запрос = Новый Запрос();
    Запрос.Текст = "ВЫБРАТЬ
    |	АктОбОказанииПроизводственныхУслуг.Ссылка КАК Документ,
    |	АктОбОказанииПроизводственныхУслуг.Номер КАК Номер,
    |	АктОбОказанииПроизводственныхУслуг.Услуги.Цена как Цена,
    |	АктОбОказанииПроизводственныхУслуг.Услуги.Количество как количество,
    |	АктОбОказанииПроизводственныхУслуг.Услуги.Сумма как Сумма,
    |	АктОбОказанииПроизводственныхУслуг.Услуги.ПроцентСкидкиНаценки как ПроцентСкидкиНаценки,
    |	АктОбОказанииПроизводственныхУслуг.Дата КАК Дата
    |ИЗ
    |	Документ.АктОбОказанииПроизводственныхУслуг КАК АктОбОказанииПроизводственныхУслуг
    |ГДЕ
    |	АктОбОказанииПроизводственныхУслуг.Дата МЕЖДУ &датас И &датапо
    |	И АктОбОказанииПроизводственныхУслуг.Проведен
    |	И АктОбОказанииПроизводственныхУслуг.Услуги.ПроцентСкидкиНаценки <> 0";
    
    Запрос.УстановитьПараметр("датас",ПолеВвода1);				
    Запрос.УстановитьПараметр("датапо",ПолеВвода2);
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() цикл
    //сообщить(" "+Выборка.номер+ Выборка.Дата);
    Документ = Выборка.Документ.ПолучитьОбъект(); 
    Документ.записать(РежимЗаписиДокумента.ОтменаПроведения);
    Для Каждого Элемент из Документ.Услуги цикл
    Элемент.ПроцентСкидкиНаценки = 0;
    Элемент.Сумма = Элемент.Цена*Элемент.Количество;
    Элемент.СуммаНДС = Элемент.Сумма* УчетНДС.ПолучитьСтавкуНДС(Элемент.СтавкаНДС)/100;
    КонецЦикла;
    Документ.записать(РежимЗаписиДокумента.Проведение);
    
    
    КонецЦикла;
    

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