Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 18:41

Как выполнить вычисления в ячейке макета печатной формы (УНФ)?

Автор Bulat-IT, 06 фев 2012, 21:00

0 Пользователей и 1 гость просматривают эту тему.

Bulat-IT

Добрый вечер.

Я не профессиональный программист 1С, я больше системный администратор с некоторыми навыками программирования (Turbo Pascal, Delphi и всё такое), так что не обесудьте, если вопрос примитивный. В Яндексе несколько дней пробывал искать ответа, но безрезультатно.

Имеется конфа УНФ 1.3.2.5. Задача! В Счёте на оплату представить Поставщика и Покупателя следующим образом: только наименование жиром и отдельной строчкой, его реквизиты(ИНН, КПП, и всё что там есть еще) строчкой ниже без жира. В стандартном макете счёта имеется ячейка с заполнением "Параметр" в которой находится параметр "ПредставлениеПоставщика". В модуле документа этой строковой переменной присваивается значение типа такого: "ООО "Фирма", ИНН 1657895656, КПП... и т.д." Логично было бы использовать в ячейке, где должно появиться только наименование организации или контрагента, с заполненеим "Шаблон" примерно такую простенькую конструкцию: Лев([НаименованиеПоставщика],найти([НаименованиеПоставщика],", ИНН"). Ну, типа, из строки ПредставлениеПоставщика оставляем всё что слева от набора символов ", ИНН" - а это как раз названия контор.

Но не получается! В результате - пустая строка. Пытался всё выражение взять в квадратные скобки, и каждую функцию облачал в них. Ни как! Пытался использовать функции "Вычислить()" и "Выполнить()" - ни в какую.

НЕУЖЕЛИ НИКАК? НЕУЖЕЛИ ДЛЯ ЭТОЙ Лев([НаименованиеПоставщика],найти([НаименованиеПоставщика],", ИНН") ДЕЛАТЬ ЦЕЛУЮ ВНЕШНЮЮ ПЕЧАТНУЮ ФОРМУ? А?

Стал разбираться в технологии создания внешних печатных форм для приложения в управляемом режиме. Ну ребята!! Ну это же просто смешно!!!

Ради одного плюшевого: Лев([НаименованиеПоставщика],найти([НаименованиеПоставщика],", ИНН"), я должен описать экспортную функцию на пару экранов СведенияОВнешнейОбработке (), потом к ней надо описать функцию ПолучитьТаблицуКоманд(), и еще процедуру ДобавитьКоманду ().

Это всё для плюшевой Лев([НаименованиеПоставщика],найти([НаименованиеПоставщика],", ИНН")!!!

НЕУЖЕЛИ ТАК?!! НЕУЖЕЛИ НИ КАК?!!! Ну может быть есть вариантик, какой-нибудь. Мне еще акт выполненных работ, расходную накладную, и может быть Заказ покупателя переделывать также!

Bulat-IT

И в догонку уж вопрос по этой же теме, если действительно в 1С: Предприятие 8 исключили эту возможность, хотя в 1С:Предприятие 7.7 она была.

Чем объясняют это в 1С? Как отмазываются от моего Лев([НаименованиеПоставщика],найти([НаименованиеПоставщика],", ИНН"), так сказать? Почему, то что в 1С:7.7 я бы сделал за три-четыре минуты, в новой и продвинутой 8-ке, я должен делать с помощью специалиста который выставит мне счет на пару часов своей работы (в Казани это где-то 2 тыр.)?

Dethmontt

Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Bulat-IT

Цитата: Dethmontt от 07 фев 2012, 02:13
Лев() - прекрасно работает

Дорогой Dethmontt, подскажите пожалуйста, что я делаю не так.

В УНФ захожу -> Настройка и администрирование -> Макеты печатных форм -> Счет на оплату -> выбираю форму Счет на оплату.

Открывается макет. В ячейке где стоит Представление поставщика, в свойствах ячейки параметр Заполнение выставляю "Шаблон", в этой ячейке пишу: и так [Лев([ПредставлениеПоставщика], 4)], и так [Лев(ПредставлениеПоставщика, 4)]. Сохраняю, завершаю редактирование. Вывожу на печать счет. И на то, и на то 1С ругается: Поле объекта не обнаружено (ПредставлениеПоставщика).

А что насчет функции Найти(), она будет работать в макете? Ато мне ведь одного лев() не хватает, там же надо указать после какого по номеру символа нужно урезать строку? А у меня контрагенты есть и с 7-ю символами в названии, и с 27-ю. Что-то может быть посоветуете в этом плане.

AntonB

Вы в макете убили поле с именем "ПредставлениеПоставщика".
Поэтому когда в коде идет к нему обращение программа вылетает по ошибке.
Вам именно в этой строке в коде и нужно поставить Ваши "Лев(...)"
Предлагаю полный ИТ сервис небольшой организации в Москве (приходящий сисадмин+1С7.7,1С8.x)

Bulat-IT

Цитата: AntonB от 11 фев 2012, 19:24
Вы в макете убили поле с именем "ПредставлениеПоставщика".
Поэтому когда в коде идет к нему обращение программа вылетает по ошибке.
Вам именно в этой строке в коде и нужно поставить Ваши "Лев(...)"

Спасибо что подсказали, я понял, но... всё равно не работает.

Вставил три ячейки с заполнением "Параметр", внутри содержащие ПредставлениеПоставщика вокруг нужной мне ячейки (думал потом белым шрифтом их спрячу). Всё равно нет. В трёх местах соответственно появилось полное ПредставлениеПоставщика, а в моей ячейке-шаблоне с [Лев(ПредставлениеПоставщика, 4)], выходит белое поле и всё. Если в этом выражении ПредставлениеПоставщика взять в квадратные скобки, в моей ячейке в результате появляется ", 4)]", т.е. 1С не воспринимает вложенности квадратных скобок друг в друга, ей достаточно один раз показать, что это выражение, дальше видимо она понимает, что внутри уже переменные. Но от этого понимания мне теплее не стало, где то натыкался на информацию, что якобы возможность выражений в макетах печатных форм не перенесли из 7.7. Если так, то почему?

DethMontt, ведь у вас работало лев(), какая же хитрость то есть. Поделитесь плиз.

AntonB

В УТ это делается в коде в строчке

ПараметрыПечати.Вставить("ПредставлениеПоставщика", ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,"));

Внутри " " можно указать, какую информацию нужно выводить.
А если хотите, можете сюда свое Лев(...) вставить
Предлагаю полный ИТ сервис небольшой организации в Москве (приходящий сисадмин+1С7.7,1С8.x)

Dethmontt

Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Bulat-IT

Цитата: AntonB от 11 фев 2012, 21:13
В УТ это делается в коде в строчке

ПараметрыПечати.Вставить("ПредставлениеПоставщика", ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,"));

Внутри " " можно указать, какую информацию нужно выводить.
А если хотите, можете сюда свое Лев(...) вставить

Уважаемые, я дико извиняюсь за свою скажем так не врубаемость. Но у меня закралось ощущение, что мы с вами на разные темы говорим. Я спрашиваю, как это сделать непосредственно в макете документа, там где мы прочерчиваем необходимые блоки будующего печатного документа, а не в модуле документа, где можно подредактировать функцию печать(). Это я и сам знаю. Только УНФ на управлемых формах (если не ошибся в названии режима), и там чтобы это сделать нужно либо внести изменения в конфигурацию, со всеми вытекающими последствиями при каждом обновлении, либо, создать внешнюю печатную форму. Причем, создание печатной формы - это уже не дело пяти минут: копируем макет в новую внешнюю обработку, копируем функцию печать, делаем её экспортной, делаем СсылкуНаДокумент и всё. Ведь теперь нужно еще описание еще описание дополнительных функций, которые позволят вписать внешнюю форму в базу данных, и всё такое, там программирования на пару экранов, если я правильно понял.

Я спрашиваю именно о вычислениях внутри макета (грубо говоря, там где очень похоже на Excel), а не в модуле документа (там где очень похоже на программирование). Потому что УНФ, вполне себе стандартным способом прямо из рабочего режима (не из конфигуратора), позволяет практически налету изменить макет документа (где похоже на Excel), там есть отдельный пукнт в разделе настроек.

AntonB

Я же не предлагаю внешнюю печатную форму делать...

В той самой функции Печать (ничего никуда не копируя) нужно поменять одну строчку.
Одну строчку(!) - но в Модуле, а не в Макете.
А изменения заново Вы будете вносить все равно при каждом обновлении -
что в макете, что в модуле - они все равно слетят...

Теорию создания внешней печатной формы я не оспариваю...
но подозреваю, что сделать ее по этой инструкции все равно не получится :)
По крайней мере, я когда делал свою первую форму по инструкции, выяснил,
что она не работает... и потребовались еще некие танцы с бубном, чтобы она заработала :)
Предлагаю полный ИТ сервис небольшой организации в Москве (приходящий сисадмин+1С7.7,1С8.x)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск