Предисловие: Этот способ является лишь альтернативой стандартному, который вы можете почерпнуть из цикла статей от poppy
1. Внешние печатные формы в восьмерке
2. Внешние печатные формы в восьмерке II
3. Обработка для тестирования внешних печатных форм в восьмерке
Как показала практика, применение этого способа оправдано лишь в очень редких случаях. Но сам по себе способ итересен в смысле возможности исполнения процедур и функций, которые будут выполнятся в контексте другого объекта.
Итак. Чтобы далеко не ходить, возьмем типовую 1С Бухгалтерию 1.6. И сделаем для нее внешнюю печатную форму печати счета-фактуры выданного со своим макетом и с возможностью изменения модуля формирования печатной формы.
Мы проделаем такую работу:
1. Создадим внешнюю печатную форму, повторяющую типовую.
2. Заменим в печати в поле грузоотправителя «он же» на данные организации.
3. Немного изменим макет.
Начнем 🙂
Начало ничем не отличается от создания обыной внешней печатной формы.
1. Создаем внешнюю обработку.
2. Назавем ее «ВнешнийСчетФактураВыданный».
3. Добавим реквизит «СсылкаНаОбъект» с типом «ДокументСсылка.СчетФактураВыданный».
4. В модуле обработки создадим экспортную функцию «Печать».
5. Добавим форму, упрощающую отладку (идея была почерпнута с инфостарта). Назовем ее «ФормаПрямойПечати». В ней должно быть полеВвода для ввода значения «СсылкаНаОбъект». А по нажатю на кнопку «Выполнить» будет вызываться наша функция «Печать» с выводом на экран результата.
Процедура КнопкаВыполнитьНажатие(Кнопка)
Печать().Показать();
КонецПроцедуры
Это позволит печатать вызывать нашу обработку без подключения внешней печатной формы, просто открыв файл.
6. Скопируем макет счета фактуры в нашу обработку. Так как этих макетов полно, скопируем все. На всякий случай.
Пока все как обычно. Результат — см рисунок 1.
А вот теперь, начинается «Магия».
7. Создаем еще одну форму. Назовем ее «ФормаСчетаФактуры».
8. Изменим основной реквизит второй формы («ФормаСчетаФактуры»): Поменяем наименование с «ОбработкаОбъект» на «ДокументОбъект», а тип с «ВнешняяОбработка.ВнешнийСчетФактураВыданный» на «ДокументОбъект.СчетФактураВыданный». Обращаю ваше внимание, именно ДокументОбъект!
9. В модуле формы объявим экпортную переменную «ВнОбработка». Она будет содержать объект нашей внешней обработки для доступа к макетам. Почему не реквизит? Потому что при использовании реквизита, она (обработка) оставалась в активной в предприятии, даже после закрытия всех окон.
10. В модуле обработки в функции «Печать» добавим код:
Функция Печать() Экспорт
СчетФактураОбъект = СсылкаНаОбъект.ПолучитьОбъект();
ФормаСчетаФактуры = ПолучитьФорму(«ФормаСчетаФактуры»);
ФормаСчетаФактуры.ДокументОбъект = СчетФактураОбъект;
ФормаСчетаФактуры.ВнОбработка = ЭтотОбъект;
ТабДок = ФормаСчетаФактуры.ПечатьВнешнейФормы();
Возврат(ТабДок);
КонецФункции
Стоит немного отвлечься и объяснить. Итак. При вызове функции «Печать()» из СсылкаНаОбъект мы получаем объект документа СчетаФактуры. Значение этого объект мы используем для передачи его в основной реквизит формы «ФормаСчетаФактуры». Как только мы это сделали, форма «ФормаСчетаФактуры» ничем не отличается от формы, созданной в дереве метаданных в документе «СчетФактураВыданный». То есть, после этого форма «думает» что она — форма документа «СчетФактураВыданный», и ей доступен весь контекст объекта по прямому обращению. И все экспортные переменные, функции и процедуры, реквизиты и табличные части.
Дело за малым:
11. Переносим (методом копировать/вставить) из модуля Документа в модуль формы «ФормаСчетаФактуры» все необходимые процедуры. А их надо сказать у Счета-фактуры много:
- ИнициализацияТаблицыСтрок
- СобратьДанныеПоОтчетКомитентуОПродажах
- СобратьДанныеПоОтчетКомиссионераОПродажах
- СобратьДанныеПоРеализацияТоваровУслуг
- СобратьДанныеПоВозвратТоваровПоставщику
- СобратьДанныеПоПКО
- СобратьДанныеПоСВП
- СобратьДанныеПоПлатежномуОрдеру
- СобратьДанныеПоАкту
- СобратьДанныеПоПередачеОС
- СобратьДанныеПоПередачеНМАОрганизаций
- СобратьДанныеПоОтражениюРеализацииТоваровИУслуг
- СобратьДанныеПоРеализацияУслугПоПереработке
- СобратьДанныеПоПринятиюКУчетуОС
- СобратьДанныеПоМодернизацииОС
- СобратьДанныеПоНачислениеНДСпоСМРхозспособом
- СобратьДанныеСФнаАвансИСуммовуюРазницу
- ПроставитьПрочеркиВПустыеПоля
- ПерезаполнитьСуммыПоУЕвРублях
- ПечатьСчетаФактуры
Но пусть вас не пугает их количество. Как видите большинство из них это «СобратьДанные…». И служебные для печати. Также есть функция «ПечатьСчетаФактуры».
Стоит заметить что все они не экспортные. Именно из-за этого мы их и копировали.
Отдельный разговор по переносу процедуры Печать(…) из модуля документа.
Это самый сложный момент.
Переименуем ее в ПечатьВнешнейФормы. Но мало того, переделаем ее в функцию. Для этого заменим все «Возврат» на Возврат (Неопределено).
А вызов процедуры в конце модуля процедуры
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект, ЭтотОбъект.Метаданные().Представление()), НепосредственнаяПечать);
заменим на
Возврат(ТабДокумент);
Также теперь нам не нужны параметры: КоличествоЭкземпляров, НаПринтер, НепосредственнаяПечать.
Да и параметр «ИмяМакета» нам неактуален. Просто зададим его значение в теле функции:
ИмяМакета = «СчетФактура»;
убрав его из параметров.
12. Осталось заменить вызов общих Макетов на макеты из обработки. Меняем строки вида
Макет = ПолучитьОбщийМакет(«…») и Макет = ПолучитьМакет(«…»)
заменим на
Макет = ВнОбработка.ПолучитьМакет(«…»);
ВСЁ! (практически)
У нас есть внешняя печатная форма Счета-Фактуры, с перенесенными в неё функциями и процедурами формирования и макетами.
Сохраняем. Ага — ругается на «мНадписьПредоплата». Смотрим в модуле документа — это переменная модуля объекта. Объявляем в нашей форме и присваеваем значение(как в модуле документа).
Перем ВнОбработка Экспорт;
Перем мНадписьПредоплата;
//… (все процедуры и функции)
мНадписьПредоплата = «Предварительная оплата»;
Октрываем в 1С предприятие и тестируем!).
Заменяем Грузоотправитель.
В функции ПечатьВнешнейФормы после строк
Если ДанныеДляПечати = Неопределено или ТипЗнч(ДанныеДляПечати) = Тип(«Соответствие») Тогда
Продолжить;
КонецЕсли
Вставляем
// Заменяем в печати «он же» на Организацию
Если ДанныеДляПечати.Грузоотправитель = «он же» тогда
ДанныеДляПечати.Грузоотправитель = ДанныеДляПечати.Организация;
КонецЕсли;
А вот теперь вообще всё! Меняем как хотим макеты, получение данных, формирование печатных форм.
PS. Обработку см во вложении.
Дополнение1. Рассмотрен «сложный» пример. Счет на оплату, накладная и проч печатаются еще легче, но принцип тот же. Критика и замечания приветствуются.
Дополнение2. Работает только на релизе платформы старше 8.1.11.
Дополнение3. Долго думал над картинками. Так и не придумал.
Дополнение4. При подключении внешней печатной формы можно заместить ей штатную, дабы не напрягать юзеров выбором в диалоге (с) Поручик
Дополнение5. Для тестирования и отладки внешней печатной формы вместо создания спецформы в КАЖДОЙ обработке можно воспользоваться инструментом от poppy //infostart.ru/public/14686/ (с) artbear
Дополнение6. Шаблоны для создания внешних печатных форм и примеры внешних печатных форм http://www.infostart.ru/public/67060/ (с) alexk-is
ну ты крут за 10 минут столько операций сделать
Полезная статья. Для чайников, которые недолго думая, будут курочить конфу.
Я бы ещё добавил в статью слова о том, что полученной внешней формой можно заместить штатную, дабы не напрягать юзеров выбором в диалоге. Ведь не все догадаются нажать кнопку «По умолчанию».
Собственно, это я у себя и сделал, заместив почти все штатные формы подключаемыми. Цель: быстрая доработка или исправление в случае необходимости.
(1) Хм. Это просто кажется, что долго делается. На самом деле, когда этим способом создашь несколько печатных форм для разных документов время приближается к этому значению. Тем более, что набор от клиента к клиенту не блещет разнообразностью: счет на оплату, накладная, акт оказания услуг, счет-фактура. Это покрывает 80% просьб изменения печатных форм. Набор этих четырех печатных форм я делаю за 20-25 минут (без внесения изменений).
Так что ваш сарказм напрасен :).
(2) Спасибо за отзыв и замечание :). Одной из причин написания статьи как раз и явились проблемы с обновлением типовых конфигураций снятых с поддержки только лишь по причине изменения печатных форм. И ведь изменят еще черт знает как!
(4) Спасибо за упоминание моей скромной персоны.
Ещё совет по оформлению: раскрась фрагменты программного кода. Разукрашка есть на этом сайте.
Спасибо. Там еще неразрешимые ссылки — реквизиты Документа СчетФактураВыданный полезли, но это легко устраняется. Буду эту идею тиражировать. Вот не могу включиться в проблему: Печать().Показать();
Печать() — все хорошо, а .Показать() уже ругается.
(6) Хм. У меня все отлично. Без всяких неразрешимых ссылок.
(5) Вот убей не пойму как включить разукрашку. Или надо «тупо» выделил — назначил цвет, выделил — цвет? Научите 🙂
(8) Разукрашка
http://infostart.ru/public/19856/
(9) Спасибо 🙂 Буду знать.
Мой виртуальный минус с вами
1. Автор слукавил в п.11 и далее — откуда в общем случае можно узнать, какие процедуры нужно копировать из модуля документа в модуль обработки?
только из изучения кода печати — основного метода Печать.
т.е. сначала нужно скопировать печать к себе, а уж потом по ошибкам синтаксиса найти недостающие процедуры
2. Метод все-таки неудобен — нужно делать кучу копирований и замен кода и типов данных.
ИМХО намного проще тупо скопировать код из модуля формы, поправить все недостающие реквизиты в полученном коде и т.п.
а отладку выполнять не в спец.форме КАЖДОЙ обработки, а спец.обработкой от poppy.
(12) Спасибо за развернутый отзыв! 🙂
1. Хы. Но что хорошо в конфигурациях от 1С так это то, что в них есть кое-какой порядок. И как правило это 1-2 процедуры/функции. Счет-фактура — исключение. Но в целом вы правы, действительно никак не узнать. Но узнавать нужно в любом случае (хоть моим способом, хоть копированием). Либо писать эти процедуры с нуля.
Если не хочется думать — скопировать все, что не экспортное. + переделать процедуру печати на функцию.
2. Про копирование — согласен. Много. Про замен кода (5 шт) и типов данных (1-2 шт в зависимости от того что считать заменой типов данных) — не согласен.
3. Спец обработку от poppy я пробовал. Вещь хорошая, но, видимо, каждому своё. И от случая зависит. Стоит упомянуть в статье 🙂
Насчет простоты — осмелюсь не согласиться 🙂 Для примера: Нужно заменить в печатной форме СчетаФактуры выданного поля «ИтогоСуммаНДС» и «ИтогоВсего» сделать жирными и с размером шрифта 9. Если вы сможете это сделать имея только базу за сравнимое вермя — тогда прошу научить 🙂 (я без сарказма).
(13) Обычная схема создания внешней печатной формы вполне подойдет.
задача простая.
Обычно как раз и тратится 10-15 минут, не больше 🙂
(14) Я уже и расписал факты «подтверждающие» преимущества способа «через форму» (не осмелюсь называть этот метод «своим»), но решил проверить. Проверил, протестировал. И пришел к выводу что, действительно, вы полностью правы! Нет у моего способа выраженных преимуществ. Видимо, дело привычки, так как мне метод «через форму» все равно кажется менее «вниманиеёмким» 🙂
Поменяю-ка я описание статьи 🙂
По материалам статьи написал шаблон. На основе шаблона провел замеры по созданию «типовых» внешних печатных форм. Получил следующие результаты:
Счет — 4 минуты
ТОРГ12 — 4 минуты
Думаю, что если потренироваться, то можно довести до 2 минут 🙂
(16) Выкладывай 🙂
Помогло разобраться с созданием внешних печатных форм, написал шаблон для Приказа о приеме на работу Т-1. завтра попробую тиражнуть на все Т-ХХ. посмотрим скорость.
(16) ого! скоростной Вы 🙂 Я шаблон тож думал создать, но подумав, решил, что мне легче его заново сделать, чем искать где он хранится 🙂
(18) Хы. Признаюсь, очень приятно, когда твоя собственная статья приносит пользу кому-то 🙂
(17) Выложилhttp://www.infostart.ru/public/67060/
Реально здорово 🙂 на базе формы Т-1 за 15 минут (засекал время) сделал внешнюю печатную форму Т-6.
Пасиб, класс! 😎
Благодарю, очень доходчиво написано! 😎
Спасибо, получилось сделать ВПФ Акта вып. работ для ут 10.3. Оказалось не сложно, кто может подсказать как в Акт добавить печать ИНН исполнителя , заказчика. В типовом нету Как такие данные выдёргивать в ПФ, может где доходчиво описано ?
Спасибо.Пригодилось.
Спасибо огромное! Всегда этим способом теперь пользуюсь. Удобно, потому, что без отладчика никак, очень удобно, что если делать так — то на точках останова стопается!
Нормально работает.
Неплохое пособие для обучения созданию печатных форм, да и вооще отчётов. Во всяком случае, на первоначальных этапах обучения программированию в 8-ке очень пригодится. Спасибо!
Спасибо! Очень пригодилось. Но проблема такая : если печать идет из формы «формаПрямойПечати», то на предварительном просмотре ориентация печати = ландшафт, если печать из формы «ФормаСчетафактуры»(т.е из документа), то на просмотре ориентация = портрет и надо обязательно устанавливать перед печатью ландшафт, хотя в модуле формы стоит : ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт.
(30)(29) и другие. Этот способ создания внешних печатных форм — альтернативный!
Стандартный способ смПовышение удобства разработки в среде 1С:Предприятие 8 Пункт 2.5 (раньше был 2.4)
Спасибо. пригодилось для объяснений обучающимся сотрудникам
Спасибо. Помогло разобраться с основами. Сделал несколько внешних печатных форм, такие небольшие руководства с примерами помогают быстрее освоить и понять работу системы.
круто чо. учиться, учиться и еще раз учиться!
на первое время пригодилось
Спасибо, на основе вашей статьи подготовил счет-фактуры адаптированные на платформе 1С:Предприятие 8.2 (8.2.14.540) для конфигурации Бухгалтерия предприятия, редакция 2.0 (2.0.30.8)http://infostart.ru/public/103687/
Спaсибо! Очень пригодилось. Но проблемa такaя : если печaть идет из формы «формаПрямойПечaти», то нa предварительном просмотре ориентация печати = ландшафт, если печaть из формы «ФормаСчетaфактуры»(т.е из документ), то на просмотре ориентация = портрет и надо обязaтельно устанавливать перед печатью ландшaфт, хотя в модуле формы стоит : ТaбДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшaфт.
Здравствуйте! Если есть возможность помогите сделать внешнюю печатную форму счета на оплату покупателю. Задача такая — в 1с заведены три организации — необходимо для каждой из них «вставлять» разные печать и подпись руководителя (как картинки). Скачал шаблоны — подключаю в самом 1с (не в конфигураторе) на выходе — чистый лист, как туда вставть информацию не могу понять.
Спасибо за статью, очень полезное чтиво…
(ту 1) Без тренировки действительно столько операций не сделать, но на втором шаблоне — уже без подсказок получилось сделать внешнюю печать минут за 15…
А вот отладить и отредактировать — согласен, чуть больше времени потребуется…
Ещё раз выражаю автору большую благодарность…
отличная статья
а у меня в КА 1.1 вообще в модуле документа нет перечисленных процедур и функций у счет-фактуры! С ног сбился их искать.
Спасибо, искал именно внешнюю счет фактуру. Будем учиться на ее примере делать собственные внешние печатные формы.
Буду пробовать на основе этой статьи учиться создавать ВПФ для 8.2. Вопрос большие различия между созданием ВПФ под 8.1 и 8.2?
выражаю автору большую благодарность… Как раз то что мне сейчас надо!
Очень ценный пост! Благодарен автору!
Отличные обработки, автору спасибо за шаблоны
спасибо — помогло — оооогромное
Хорошая статья для тех кто только начинает программировать в 1с .
Написано доступно и понятно автору спасибо за труд.
Спасибо за статью, очень пригодилась.
Спасибо, пригодилось!
(31)
пункт 2.5:
«Довольно часто приходится создавать печатные формы к различным объектам конфигураций…»
а вообще сравнение методов создания ВПФ есть? я насчитал 3 метода, но достоинства и недостатки каждого явно не выражены.
(53) AlexO,
Не совсем понял о каких трёх методах речь.
Я знаю только два:
1. Стандартный. Создаем обработку, и пишем код с нуля или копируем его из базы и модифицируем.
2. Альтернатива стандартному (мой). Пишем спец. код для подмены контекста и создаем спец. форму, копируем код из базы и немного его редактируем.
А какой третий?
Что же касается первых двух — что их сравнивать? достаточно попробовать самому каждый из них. Тогда уже станет понятно, что и когда применять. Я же лично был изначально за мой метод, так как к нему привык, да и он мой. Как по мне так, он лёгок для обновления печатных форм при существенном изменении печатных форм и алгоритмов их заполнения в самой базе.
Сейчас же, многие печатные формы формируются вызовом процедур из модуля менеджера передачей ему массива ссылок. И мой метод становится излишним усложнением. А пользоваться разными методами для одного и того же — не есть путь джедая. Так что в любом случае я рекомендую делать ВПФ используя методичку poppy, указанную по ссылке выше и в самой статье.
Попробовал сделать ВПФ Счет-фактура полученный, но выдает такую ошибку в модуле объекта:
Ошибка при вызове метода контекста (ПолучитьОбъект)
СчетФактураОбъект = СсылкаНаОбъект.ПолучитьОбъект();
по причине:
Элемент не выбран!
Вроде все сделал по пунктам и перепроверил.
<СсылкаНаОбъект> — как реквизит ВПФ? Тип установлен?
Да и если это ВПФ, добавлена в конфу как «Дополнительная внешняя печатная форма» и там установлен тип документа, то получать объект не нужно.
СсылкаНаОбъект установлена.
Да я добавил как дополнительную внешнюю печатную форму, сейчас поправлю. Спасибо.
Но в некоторых случаях объект получать надо.
Например:
СсылкаНаОбъект >> Тип: ДокументСсылка >> надо определить новый документ или нет <… Если СчетФактураОбъект.ЭтоНовый() Тогда …> (работает с объектами, но не ссылками)
П.С.
Тип: ДокументСсылка.<Документ> или ДокументОбъект.<Документ>
(58) Amras,
Например:
СсылкаНаОбъект >> Тип: ДокументСсылка >> надо определить новый документ или нет <… Если СчетФактураОбъект.ЭтоНовый() Тогда …> (работает с объектами, но не ссылками)
Если ссылка получена из базы, то СчетФактураОбъект.ЭтоНовый() всегда Ложь.
Если нам не нужно записывать документ, то можно обойтись без получения объекта.
(59)
Вот и возникает вопрос. Зачем в типовых печатных формах реализована эта проверка? А народ не задумываясь, порой, берет код и корректирует только несколько строчек, оставляя исходный.
(60) Amras,
А у меня не возникает.
Народ вообще редко думает. Только чья ж в этом проблема?
(61)
Ну учитывая, что печатная форма не сохраняет объект, а только проверяет его… ну может быть да. В большинстве случаев требуется проведенный или сохраненный документ. Но все равно. Раз возникают вопросы, то надо бы как-то их растолковать.
В код мы вставляем <СчетФактураОбъект = СсылкаНаОбъект.ПолучитьОбъект();>, а зачем нам его получать? Ведь все можно проще сделать. И на сколько я понял, данная обработка вызывается путем вызова команды «Открыть».
Я же делал немножко не так:
— Брал необходимы процедуры для формирования печатной формы;
— Для формы тестирования-отладки писал тот же код, что описан выше:
Процедура КнопкаВыполнитьНажатие(Кнопка)
Печать().Показать();
КонецПроцедуры
— А вот для использования как внешняя печатная форма, другим путем (никаких объектов не получал, ну не встретил я пока случая, чтобы это было реально необходимо):
Функция СформироватьЗапросДляПечати()
Запрос = Новый Запрос;
…
Возврат Запрос.Выполнить();
КонецФункции
Функция Печать() Экспорт
ТабДокумент = Новый ТабличныйДокумент;
…
Выборка = СформироватьЗапросДляПечати().Выбрать();
Макет = ЭтотОбъект.ПолучитьМакет(«МакетФормы»);
…
Пока Выборка.Следующий() Цикл
Макет.Параметры.Заполнить(Выборка);
…
ТабДокумент.Вывести(Макет);
КонецЦикла;
КонецФункции
(62) Amras,
Вопрос был задан по типовым печатным формам. Вот именно по типовым у меня вопросов как правило не возникает.
А статью читали? Или заголовок? Вот прям в заголовке написано, цитирую:»…(через подмену контекста).» Вот для того, чтобы подменить контекст формы нам и нужно получить объект.
Опять же процитирую себя же
Нет, не правильно поняли.
В общем, насколько я понял ситуацию, вы на начале пути освоения 1С. Если так то, эту обработку можно смело не смотреть и не разбирать. Она в обычном приложении-то имела сомнительный смысл, а в управляемом так вообще потеряла свой… ну короче, неактуальная она.
Если что, прошу прощения за свой тон. Уж очень сегодня день тяжелый выдался.
(62) Amras,
Еще попишу.
Вот раньше (сейчас всё реже) в типовых печатных формах часто любили использовать конструкции типа
Это сейчас реквизиты документа в 95% случаев получают запросом по ссылке, а раньше сами же 1С любили напрямую к реквизитам обращаться. А еще любили к процедурам и функциям обращаться, которые используют помимо переданных им параметров значения реквизитов и переменных объекта. Что уж говорить о нетиповых конфигурациях. Так вот, мой способ как раз позволяет для таких вот юродивых типовых печатных форм создать внешнюю, тупо скопировав большинство процедур и функций из модуля объекта.
(63)
То что в управляемом не актуальна, это понятно.
Тон нормальный. Зато все по полочкам раскладывается.
Про начало пути — не верное представление. Но это сугубо личное мнение.
Я все равно не люблю использовать исключительно подстановку типового контекста, т.к. там очень много мусора.
Не внимательно я читал. Теперь понятно зачем вы идете эдаким путем. И если внимательно прочитать мой пост выше, я описал там свой путь, правда я так уже давно не пишу, это писалось году эдак в 2007.
(65) Amras,
Я сейчас её(подстановку контекста) вообще не использую. Но считаю, что сам по себе метод интересен с теоретической точки зрения, а раньше его применение в больших количествах помогало сократить время создания ВПФ. Но такая печатная форма медленней работала, да и как-то некрасиво.
Сейчас же, повторюсь, для типовых конфигураций расстановка временных затрат изменилась. И все плюсы данного метода исчезли.
А вот это интересно. А сейчас как? Или в старом фишка в функции «СформироватьЗапросДляПечати»?
К слову сейчас я просто копирую функцию/процедуру из модуля менеджера объекта, и присваиваю значения необходимых параметров типа:
Ссылка = СсылкаНаОбъект;
Неужто можно проще?
Отличная статья со своими минусами но ВСЕ ЖЕ, автору спасибо
(0) слишком все замуторно описано.
Простые операции, можно было намного проще описать.
И в результате — по этой статье сложно научиться денлать ВПФ, а только — СчетФактуру.
Нет четкого алгоритма и представления.
И удобнее проверять через обработку poppy — тем более, второстепенные к теме разъяснения по поводу второй формы перегружают статью и слишком громоздки.
(68) AlexO,
Спасибо за критику.
Простые операции, можно было намного проще описать.
И в результате — по этой статье сложно научиться денлать ВПФ, а только — СчетФактуру.
Нет четкого алгоритма и представления.
Согласен. С каждым предложением.
А вот с этим не согласен в корне. Вторая форма — она вовсе не для проверки, а для подмены контекста. Форма проверки, о которой вы говорите, она в 5ом пункте. Возможно, взглянув на статью еще раз, вы поменяете мнение о статье. Не говорю о диаметральном, а о лежащем в совсем другой «плоскости», если так говорят о мнении.
PS. Я уже давно осознал, что нужно поменять и название статьи и саму статью, но всё никак не соберусь. Сейчас я вижу эту статью не как инструкцию о печати ВПФ, а как описание способа подмены контекста с демонстрацией использования на примере создания ВПФ типовых конфигураций старых релизов. Во как. Сразу и не выговоришь!
К слову, способ на данный момент представляет из себя чисто теоретический интерес. Практического смысла я в нем не вижу. Я не применял его уже, наверное, года полтора.
(69)
помните, я спрашивал вас —
так вот, в сравнении с обычныч способом создания ВПФ — в чем преимущество подмены контекста при создании ВПФ? пока кроме как теоретического смысла я не нашел 🙂
ну, если осилите — то давайте, ждем.
только чтоб не там сумбурно, как эта статья — а кратко, по делу и последовательно по пунктам 🙂
(70)
а вообще сравнение методов создания ВПФ есть?
а помните, что я вам ответил
Сейчас же, многие печатные формы формируются вызовом процедур из модуля менеджера передачей ему массива ссылок. И мой метод становится излишним усложнением. А пользоваться разными методами для одного и того же — не есть путь джедая. Так что в любом случае я рекомендую делать ВПФ используя методичку poppy, указанную по ссылке выше и в самой статье.
опять процитирую себя же:
Раньше был смысл. Когда в самых потаённых уголках формирования печатных форм обращались к данными не через передаваемую ссылку, а напрямую — к реквизиту объекта. И чтобы не исправлять все такие использования на СсылкаНаОбъект.%ИмяРеквизита%, и заново не переопределять переменные модуля объекта, достаточно было подменить контекст.
(71)
т.е. присвоение
ЭтотОбъект = СсылкаНаОбъект.ПолучитьОбъект() вы назвали «подмена контекста»? 🙂
(72) именно.