1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
The_ka6a4ok 16.12.20 - 18:26 | добрых дней. коротко опишу проблему: количество добавляемых страниц мне неизвестно, для решения я добавил "нумератор", но в реквизиты документа, костыль как по мне, но как иначе.
<code> &НаСервере Процедура НовыйПеревозчикНаСервере() НовыйПеревозчик = Элементы.Добавить("НовыйПеревозчик" + Объект.Нумератор, Тип("ГруппаФормы"), Элементы.Страницы); НовыйПеревозчик.Вид = ВидГруппыФормы.Страница; НовыйПеревозчик.Заголовок = "Информация про перевозчика" + Строка(Объект.Нумератор); ПеревозчикГруппы = Элементы.Добавить("ПеревозчикГруппы" + Объект.Нумератор, Тип("ГруппаФормы"), Элементы.Найти("НовыйПеревозчик" + Объект.Нумератор)); ДобавляемыеРеквизиты = новый Массив(); ТипРеквизита = Новый ОписаниеТипов("СправочникСсылка.Контрагенты");//("Строка"); РеквизитФормы = Новый РеквизитФормы( "Перевозчик" + Объект.Нумератор, //Имя реквизита формы ТипРеквизита, //Тип "", //Путь (Пусто, "Объект", ИмяТЧ) // например "Объект.Товары" "Перевозчик");//Заголовок ДобавляемыеРеквизиты.Добавить(РеквизитФормы); ТипРеквизита = Новый ОписаниеТипов("СправочникСсылка.ДоговорыКонтрагентов"); РеквизитФормы = Новый РеквизитФормы( "Договор" + Объект.Нумератор, //Имя реквизита формы ТипРеквизита, //Тип "", //Путь (Пусто, "Объект", ИмяТЧ) // например "Объект.Товары" "Договор");//Заголовок ДобавляемыеРеквизиты.Добавить(РеквизитФормы); //Заставляем форму создать новые реквизиты ИзменитьРеквизиты(ДобавляемыеРеквизиты); ПолеВвода = Элементы.Добавить("Перевозчик" + Объект.Нумератор, Тип("ПолеФормы"), Элементы.Найти("НовыйПеревозчик" + Объект.Нумератор)); ПолеВвода.Вид = ВидПоляФормы.ПолеВвода; ПолеВвода.ПутьКДанным = "Перевозчик"+Объект.Нумератор; ПолеВвода.УстановитьДействие("ПриИзменении", "КомпанияПеревозчик1"); ПолеВвода = Элементы.Добавить("Договор" + Объект.Нумератор, Тип("ПолеФормы"), Элементы.Найти("НовыйПеревозчик" + Объект.Нумератор)); ПолеВвода.Вид = ВидПоляФормы.ПолеВвода; ПолеВвода.ПутьКДанным = "Договор"+Объект.Нумератор; //ПеревозчикГруппы.ГоризонтальноеПоложение(); НовыйЭлемент2 = Элементы.Добавить("НоваяНадпись" + Объект.Нумератор,Тип("ДекорацияФормы"),НовыйПеревозчик); НовыйЭлемент2.Заголовок = "НоваяНадпись"; КонецПроцедуры &НаКлиенте Процедура КомпанияПеревозчик1() Договор1 = ПолучитьДоговорПоУмолчанию(Объект.Ссылка, Объект.Перевозчик, Объект.Организация, Объект.ВидОперации, Истина); ЭтаФорма.Элементы.Найти("Договор" + Строка(Число(Объект.Нумератор) - 1)).Имя = Договор1; //При такой записи ошибка записи //ЭтаФорма.Договор0 = Договор1; //при такой записи нужный договор находит и вставляет ОбработатьИзменениеДоговора(); КонецПроцедуры &НаКлиенте Процедура НовыйПеревозчик(Команда) НовыйПеревозчикНаСервере(); Попытка Проверка = Элементы.Найти("НовыйПеревозчик" + Объект.Нумератор).Имя; Сообщить(Проверка); Исключение Сообщить("Дорр"); КонецПопытки; Объект.Нумератор = Объект.Нумератор + 1; КонецПроцедуры </code> первая процедура добавляет первую страницу, и неограниченное кол-во страниц далее, то есть таким образом создание реквизитов типа "Реквизит0", "Реквизит1" и тд возможно, ладно. проблема во второй процедуре, по задумке она должна редактировать поле "Договор0" при изменении другого поля(я знаю, что при нумераторе n, я не смогу добавить нужный договор, поэтому страницы будут создаваться поочередно, чтобы нумератор не забился), вопрос заключается в следующем: как это можно реализовать по-другому или как обратиться к реквизиту формы? | ||
SadrArt 1 - 16.12.20 - 19:01 | (0) чо? | ||
acht 2 - 16.12.20 - 19:02 | (0) ЯННП, предположу что ты хочешь получить ЭтотОбъект[ИмяРеквизита] | ||
The_ka6a4ok 3 - 16.12.20 - 19:06 | (2) нет, мне нужно получить объект, но сделать это как-то с извращением, так как ссылку на него я буду лепить из двух значений: первое - "Договор", а второе - значение нумератора, и к этому объекту мне нужно обратиться, чтобы задать значение | ||
acht 4 - 16.12.20 - 19:09 | |||
The_ka6a4ok 5 - 16.12.20 - 19:20 | (4) блин, я не знал что так можно, теперь знаю, спасибо |
|
Список тем форума |