Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 сен 2021, 20:55

Условие в запросе.

Автор jeniks, 25 окт 2016, 15:58

0 Пользователей и 1 гость просматривают эту тему.

jeniks

Подскажите как организовать условие в запросе. Проблема в том что 01.07.2016 была деноминация (10000) и в отчет попадают данные из документов за 2 периода (до и после) далее всё в кучу.
Хотелось бы определить условие чтобы документы "до" делились на 10000 и суммировались с "после". Всё выше сказанное касается Стоимости.
Процедура Сформировать()                     

Перем Запрос, ТекстЗапроса, Таб;

Запрос = СоздатьОбъект("Запрос");

    ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ОбрабатыватьДокументы проведенные;
|Док = Документ.ПередачаМатериаловСпецназначенияВПроизводство.ТекущийДокумент,
| Документ.ТребованиеНакладная.ТекущийДокумент,
| Документ.ВводВЭксплуатациюМБП.ТекущийДокумент;
|Материал = Документ.ПередачаМатериаловСпецназначенияВПроизводство.Материал,
| Документ.ТребованиеНакладная.Материал,
| Документ.ВводВЭксплуатациюМБП.Материал;
|Страна = Документ.ПередачаМатериаловСпецназначенияВПроизводство.Материал.СтранаПроисхождения,
| Документ.ТребованиеНакладная.Материал.СтранаПроисхождения,
| Документ.ВводВЭксплуатациюМБП.Материал.СтранаПроисхождения;
|Код = Документ.ПередачаМатериаловСпецназначенияВПроизводство.Материал.СтранаПроисхождения.Код,
| Документ.ТребованиеНакладная.Материал.СтранаПроисхождения.Код,
| Документ.ВводВЭксплуатациюМБП.Материал.СтранаПроисхождения.Код;
|Дата = Документ.ПередачаМатериаловСпецназначенияВПроизводство.ДатаДок,
| Документ.ТребованиеНакладная.ДатаДок,
| Документ.ВводВЭксплуатациюМБП.ДатаДок;
|Номер = Документ.ПередачаМатериаловСпецназначенияВПроизводство.НомерДок,
| Документ.ТребованиеНакладная.НомерДок,
| Документ.ВводВЭксплуатациюМБП.НомерДок;
|Стоимость = Документ.ПередачаМатериаловСпецназначенияВПроизводство.Сумма,
| Документ.ТребованиеНакладная.Сумма,
| Документ.ВводВЭксплуатациюМБП.Сумма;
|Ном = Документ.ПередачаМатериаловСпецназначенияВПроизводство.НомерСтроки,
| Документ.ТребованиеНакладная.НомерСтроки,
| Документ.ВводВЭксплуатациюМБП.НомерСтроки;
|Функция Всего = Сумма(Стоимость);
|Группировка Страна;   
|Группировка Док  упорядочить по Док.ДатаДок;
|Группировка Материал упорядочить по Материал.наименование без Групп;
|Группировка Ном;
|"//}}ЗАПРОС
      ;         

   
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;


// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
 

Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
РБ = 0;
НеРБ = 0;
Итого = 0;
//Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);   
НомерСтроки = 1;           
Пока Запрос.Группировка(1) = 1 Цикл
Таб.ВывестиСекцию("Страна");
Если Запрос.Код=1 Тогда
  РБ = РБ+Запрос.Всего;
Иначе
  НеРБ = НеРБ+Запрос.Всего;
КонецЕсли;

Пока Запрос.Группировка(2) = 1 Цикл

Пока Запрос.Группировка(3) = 1 Цикл
Пока Запрос.Группировка(4) = 1 Цикл
НомерСтроки = НомерСтроки +1;
Если Разворачивать=1 Тогда
  Таб.ВывестиСекцию("Материал");  
КонецЕсли;

Итого = Итого+Запрос.Стоимость;
КонецЦикла;
КонецЦикла;
          Таб.ВывестиСекцию("Док");
Итого=0;
КонецЦикла;               

Итого = 0;   
Таб.ВывестиСекцию("Итог") ;
КонецЦикла;
    Таб.ВывестиСекцию("Подвал"); 

СохранитьЗначение("ЯСоставил",ОтчетСоставил);   

    Таб.ПараметрыСтраницы(1,,,,,,,,,1);     
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры   

    ВыбНачПериода = РабочаяДата();
ВыбКонПериода = РабочаяДата();   

ОтчетСоставил = ВосстановитьЗначение("ЯСоставил");   


alex0402

Цитата: jeniks от 25 окт 2016, 15:58Сумма(Стоимость)

заменить на Сумма(Выбор когда Дата < ДатаВремя(год,месяц,день) Стоимость / 10000 ИНАЧЕ Стоимость Конец )
Спасибо за Сказать спасибо

jeniks

Цитата: alex0402 от 25 окт 2016, 16:23
Цитата: jeniks от 25 окт 2016, 15:58Сумма(Стоимость)

заменить на Сумма(Выбор когда Дата < ДатаВремя(год,месяц,день) Стоимость / 10000 ИНАЧЕ Стоимость Конец )

Ошибки:
ВЫБОР<<?>>
Переменная не определена (ВЫБОР)
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
{Отчет.ПТМ_РасхМатПоСтран.Форма.Модуль(49)}: Функция Всего = Сумма(Выбор  <<?>> КОГДА Дата < ДатаВремя(16,07,01) Стоимость /10000 ИНАЧЕ Стоимость Конец);
Запрос[28] : Ошибка в выражении 'Выбор'
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
{Отчет.ПТМ_РасхМатПоСтран.Форма.Модуль(49)}: Функция Всего = Сумма(Выбор  <<?>> КОГДА Дата < ДатаВремя(16,07,01) Стоимость /10000 ИНАЧЕ Стоимость Конец);
Запрос[28] : Ожидается ')' перед 'КОГДА'

alex0402

Весь новый запрос в студию.
Добавлено: 26 окт 2016, 09:35


Цитата: jeniks от 26 окт 2016, 09:18заменить на Сумма(Выбор когда Дата < ДатаВремя(год,месяц,день) Стоимость / 10000 ИНАЧЕ Стоимость Конец )

это нужно делать в запросе, а не в коде.
Спасибо за Сказать спасибо

jeniks

Запрос = СоздатьОбъект("Запрос");

    ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ОбрабатыватьДокументы проведенные;
|Док = Документ.ПередачаМатериаловСпецназначенияВПроизводство.ТекущийДокумент,
| Документ.ТребованиеНакладная.ТекущийДокумент,
| Документ.ВводВЭксплуатациюМБП.ТекущийДокумент;
|Материал = Документ.ПередачаМатериаловСпецназначенияВПроизводство.Материал,
| Документ.ТребованиеНакладная.Материал,
| Документ.ВводВЭксплуатациюМБП.Материал;
|Страна = Документ.ПередачаМатериаловСпецназначенияВПроизводство.Материал.СтранаПроисхождения,
| Документ.ТребованиеНакладная.Материал.СтранаПроисхождения,
| Документ.ВводВЭксплуатациюМБП.Материал.СтранаПроисхождения;
|Код = Документ.ПередачаМатериаловСпецназначенияВПроизводство.Материал.СтранаПроисхождения.Код,
| Документ.ТребованиеНакладная.Материал.СтранаПроисхождения.Код,
| Документ.ВводВЭксплуатациюМБП.Материал.СтранаПроисхождения.Код;
|Дата = Документ.ПередачаМатериаловСпецназначенияВПроизводство.ДатаДок,
| Документ.ТребованиеНакладная.ДатаДок,
| Документ.ВводВЭксплуатациюМБП.ДатаДок;
|Номер = Документ.ПередачаМатериаловСпецназначенияВПроизводство.НомерДок,
| Документ.ТребованиеНакладная.НомерДок,
| Документ.ВводВЭксплуатациюМБП.НомерДок;
|Стоимость = Документ.ПередачаМатериаловСпецназначенияВПроизводство.Сумма,
| Документ.ТребованиеНакладная.Сумма,
| Документ.ВводВЭксплуатациюМБП.Сумма;
|Ном = Документ.ПередачаМатериаловСпецназначенияВПроизводство.НомерСтроки,
| Документ.ТребованиеНакладная.НомерСтроки,
| Документ.ВводВЭксплуатациюМБП.НомерСтроки; 
|Функция Всего = Сумма (Выбор КОГДА Дата < ДатаВремя(16,07,01) Стоимость/10000 ИНАЧЕ Стоимость Конец);
// |Функция Всего = Сумма(Стоимость);
|Группировка Страна;   
|Группировка Док  упорядочить по Док.ДатаДок;
|Группировка Материал упорядочить по Материал.наименование без Групп;
|Группировка Ном;
|"//}}ЗАПРОС
      ;

alex0402

Опять я на 7.7 попался :) тогда можно так попробовать:

    |ДатаДок = Документ.БанковскаяВыписка.ДатаДок;
|СуммаПлатежа = Документ.БанковскаяВыписка.СуммаПлатежа;
|Функция СуммаПлатежаСумма1 = Сумма(СуммаПлатежа/10000) когда(КОГДА ДатаДок < Дата);
|Функция СуммаПлатежаСумма2 = Сумма(СуммаПлатежа) когда(КОГДА ДатаДок >= Дата);
Спасибо за Сказать спасибо

jeniks

Цитата: alex0402 от 26 окт 2016, 11:05
Опять я на 7.7 попался :) тогда можно так попробовать:

    |ДатаДок = Документ.БанковскаяВыписка.ДатаДок;
|СуммаПлатежа = Документ.БанковскаяВыписка.СуммаПлатежа;
|Функция СуммаПлатежаСумма1 = Сумма(СуммаПлатежа/10000) когда(КОГДА ДатаДок < Дата);
|Функция СуммаПлатежаСумма2 = Сумма(СуммаПлатежа) когда(КОГДА ДатаДок >= Дата);

А при чем тут банковская выписка? Формируется из документов Документ.ПередачаМатериаловСпецназначенияВПроизводство
Документ.ТребованиеНакладная
Документ.ВводВЭксплуатациюМБП.

alex0402

У меня нет вашей конфигурации, я сделал на примере любой другой под рукой.
Вопрос был про сумму
Спасибо за Сказать спасибо

jeniks

Бухгалтерский учет + строительство Беларусь 7.7. Или md нужен?

jeniks

Цитата: jeniks от 26 окт 2016, 14:36Функция СуммаПлатежаСумма1 = Сумма(СуммаПлатежа/10000) когда(КОГДА ДатаДок < Дата);
    |Функция СуммаПлатежаСумма2 = Сумма(СуммаПлатежа) когда(КОГДА ДатаДок >= Дата);
Чему равно Дата? Это текущая дата, или нужно определять?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск