1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

7.7 Движение регистров

Тема в разделе "Базы данных и администрирование", создана пользователем -, 28 янв 2009.

  1. Гость

    Репутация:
    0
    Подскажите пожалуйста, не могу получить сумму движений регистра, как функцию в запросе правильно прописать?

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

    |Функция КолПрихН = Приход(КолН);
    |Функция ИтогНед = Сумма(ИтогНе);

    |Условие(Клиент в ВыбПокупатели);
    |"//}}ЗАПРОС
    ;
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;

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

    ТЗРасчёт.НоваяСтрока();
    Стр = ТЗРасчёт.НомерСтроки;
    ТЗРасчёт.УстановитьЗначение(Стр,1,Стр);
    ТЗРасчёт.УстановитьЗначение(Стр,2,Запрос.Клиент);
    ТЗРасчёт.УстановитьЗначение(Стр,3,Запрос.ИтогНе); / / Здесь некорректно выдаёт.

    КонецЦикла;
     
  2. puh14

    puh14 Well-Known Member

    Репутация:
    0
    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Функция Сумма иметт смысл только для регистра оборотов - а у тебя, суда по функции Приход - регистр остатков.
    Лучше так

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

    |Функция КолПрихН = Приход(КолН);
    |Функция ИтогНед = КонОст(ИтогНе);// Показывает итог недостач. Если нужны увеличения недостач, тогда Приход(ИтогНе)

    |Условие(Клиент в ВыбПокупатели);
    |"//}}ЗАПРОС
    ;
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;

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

    ТЗРасчёт.НоваяСтрока();
    Стр = ТЗРасчёт.НомерСтроки;
    ТЗРасчёт.УстановитьЗначение(Стр,1,Стр);
    ТЗРасчёт.УстановитьЗначение(Стр,2,Запрос.Клиент);
    ТЗРасчёт.УстановитьЗначение(Стр,3,Запрос.ИтогНеД);
    КонецЦикла;

    Можно не пеербирать строки а написать Запрос.Выгрузить(ТЗРасчет) - он там сам все колонки нарисует.
     
  3. Гость

    Репутация:
    0
    Дело в том, что он при таком раскладе, подставляя результат любой функции, результат выдаёт умноженный на 10.

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

    |Функция КолПрихН = Приход(ИтогНе);
    |Функция ИтогНед = КонОст(ИтогНе);

    |Группировка Клиент Без Групп;
    |Условие(Клиент в ВыбПокупатели);
    |"//}}ЗАПРОС
    ;
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;

    Пока Запрос.Группировка(1) = 1 Цикл
    Сообщить("1");
    ТЗРасчёт.НоваяСтрока();
    Стр = ТЗРасчёт.НомерСтроки;
    ТЗРасчёт.УстановитьЗначение(Стр,1,Стр);
    ТЗРасчёт.УстановитьЗначение(Стр,2,Запрос.Клиент);
    ТЗРасчёт.УстановитьЗначение(Стр,3,Запрос.КолПрихН);

    КонецЦикла;
     
  4. puh14

    puh14 Well-Known Member

    Репутация:
    0
    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Ну значит такие движения были по регистрам. Для точной проверки создай на форме ТЗ и выгрузи в неё результаты запроса с детализацией до документов. А потом разбирайся - мож они в проведении накосячили.

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

    Запрос.выгрузить(ТЗ); // ТЗ - таблица значений на форме
     
  5. Гость

    Репутация:
    0
    Спасибо Пух, с помощью твоей внешней обработки выцепил свой баг! Это я регистры коряво писал.
     
Загрузка...

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