7.7 Подскажите, пожалуйста!

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем HochuZnat, 5 сен 2007.

  1. TopicStarter Overlay
    HochuZnat
    Offline

    HochuZnat

    Регистрация:
    5 сен 2007
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    0
    Мне необходимо, чтобы в отчете выдавался список продуктов и фирмы соответсвующие каждому этому продукту с количеством их повторений в списке. Т.е. допустим я беру колбасу и просматриваю все документы с ее участием. Из этих документов выбираются все фирмы и каждый раз когда фирма находится, в столбец "Подано заявлений" заносится единица. Т.е. когда я сворачиваю ТЗ название фирмы должно встречаться один раз, а в столбце "Подано заявлений" должно получиться число равное количеству повторений этой фирмы в списке. Но у меня постоянно получается 1. Что я делаю не так. Не судите строго, только начинаю осваивать 1С. Заранее спасибо!

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

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

    КонецЦикла;
    тзПродукт =СоздатьОбъект("ТаблицаЗначений");
    тзВывода.Выгрузить(тзПродукт);
    тзПродукт.Свернуть("Продукт, Фирма ","ПодалиЗаявления");
    тзПродукт.Сортировать("Продукт");
    тзВывода.Свернуть("Фирма, Продукт ", "ПодалиЗаявления");
    тзВывода.Сортировать("Продукт");
    тзВывода.ВыбратьСтроки();
    тПродукт ="" ;
    Пока тзВывода.ПолучитьСтроку()=1 Цикл
    текПродукт =СокрЛП(тзВывода.Продукт);
    Если тПродукт <>текПродукт Тогда
    тПродукт =текПродукт;
    текСтр="";
    тзПродукт.ВыбратьСтроки();
    Пока тзПродукт.ПолучитьСтроку()=1 Цикл
    Если
    тзВывода.Продукт =тзПродукт.Продукт Тогда
    текСтр=тзПродукт.НомерСтроки;
    ПодалиЗаявления=тз Продукт.ПолучитьЗначение(текСтр,"ПодалиЗаявления");
    Таб.ВывестиСекцию("Продукт");
    Прервать;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    тПродукт = тзВывода.Продукт;
    Фирма=тзВывода. Фирма;
    ПодалиЗаявления=тзВывода.ПодалиЗаявления;
    Таб.ВывестиСекцию("Строка");
    КонецЦикла;
    Таб.ТолькоПросмотр(1);
    КонецПроцедуры
  2. Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    Код:
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    Состояние("Заполнение выходной таблицы...");
    Таб.ВывестиСекцию("Шапка");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0,,);
    тзВывода=СоздатьОбъект("ТаблицаЗначений");
    тзВывода.НоваяКолонка("Фирма");
    тзВывода.НоваяКолонка("Продукт");
    тзВывода.НоваяКолонка("ПодалиЗаявления"
    
    Обычно пишется после выполнения запроса.
    Код:
     |Без итогов;
    
    Почему?
    Для выгрузки результатов запроса в ТЗ можно использовать метод Выгрузить()
    Для наглядности можно поместить ТЗ на форму диалога и посмотреть какие значения туда попадают и что происходит после свертки ТЗ.
    И вообще, по-моему если в выходной таблице запроса есть одинаковые значения по группировкам, то свертка выполняется автоматически.


    Продукт содержиться в табличной части документа? Тогда для получения списка продуктов надо делать группировку по строкам документа ИМХО.
  3. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    Добавь группировку по документам и считай сколько их будет при определенном товаре при определенной фирме. Если в одном документе один товар от одной фирмы может быть несколько раз, то группировка по строкам документа.

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