8.х Написание внешнего отчета

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем MyNameNoName, 26 июн 2013.

  1. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Пишу внешний отчет. Через конструктор запроса сформировал запрос. Данные берутся из регистра накопления. Есть повторяющаяся номенклатура. Как сделать так чтобы повторяющаяся номенклатура не выводилась а количество суммировалось?
  2. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    В запросе есть специальная секция: "СГРУППИРОВАТЬ ПО" (вкладка "Группировка" в конструкторе запроса).
    Но если используете виртуальные таблицы (Остатки, Обороты и т.д.), то группировать ничего не надо. Система это сделает сама.
  3. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Есть еще одна у меня проблема. Я добавляю поле ввода, даю ссылку на Документ, но через него я могу выбрать только один документ. Как реализовать возможность выбора нескольких документов, т.е. списка?
  4. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29

    Вложения:

  5. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    А как теперь "вытащить" эти значения? Да этого я в конструкторе запросов в графе условия сравнивал с реквизитом поля ввода, а теперь мне в ответ нельзя сравнивать значение с строкой неограниченной длины.
  6. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    Где Номенклатура В(&ТвойСписок)
    Запрос.УстановитьПараметр("ТвойСписок,ТвойсписокЗначений)
  7. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Это я сделал. Пока поле ввода у меня было типа строка работало, а теперьс типом СписокЗначений ошибка:
    {Форма.ФормаОтчета.Форма(24)}: Ошибка при вызове метода контекста (Выполнить)
    Таблица = Запрос.Выполнить().Выгрузить();
    по причине:
    {(18, 55)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
    неограниченной длины и поля несовместимых типов.
    ПотребностиЗаказовНаПроизводство.ЗаказНаПроизводство <<?>>= &ПараметрЗаказ
  8. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    я же написал
    ПотребностиЗаказовНаПроизводство.ЗаказНаПроизводство <<?>>= &ПараметрЗаказ

    надо так


    ПотребностиЗаказовНаПроизводство.ЗаказНаПроизводство В ( &ПараметрЗаказ)
    параметр заказ -твой список значений
  9. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Что то я не понимаю.
    Код:
    Запрос.Текст =
    "ВЫБРАТЬ
    |	ПотребностиЗаказовНаПроизводство.Количество КАК ЗаказКоличество,
    |	АналогиНоменклатуры.Аналог.Код КАК АналогКод,
    |	АналогиНоменклатуры.Аналог.Артикул КАК АналогАртикул,
    |	АналогиНоменклатуры.Аналог.Наименование КАК АналогНаименование,
    |	ПотребностиЗаказовНаПроизводство.Номенклатура.Код КАК ЗаказНоменклатураКод,
    |	ПотребностиЗаказовНаПроизводство.Номенклатура.Артикул КАК ЗаказНоменклатураАртикул,
    |	ПотребностиЗаказовНаПроизводство.Номенклатура.Наименование КАК ЗаказНоменклатураНаименование,
    |	ПотребностиЗаказовНаПроизводство.Номенклатура.ВидВоспроизводства КАК ЗаказНоменклатураВидВоспроизводства,
    |	ПотребностиЗаказовНаПроизводство.Номенклатура.ВидНоменклатуры КАК ЗаказНоменклатураВидНоменклатуры,
    |	ПотребностиЗаказовНаПроизводство.Номенклатура.БазоваяЕдиницаИзмерения КАК ЗаказНоменклатураБазоваяЕдиницаИзмерения,
    |	ПотребностиЗаказовНаПроизводство.ЗаказНаПроизводство.Номер КАК ЗаказНаПроизводствоНомер
    |ИЗ
    |	РегистрНакопления.ПотребностиЗаказовНаПроизводство КАК ПотребностиЗаказовНаПроизводство
    |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналогиНоменклатуры КАК АналогиНоменклатуры
    |		ПО ПотребностиЗаказовНаПроизводство.Номенклатура = АналогиНоменклатуры.Номенклатура
    |ГДЕ
    |	ПотребностиЗаказовНаПроизводство.ЗаказНаПроизводство <<?>> = &ПараметрЗаказ";
    Запрос.УстановитьПараметр("ПараметрЗаказ", ПараметрЗаказ);
    Таблица = Запрос.Выполнить().Выгрузить();
    
    А что значит:
    ПотребностиЗаказовНаПроизводство.ЗаказНаПроизводство В ( &ПараметрЗаказ)
    параметр заказ -твой список значений

    {Форма.ФормаОтчета.Форма(24)}: Ошибка при вызове метода контекста (Выполнить)
    Таблица = Запрос.Выполнить().Выгрузить();
    по причине:
    {(18, 56)}: Синтаксическая ошибка "<"
    ПотребностиЗаказовНаПроизводство.ЗаказНаПроизводство <<<?>><?>> = &ПараметрЗаказ
  10. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    |ГДЕ
    | ПотребностиЗаказовНаПроизводство.ЗаказНаПроизводство В (&ПараметрЗаказ)"

    сделай эти строки как у меня, если ты все правильно сделаешь - то войдешь в конструктор запроса, при том запросе. который ты имеешь в данный момент - в конструктор ты не войдешь
  11. web.num
    Offline

    web.num Опытный в 1С Команда форума

    Регистрация:
    6 окт 2011
    Сообщения:
    905
    Симпатии:
    4
    Баллы:
    29
    вместо " <> =" пиши "В"
  12. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    Код:
    Запрос.УстановитьПараметр("ПараметрЗаказ", ПараметрЗаказ); // ПараметрЗаказ - имя поля с формы с типом список значений,
    //его нужно установить таким, которое у тебя на форме (правую часть, то что в кавычках так и оставь)
  13. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Спасибо, с этим разобрался. Тему просьба не закрывать вдруг еще вопросы возникнут. Всем большое спасибо)))
  14. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Все сгруппировалось, повторяющаяся номенклатура пропала, но количество не суммируется. Получается и по этому полю группировало что не верно. Как выйти из этой ситуации?
  15. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    покажи весь запрос
  16. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Код:
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПотребностиЗаказовНаПроизводство.Количество КАК ЗаказКоличество,
    |    АналогиНоменклатуры.Аналог.Код КАК АналогКод,
    |    АналогиНоменклатуры.Аналог.Артикул КАК АналогАртикул,
    |    АналогиНоменклатуры.Аналог.Наименование КАК АналогНаименование,
    |    ПотребностиЗаказовНаПроизводство.Номенклатура.Код КАК ЗаказНоменклатураКод,
    |    ПотребностиЗаказовНаПроизводство.Номенклатура.Артикул КАК ЗаказНоменклатураАртикул,
    |    ПотребностиЗаказовНаПроизводство.Номенклатура.Наименование КАК ЗаказНоменклатураНаименование,
    |    ПотребностиЗаказовНаПроизводство.Номенклатура.ВидВоспроизводства КАК ЗаказНоменклатураВидВоспроизводства,
    |    ПотребностиЗаказовНаПроизводство.Номенклатура.ВидНоменклатуры КАК ЗаказНоменклатураВидНоменклатуры,
    |    ПотребностиЗаказовНаПроизводство.Номенклатура.БазоваяЕдиницаИзмерения КАК ЗаказНоменклатураБазоваяЕдиницаИзмерения
    |ИЗ
    |    РегистрНакопления.ПотребностиЗаказовНаПроизводство КАК ПотребностиЗаказовНаПроизводство
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналогиНоменклатуры КАК АналогиНоменклатуры
    |        ПО ПотребностиЗаказовНаПроизводство.Номенклатура = АналогиНоменклатуры.Номенклатура
    |ГДЕ
    |    ПотребностиЗаказовНаПроизводство.ЗаказНаПроизводство В(&ПараметрЗаказ)
    |
    |СГРУППИРОВАТЬ ПО
    |    ПотребностиЗаказовНаПроизводство.Номенклатура.Код,
    |    ПотребностиЗаказовНаПроизводство.Количество,
    |    АналогиНоменклатуры.Аналог.Код,
    |    АналогиНоменклатуры.Аналог.Артикул,
    |    АналогиНоменклатуры.Аналог.Наименование,
    |    ПотребностиЗаказовНаПроизводство.Номенклатура.Артикул,
    |    ПотребностиЗаказовНаПроизводство.Номенклатура.Наименование,
    |    ПотребностиЗаказовНаПроизводство.Номенклатура.ВидВоспроизводства,
    |    ПотребностиЗаказовНаПроизводство.Номенклатура.ВидНоменклатуры,
    |    ПотребностиЗаказовНаПроизводство.Номенклатура.БазоваяЕдиницаИзмерения";
    Запрос.УстановитьПараметр("ПараметрЗаказ", ПараметрЗаказ);
    Таблица = Запрос.Выполнить().Выгрузить();
    
  17. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    удалено
  18. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Из секции "СГРУППИРОВАТЬ ПО" уберите
    Код:
    "ПотребностиЗаказовНаПроизводство.Количество"
    В секции "ВЫБРАТЬ" поменяйте
    Код:
    "ПотребностиЗаказовНаПроизводство.Количество КАК ЗаказКоличество"
    на
    Код:
    "СУММА(ПотребностиЗаказовНаПроизводство.Количество) КАК ЗаказКоличество"
  19. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    У меня в поле ввода берутся данные из перечисления. Хочу чтобы по умолчанию выставлялось одно из значений. Как его установить? К какому событию привязать? Или нужно по другому? Пробовал к событию привязать не получилось.
  20. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    В процедуре при открытии можешь написать
    ТвоеПолеВвода1 = Перечисления...... и все

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