![]() |
![]() |
|
Как через обработку вывести на печать строки табличной части справочника | ☑ | ||
---|---|---|---|---|
0
denzo_z
01.10.10
✎
13:58
|
День добрый! Не получается вывести на печать строки табличной части справочника. Большого опыта в 1С на имею лопачу готовую конфу бухгалтерии и на основе ее делаю свою базу данных.
Задача стоит следующая: Нужно из справочника в котором есть табличная часть с несколькими строками с помощью обработки сделать печать этикеток. Получается сделать только реквизиты справочника, но табличную часть не могу осилить. Подскажите Ради бога!!!! |
|||
1
le_
01.10.10
✎
14:00
|
А что именно не получается-то?
Выборку из табличной части сделать? |
|||
2
Sammo
01.10.10
✎
14:01
|
Выбрать запросом табличную часть. См. конструктор запроса (отчетов)
|
|||
3
Дарт Вейдер
01.10.10
✎
14:02
|
Для каждого Стр из ЭлементСправочника.ИмяТаблЧасти цикл
... //здесь выводишь строки Стр на печать ... КонецЦикла |
|||
4
sash-ml
01.10.10
✎
14:02
|
для каждого строкаТЧ из элементсправочника.ТЧ цикл
Начепятать(строкаТЧ); конеццикла; типа того... |
|||
5
denzo_z
01.10.10
✎
14:02
|
Вот что я делаю!!!!
Функция ПечатьЦенника() Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ |ВидеоАрхивСодержание.НомерСтроки, |ВидеоАрхивСодержание.Дата, |ВидеоАрхивСодержание.НаименованиеЗаписи, |ВидеоАрхивСодержание.Хронометраж |ИЗ |Справочник.ВидеоАрхив.Содержание КАК ВидеоАрхивСодержание"; Результат = Запрос.Выполнить().Выбрать(); ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Ценник"; Макет = ПолучитьМакет("Ценник"); ОбластьЦенника = Макет.ПолучитьОбласть("Строка|Столбец"); ТекСтолбец = 0; ТекСтрока = 0; Для Каждого СтрокаТаблицы Из Товары Цикл Если СтрокаТаблицы.Печать Тогда Для Тмп = 1 По СтрокаТаблицы.Количество Цикл ОбластьЦенника.Параметры.Заполнить(СтрокаТаблицы); ОбластьЦенника.Параметры.Наименование = СтрокаТаблицы.Наименование.Наименование; ОбластьЦенника.Параметры.Шкаф = СтрокаТаблицы.Наименование.Шкаф; ОбластьЦенника.Параметры.Секция = СтрокаТаблицы.Наименование.Секция; Если ТекСтолбец = 0 Тогда ТабДокумент.Вывести(ОбластьЦенника); ТабДокумент.НачатьГруппуСтрок("Содержание",Истина); ОбластьМакета = Макет.ПолучитьОбласть("СтрокаС"); Пока Результат.Следующий() Цикл ОбластьЦенника.Параметры.ДатаТ = СтрокаТаблицы.НаименованиеСодержание.Дата; ОбластьЦенника.Параметры.ИмяЗаписиТ = СтрокаТаблицы.НаименованиеСодержание.НаименованиеЗаписи; ТабДокумент.Вывести(ОбластьЦенника); КонецЦикла; ТабДокумент.ЗакончитьГруппуСтрок(); Иначе ТабДокумент.Присоединить(ОбластьЦенника); КонецЕсли; ТекСтолбец = ТекСтолбец + 1; Если ТекСтолбец = 3 Тогда ТекСтрока = ТекСтрока + 1; ТекСтолбец = 0; КонецЕсли; Если ТекСтрока = 3 Тогда ТекСтрока = 0; ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; ТабДокумент.ТолькоПросмотр = Истина; Возврат ТабДокумент; КонецФункции // ПечатьЦенника() |
|||
6
ПульсЪ
01.10.10
✎
14:04
|
запросом юзай, и из него выдергивай тч
|
|||
7
denzo_z
01.10.10
✎
14:06
|
Для начала я форме обработки выбираю какой именно элемент справочника мне нужен, а потом жму печать.
Вот так я выбираю Процедура ОбработкаВыбора(ЗначениеВыбора, Источник) Если ЗначениеЗаполнено(ЗначениеВыбора) Тогда Если ТипЗнч(ЗначениеВыбора) = Тип("СправочникСсылка.ВидеоАрхив") Тогда СтрокаТабличнойЧасти = Товары.Найти(ЗначениеВыбора, "Наименование"); Если СтрокаТабличнойЧасти <> Неопределено Тогда Предупреждение("Это уже подобрано!", 60); Иначе НоваяСтрока = Товары.Добавить(); НоваяСтрока.Код = ЗначениеВыбора.Код; НоваяСтрока.Наименование = ЗначениеВыбора; НоваяСтрока.ДатаК = ЗначениеВыбора.Дата_доб; НоваяСтрока.ОператорК = ЗначениеВыбора.Оператор; НоваяСтрока.СостояниеК = ЗначениеВыбора.Состояние; НоваяСтрока.ТипНосителяК = ЗначениеВыбора.Тип_носителя; НоваяСтрока.ВидЗаписиК = ЗначениеВыбора.ВидЗаписи; НоваяСтрока.ФорматК = ЗначениеВыбора.Формат; НоваяСтрока.Печать = Истина; НоваяСтрока.Количество = 1; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // ОбработкаВыбора() |
|||
8
Дарт Вейдер
01.10.10
✎
14:16
|
вот вместо вот этого
напиши
|
|||
9
Шапокляк
01.10.10
✎
14:20
|
(5) Извините, а это только я не вижу, где в запросе параметр?
|
|||
10
denzo_z
01.10.10
✎
15:12
|
Блин таким образом
Для каждого Стр из СтрокаТаблицы.Наименование.Содержание цикл ОбластьЦенника.Параметры.ДатаТ = Стр.Дата; ОбластьЦенника.Параметры.ИмяЗаписиТ = Стр.НаименованиеЗаписи; ТабДокумент.Вывести(ОбластьЦенника); КонецЦикла в каждом ценнике печатается по строке табчасти , а нужно чтобы все строки одного выбранного элемента справочника печатались в одном ценнике |
|||
11
denzo_z
01.10.10
✎
15:13
|
Я так понимаю нужно начать группу строк!
|
|||
12
Дарт Вейдер
01.10.10
✎
15:19
|
(10) ну ты уж сам там с областью то определись..
телепат из меня не очень, но попробуй вот так: Для каждого Стр из СтрокаТаблицы.Наименование.Содержание цикл ОбластьМакета.Параметры.ДатаТ = Стр.Дата; ОбластьМакета.Параметры.ИмяЗаписиТ = Стр.НаименованиеЗаписи; ТабДокумент.Вывести(ОбластьМакета); КонецЦикла |
|||
13
denzo_z
01.10.10
✎
16:00
|
При выборе одного элемента справочника все работает, но как только добавляю второй выдает ошибку
{Обработка.ПечатьЦенников(37)}: Поле объекта не обнаружено (Наименование) ОбластьЦенника.Параметры.Наименование = СтрокаТаблицы.Наименование.Наименование; Вот код Функция ПечатьЦенника() Экспорт ТекСтолбец = 0; ТекСтрока = 0; ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Ценник"; Макет = ПолучитьМакет("Ценник"); ОбластьЦенника = Макет.ПолучитьОбласть("Строка|Столбец"); Для Каждого СтрокаТаблицы Из Товары Цикл Если СтрокаТаблицы.Печать Тогда Для Тмп = 1 По СтрокаТаблицы.Количество Цикл ОбластьЦенника.Параметры.Заполнить(СтрокаТаблицы); ОбластьЦенника.Параметры.Наименование = СтрокаТаблицы.Наименование.Наименование; ОбластьЦенника.Параметры.Шкаф = СтрокаТаблицы.Наименование.Шкаф; ОбластьЦенника.Параметры.Секция = СтрокаТаблицы.Наименование.Секция; ТабДокумент.Вывести(ОбластьЦенника); ТабДокумент.НачатьГруппуСтрок("СтрокаС",Истина); ОбластьЦенника = Макет.ПолучитьОбласть("СтрокаС"); Для каждого Стр из СтрокаТаблицы.Наименование.Содержание цикл ОбластьЦенника.Параметры.Заполнить(Стр); ОбластьЦенника.Параметры.ДатаТ = Стр.Дата; ОбластьЦенника.Параметры.ИмяЗаписиТ = Стр.НаименованиеЗаписи; ТабДокумент.Вывести(ОбластьЦенника); КонецЦикла; Если ТекСтолбец = 0 Тогда ТабДокумент.ЗакончитьГруппуСтрок(); Иначе ТабДокумент.Присоединить(ОбластьЦенника); КонецЕсли; ТекСтолбец = ТекСтолбец + 1; Если ТекСтолбец = 3 Тогда ТекСтрока = ТекСтрока + 1; ТекСтолбец = 0; КонецЕсли; Если ТекСтрока = 3 Тогда ТекСтрока = 0; ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; //КонецЦикла; КонецЦикла; КонецЕсли; КонецЦикла; ТабДокумент.ТолькоПросмотр = Истина; Возврат ТабДокумент; КонецФункции // ПечатьЦенника() |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |