Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
20 Янв 2018, 08:14
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Печать шаблона из поля ввода в макете  (Прочитано 2620 раз)

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

Оффлайн luxnlex

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-11-11
  • Сайт: 
  • Профессия: Ученик 1С
Доброго времени суток, уважаемые форумчане!
Я только начинаю программировать на 1С, столкнулся с одной задачкой, но хоть убей мыслей нет как решить...
Взял за пример документ реализацию товаров и услуг, создал реквизит "параметры" с типом строка, на форме создал поле ввода, в нем указал в данных реквизит "параметры". В общем макете ТОРГ-12 в шапке у ячейки задал тип шаблон, а теперь собственно задачка...
Как мне сделать так, что бы например я ввожу в поле ввода текст вида:

"Дата формирования документа: "+#ДатаДокумента#

и что бы он подставлялся в макет (уже в виде: Дата формирования документа: 20.11.2013 00:00)?. При чем значения не оговоренные заранее, что бы можно было в любой момент написать шаблон с одним и более параметром и это все подставлялось в макет.
Как запихнуть это все в макет? Прошу помочь, спать не смогу ведь, пока задачу не решу... Хотя бы в каком направлении копать??? Интересует очень какой тип должен быть у реквизита, нужно ли параметр переводить в строку/обратно и как (были ошибки такие просто), может быть я не правильно задал шаблон...
2 дня думаю уже никак придумать не могу :dfbsdfbsdf: :(
Код приводить не буду, так как, в силу тех знаний, которыми я обладаю на данный момент по 1с, просто стыдно :nhsrm:


Оффлайн sdilshod

  • **
  • Сообщений: 76
  • РЕПУТАЦИЯ: 11
  • КПД: 14%
  • Регистрация: 2013-09-30
  • Сайт: 
  • Профессия: Программист 1С

Сделайте ячейку заполнение параметром и разбирайте(parse) строку для получение нужную строку.
То есть получите строку из поля ввода на подобии "Дата формирования документа:" и "ДатаДокумента".
СтрокаИзПоляВвода = "Дата формирования документа:";
ПараметрИзПолеВвода = "ДатаДокумента";
Выполнить("СтрокаИзПоляВвода=СтрокаИзПоляВвода+Строка(ДатаДокумента)");
областьМакета.Параметры.ИмяПараметра = СтрокаИзПоляВвода;
...

Оффлайн luxnlex

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-11-11
  • Сайт: 
  • Профессия: Ученик 1С

Сделайте ячейку заполнение параметром и разбирайте(parse) строку для получение нужную строку.
То есть получите строку из поля ввода на подобии "Дата формирования документа:" и "ДатаДокумента".
СтрокаИзПоляВвода = "Дата формирования документа:";
ПараметрИзПолеВвода = "ДатаДокумента";
Выполнить("СтрокаИзПоляВвода=СтрокаИзПоляВвода+Строка(ДатаДокумента)");
областьМакета.Параметры.ИмяПараметра = СтрокаИзПоляВвода;
...

Спасибо вам за помощь огромное! :) Но это, к сожалению, немного не то...:trhregerhg:
В общем реализовал частично то что хотел так:

ОбластьМакетаШапка.Параметры.Пар1 = ЭтотОбъект.МойПараметр;
где Пар1 - параметр в макете, МойПараметр - реквизит

Выводить-то выводит, но только с типом ячейки параметр (то есть грубо говоря текст), хотя нужен шаблон, там же несколько будет параметров содержаться.
Как мне донести до 1с, что нужно "Текст1: "+[параметр1]+"Текст2: "+[параметр2] заменить в макете при печати на Текст 1: ЗначениеПараметра1 Текст2: ЗначениеПараметра2
Подскажите пожалуйста, как грамотно перевести спец. символы типа [], либо ##, либо еще какой любой другой и текст содержащийся между спец. символов как параметр? Буду очень вам признателен! :)
P.S. СтрЗаменить тут поможет? Как это реализовать для нескольких параметров? Для текста еще простого я понимаю как пользоваться этой функцией, но тут идей ноль :(

Оффлайн sdilshod

  • **
  • Сообщений: 76
  • РЕПУТАЦИЯ: 11
  • КПД: 14%
  • Регистрация: 2013-09-30
  • Сайт: 
  • Профессия: Программист 1С
	 Стр_ = "ввввввв#пар##пар1##пар2#";
ПозЭлемента = Найти(Стр_,"#");
стр = Сред(Стр_,ПозЭлемента);

ЧислоВхождение = СтрЧислоВхождений(Стр,"#");

МассивПараметров = Новый Массив;
Для с=1 По ЧислоВхождение Цикл

ПозЭлемента = Найти(Стр,"#");
Если (с%2)=0 Тогда
МассивПараметров.Добавить(Сред(Стр,1,ПозЭлемента-1));
КонецЕсли;
стр = Сред(Стр,ПозЭлемента+1);
КонецЦикла;
пар=1;
пар1=2;
пар2=3;


СтруктураПараметров = Новый Структура; //Структура с Вашими параметрами
Для Каждого Стр Из МассивПараметров Цикл
СтруктураПараметров.Вставить(Стр);
Выполнить("СтруктураПараметров[Стр]="+Стр);
КонецЦикла;


Оффлайн luxnlex

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-11-11
  • Сайт: 
  • Профессия: Ученик 1С
	 Стр_ = "ввввввв#пар##пар1##пар2#";
ПозЭлемента = Найти(Стр_,"#");
стр = Сред(Стр_,ПозЭлемента);

ЧислоВхождение = СтрЧислоВхождений(Стр,"#");

МассивПараметров = Новый Массив;
Для с=1 По ЧислоВхождение Цикл

ПозЭлемента = Найти(Стр,"#");
Если (с%2)=0 Тогда
МассивПараметров.Добавить(Сред(Стр,1,ПозЭлемента-1));
КонецЕсли;
стр = Сред(Стр,ПозЭлемента+1);
КонецЦикла;
пар=1;
пар1=2;
пар2=3;


СтруктураПараметров = Новый Структура; //Структура с Вашими параметрами
Для Каждого Стр Из МассивПараметров Цикл
СтруктураПараметров.Вставить(Стр);
Выполнить("СтруктураПараметров[Стр]="+Стр);
КонецЦикла;

Интересная реализация, учту на будущее, спасибо большое, но пока это сложновато :( но свою задумку я реализовал по-другому:
стр=МойРеквизит;
результат=СтрЗаменить(стр, "[Организация]", Организация);
результат=СтрЗаменить(стр, "[Дата]", Дата);
        результат=СтрЗаменить(стр, "[Номер]", Номер);
ОбластьМакетаШапка.Параметры.Пар1 = Результат;
Проблема только в том, что заменяется только последний параметр, то есть номер, если текст в поле ввода формы не равен [номер], то в торг12 печатать будет просто текст из поля ввода документа :dfbsdfbsdf: Объясните пожалуйста как сделать что бы происходил обход всей строки в поле ввода формы и автоматическое подставление замененных параметров в торг12? Может как-то это циклом можно сделать?
Добавлено: 22 Ноя 2013, 22:33

	 Стр_ = "ввввввв#пар##пар1##пар2#";
ПозЭлемента = Найти(Стр_,"#");
стр = Сред(Стр_,ПозЭлемента);

ЧислоВхождение = СтрЧислоВхождений(Стр,"#");

МассивПараметров = Новый Массив;
Для с=1 По ЧислоВхождение Цикл

ПозЭлемента = Найти(Стр,"#");
Если (с%2)=0 Тогда
МассивПараметров.Добавить(Сред(Стр,1,ПозЭлемента-1));
КонецЕсли;
стр = Сред(Стр,ПозЭлемента+1);
КонецЦикла;
пар=1;
пар1=2;
пар2=3;


СтруктураПараметров = Новый Структура; //Структура с Вашими параметрами
Для Каждого Стр Из МассивПараметров Цикл
СтруктураПараметров.Вставить(Стр);
Выполнить("СтруктураПараметров[Стр]="+Стр);
КонецЦикла;

Интересная реализация, учту на будущее, спасибо большое, но пока это сложновато :( но свою задумку я реализовал по-другому:
стр=МойРеквизит;
результат=СтрЗаменить(стр, "[Организация]", Организация);
результат=СтрЗаменить(стр, "[Дата]", Дата);
        результат=СтрЗаменить(стр, "[Номер]", Номер);
ОбластьМакетаШапка.Параметры.Пар1 = Результат;
Проблема только в том, что заменяется только последний параметр, то есть номер, если текст в поле ввода формы не равен [номер], то в торг12 печатать будет просто текст из поля ввода документа :dfbsdfbsdf: Объясните пожалуйста как сделать что бы происходил обход всей строки в поле ввода формы и автоматическое подставление замененных параметров в торг12? Может как-то это циклом можно сделать?

Проблема решена без использования второй переменной, всем спасибо! :bleh:

Последний раз редактировалось: luxnlex; 22 Ноя 2013, 22:33. Причина: Объединение сообщений


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
96 Сообщений
AIFrame
71 Сообщений
alex0402
32 Сообщений
kiksi
27 Сообщений
pavl_vs
24 Сообщений
alexandr_ll
17 Сообщений
andron81_81
16 Сообщений
Norfolk
15 Сообщений
KOI8-R
14 Сообщений
MuI_I_Ika MuI_I_Ika
13 Сообщений

* Кто онлайн

  • Точка Гостей: 201
  • Точка Скрытых: 0
  • Точка Пользователей: 1
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal