Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/98: Рейтинг темы: голосов - 98, средняя оценка - 4.80
9 / 9 / 1
Регистрация: 28.07.2011
Сообщений: 101

Вывод из запроса в табличный документ

19.12.2012, 06:36. Показов 20592. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Туплю уже 3-й день. Есть запрос вот такой: Не могу вывести колонки "Дату Продажи" "Штрих код Номенклатуры"
Направте на истинный путь. а то уже

Процедура КнопкаСформироватьНажатие(Кнопка)
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛ ЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

Запрос.УстановитьПараметр("КонецПериода" , КонецПериода);
Запрос.УстановитьПараметр("НачалоПериода ", НачалоПериода);
Запрос.УстановитьПараметр("Поставщик", Поставщик);

Результат = Запрос.Выполнить();


ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");


ТабДок = ЭлементыФормы.ТабДок;
ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();

ВыборкаДетальныеЗаписи = Результат.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьДетальныхЗаписей.Параметры.Заполн ить(ВыборкаДетальныеЗаписи);
ТабДок.Вывести(ОбластьДетальныхЗаписей,В ыборкаДетальныеЗаписи.Уровень());
КонецЦикла;

ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);

Добавлено через 22 часа 43 минуты
Вывел, славо богу, через конструктор запросы с обработкой результата получилось.
В шапку таблицы из запроса не получается. Подскажет может кто?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.12.2012, 06:36
Ответы с готовыми решениями:

Вывод в табличный документ в ширину
Помогите плииз. Не могу вывести область в строку, выводит все списком. Вот код: Процедура СформироватьОтчет(ТабДок, Товар) ...

Табличный Документ
Доброго времени суток проблемка заключается в следующем имеется код Процедура...

Табличный документ, обход
Здравствуйте. 1с8.1 Есть табличный документ с группировками(1 уровня). Нужно найти дубли текста "ХХХХ" внутри группировок,...

14
 Аватар для E_x
63 / 63 / 0
Регистрация: 07.10.2012
Сообщений: 165
19.12.2012, 08:57
Так вы и не заполняете ее. Вы сразу выводите.

1C
1
2
3
4
5
6
7
8
9
10
11
12
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
 
 
ТабДок = ЭлементыФормы.ТабДок;
ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();
Надо параметрами заполнить ее. Что-то типа этого:
1C
1
ОбластьШапкаТаблицы.Заполнить()
0
9 / 9 / 1
Регистрация: 28.07.2011
Сообщений: 101
19.12.2012, 10:15  [ТС]
Да да, нашел подобную инфу что с параметрами надо поработать. Как это может выглядеть? В 1С не очень силен.
С какого момента я должен эту команду "ОбластьШапкаТаблицы.Заполнить()" вставлять
0
 Аватар для E_x
63 / 63 / 0
Регистрация: 07.10.2012
Сообщений: 165
19.12.2012, 10:23
Ее перед выводом желательно вставить. Немого ошибся, там после ОбластьШапкаТаблицы.Параметры.Заполнить( ).. Мы ведь заполняем параметры,которые из выборки берутся. В скобках указывается выборка, из которой будут браться значения. Суть в том, что этот метод автоматически заполняет найденные позиции(при условии,что в табличном документе и в выборке поля имеют одинаковое имя).Если разные имена,тогда можно использовать такую конструкцию:
1C
1
ОбластьШапкаТаблицы.Параметры.<ИмяПараметра> = Выборка.<НужныйПараметр>
(само собой имя параметра без "<>" вводится)

Вот справка из Синтаксис-Помощника:
Кликните здесь для просмотра всего текста

ПараметрыМакетаТабличногоДокумента (SpreadsheetDocumentTemplateParameters)
Заполнить (Fill)
Синтаксис:

Заполнить(<Объект>)
Параметры:

<Объект> (обязательный)

Тип: Произвольный.
Объект, из свойств которого будут заполняться параметры макета табличного документа.
Описание:

Заполняет параметры значениями свойств переданного объекта. Заполняются только те параметры, имена которых совпадают с именами свойств объекта.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Пример:

1C
1
2
3
4
5
6
7
8
К=0;
Пока Выборка.Следующий() Цикл
    К = К+1;
    ОбластьМакета = Макет.ПолучитьОбласть("Строка");
    ОбластьМакета.Параметры.Заполнить(Выборка);
    ОбластьМакета.Параметры.НомерСтроки = К;
    ТабДок.Вывести(ОбластьМакета);
КонецЦикла;
0
9 / 9 / 1
Регистрация: 28.07.2011
Сообщений: 101
19.12.2012, 10:31  [ТС]
Ок. Спасибо, Ща поробую
Перед выводом т.е. перед вот этим я ставлю:

ТабДок = ЭлементыФормы.ТабДок;
ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();

?
0
 Аватар для E_x
63 / 63 / 0
Регистрация: 07.10.2012
Сообщений: 165
19.12.2012, 10:53
Перед ТабДок.Вывести(ОбластьШапкаТаблицы); Т.к. именно ее мы должны сначала заполнить,а потом вывести.
0
9 / 9 / 1
Регистрация: 28.07.2011
Сообщений: 101
19.12.2012, 11:06  [ТС]
Мне чтобы понять до конца, я вставляю ОбластьШапкаТаблицы.Параметры.<нужный параметр я прописываю в макете> = Выборка.<и тут снова пишу имя нужного параметра, они одинаковые, имена. >

И получается след:

ТабДок = ЭлементыФормы.ТабДок;
ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ОбластьШапкаТаблицы.Параметры.Номенклату раОсновнойПоставщик = Выборка.НоменклатураОсновнойПоставщик;
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();

Что то не то получется
0
 Аватар для E_x
63 / 63 / 0
Регистрация: 07.10.2012
Сообщений: 165
19.12.2012, 11:17
У вас не Выборка , а ВыборкаДетальныеЗаписи. Я уверен на 100%,что сейчас опять ошибку выдаст, т.к. данные из выборки вытащить можно в цикле методом Следующий(вы это делаете), но в этом случае шапка будет выводиться для каждой строчки.
Вопрос другой будет - это отчет или обработка, если отчет, то не пробовали использовать "Построитель" или СКД. Их плюс в том, что там все автоматизированно, от вас требуется только запрос, выходную форму создаст сам компоновщик.
0
9 / 9 / 1
Регистрация: 28.07.2011
Сообщений: 101
19.12.2012, 11:20  [ТС]
Это отчет. Я его уже сделал, остался один момент, вывести две строчки:название Дистрибутора и его ИНН. Эти строки должны быть отдельно от таблицы в которой выходит вся отчетность, я ошибся, не в Шапке таблицы строки нужно вывести а в Заголовке.
0
 Аватар для E_x
63 / 63 / 0
Регистрация: 07.10.2012
Сообщений: 165
19.12.2012, 11:30
Эти данные обычно получаются не из запроса, т.к. они постоянны. Гляньте в общем модуле есть специальная процедура,для получения контактной информации.
Возможно я сейчас скажу ересь, но сам по началу делал так: для контактной информации делал еще один маленький запрос, из из него потом заполнял заголовки. Процедурку сейчас поищу.

upd
УправлениеКонтактнойИнформацией.Сведения ОЮрФизЛице

Добавлено через 6 минут
Вот пример:
1C
1
2
3
4
5
  СведенияОПолучателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);   
        ОбластьМакета       = Макет.ПолучитьОбласть("ЗаголовокСчета");
        ОбластьМакета.Параметры.Заполнить(Шапка);
        ОбластьМакета.Параметры.ИННПолучателя = СведенияОПолучателе.ИНН;
        ОбластьМакета.Параметры.КПППолучателя = СведенияОПолучателе.КПП;
0
9 / 9 / 1
Регистрация: 28.07.2011
Сообщений: 101
19.12.2012, 16:59  [ТС]
Фишка то в том, что информация, которую я хочу вывести в Заголовок таблицы есть в запросе, я без проблем её вывожу в таблицу в область деталей. Но не нужна в обл. деталей это инфа. Не догоню, как в заголовок вывести.

