powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Печать расходников на одном листе
22 сообщений из 22, страница 1 из 1
Печать расходников на одном листе
    #35185702
Гостья777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!!! Помогите!!!
Изучаю 1С-8ку
В книге есть пример который надо модернизировать. Есть документ Расходников. В модуле объекта Расходника (не формы, а объекта!) написана процедура:

Процедура Печать() Экспорт
ТабДок = Новый ТабличныйДокумент;
Макет = Документы.Расходная.ПолучитьМакет("Печать");
// Заголовок
Область = Макет.ПолучитьОбласть("Заголовок");
ТабДок.Вывести(Область);
// Шапка
Шапка = Макет.ПолучитьОбласть("Шапка");
Шапка.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(Шапка);
// Товары
Область = Макет.ПолучитьОбласть("ТоварыШапка");
ТабДок.Вывести(Область);
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
Для Каждого ТекСтрокаТовары Из Товары Цикл
ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
ТабДок.Вывести(ОбластьТовары);
КонецЦикла;
// Услуги
Область = Макет.ПолучитьОбласть("УслугиШапка");
ТабДок.Вывести(Область);
ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
Для Каждого ТекСтрокаУслуги Из Услуги Цикл
ОбластьУслуги.Параметры.Заполнить(ТекСтрокаУслуги);
ТабДок.Вывести(ОбластьУслуги);
КонецЦикла;
// Подвал
Подвал = Макет.ПолучитьОбласть("Подвал");
Подвал.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(Подвал);

ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.Показать();
//}}_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ
КонецПроцедуры

В форме диалога в Обработке написана процедура:

Процедура КнопкаВыполнитьНажатие(Элемент)
Выборка=Документы.Расходная.Выбрать(ДатаНачала,КонецДня(ДатаОкончания));
Пока Выборка.Следующий() Цикл
Выборка.ПолучитьОбъект().Печать();
КонецЦикла;
КонецПроцедуры

Комбинация этих 2-х процедур выдает что расходники печатаются в разных окнах, т.е. у меня 2 расходника и 2 окна, будет 3 расходника - будет 3 окна. Как исправить эти модули чтобы расходники печатались в одной форме? Очень-очень нужно!!! Помогите, пожалуйста!
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35185879
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сколько раз будет ТабДок.Показать(); - столько будет и окон.

А многочисленные ТабДок.Вывести() - это последовательный вывод различных элементов печатного документа.

Исходя из этого можно и попрактиковаться.
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35186178
Гостья777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pailСколько раз будет ТабДок.Показать(); - столько будет и окон.

А многочисленные ТабДок.Вывести() - это последовательный вывод различных элементов печатного документа.

Исходя из этого можно и попрактиковаться.

Получается ТабДок нужно выводить 1 раз и наверно во второй процедуре, но если я перенесу ТабДок.Вывести() во вторую процедуру, то программа ругнется, потому что вторая процедура не поймет что такое ТабДок, в общем я капитально запуталась, не бросайте наедине с проблемой!!!
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35186181
Гостья777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гостья777 pailСколько раз будет ТабДок.Показать(); - столько будет и окон.

А многочисленные ТабДок.Вывести() - это последовательный вывод различных элементов печатного документа.

Исходя из этого можно и попрактиковаться.

Получается ТабДок нужно выводить 1 раз и наверно во второй процедуре, но если я перенесу ТабДок.Вывести() во вторую процедуру, то программа ругнется, потому что вторая процедура не поймет что такое ТабДок, в общем я капитально запуталась, не бросайте наедине с проблемой!!!


конечно ТабДок.Показать();
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35186264
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно вынести ТабДок = Новый ТабличныйДокумент;
и ТабДок.Показать()
за пределы первой процедуры и передавать ей его как параметр:
Процедура Печать(табДок) Экспорт

и
ТабДок = Новый ТабличныйДокумент;
Печать(ТабДок);
Печать(ТабДок);
ТабДок.Показать();

