Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Не получается сделать отчет          
Mr_Best Подменю пользователя
сообщение 16.07.10, 21:16
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 5
Спасибо сказали: 0 раз
Рейтинг: 0

Доброе время суток.
Приношу свои извенения, что обращаюсь к вам здесь за помощью, но перекопав весь интернет я обнаружил что это лутший сайт с лутшими статьями.
Уже второй день толкусь на одном месте с отчетом и не как не могу заставить его работать.

Отчет простой, одна кнопка сформировать и одна сводная таблица на форме, только вот не чего не появляется в этой таблице.
Я перепробывал массу разных способов, и те, что вылажены в этой статье тоже и все без толку.

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


Что здесь не так ? Пожалуйста, подскажите.

Mr_Best Подменю пользователя
сообщение 16.07.10, 21:27
Сообщение #2

Молчаливый
*
Группа: Пользователи
Сообщений: 5
Спасибо сказали: 0 раз
Рейтинг: 0

Чуть не забыл, данный код выдает следующую ошибку:
"Ошибка при вызове метода контекста (Добавить): Недопустимое значение пораметра (пораметр номер "1")"

Mr_Best Подменю пользователя
сообщение 16.07.10, 21:29
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 5
Спасибо сказали: 0 раз
Рейтинг: 0

Только что пробывал зделать не через "ПостроительОтчета", а через "Запрос", так как описано в статье.
Результат: та же самая ошибка!!!

Zaval Подменю пользователя
сообщение 16.07.10, 23:53
Сообщение #4

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

А "Таблица" разве не относится к зарезервированным словам, которые нельзя использовать для имен переменных и объектов?
Остановите Отладчик на ошибочной строке и посмотрите, что у Вас в Таблица.

Mr_Best Подменю пользователя
сообщение 17.07.10, 1:24
Сообщение #5

Молчаливый
*
Группа: Пользователи
Сообщений: 5
Спасибо сказали: 0 раз
Рейтинг: 0

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

    
    ТаблицаНеРезерв.Поля.Добавить(ТаблицаНеРезерв.Поля.Номенклатура);
    ТаблицаНеРезерв.Колонки.Добавить(ТаблицаНеРезерв.Поля.Контрагент);
    ТаблицаНеРезерв.Данные.Добавить(ТаблицаНеРезерв.Поля.Количество);
    
    Построитель.Макет.Показать();
КонецПроцедуры


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

    
    //ТаблицаНеРезерв.Поля.Добавить(ТаблицаНеРезерв.Поля.Номенклатура);
    //ТаблицаНеРезерв.Колонки.Добавить(ТаблицаНеРезерв.Поля.Контрагент);
    //ТаблицаНеРезерв.Данные.Добавить(ТаблицаНеРезерв.Поля.Количество);
    
    Построитель.Макет.Показать();
КонецПроцедуры


Получается, что "ПостроительОтчета" прекрасно передается в "СводнуюТаблицу". Проблема в том, что я не правельно устанавливаю поля програмным образом, т. е. вот эти строчки не верны:
    //ТаблицаНеРезерв.Поля.Добавить(ТаблицаНеРезерв.Поля.Номенклатура);
    //ТаблицаНеРезерв.Колонки.Добавить(ТаблицаНеРезерв.Поля.Контрагент);
    //ТаблицаНеРезерв.Данные.Добавить(ТаблицаНеРезерв.Поля.Количество);


Как правельно программно установить поля для сводной таблицы???

Mr_Best Подменю пользователя
сообщение 17.07.10, 1:40
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 5
Спасибо сказали: 0 раз
Рейтинг: 0

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

    
    ТаблицаНеРезерв.Строки.Добавить(ТаблицаНеРезерв.Поля.Номенклатура);
    ТаблицаНеРезерв.Колонки.Добавить(ТаблицаНеРезерв.Поля.Контрагент);
    ТаблицаНеРезерв.Данные.Добавить(ТаблицаНеРезерв.Поля.Количество);
    
    //Построитель.Макет.Показать();
КонецПроцедуры


Правду говорят, что 80% ошибок из-за невнимательности!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 15.06.25, 17:21
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!