Добавлено через 2 часа 42 минуты
update
0
 Аватар для E_x
63 / 63 / 0
Регистрация: 07.10.2012
Сообщений: 165
19.12.2012, 18:25
Есть другой вариант. Опять же может неправильный, но думаю рабочий.
Сделать 2 выборки, одну для заголовка, другую для детальных записей. Что-то типо этого должно быть:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Результат = Запрос.Выполнить();
 
 
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
 
 
ТабДок = ЭлементыФормы.ТабДок;
ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();
 
ВыборкаДетальныеЗаписи = Результат.Выбрать();
//добавил вот этот кусочек,для заголовка
ВыборкаШапка=Результат.Выбрать();
ВыборкаШапка.Следующий();
ОбластьЗаголовок.Параметры.Заполнить(ВыборкаШапка);
//добавил вот этот кусочек,для заголовка
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальные Записи);
ТабДок.Вывести(ОбластьДетальныхЗаписей,ВыборкаДетальныеЗапис и.Уровень());
КонецЦикла;
 
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);
В цикле выборку для шапки перебирать не стоит, т.к. там везде будут храниться постоянные данные. Так что должно хватить одного раза.

upd..
Поставщик, которого вы в параметре передаете не является тем, чьи данные вывести нужно?! Просто интуитивно догадываюсь,что так оно и есть. Если так, то все вообще просто, без дополнительных выборок. Поставщик - элемент справочника, если нажать "." после него - увидите все реквизиты, там будут и ИНН, и наименование, и БИК, и т.д. Тогда их просто присвоите,как на предыдущей странице говорили.
0
9 / 9 / 1
Регистрация: 28.07.2011
Сообщений: 101
20.12.2012, 06:09  [ТС]
Да, верно Вы говорите, перед формированием отчета я выбираю период и поставщика, и на макете отчета нужно чтобы отобразилось Наименование поставщика и его ИНН.
0
 Аватар для E_x
63 / 63 / 0
Регистрация: 07.10.2012
Сообщений: 165
20.12.2012, 08:49
Вы поняли как заполнить шапку?! Примерно будет так:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ТабДок = ЭлементыФормы.ТабДок;
ТабДок.Очистить();
ОбластьЗаголовок.Параметры.<НужнаыйПараметр>=Поставщик.<НужныйПараметр>;
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();
 
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальные Записи);
ТабДок.Вывести(ОбластьДетальныхЗаписей,ВыборкаДетальныеЗапис и.Уровень());
КонецЦикла;
 
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);
1
9 / 9 / 1
Регистрация: 28.07.2011
Сообщений: 101
20.12.2012, 11:12  [ТС]
Ура все получилось!!! вот блин я
Спасибо большое. А на счет СКД я учту, разберусь с этой системой. Спасибо ещё раз!

Добавлено через 1 минуту
Вокруг до около прыгал с этим синтаксисом, в этом месте тоже прописывал но видать с ошибками.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.12.2012, 11:12
Помогаю со студенческими работами здесь

Табличный документ и макет
Вопрос такой, как области из макета выводить так, чтоб они шли в одну строку, друг за другом... табдок.вывести(область); выводит...

Табличный документ оформление
Подскажите как можно изменить цвет выводимой области макета при построении (Например если значение в ячейке &gt;100 то ячейку окрасить...

макет - табличный документ
Доброго времени суток! С 1с встречаюсь впервые. Вообщем мне необходимо создать документ и вывести его на печать. Как я поняла (начитавшись...

Выгрузить ТаблицуЗначений в табличный документ
Понимаю, что вопрос глупый, но все же. Есть процедура; Процедура ВыбратьНоменклатуру()Экспорт //Создаем и заполняем новый...

От Новичка: Табличный документ или справочник ?
Дано: Некая таблица в которой примерно 500 тыс. ячеек со значениями. Вопрос: Распихать все данные по справочникам и работать с ними...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru