![]() |
![]() |
|
Открытие печатных форм документа в одном окне табличного документа (обычное приложение) Волшебник, Iceman1990, Олдж, ДемьянТ, Мультук, lEvGl, Шурик71, youalex, who respawn, LLeonidov, JohnGilbert, Saval1986, crotnn, piter3, KJlag, Dен, yurikmellon2, Prog_man, Михаил Козлов, boozin, Fish, Rokford, _Batoo, Sanchez_22, phabeZ, Галахад, Fedor-1971, Amra, formista2000, takefive, nick86
| ☑ | ||
---|---|---|---|---|
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
|
||||
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) |
|||
14
Iceman1990
23.09.25
✎
19:45
|
(12)
Её результат выводите в итоговый табличный документ с разделителями страниц. Это по инструкции в (1) Как это будет выглядеть с точки зрения программного кода, то есть куда именно в коде это надо вставить? Я понимаю что необходимо написать следующее: ТабДок.ВывестиГоризонтальныйразделительстраниц() Помогите пожалуйста!🙏 |
|||
15
Волшебник
23.09.25
✎
19:52
|
(14)
Пока ВыборкаДок.Следующий() Цикл оДок = ВыборкаДок.Документ.ПолучитьОбъект(); ТД = оДок.Печать(); ИтоговыйТабДок.Вывести(ТД); ИтоговыйТабДок.ВывестиГоризонтальныйРазделительСтраниц(); КонецЦикла; ИтоговыйТабДок.Показать(); |
|||
17
Iceman1990
23.09.25
✎
20:22
|
(15) Ура! Ура! Ура! Спасибо Вам огромнейшее!! Дай Вам Бог здоровья! Заработало :)
Процедура КнопкаВыполнитьНажатие(Кнопка) // Вставить содержимое обработчика. Выборка = Документы.ПродажаТоваров.Выбрать(ДатаНачала, КонецДня(ДатаОкончания)); ИтоговыйТабДок = Новый ТабличныйДокумент; Пока Выборка.Следующий() Цикл оДок = Выборка.ПолучитьОбъект(); ТД = оДок.Печать(); ИтоговыйТабДок.Вывести(ТД); ИтоговыйТабДок.ВывестиГоризонтальныйРазделительСтраниц(); ИтоговыйТабДок.ОтображатьСетку = Ложь; КонецЦикла; ИтоговыйТабДок.Показать(); КонецПроцедуры |
|||
18
Волшебник
23.09.25
✎
20:16
|
(17) 👍 вот и славно
эту строку можно вынести за цикл ИтоговыйТабДок.ОтображатьСетку = Ложь; |
|||
19
Iceman1990
23.09.25
✎
20:21
|
(18) Принял во внимание, исправил. Согласен с Вами!👍
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |