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

Помогите с Макетом и параметрами

Автор AxOn, 08 окт 2010, 06:48

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

AxOn

Привет. Помогите плизз.

У меня выберается контрагент из списка и в зависмости от него нужно что бы изменялись и соответствующие параметры в макете.
Если одинаковые имена  у контрагентов. Как это можно сделать?

МакетДата = ЭлементыФормы.Дата.Значение;
   ТабДок = новый ТабличныйДокумент;
   Макет = Документы.ЗаказПоставщику.ПолучитьМакет("МакетЗаказПоставщику");
   Шапка = Макет.ПолучитьОбласть("Шапка");
   Шапка.Параметры.МНомер = МакетНомер;
   Шапка.Параметры.МДата = МакетДата;
   
   СписокОрганизация = ЭлементыФормы.СписокОрганизация.Значение;
   Контрагенты = Макет.ПолучитьОбласть("Контрагенты");
   
//Возможно вам покажется что я написал какую-то нелепецу = )
           Контрагенты.Параметры.МСписокОрганизация = СписокОрганизация;
   СписокОрганизация = Справочники.Контрагенты = СписокОрганизация;
   СписокОрганизация.ПолучитьФорму(????????????
   
   
   
    ТабДок.Вывести(Контрагенты);
   ТабДок.Вывести(Шапка);
   ТабДок.Показать();

progmikon

Чем точнее вы формулируете вопрос, тем с большей долей вероятности вам помогут.
"У меня выберается контрагент из списка и в зависмости от него нужно что бы изменялись и соответствующие параметры в макете."
Если вы имеете ввиду значение параметров в макете, в данном случае, как я понял, параметр "Контрагенты", области "Контрагенты", то

   СписокОрганизация = ЭлементыФормы.СписокОрганизация.Значение;
   Контрагенты = Макет.ПолучитьОбласть("Контрагенты");
   
          Контрагенты.Параметры.МСписокОрганизация = СписокОрганизация;

Что вы хотели сделать дальше - для меня загадка...
   СписокОрганизация = Справочники.Контрагенты = СписокОрганизация;
   СписокОрганизация.ПолучитьФорму(????????????

AxOn

progmikon что бы в зависимости от выбора из списка организации. Параметры её менялись автаматически в макете.
как ещё написать... Имя организации ИНН. адрес итп. Я делаю макет на примере Накладной товаров.

progmikon

СписокОрганизация = ЭлементыФормы.СписокОрганизация.Значение;
Контрагенты = Макет.ПолучитьОбласть("Контрагенты");
Контрагенты.Параметры.МСписокОрганизация = СписокОрганизация;
Если у вас под ИНН, Адрес - в макете отдельные поля, тогда
ОбластьМакета = Макет.ПолучитьОбласть("ИНН");
ОбластьМакета.Параметры.ИНН = СписокОрганизация.ИНН;
и т.п.

Если у вас все характеристики в одной области, тогда
ОбластьМакета = Макет.ПолучитьОбласть("Контрагент");
ОбластьМакета.Параметры.Заполнить(СписокОрганизация); //главное чтобы у вас имена реквизитов и областей совпадали.

progmikon

Или вопрос в том, как изменить значения в уже открытом макете?

progmikon

Если все же нужно менять данные в открытом макете, необходимо в форму отчета/обработки добавить поле табличного документа. Именно в него вы и будете выводить отчет.
Код кнопки формирования примерно такой:

Процедура КнопкаСформироватьНажатие(Кнопка)
   ТАбдок = ЭлементыФормы.ПолеТабличногоДокумента1;
   Область = ТабДок.НайтиТекст("Покупатель");
   Если ТипЗнч(Область) = Тип("Неопределено") Тогда
      Макет  =ПолучитьМакет("Макет");
      ОбластьМакета = Макет.ПолучитьОбласть("Строка");
      ОбластьМакета.Параметры.Контрагент = ПолеВвода1;
      ТабДок.Вывести(ОбластьМакета);
      ТабДок.Показать(Истина);
   Иначе
      ИмяОбласти = Область.Имя;
      ПозСтр = Найти(ИмяОбласти, "R");
      ПозКол = Найти(ИмяОбласти, "C");
      Стр = Сред(ИмяОбласти, 2, ПозКол-2);
      Кол = Число(Сред(ИмяОбласти, ПозКол+1))+1;
      ТабДок.Область("R" + Стр + "C" + Кол).Текст = ПолеВвода1;
   КонецЕсли;
КонецПроцедуры

В нем есть несколько допущений:
1)  у меня есть в макете  есть область с именем "Строка". В ней первая колонка  содержит текст "Покупатель", а следующая колонка параметр "контрагент". Именно по этому  Кол = Число(Сред(ИмяОбласти, ПозКол+1))+1. в зависимости от расположения ваших областей, вы должны поправить это выражение.
2) строка "покупатель" находится в одной ячейке. (для области необходимо дописать определение позиции).
3) если стр и кол >100 необходимо их дополнительно почистить от непечатаемых символов

AxOn

всё спасибо разобрался. Сейчас немогу разобраться как присвоить табличные значения в макет
Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(СписокОрганизация);

и среди элементов формы есть таблица КонтактТел. Как вытащить из неё значения строк

Наимен = Контрагент.КонтактТел.Наимен.ФУНКЦИИИИИИ , почти все перепробовал немогу присвоить значения

progmikon

Например так:
Для Каждого Текстрока Из КонтактТел Цикл
ОбластьМакета = Макет.ПолучитьОбласть("Телефон");
ОбластьМакета.Параметры.Телефон = ТекСтрока.Телефон;
ТабДок.Вывести(ОбластьМакета);
КонецЦикла;

progmikon

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

progmikon

Ошибся:
СтрокаТелефонов = "";
Для Каждого Текстрока Из КонтактТел Цикл
СтрокаТелефонов = СтрокаТелефонов + ТекСтрока.ТЕЛЕФОН + "; ";
КонецЦикла;
ОбластьМакета = Макет.ПолучитьОбласть("Телефон");
ОбластьМакета.Параметры.Телефон = СтрокаТелефонов;
ТабДок.Вывести(ОбластьМакета);

Теги:

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

Рейтинг@Mail.ru

Поиск