|
Отобразить номенклатуру в печатной форме. | ☑ | ||
---|---|---|---|---|
0
Godunov
24.05.16
✎
13:38
|
Приветствую специалисты по 1С, возник у меня вопрос, как отобразить в печатной форме наименование номенклатуры из (1)заказа покупателя, (2)счёта на оплату покупателю и (3)реализации товаров и услуг в 1С 8.2 УТ 10.3 (у них 3-их почти что общая форма с данными)?
http://savepic.ru/9883852.png Пишу такой код с запросом: Макет = ПолучитьМакет("СчетЗаказ"); Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Наименование |ИЗ | Справочник.Номенклатура КАК Номенклатура"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Выборка = Запрос.Выполнить().Выбрать(); ТабДок = Новый ТабличныйДокумент; Макет = ПолучитьМакет("СчетЗаказ"); ОбластьМакета = Макет.ПолучитьОбласть("Строка"); Пока Выборка.Следующий() Цикл ОбластьМакета.Параметры.Заполнить(Выборка); ОбластьМакета.Параметры.Наименование = Результат; ТабДок.Вывести(ОбластьМакета); КонецЦикла; ТабДок.Показать(); Но он ничего не выводит... А если так: ОбластьМакета = Макет.ПолучитьОбласть("Строка"); ОбластьМакета.Параметры.Наименование = СсылкаНаОбъект.Номенклатура; ТабДокумент.Вывести(ОбластьМакета); То пишет ошибку: Не удалось сформировать внешнюю печатную форму! Поле объекта не обнаружено (Номенклатура) Есть у кого какие мысли на это счёт. Сам новичок в 1С. |
|||
1
1Сергей
24.05.16
✎
13:40
|
ОбластьМакета.Параметры.Наименование = Результат;
Это пять. Посмотри как сделано в типовых |
|||
2
Jonny_Khomich
24.05.16
✎
13:44
|
ОбластьМакета.Параметры.Наименование = Результат; - убери, может быть заработает
|
|||
3
Любопытная
24.05.16
✎
13:46
|
Мне прям нравится :)
(0) Выбирать номенклатуру надо из табличной части документа, а не из справочника. |
|||
4
Godunov
24.05.16
✎
13:59
|
(2) Заработало, но не так как мне надо, вывело отдельно таблицу с указанием всех позиций номенклатуры из базы...
А хочу получить именно данные номенклатуры из текущего заказа... |
|||
5
polosov
24.05.16
✎
14:01
|
(3) Из РН надо выбирать. Из документа это не путь настоящего джидая.
|
|||
6
Strogg
24.05.16
✎
14:01
|
(4) тыж сам запрос нарисовал где выбираешь из справочника...
и скажи-ка, где у тебя работает параметр запроса "ТекущийДокумент"? |
|||
7
sitex
naïve
24.05.16
✎
14:07
|
(1) + одна байка в бане под пиво В пятницу)
|
|||
8
Godunov
24.05.16
✎
14:10
|
(6) неправильный запрос у меня, понемногу допираю суть, переделываю...
|
|||
9
Strogg
24.05.16
✎
14:12
|
(8) воот. т.е. для ВПФ надо перебирать ту тч СсылкиНаОбъект, которую, собственно, и хочешь распечатать.
|
|||
10
Godunov
24.05.16
✎
14:59
|
(9) А без запроса получится?
Если так пишу: ОбластьМакета = Макет.ПолучитьОбласть("Строка"); ТабДок = Новый ТабличныйДокумент; Выборка = Документы.ЗаказПокупателя.Выбрать(); Пока Выборка.Следующий() Цикл ОбластьМакета.Параметры.Наименование = Выборка.Номенклатура; ТабДокумент.Вывести(ОбластьМакета); КонецЦикла; Пишется: Не удалось сформировать внешнюю печатную форму! Поле объекта не обнаружено (Номенклатура) Или всё таки лучше запросом? |
|||
11
mTema32
24.05.16
✎
15:03
|
(10) У тебя список номенклатуры скорее всего в табличной части заказа Номенклатура. Вот в цикле и перебери эту ТЧ.
типо так: Для Каждого ТекНоменклатура Из ЭтотОбъект.Номенклатура Цикл //тут обработка КонецЦикла; Можно и запросом. Только запрос делай к ТЧ твоего документа. |
|||
12
Godunov
24.05.16
✎
15:07
|
(11) Понял, попробую...
|
|||
13
Godunov
27.05.16
✎
12:14
|
Что-то я завис по этой задаче, сделал запрос через конструктор, но когда нажимаю "Печать" для отображения в печатной форме, выводит только одну позицию номенклатуры из двух в отдельную таблицу…
http://savepic.ru/9868022.png http://savepic.ru/9842422.png Код такой: Запрос = Новый Запрос; Запрос.УстановитьПараметр("Наименование", СсылкаНаОбъект); Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Номенклатура.Наименование КАК Наименование |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Наименование | |СГРУППИРОВАТЬ ПО | РеализацияТоваровУслугТовары.Номенклатура.Наименование"; Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); ТабДок = Новый ТабличныйДокумент; Макет = ПолучитьМакет("СчетЗаказ"); Пока Выборка.Следующий() Цикл ОбластьМакета = Макет.ПолучитьОбласть("Строка"); ОбластьМакета.Параметры.Товар = Выборка.Наименование; ТабДок.Вывести(ОбластьМакета); КонецЦикла; ТабДок.Показать(); Что не так делаю? |
|||
14
Любопытная
27.05.16
✎
12:18
|
(13) У тебя в ТЧ 2 строки.
Выборка = Запрос.Выполнить().Выбрать(); Вот тут ты запрос выполнил и выборку выбрал. Выборка.Следующий(); Вот тут выборку открыл и зашел в первую запись выборки Пока Выборка.Следующий() Цикл Вот тут ты шагнул на следующую запись выборки, при этом предыдущую в макет не вывел. Всё, выборка кончилась. Убери Выборка.Следующий(); после выполнения запроса) |
|||
15
Godunov
27.05.16
✎
12:24
|
(14) Убрал, но теперь он вывел две нужные позиции номенклатуры в ту же самую отдельную таблицу, но никак в нужный мне макет...
http://savepic.ru/9878024.png Подскажете, как вывести в макет? http://savepic.ru/9866760.png |
|||
16
Любопытная
27.05.16
✎
12:25
|
(15) Ну так остальные области макета тоже нужно выводить.
|
|||
17
Godunov
27.05.16
✎
12:30
|
(16) Я хочу для начала вывести номенклатуру, чтобы в дальнейшем переделать макет для остальных данных на вывод. Поэтому в коде только прописал...
ОбластьМакета.Параметры.Товар = Выборка.Наименование; |
|||
18
Любопытная
27.05.16
✎
12:32
|
(17) Ну вот что написал, то и вывелось. В чем вопрос?
|
|||
19
hhhh
27.05.16
✎
12:33
|
(17) ну, то что прописал, то и вывелось. Что тебе не нравится? Если другие части макета пропишешь, тогда они выведутся.
|
|||
20
Godunov
27.05.16
✎
12:35
|
(18) Но он вывел в отдельную таблицу, а надо сюда, где показано красной линией.
http://savepic.ru/9861643.png |
|||
21
Любопытная
27.05.16
✎
12:36
|
(20) А ты эту область (которая над красной линией) вывел?
|
|||
22
Любопытная
27.05.16
✎
12:37
|
ТабДок = Новый ТабличныйДокумент; - создал новую таблицу
Макет = ПолучитьМакет("СчетЗаказ"); Пока Выборка.Следующий() Цикл ОбластьМакета = Макет.ПолучитьОбласть("Строка"); ОбластьМакета.Параметры.Товар = Выборка.Наименование; ТабДок.Вывести(ОбластьМакета); - вывел в таблицу сформированную область КонецЦикла; ТабДок.Показать(); - показал таблицу Всё остальное где-то в другом месте |
|||
23
Godunov
27.05.16
✎
12:37
|
(21) Да, вот тут код:
ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы"); ТабДокумент.Вывести(ОбластьМакета); ////////////////////////////////////////////////////////////// Запрос = Новый Запрос; Запрос.УстановитьПараметр("Наименование", СсылкаНаОбъект); Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Номенклатура.Наименование КАК Наименование |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Наименование | |СГРУППИРОВАТЬ ПО | РеализацияТоваровУслугТовары.Номенклатура.Наименование"; Выборка = Запрос.Выполнить().Выбрать(); //Выборка.Следующий(); ТабДок = Новый ТабличныйДокумент; Макет = ПолучитьМакет("СчетЗаказ"); Пока Выборка.Следующий() Цикл ОбластьМакета = Макет.ПолучитьОбласть("Строка"); ОбластьМакета.Параметры.Товар = Выборка.Наименование; ТабДок.Вывести(ОбластьМакета); КонецЦикла; ТабДок.Показать(); |
|||
24
hhhh
27.05.16
✎
12:40
|
(23) где тут ты выводишь ту область?
|
|||
25
Любопытная
27.05.16
✎
12:41
|
И в чем вопрос?
Выводи свою номенклатуру не в новый таб. документ, а в тот, в который до этого выводил. |
|||
26
Любопытная
27.05.16
✎
12:41
|
Как вообще можно не понимать таких вещей?
|
|||
27
Godunov
27.05.16
✎
12:43
|
(24) ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы");
ТабДокумент.Вывести(ОбластьМакета); http://savepic.ru/9866760.png ШапкаТаблицы |
|||
28
Любопытная
27.05.16
✎
12:44
|
(27) Ну и?
|
|||
29
hhhh
27.05.16
✎
12:44
|
(27) в ТабДок где это выводишь?
|
|||
30
Godunov
27.05.16
✎
12:46
|
(26) В 1С я пока полный ноль, изучаю с азов так сказать, чего-то не понимаю, учусь, поэтому возникают вопросы, которые для вас кажутся простыми...
|
|||
31
hhhh
27.05.16
✎
12:47
|
(30) ну вот ты создал 2 таблицы: ТабДокумент и ТабДок. Зачем тебе 2 таблицы? Сделай одну.
|
|||
32
Любопытная
27.05.16
✎
12:51
|
(30) Да при чем тут азы и "полный ноль". Или вы сами этот код не писали тогда, а просто взяли его непонятно откуда и даже не пытаетесь понять, что происходит.
Вы создали два отдельных табличных документа и в каждый из них выводите разные части макета. А потом удивляетесь, что у вас получается не так, как хочется. Так сделайте так, как хочется, а не что попало с потолка. |
|||
33
GenAcid
27.05.16
✎
12:52
|
ТабДокумент.Показать();
ТабДок.Показать(); А потом думай. |
|||
34
Godunov
27.05.16
✎
13:00
|
(31) (32) Благодарю за критику и объяснение, разъяснение, теперь понял суть. Да я взял коды из разных мест, что-то из инета.
Поправил, вот такой код: Запрос = Новый Запрос; Запрос.УстановитьПараметр("Наименование", СсылкаНаОбъект); Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Номенклатура.Наименование КАК Наименование |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Наименование | |СГРУППИРОВАТЬ ПО | РеализацияТоваровУслугТовары.Номенклатура.Наименование"; Выборка = Запрос.Выполнить().Выбрать(); //ТабДок = Новый ТабличныйДокумент; Макет = ПолучитьМакет("СчетЗаказ"); Пока Выборка.Следующий() Цикл ОбластьМакета = Макет.ПолучитьОбласть("Строка"); ОбластьМакета.Параметры.Товар = Выборка.Наименование; ТабДокумент.Вывести(ОбластьМакета); КонецЦикла; ТабДокумент.Показать(); И результат http://savepic.ru/9845260.png Всё получилось, благодарю за помощь и подсказки...)) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |