Имя: Пароль:
1C
 
Создание внешних печатных форм, 1С7.7
0 soloveichik
 
27.02.09
13:13
Добрый день, уважаемые форумчане!

Подскажите, пожалуйста, в чем может быть ошибка. Необходимо сделать внешнюю печатную форму в 1С7.7. Для версии 1С8.1 ответы есть в интернете. Сделать по аналогии мне не удалось - появились ошибки, которые пока не знаю, как исправить. Может быть, в принципе сделано не верно.

Делал внешнюю обработку для документа Поступление МПЗ в конфигурации 1С7.7 Бухгалтерия Упрощенная система налогообложения.

1. Создал внешнюю обработку.

2. Скопировал ее из необходимого документа макет ("Таблица") и пометил его в свою внешнюю обработку. И тут появился первый вопрос. Для документа Поступление МПЗ мне не удалось найти форму М-4 (искал среди документов, отчетов, обработок) Подскажите, где ее (форму М-4) можно найти в конфигураторе ?

3. Далее, скоприровал из документа часть модуля печатной формы. Часть, названную Печать. И тут возникли следующие вопросы. В 8.1 для внешней обработки, для печати измененного документа используется функция Печать (), а в 7.7 идет Процедура Печать(). Понятно, что функция в отличие от процедуры возвращает значение. Нужно ли переименовывать в случае 7.7 Процедуру в Функцию? И если да, то тогда, соответственно функция должна возвращать значение, какое? Объект Таб, который создает новую таблицу?

4. В тексте модуля создаваемой процедуры создал ссылку на необходимый документ, чтобы обработка "подцепляла" тот документ, котрый нам нужен СсылкаНаОбъект = СоздатьОбъект ("Документ.ПоступлениеМПЗ"); //Документ.ПоступлениеМПЗ - это тот документ, который мне необходимо отредактировать.

5. И далее, везде в тексте модуля, где появляются синтаксические ошибки (или функция Проведен не обнаружена, или переменная НомерДок не определена), или другие переменные не определены, поставил ссылку на документ (СсылкаНаОбъект.Проведен или СсылкаНаОбъект.НомерДок)
И так исправляю все ошибки, которые выделяет синтаксическая проверка. И наконец, синтаксических ошибок нет. Ура!
6. В форме обработки добавляю поле "РеквизитДиалога", в свойствах которого указал тип "Документ.ПоступлениеМПЗ", идентификатор "СсылкаНаОбъект").
7. Подцепил в 1С Предприятии созданную печатную форму, выбрал в поле диалога свой документ и .....
появляется надпись об ошибке в строке:
СекцияШапка.МестоХранения = ?(СсылкаНаОбъект.МестоХранения.Выбран()=1,СсылкаНаОбъект.МестоХранения.Наименование,"");
Значение не представляет агрегатный объект (Выбран)

Мои дальнейшие попытки что-то откорректировать, к сожалению, ни к чему не привели...

Пожалуйста, подскажите, как и что нужно сделать правильно. В данном случае это документ "Поступление МПЗ", но могут быть и другие документы.

Спасибо!
1 ТелепатБот
 
гуру
27.02.09
13:13
2 AeDen
 
27.02.09
13:18
2. Общие таблицы, скорее всего (дерево конфигурации - на самом верхнем уровне правый клик).
3. Не нужно.
5. А спозиционироваться на документ?

И вообще нифига не понятно. Что надо было? В 7-ке есть штатный механизм регистрации внешних печатных форм для типовых конфиг. Обработка какая-то... Ищите:)
3 soloveichik
 
27.02.09
13:30
Спасибо! В общих таблицах нашел нужную мне М-4!
Что означает спозиционирваться на документ? (извините за глупыый вопрос :)) )

Что нужно было сделать - нужно было написать внешнюю обработку, которая бы печатала нужный документ, но который был бы изменен. То есть в него необходимо внести простые изменения - добавить логотип и т.п.
4 kalleka
 
27.02.09
14:09
(3) в 1с есть стандартный механизм подключения печатных форм, в ТиСе он выглядит так
в папке ExtForms\PrnForms лежат файлы ert и efd например:
torg-12 изм.ert
torg-12 изм.EFD

в последнем следующий текст
Объект="Документ.Реализация"
Название=Торг-12
Кнопка=Торг-12

в самом внешнем отчете создаешь процедуру приоткрытии()
в ней пишешь что то вроде

Процедура ПриОткрытии()
   ТекДок = Форма.Параметр.Получить("Контекст");
   Печать();
   СтатусВозврата(0);
   Возврат;
КонецПроцедуры

текдок я обычно делаю глобальной переменной

в процедуру печать копируешь алгоритм печати из оригинального дока, везде где идет работа с документом и его реквизитами (вместо выбратьстроки(), текдок.выбратьстроки(), вместо контрагент, текдок.выбратьконтрагент ) Печатную форму тоже копируешь. Все это правишь как тебе надо
5 kalleka
 
27.02.09
14:13
(4)+ теперь когда в документе нажимаешь кнопку выбора печатной формы - твоя печатная форма появится в списке. В моем случае появится надпись "торг-12". Список печатных форм формируется при открытии документа
6 Хряк
 
27.02.09
14:16
http://webfile.ru/2987105
правда это для бух, подрихтуешь сам
7 kalleka
 
27.02.09
14:29
ну вот столько букв написал, а автор пропал, не сообщив о результатах))
8 andrewalexk
 
27.02.09
14:35
:)
вот и появилось поколение которое азы на семерке
пытается делать по аналогии с восьмеркой..

"я слишком стар для этого дерьма"(с)
9 soloveichik
 
27.02.09
14:58
Господа, спасибо за содержательные ответы!
действительно отлучался :))
Сейчас буду пробовать :)), надеюсь все заработает :))
Спасибо!
10 kalleka
 
27.02.09
15:24
(9) главное велосипед с квадратными колесами не изобретай)
11 soloveichik
 
01.03.09
17:06
Доброго времени суток!

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

Но не получилось пока сделать так, чтобы из открытого документа моя форма работала. В списке печатных форм она есть, ее можно выбрать наряду с основной формой, но, выбрав, печатная форма не вызывается.

Копирование в модуль ответственных за это процедур из модуля изначального документа ни к чему кроме появления ошибок не водит :(.

Подскажите, пожалуйста, как и что нужно еще добавить в модуль внешней формы!

Спасибо!
12 victuan1
 
01.03.09
17:08
(11) Посмотри по аналогии как сделаны "родные" внешние печатные формы. Их код унифицирован.
13 soloveichik
 
03.03.09
12:41
Доброго времени суток!
Спасибо всем за дельные рекомендации!
Внешняя форма заработала, как надо :))
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн