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

Тема в разделе "1C и всё что с ней связано", создана пользователем -, 28 янв 2009.

  1. Гость

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

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

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

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

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

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

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

    puh14 Well-Known Member
    1C Team

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

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

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

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

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

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

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

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

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

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

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

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

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

    puh14 Well-Known Member
    1C Team

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

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

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

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

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