Имя: Пароль:
1C
 
Открытие печатных форм документа в одном окне табличного документа (обычное приложение)
0 Iceman1990
 
23.09.25
10:13
Здравствуйте! Работаю по книге Гончарова Д. И. "Конфигурирование в системе 1С:Предприятие 8. Основные объекты".

Имеется документ «Продажа товаров». На форме документа есть кнопка «Печать» со следующим кодом:

Процедура ОбработчикПечати (Элемент)
Печать();
КонецПроцедуры

В модуле объекта данного документа находится само определение процедуры Печать. При этом в первой строке содержится ключевое слово «Экспорт».
Печатная форма одна.

Тут же согласно этой книге создается Обработка «Печать расходных накладных», которая содержит реквизиты  «ДатаНачала» и «ДатаОкончания».

Текст процедуры, который выполняется при нажатии на кнопку «Выполнить» указанной формы обработки следующий:

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

Всё это сделано, всё работает.
При активации кнопки «Выполнить» задаю две даты и за указанный диапазон открываются печатные формы документа «ПродажаТоваров», каждая из них в отдельном окне.

Не могу понять суть задания, которое указано в практикуме:
“Когда реализация какого-либо механизма строится на двух процедурах (в модуле объекта и модуле формы), очень важно определить какие части алгоритма в какой процедуре реализуются.

Исправьте реализованный пример таким образом, чтобы печатные формы документа открывались в одном окне табличного документа".

Что имеется ввиду, подскажите, пожалуйста, как можно это реализовать в обычном приложении?

Спасибо всем откликнувшимся! 🙏
1 Волшебник
 
23.09.25
10:16
Процедуру Печать() сделайте функцией, которая возвращает ТабличныйДокумент.

Её результат выводите в итоговый табличный документ с разделителями страниц.

И соблюдайте лесенку программного кода, а то смотреть противно.
2 Iceman1990
 
23.09.25
14:13
Если я правильно понимаю условие задачи, то должно быть так:
1. Из формы документа «Продажа товаров» с помощью кнопки вызывается форма обработчика «Печать расходных накладных».
2. В форме обработчика задаются даты начала и конца периода.
3. Каждый печатная форма документа по продаже, попавшая в указанный диапазон дат, должна открываться НЕ в отдельном окне, а в одном окне табличного документа (видимо через разделитель)? Правильно ли я понимаю? Если да, то трудность заключается в реализации третьего пункта.
3 Волшебник
 
23.09.25
14:17
(2) Вам уже всё объяснили в (1)
4 Мультук
 
гуру
23.09.25
14:22
(2)

Дорогой друг.
Тут куча людей, которые могут по памяти цитировать код
--ЕРП, БП, ЗУП, УТ
--Помнят кучу действующих и нет законов и уложений
--Знают и понимают, как помочь тебе, если бы это была действующая база под текущем БСП

Но  фиг его знает, что там в примерах этой книги, насколько она древняя и почему "Печать" засунули в модуль документа и что там "насочиняли".

P.S.
А какого года книга хоть ?
Может лучше курсы, сразу про управляемые формы?
Говорят, даже хорошие бесплатные можно  найти.


P.P.S.
С бесконечным уважением  к Гончаровой, ни одну из её книг я так и не сподобился прочесть.
5 Волшебник
 
23.09.25
14:25
(4) Учиться лучше на обычных формах, они проще.
6 Мультук
 
гуру
23.09.25
14:27
(5)
Угу. А потом вот это да ?

Глобальная переменная в расширении
7 Волшебник
 
23.09.25
14:27
(6) Ну так не надо пользоваться расширениями.
8 Iceman1990
 
23.09.25
14:31
Данная книга была выпущена в декабре 2007 года
9 Мультук
 
гуру
23.09.25
14:32
P.S.

(7)
Там проблема не в расширениях.
Там человек так и не понял разницу между сервер и клиент,
и чем толстый отличается от тонкого.

Это как в Си "широкую на широкую". Тьфу.
Указатель на указатель. :-)
10 Волшебник
 
23.09.25
14:35
(8) Люди, родившиеся в 2007 году, уже поступили в ВУЗы.
Кроме того, в 2007 году Apple представила свой первый айфон.
11 Iceman1990
 
23.09.25
19:03
(4) Вот такой код функции Печать. Все документы выводятся в каждом отдельном окне

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

КонецФункции
12 Волшебник
 
23.09.25
19:37
(11) Уберите из функции Показать()
Сделайте Возврат ТабДок;

Снаружи действуйте по инструкции в (1)