Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/112: Рейтинг темы: голосов - 112, средняя оценка - 4.75
brydys
0 / 0 / 0
Регистрация: 22.12.2008
Сообщений: 5
1

Изменение заголовка печатной формы в зависимости от условий

25.12.2008, 23:05. Просмотров 22054. Ответов 9
Метки нет (Все метки)

Платформа 8.1 Задача такова, что бы в печатной форме в зависимости от склада отправителя изменялся формат времени. Условие такое: Если СкладОтправитель = Кондитерский цех тогда и надо вывести формат даты с часами, минутами и секундами, который описан в функции: "Функция СформироватьЗаголовокДокумента1" Иначе выводится стандартный заголовок, который вызывается из общего модуля.
Мучился, мучился ну никак и подсказать не кому.



Функция СформироватьЗаголовокДокумента1(ДокументОбъект, НазваниеДокумента = "ПеремещениеТоваров")

Возврат НазваниеДокумента + " № " + ОбщегоНазначения.ПолучитьНомерНаПечать(ДокументОбъект)
+ " от " + Формат(ДокументОбъект.Дата, "ДФ=""дд ММ гггг г. ЧЧ:мм:сс""");

КонецФункции
Функция Печать() Экспорт

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст ="ВЫБРАТЬ
| ПеремещениеТоваров.Номер,
| ПеремещениеТоваров.Дата,
| ПеремещениеТоваров.Организация,
| ПеремещениеТоваров.СкладОтправитель КАК Поставщик,
| ПеремещениеТоваров.СкладПолучатель КАК Получатель,
| ПеремещениеТоваров.СкладОтправитель.Представление КАК ПредставлениеПоставщика,
| ПеремещениеТоваров.СкладПолучатель.Представление КАК ПредставлениеПолучателя,
| ПеремещениеТоваров.Грузополучатель
|ИЗ
| Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
|ГДЕ
| ПеремещениеТоваров.Ссылка = &ТекущийДокумент";
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();

ЗапросПоТоварам = Новый Запрос();
ЗапросПоТоварам.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
ЗапросПоТоварам.Текст =
"ВЫБРАТЬ
| ПеремещениеТоваровТовары.Ссылка,
| ПеремещениеТоваровТовары.НомерСтроки,
| ПеремещениеТоваровТовары.Номенклатура,
| ПеремещениеТоваровТовары.Количество,
| ПеремещениеТоваровТовары.ЕдиницаИзмерения КАК ЕдиницаХранения,
| ПеремещениеТоваровТовары.Номенклатура.НаименованиеПолное КАК Товар,
| ПеремещениеТоваровТовары.ЦенаВРознице КАК ЦенаРозн,
| ПеремещениеТоваровТовары.СуммаВРознице КАК СуммаРозн,
| ПеремещениеТоваровТовары.СуммаБезНДС КАК Сумма,
| ПеремещениеТоваровТовары.Цена КАК Цена
|ИЗ
| Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
|ГДЕ
| ПеремещениеТоваровТовары.Ссылка = &ТекущийДокумент";
ВыборкаСтрок = ЗапросПоТоварам.Выполнить().Выгрузить();

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПоступлениеТоваровУслуг_Накладная";
Макет = ПолучитьМакет("Макет");

// Выводим шапку накладной

ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");



Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст ="ВЫБРАТЬ
| ПеремещениеТоваров.СкладОтправитель КАК Поставщик
|ИЗ
| Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
|ИТОГИ ПО
| Поставщик";
Поставщик = Запрос.Выполнить();

Если
Поставщик = Справочники.Склады.НайтиПоКоду("00103") тогда
ОбластьМакета.Параметры.ТекстЗаголовка = СформироватьЗаголовокДокумента1(Шапка, "Накладная на перемещение");

Иначе
ОбластьМакета.Параметры.ТекстЗаголовка = РаботаСдиалогами.СформироватьЗаголовокДокумента(Шапка, "Накладная на перемещение");
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);


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

Вот в этом куске загвоздка.
"00103" Это код Кондитерского цеха в справочнике.
"Поставщик" это псевдоним реквезита СкладОтправитель.



Макет = ПолучитьМакет("Макет");

// Выводим шапку накладной

ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");



Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст ="ВЫБРАТЬ
| ПеремещениеТоваров.СкладОтправитель КАК Поставщик
|ИЗ
| Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
|ИТОГИ ПО
| Поставщик";
Поставщик = Запрос.Выполнить();

Если
Поставщик = Справочники.Склады.НайтиПоКоду("00103") тогда
ОбластьМакета.Параметры.ТекстЗаголовка = СформироватьЗаголовокДокумента1(Шапка, "Накладная на перемещение");

Иначе
ОбластьМакета.Параметры.ТекстЗаголовка = РаботаСдиалогами.СформироватьЗаголовокДокумента(Шапка, "Накладная на перемещение");
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2008, 23:05
Ответы с готовыми решениями:

1с 8.2 БГУ изменение внешней печатной формы
Подскажите пожалуйста новичку в 1с. Мне нужно в БГУ изменить вид РКО и ПКО для документов НД_РКО...

Программное изменение печатной формы (макета)
Доброго времени суток! Подскажите, как программно вставить в макет строку, содержащую...

Вывод заголовка в печатной форме
Привет, товарищи! Делал внешнюю печатную форму к документу "Зарплата к выплате". Там всё простенько...

Изменение цвета полей в зависимости от условий
Доброго вечера господа, подскажите пожалуйста как можно закрасить строку, при соблюдении...

Изменение размера Button в зависимости от длины заголовка
Здравствуйте! Если ли возможность кодом изменить размер кнопки в C# в зависимости от длины ее...

9
umkmowm181538
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
28.12.2008, 23:41 2
не понял. Смотрели в отладчике в какой строке ошибка? Неправильно формируется именно дата или вообще процедура не выполняется?
0
Rymot11111
0 / 0 / 0
Регистрация: 16.04.2008
Сообщений: 123
29.12.2008, 08:54 3
Шапка = Запрос.Выполнить().Выбрать(); // формируется выборка

Шапка.Следующий();

а там где ошибка...... есть только результат запроса.

Поставщик = Запрос.Выполнить();

Если
Поставщик = Справочники.Склады.НайтиПоКоду("00103") тогда
ОбластьМакета.Параметры.ТекстЗаголовка = СформироватьЗаголовокДокумента1(Шапка, "Накладная на перемещение");

Иначе
ОбластьМакета.Параметры.ТекстЗаголовка = РаботаСдиалогами.СформироватьЗаголовокДокумента(Шапка, "Накладная на перемещение");
КонецЕсли;
0
brydys
0 / 0 / 0
Регистрация: 22.12.2008
Сообщений: 5
29.12.2008, 13:37 4
Добавил Ваш текст как написано ниже.
Стала выскакивать служебное сообщение при формировании печатной формы:"Не удалось сформировать внешнюю печатную форму! Поле объекта не обнаружено (Номер)"


Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст ="ВЫБРАТЬ
| ПеремещениеТоваров.СкладОтправитель КАК Поставщик
|ИЗ
| Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
|ИТОГИ ПО
| Поставщик";

Шапка = Запрос.Выполнить().Выбрать(); // формируется выборка
Шапка.Следующий();
Поставщик = Запрос.Выполнить();
unknown181538 , оработка идёт но проходит только после "иначе" первое условие не выполняется.
0
29.12.2008, 13:37
Rymot11111
0 / 0 / 0
Регистрация: 16.04.2008
Сообщений: 123
29.12.2008, 15:41 5
Да уж..........

Поставщик = Запрос.Выполнить().Выбрать(); // выборка запроса
ПоставщикДок = Поставщик.Следующий();


Если
ПоставщикДок = Справочники.Склады.НайтиПоКоду("00103") тогда
ОбластьМакета.Параметры.ТекстЗаголовка = СформироватьЗаголовокДокумента1(Шапка, "Накладная на перемещение");

Иначе
ОбластьМакета.Параметры.ТекстЗаголовка = РаботаСдиалогами.СформироватьЗаголовокДокумента(Шапка, "Накладная на перемещение");
КонецЕсли;
0
brydys
0 / 0 / 0
Регистрация: 22.12.2008
Сообщений: 5
29.12.2008, 16:12 6
Всё равно ругается на "Номер".
0
umkmowm181538
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
30.12.2008, 12:07 7
Можно попробовать отказаться от процедуры сформировать номер написав Шапк.номер+Шапка.дата...
Можете выложить обработку - интересно стало)
0
brydys
0 / 0 / 0
Регистрация: 22.12.2008
Сообщений: 5
30.12.2008, 13:19 8
Обработка во вложении.
Посмотреть вложение __________________________.zip
0
umkmowm181538
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
30.12.2008, 21:05 9
На грузополучателя ругался...

Все, что связано с грузополучателем убрал. Я так понял, с ним вы разберетесь.
"Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();"
Вот эти строки написаны два раза. Причем во второй раз переменная "Запрос" содержит уже другое значение. Соответственно второй вызов надо просто убрать.
ПС. Для отладки внешней формы наберите в глобальном поиске "Обработка.Печать()" и поставьте перед этим точку останова.

А теперь, чтоб работало :
Если
СокрЛП(ссылкаНаОбъект.СкладОтправитель.код)="00103" тогда
Но если все-таки хотите через запрос, разберитесь там с перемнными поставщик и поставщикДок. Поле кода отправителя надо искать в ПоставщикДок.
0
brydys
0 / 0 / 0
Регистрация: 22.12.2008
Сообщений: 5
31.12.2008, 10:18 10
Спасибо Вам огромное!!! Всё заработало. И С Новым Годом!
0
31.12.2008, 10:18
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2008, 10:18

Реализовать изменение условий проверки в зависимости от значений в CheckBox
Здравствуйте! Программа обрабатывает любое количество любых файлов в папке(и подпапках) на...

Изменение заголовка формы
Добрый день! Подскажите пожалуйста, как убрать шапку и окантовку формы (на событии onClick), затем...

Изменение заголовка программы (формы)
Народ подскажите пожалуйста как изменять заголовок программы... private static extern IntPtr...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.