Однако следует иметь в виду, что инфраструктура печатных форм в типовых конфигурациях рассчитана именно на такой формат вызова процедур, как в оригинале (отсюда и процедуры экспортируемые)
Потому для упражнений лучше скопировать исходный код процедуры Печать в другую процедуру с другим именем, да в ней и упражняться.
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35186270
Гостья777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pailМожно вынести ТабДок = Новый ТабличныйДокумент;
и ТабДок.Показать()
за пределы первой процедуры и передавать ей его как параметр:
Процедура Печать(табДок) Экспорт

и
ТабДок = Новый ТабличныйДокумент;
Печать(ТабДок);
Печать(ТабДок);
ТабДок.Показать();

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

Большое спасибо заа ответ, к сожалению дома нет 1С-ки, проэкспериментирую завтра на работе, не оставляйте меня, пожалуйста завтра с этой проблемой!!! Еще раз огромное спасибо!!!
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35186397
Гостья777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а можно интересно в первой процедуре заремить ТабДок.Показать();
а во второй попробовать достучаться до нее, например
Выборка.ПолучитьОбъект().Печать().ТабДок.Показать();
или
Документы.Расходная.ТабДок.Показать();

или как можно?
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35186859
Гостья777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pailМожно вынести ТабДок = Новый ТабличныйДокумент;
и ТабДок.Показать()
за пределы первой процедуры и передавать ей его как параметр:
Процедура Печать(табДок) Экспорт

и
ТабДок = Новый ТабличныйДокумент;
Печать(ТабДок);
Печать(ТабДок);
ТабДок.Показать();

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

Спасибо огромное!!! С параметрами сработало!!!

Объясните, пожалуйста, новичку еще - я привыкла работать с таблицами, т.е. создала таблицу - там формирую записи, а в 8-ке получается нет таблиц? Т.е. когда я создаю документ, то грубо говоря я тем самым формирую таблицу и получается сколько документов столько и таблиц? Что-то я в бестабличном варианте путаюсь и не понимаю...
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35186872
Гостья777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как реализовать чтобы документ не разрывался, т.е. у меня сейчас когда выводятся все накладные на одном листе может часть документа остаться на одном листе, а что не поместилось - перенесется на другой, а как сказать программе, что если накладная не помещается чтобы весь документ переносился на другой лист?
Пользуюсь получившимися процедурами:
1.
Процедура ПечатьОдинЛист(ТабДок) Экспорт
Макет = Документы.Расходная.ПолучитьМакет("Печать");
// Заголовок
Область = Макет.ПолучитьОбласть("Заголовок");
ТабДок.Вывести(Область);
// Шапка
Шапка = Макет.ПолучитьОбласть("Шапка");
Шапка.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(Шапка);
// Товары
Область = Макет.ПолучитьОбласть("ТоварыШапка");
ТабДок.Вывести(Область);
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
Для Каждого ТекСтрокаТовары Из Товары Цикл
ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
ТабДок.Вывести(ОбластьТовары);
КонецЦикла;
// Услуги
Область = Макет.ПолучитьОбласть("УслугиШапка");
ТабДок.Вывести(Область);
ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
Для Каждого ТекСтрокаУслуги Из Услуги Цикл
ОбластьУслуги.Параметры.Заполнить(ТекСтрокаУслуги);
ТабДок.Вывести(ОбластьУслуги);
КонецЦикла;
// Подвал
Подвал = Макет.ПолучитьОбласть("Подвал");
Подвал.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(Подвал);

ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;
КонецПроцедуры

2.
Процедура ДействияФормыНаОдномЛисте(Кнопка)
ТабДок = Новый ТабличныйДокумент;
Выборка=Документы.Расходная.Выбрать(ДатаНачала,КонецДня(ДатаОкончания));
Пока Выборка.Следующий() Цикл
Выборка.ПолучитьОбъект().ПечатьОдинЛист(ТабДок);
КонецЦикла;
ТабДок.Показать();

КонецПроцедуры
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35187035
ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Курить метод ПроверитьВывод()
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35187061
Гостья777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЖКурить метод ПроверитьВывод()

Уважаемый, ПЖ, объясните как и куда применить этот метод? я изучаю 1С8 (да и вообще 1С) всего 3-ий день, для меня "метод ПроверитьВывод()" это что-то космическое, даже не знаю что имеено проверять этим методом и где его реализовывать, 2 верхние процедуры - это с помощью мастера, где в них можно применить этот метод? они рабочие только где применить этот метод не представляю, помогите, пожалуйста!
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35187147
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пошаговая инструкция:
...в Конфигураторе
1.нажать Ctrl-Shift-F1 (одновременно 3 кнопки)
2. в окне Синтаксис-Помошник (СП) открыть закладку Индекс
3. Набрать там в строке поиска ПроверитьВывод
4. Внимательно почитать описание метода (это в нижнем окошке закладки)
5. Нажать в СП кнопочку с биноклем ("найти текущий элемент в дереве")
Почитать описание других методов того же объекта.
6. подумать

И учтите, милая...
СП:
- не кушает драгоценный трафик (ваш)
- и не тратит время неопределенного числа пользователей этого форума
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35187162
Гостья777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pailПошаговая инструкция:
...в Конфигураторе
1.нажать Ctrl-Shift-F1 (одновременно 3 кнопки)
2. в окне Синтаксис-Помошник (СП) открыть закладку Индекс
3. Набрать там в строке поиска ПроверитьВывод
4. Внимательно почитать описание метода (это в нижнем окошке закладки)
5. Нажать в СП кнопочку с биноклем ("найти текущий элемент в дереве")
Почитать описание других методов того же объекта.
6. подумать

И учтите, милая...
СП:
- не кушает драгоценный трафик (ваш)
- и не тратит время неопределенного числа пользователей этого форума

Спасибо большое за советы, я ими обязательно воспользуюсь, но возможно ответы на мой вопрос в этом форуме привлекут внимание и других пользователей, а не только мое, я очень благодарна всем кто мне помогает, но вопрос остается в силе.
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35187214
Гостья777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот уважаемый pail стал на меня ругаться, я почитала хэлп, вот что у меня получилось, но подскажите, хоть, начинающему почему не работает? где не правильно? вот код который получился:
Процедура ПечатьОдинЛистНеРазрывать(ТабДок) Экспорт

Макет = Документы.Расходная.ПолучитьМакет("Печать");

СодержаниеСтр=Новый Массив;
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьШапки = Макет.ПолучитьОбласть("Шапка");
ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
ОбластьУслугиШапка = Макет.ПолучитьОбласть("УслугиШапка");
ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
ОбластьПодвала = Макет.ПолучитьОбласть("Подвал");

// Заголовок
Область = Макет.ПолучитьОбласть("Заголовок");
ТабДок.Вывести(Область);
// Шапка
Шапка = Макет.ПолучитьОбласть("Шапка");
Шапка.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(Шапка);
// Товары
Область = Макет.ПолучитьОбласть("ТоварыШапка");
ТабДок.Вывести(Область);
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
Для Каждого ТекСтрокаТовары Из Товары Цикл
ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
ТабДок.Вывести(ОбластьТовары);
КонецЦикла;
// Услуги
Область = Макет.ПолучитьОбласть("УслугиШапка");
ТабДок.Вывести(Область);
ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
Для Каждого ТекСтрокаУслуги Из Услуги Цикл
ОбластьУслуги.Параметры.Заполнить(ТекСтрокаУслуги);
ТабДок.Вывести(ОбластьУслуги);
КонецЦикла;
// Подвал
Подвал = Макет.ПолучитьОбласть("Подвал");
Подвал.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(Подвал);

ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;

Пока ТабДок. ПроверитьВывод (СодержаниеСтр) Цикл
СодержаниеСтр.Добавить(ОбластьЗаголовок); //
СодержаниеСтр.Добавить(ОбластьШапки);
СодержаниеСтр.Добавить(ОбластьТоварыШапка);
СодержаниеСтр.Добавить(ОбластьТовары);
СодержаниеСтр.Добавить(ОбластьУслугиШапка);
СодержаниеСтр.Добавить(ОбластьУслуги);
СодержаниеСтр.Добавить(ОбластьПодвала);
КонецЦикла;
КонецПроцедуры
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35187321
Гостья777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я еще изменила прогу, теперь она выводит каждый из расходников на отдельном листе, ставит разрыв и выводит, помогите мне, подскажите, где я торможу? вот код:

Процедура ПечатьОдинЛистНеРазрывать(ТабДок) Экспорт

Макет = Документы.Расходная.ПолучитьМакет("Печать");

СодержаниеСтр=Новый Массив;
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьШапки = Макет.ПолучитьОбласть("Шапка");
ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
ОбластьУслугиШапка = Макет.ПолучитьОбласть("УслугиШапка");
ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
ОбластьПодвала = Макет.ПолучитьОбласть("Подвал");

// Заголовок
Область = Макет.ПолучитьОбласть("Заголовок");
ТабДок.Вывести(Область);
// Шапка
Шапка = Макет.ПолучитьОбласть("Шапка");
Шапка.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(Шапка);
// Товары
Область = Макет.ПолучитьОбласть("ТоварыШапка");
ТабДок.Вывести(Область);
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
Для Каждого ТекСтрокаТовары Из Товары Цикл
ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
ТабДок.Вывести(ОбластьТовары);
КонецЦикла;
// Услуги
Область = Макет.ПолучитьОбласть("УслугиШапка");
ТабДок.Вывести(Область);
ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
Для Каждого ТекСтрокаУслуги Из Услуги Цикл
ОбластьУслуги.Параметры.Заполнить(ТекСтрокаУслуги);
ТабДок.Вывести(ОбластьУслуги);
КонецЦикла;
// Подвал
Подвал = Макет.ПолучитьОбласть("Подвал");
Подвал.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(Подвал);

ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;

Если ТабДок.ПроверитьВывод(СодержаниеСтр) Тогда
Пока ТабДок.ПроверитьВывод(СодержаниеСтр) Цикл
СодержаниеСтр.Добавить(ОбластьЗаголовок); //
СодержаниеСтр.Добавить(ОбластьШапки);
СодержаниеСтр.Добавить(ОбластьТоварыШапка);
СодержаниеСтр.Добавить(ОбластьТовары);
СодержаниеСтр.Добавить(ОбластьУслугиШапка);
СодержаниеСтр.Добавить(ОбластьУслуги);
СодержаниеСтр.Добавить(ОбластьПодвала);
КонецЦикла;
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

КонецПроцедуры
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35187637
Гостья777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я вот что поняла - не правильно я делаю, я пытаюсь поставить разрыв страницы там где идет формирование расходника, а его надо ставить где мы делаем ТабДок.Показать() - т.е. надо во второй процедуре, а вот как связать - ну не понимаю, не доходит, не бросайте!!! вот коды, которые надо поправить, пожалуйста...

Процедура ПечатьОдинЛистНеРазрывать(ТабДок) Экспорт

Макет = Документы.Расходная.ПолучитьМакет("Печать");

СодержаниеСтр=Новый Массив;
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьШапки = Макет.ПолучитьОбласть("Шапка");
ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
ОбластьУслугиШапка = Макет.ПолучитьОбласть("УслугиШапка");
ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
ОбластьПодвала = Макет.ПолучитьОбласть("Подвал");

// Заголовок
Область = Макет.ПолучитьОбласть("Заголовок");
ТабДок.Вывести(Область);
// Шапка
Шапка = Макет.ПолучитьОбласть("Шапка");
Шапка.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(Шапка);
// Товары
Область = Макет.ПолучитьОбласть("ТоварыШапка");
ТабДок.Вывести(Область);
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
Для Каждого ТекСтрокаТовары Из Товары Цикл
ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
ТабДок.Вывести(ОбластьТовары);
КонецЦикла;
// Услуги
Область = Макет.ПолучитьОбласть("УслугиШапка");
ТабДок.Вывести(Область);
ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
Для Каждого ТекСтрокаУслуги Из Услуги Цикл
ОбластьУслуги.Параметры.Заполнить(ТекСтрокаУслуги);
ТабДок.Вывести(ОбластьУслуги);
КонецЦикла;
// Подвал
Подвал = Макет.ПолучитьОбласть("Подвал");
Подвал.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(Подвал);

ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;

КонецПроцедуры

я так понимаю надо разрыв и проверку ПроверкаВывод() и ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
делать здесь, но вот как...

Процедура ДействияФормыНаОдномЛистеНеРазрывать(Кнопка)

ТабДок = Новый ТабличныйДокумент;
Выборка=Документы.Расходная.Выбрать(ДатаНачала,КонецДня(ДатаОкончания));
Пока Выборка.Следующий() Цикл
Выборка.ПолучитьОбъект().ПечатьОдинЛистНеРазрывать(ТабДок);
КонецЦикла;

ТабДок.Показать();

КонецПроцедуры
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35187908
Гостья777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди добрые, помогите!.... вы же умные, вам же просто, а я только начинаю понимать,можт я вам когда тоже пригожусь... я понимаю что если вывод ТабДок.Показать(); во второй процедуре, то проверка ПроверитьВывод тоже должна быть во второй, и разрыв страницы тоже во второй, но с другой строны я ведь могу проверить ПроверитьВывод только в первой процедуре, т.е. где идет формирование макета, в общем не знаю... я запуталась... не бросайте меня!!!!! пожалуйста...
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35188474
Гостья777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну что Вы мне прямо байкот объявили!!!
где я не права, вот чувствую истина где-то рядом, но не могу понять где...
вот что у меня получилось (но почему-то опять ставит разрыв после каждого расходника):

Модуль который формирует расходник:

Процедура ПечатьОдинЛистНеРазрывать(ТабДок,СодержаниеСтр,Макет) Экспорт

// Заголовок
Область = Макет.ПолучитьОбласть("Заголовок");
ТабДок.Вывести(Область);
// Шапка
Шапка = Макет.ПолучитьОбласть("Шапка");
Шапка.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(Шапка);
// Товары
Область = Макет.ПолучитьОбласть("ТоварыШапка");
ТабДок.Вывести(Область);
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
Для Каждого ТекСтрокаТовары Из Товары Цикл
ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
ТабДок.Вывести(ОбластьТовары);
КонецЦикла;
// Услуги
Область = Макет.ПолучитьОбласть("УслугиШапка");
ТабДок.Вывести(Область);
ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
Для Каждого ТекСтрокаУслуги Из Услуги Цикл
ОбластьУслуги.Параметры.Заполнить(ТекСтрокаУслуги);
ТабДок.Вывести(ОбластьУслуги);
КонецЦикла;
// Подвал
Подвал = Макет.ПолучитьОбласть("Подвал");
Подвал.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(Подвал);

ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;

ТабДок.ВывестиГоризонтальныйРазделительСтраниц();

КонецПроцедуры

модуль из обработки, который формирует общий список расходников на листе:

Процедура ДействияФормыНаОдномЛистеНеРазрывать(Кнопка)

ТабДок = Новый ТабличныйДокумент;
СодержаниеСтр=Новый Массив;
Макет = Документы.Расходная.ПолучитьМакет("Печать");

Выборка=Документы.Расходная.Выбрать(ДатаНачала,КонецДня(ДатаОкончания));
Пока Выборка.Следующий() Цикл
Выборка.ПолучитьОбъект().ПечатьОдинЛистНеРазрывать(ТабДок,СодержаниеСтр,Макет);
КонецЦикла;

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


Если ТабДок.ПроверитьВывод(СодержаниеСтр) Тогда
Пока ТабДок.ПроверитьВывод(СодержаниеСтр) Цикл
СодержаниеСтр.Добавить(ОбластьЗаголовок); //
СодержаниеСтр.Добавить(ОбластьШапки);
СодержаниеСтр.Добавить(ОбластьТоварыШапка);
СодержаниеСтр.Добавить(ОбластьТовары);
СодержаниеСтр.Добавить(ОбластьУслугиШапка);
СодержаниеСтр.Добавить(ОбластьУслуги);
СодержаниеСтр.Добавить(ОбластьПодвала);
КонецЦикла;
//ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); тоже ставит разрыв после
// каждого расходника
КонецЕсли;
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();

ТабДок.Показать();
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35190190
Гостья777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди, если Вы мне не поможите, значит мне будет секир-башка! После работы оставаться нельзя, взломать 8-ку невозможно, поэтому дома тоже ее нет, на работе еще 5 дельфийских проектов, которые надо поддерживать, причем самостоятельно надо изучать 8-ку, времени копаться просто нет, вот 3-ий день над этим сижу урывками, ничего не получается, в языке путаюсь, причем еще два табличных блока Товары и Услуги, которые тоже формируеются с разным количеством записей, как-то надо при формировании отслеживать ПроверитьВывод, но не укладывается в голове что именно надо, вот 2 кода - один из Обработки, другой из Модуля расходника, в паре они формируют вывод расходников в одном окне, как сделать чтобы расходник не разрывался?

Модуль Расходника
Процедура ПечатьОдинЛист(ТабДок) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ(Печать)
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
/////////////////////////////////// ТабДок = Новый ТабличныйДокумент;
Макет = Документы.Расходная.ПолучитьМакет("Печать");
// Заголовок
Область = Макет.ПолучитьОбласть("Заголовок");
ТабДок.Вывести(Область);
// Шапка
Шапка = Макет.ПолучитьОбласть("Шапка");
Шапка.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(Шапка);
// Товары
Область = Макет.ПолучитьОбласть("ТоварыШапка");
ТабДок.Вывести(Область);
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
Для Каждого ТекСтрокаТовары Из Товары Цикл
ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
ТабДок.Вывести(ОбластьТовары);
КонецЦикла;
// Услуги
Область = Макет.ПолучитьОбласть("УслугиШапка");
ТабДок.Вывести(Область);
ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
Для Каждого ТекСтрокаУслуги Из Услуги Цикл
ОбластьУслуги.Параметры.Заполнить(ТекСтрокаУслуги);
ТабДок.Вывести(ОбластьУслуги);
КонецЦикла;
// Подвал
Подвал = Макет.ПолучитьОбласть("Подвал");
Подвал.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(Подвал);

ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;
////////////////////////////////////////////// ТабДок.Показать();
//}}_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ
КонецПроцедуры


Модуль Формы Обработки
Процедура ДействияФормыНаОдномЛисте(Кнопка)
ТабДок = Новый ТабличныйДокумент;
Выборка=Документы.Расходная.Выбрать(ДатаНачала,КонецДня(ДатаОкончания));
Пока Выборка.Следующий() Цикл
Выборка.ПолучитьОбъект().ПечатьОдинЛист(ТабДок);
КонецЦикла;
ТабДок.Показать();

КонецПроцедуры

как их изменить?...
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35190719
RexLim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Знатоки, а не плохо бы и правда поправить прогу, что-то и у меня не срабатывает как подобает
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35190735
ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гостья777Люди, если Вы мне не поможите, значит мне будет секир-башка! После работы оставаться нельзя, взломать 8-ку невозможно, поэтому дома тоже ее нет, на работе еще 5 дельфийских проектов, которые надо поддерживать, причем самостоятельно надо изучать 8-ку, времени копаться просто нет, вот 3-ий день над этим сижу урывками, ничего не получается, в языке путаюсь, причем еще два табличных блока Товары и Услуги, которые тоже формируеются с разным количеством записей, как-то надо при формировании отслеживать ПроверитьВывод, но не укладывается в голове что именно надо, вот 2 кода - один из Обработки, другой из Модуля расходника, в паре они формируют вывод расходников в одном окне, как сделать чтобы расходник не разрывался?

как их изменить?...

попробуй как-то так:

Код: plaintext
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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
Функция Печать() Экспорт
	
	ТабДок = Новый ТабличныйДокумент;
	
	Макет = Документы.Расходная.ПолучитьМакет("Печать");
	// Заголовок
	Область = Макет.ПолучитьОбласть("Заголовок");
	ТабДок.Вывести(Область);
	// Шапка
	Шапка = Макет.ПолучитьОбласть("Шапка");
	Шапка.Параметры.Заполнить(ЭтотОбъект);
	ТабДок.Вывести(Шапка);
	// Товары
	Область = Макет.ПолучитьОбласть("ТоварыШапка");
	ТабДок.Вывести(Область);
	ОбластьТовары = Макет.ПолучитьОбласть("Товары");
	Для Каждого ТекСтрокаТовары Из Товары Цикл
		ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
		ТабДок.Вывести(ОбластьТовары);
	КонецЦикла;
	// Услуги
	Область = Макет.ПолучитьОбласть("УслугиШапка");
	ТабДок.Вывести(Область);
	ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
	Для Каждого ТекСтрокаУслуги Из Услуги Цикл
		ОбластьУслуги.Параметры.Заполнить(ТекСтрокаУслуги);
		ТабДок.Вывести(ОбластьУслуги);
	КонецЦикла;
	// Подвал
	Подвал = Макет.ПолучитьОбласть("Подвал");
	Подвал.Параметры.Заполнить(ЭтотОбъект);
	
	Возврат ТабДок;
	
КонецФункции

Процедура ДействияФормыНаОдномЛисте(Кнопка)
	
	ТабДокОбщий = Новый ТабличныйДокумент;
	
	лчСчетчик =  0 ;
	
	Выборка=Документы.Расходная.Выбрать(ДатаНачала,КонецДня(ДатаОкончания));
	Пока Выборка.Следующий() Цикл
		
		лчСчетчик = лчСчетчик +  1 ;
		лТабДокНакладная = Выборка.ПолучитьОбъект().Печать();
		
		Если лчСчетчик =  1  Тогда
			ТабДокОбщий.Вывести(лТабДокНакладная);
		Иначе
			
			Влезает = ТабДокОбщий.ПроверитьВывод(лТабДокНакладная);
			
			Если НЕ Влезает Тогда
				ТабДокОбщий.ВывестиГоризонтальныйРазделительСтраниц();
			КонецЕсли; 
			
			ТабДокОбщий.Вывести(лТабДокНакладная);
		
		КонецЕсли; 
		
	КонецЦикла;
	
	ТабДокОбщий.ОтображатьСетку = Ложь;
	ТабДокОбщий.Защита = Ложь;
	ТабДокОбщий.ТолькоПросмотр = Ложь;
	ТабДокОбщий.ОтображатьЗаголовки = Ложь;

	ТабДокОбщий.Показать();
	
КонецПроцедуры
...
Рейтинг: 0 / 0
Печать расходников на одном листе
    #35190772
Гостья777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЖ, миленький, Вы СУПЕР!!! Вы ГЕНИЙ!!! Вы САМЫЙ-САМЫЙ-ПРИСАМЫЙ ОТЗЫВЧИВЫЙ ЧЕЛОВЕК НА СВЕТЕ!!! Если бы я была президентом, то свой пост уступила бы ВАМ!!! СПАСИБО ВАМ ОГРОМНОЕ!!!
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Печать расходников на одном листе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]