Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Нужна помощь с отчетом
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
sshd
Создаю отчет, завис на первом шагу
Запрос выглядит так:

    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ЦенаРозница = Документ.Реализация.Цена;
    |ЦенаПокупная = Справочник.Нормативы.Товар.ПокупнаяЦена;
    |Функция ЦенаРозницаСумма = Сумма(ЦенаРозница-Ценапокупная);
    |"//}}ЗАПРОС

Как убрать из функции ЦенаРозницаСумма() функцию Сумма()? пробовал уже разными методами, никак не получаеться...
Zaval
Клавиша Del не помогает?
sshd
Если убрать "сумма" тогда выдает ошибку

Функция ЦенаРозницаСумма = (ЦенаРозница-Ценапокупная);

или так
Функция ЦенаРозницаСумма = ЦенаРозница-Ценапокупная;


Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
{Отчет.новый1.Форма.Модуль(17)}: Функция ЦенаРозницаСумма =  <<?>> ЦенаРозница-Ценапокупная;
Запрос[5] : Неожиданное выражение 'ЦенаРозница'
Vofka
Ну конечно, так нельзя. Попробуйте так (не проверял):

ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ЦенаРозница = Документ.Реализация.Цена;
    |ЦенаПокупная = Справочник.Нормативы.Товар.ПокупнаяЦена;
    |ХЗ = Документ.Реализация.Цена - Справочник.Нормативы.Товар.ПокупнаяЦена;
    |"//}}ЗАПРОС
Zaval
В сабже весь текст запроса?
И чем мешает Сумма?
sshd
Цитата(Vofka @ 17.12.10, 22:22) необходимо зарегистрироваться для просмотра ссылки
Ну конечно, так нельзя. Попробуйте так (не проверял):

Выдает такое:
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
{Отчет.новый1.Форма.Модуль(17)}: ХЗ = Документ.Реализация.Цена  <<?>> - Справочник.Нормативы.Товар.ПокупнаяЦена;
Запрос[5] : Ожидается ';' перед '-'

Пробовал объявлять переменную хз и так не идёт



Да, весь текст запроса.
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ЦенаРозница = Документ.Реализация.Цена;
    |ЦенаПокупная = Справочник.Нормативы.Товар.ПокупнаяЦена;
    |Функция ЦенаРозницаСумма = (ЦенаРозница-Ценапокупная);
    |"//}}ЗАПРОС
;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    // Заполнение полей "Итого"
    Таб.ВывестиСекцию("Итого");
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры


ИМХО функция сумма() как-то ковыряет результат, для примера ЦенаРозница 70 -Ценапокупная 20, выдает результат в таблице 25. Если ставлю ЦенаРозница 135 тогда выдает результат 90.
Vofka
Если это необязательно в запросе делать, то вычислите эту цену перед выводом секции таблицы.
Zaval
Так, что-то мне нехорошо стало....

Вы выбираете реквизит Цена из документа Реализация.
Затем выбираете реквизит ЦенаПокупная из первого попавшегося элемента справочника Нормативы.

Какая связь между этими двумя цифрами и что Вам дает их разность?
sshd
Я занимаюсь заправкой картриджей, хотелось бы что-бы этот отчет показал мне прибыль за период. В Excel-e устал работать..

В этом конфиге "сервисный центр омс" (самый подходящий который я нашел) продажи ( и услуги) идут через
Документы - Реализация.
В данном конфиге для услуги можно ставить "норматив",это задается материал который используется.
Справочник.Нормативы.Товар.ПокупнаяЦена - беру потому-что, в справочнике материал имеет цену розничную, а я хочу что-бы считал "покупную цену" ( она берется с накладных прихода)
Поэтому я подумал, что Документ.Реализация.Цена +- Справочник.Нормативы.Товар.ПокупнаяЦена; будет правильно...
igmig65
Ваш запрос срабатывет? если да, то интересно что он вам возвращает, в нем нет никакой логики. Что вы хотите получить из запроса? ПОДРОБНО.
Zaval
И что, ни один отчет ( "Продажи" или что-то на темму Прибыли/Оборота) не показывает нужную информацию? Поройтесь с пристрастием в настройках - должно быть.

Что до запроса, то там нужна связь между доком и справочником и хотя бы одна функция, если суммировать не нужно - поставить "без итогов"
igmig65
А что такое Товар в спр.Нармативы, в смысле тип значения Справочник - какой? там я так понял есть рекв. покупнаяЦена, а Розничная цена есть? Если да то вам нужен товар из документа реализация, чтоб получить покупную цену
    |ЦенаРозница = Документ.Реализация.Цена;
    |ЦенаПокупная = Документ.Реализация.Товар.ПокупнаяЦена;
    |Функция ЦенаРозницаСумма = (ЦенаРозница-Ценапокупная);
sshd
У Справочник.Нормативы.Товар тип значения = Справочник. Каталог

На Ваш код тоже ругается,

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
{Отчет.новый1.Форма.Модуль(17)}: Функция ЦенаРозницаСумма =  <<?>> (ЦенаРозница-Ценапокупная);
Запрос[5] : Ожидается имя переменной или ее составляющая перед '('
igmig65
Пардон,
Функция ЦенаРозницаСумма = Сумма(ЦенаРозница-Ценапокупная);
sshd
Цитата(igmig65 @ 18.12.10, 3:37) необходимо зарегистрироваться для просмотра ссылки
Пардон,
Функция ЦенаРозницаСумма = Сумма(ЦенаРозница-Ценапокупная);

Спасибо icon_beer17.gif Пошло

Не получается в строку где сумма() ничего пихнуть
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ЦенаРозница = Документ.Реализация.Цена;
    |ЦенаПокупная = Документ.Реализация.Товар.ПокупнаяЦена;
    |Количество = Документ.Реализация.Количество;
    |Функция ЦенаРозницаСумма = Сумма((ЦенаРозница-Ценапокупная)*Количество));
    |"//}}ЗАПРОС
igmig65
Вообще, этот запрос вам вернет усредненные показатели за период:
Цитата
|Период с ВыбНачПериода по ВыбКонПериода;

Ну если за 1 день, то может и актуально, но ведь для разных Документ.Реализация.Товар.
Вам нужно группировать запрос по товарам и например дням или документам.
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Товар = Документ.Реализация.Товар;
    |ЦенаРозница = Документ.Реализация.Цена;
    |ЦенаПокупная = Документ.Реализация.Товар.ПокупнаяЦена;
    |Количество = Документ.Реализация.Количество;
    |Функция ЦенаРозницаСумма = Сумма((ЦенаРозница-Ценапокупная)*Количество));
    |Группировка Товар;
    |Группировка Документ;
    |"//}}ЗАПРОС
;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Пока Запрос.Группировка(1)=1 Цикл
          //Сдесь вы получаете сгруппированные итоги вашей функции по всему товару за период
         // нужно создать секцию в макете таблицы "Товар" и получать результаты с запроса: Запрос.Товар,
         //  Запрос.ЦенаРозницаСумма конкретно по Товару.
         Таб.ВывестиСекцию("Товар");
         Пока Запрос.Группировка(2)=1 Цикл
                //Сдесь вы получаете сгруппированные итоги вашей функции по документу
                // нужно создать секцию в макете таблицы "Документ" и получать результаты с запроса: Запрос.Документ,
                //  Запрос.ЦенаРозницаСумма конкретно по документу.
                Таб.ВывестиСекцию("Документ");
         КонецЦикла;
    КонецЦикла;
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    // Заполнение полей "Итого"
    Таб.ВывестиСекцию("Итого");
igmig65
А вообще берите матчасть и ковыряйте запросы, можете с помощью мастера сделать тоже что я написал, и посмотреть как это сделает он, потом можно макет и запрос подправить как вам нужно.
Atali
Цитата(sshd @ 17.12.10, 20:41) необходимо зарегистрироваться для просмотра ссылки
Создаю отчет, завис на первом шагу
Запрос выглядит так:

    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ЦенаРозница = Документ.Реализация.Цена;
    |ЦенаПокупная = Справочник.Нормативы.Товар.ПокупнаяЦена;
    |Функция ЦенаРозницаСумма = Сумма(ЦенаРозница-Ценапокупная);
    |"//}}ЗАПРОС

Как убрать из функции ЦенаРозницаСумма() функцию Сумма()? пробовал уже разными методами, никак не получаеться...

    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ЦенаРозница = Документ.Реализация.Цена;
    |ЦенаПокупная = Справочник.Нормативы.Товар.ПокупнаяЦена;
    |Функция ЦенаРозницаСумма = Сумма(ЦенаРозница);    
              |Функция ЦенаПокупнаяСумма = Сумма(Ценапокупная);
    |"//}}ЗАПРОС

а далее делаеТЕ с ними что ВАМ надо
Anderson
Предполагаю что следующей темой будет - "Почему отчет показавает неправильные суммы" или "Я работаю в минус.Почему?".
Уважаемый автор Вы вообще в корне не имеете знаний по построению учета и бизнес-процессов. Считайте лучше в Экселе или учите матчасть.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.