Paste1C
  • API
  • О проекте
  • Контакты
  • Регистрация
  • Вход
 &НаСервере
Процедура СформироватьНаСервере()
	//...
	ТЗДанныеПроформы = Объект.ДанныеПроформы.Выгрузить();
	ТЗДанныеПроформы.Свернуть("Ваучер,ДокументПроформы","СуммаПлатежа"); 

//Создаем программно страницы и табличные части на форме	
	Счетчик = 0;
	Для каждого Строчка Из ТЗДокументыПроформы Цикл
		Счетчик = Счетчик + 1;    //Для добавления к названию страницы постфикса
		ИмяСтраницы = СокрЛП (СтрЗаменить(Строчка.ДокументПроформы.Номер,"-","")); 		
	//Создаем страницу
		Попытка
			НоваяСтраница = ЭтаФорма.Элементы.Добавить(ИмяСтраницы, Тип("ГруппаФормы"), Элементы.ГруппаСтраницы);
			НоваяСтраница.Вид = ВидГруппыФормы.Страница;
			НоваяСтраница.Заголовок = ИмяСтраницы;
		Исключение
			ИмяСтраницы = ИмяСтраницы + "_" + Счетчик;
			НоваяСтраница = Элементы.Добавить(ИмяСтраницы, Тип("ГруппаФормы"), Элементы.ГруппаСтраницы);
			НоваяСтраница.Вид = ВидГруппыФормы.Страница;
			НоваяСтраница.Заголовок = ИмяСтраницы;
		КонецПопытки;
	//Программное создание реквизитов формы под ТабличнуюЧасть
      //Добавляем реквизиты
		ДобавляемыеРеквизиты    = Новый Массив;
		ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("НовТаб" + ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений")));
		ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Ваучер" + ИмяТаблицы, Новый ОписаниеТипов("Строка"), "НовТаб" + ИмяТаблицы));
		ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("СуммаПлатежа" + ИмяТаблицы, Новый ОписаниеТипов("Число"), "НовТаб_" + ИмяТаблицы));
		ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ДокументПроформы" + ИмяТаблицы, Новый ОписаниеТипов("ДокументСсылка.СписаниеСРасчетногоСчета"), "НовТаб" + ИмяТаблицы));
		ИзменитьРеквизиты(ДобавляемыеРеквизиты);
	
		//Создаем ТабличнуюЧасть на выше созданной странице
		НоваяТаблица = Элементы.Добавить("Стр"+ИмяСтраницы,Тип("ТаблицаФормы"),НоваяСтраница);     
		НоваяТаблица.ПутьКДанным = "НовТаб";
		НоваяТаблица.Отображение = ОтображениеТаблицы.Список;
		НоваяТаблица.ТолькоПросмотр = Ложь;
		НоваяТаблица.Подвал = Истина;
		НоваяТаблица.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
		//Прописываем пути к Колонкам Новой Таблицы
		//1.Ваучер
		НоваяКолонка  = Элементы.Добавить("Ваучер"+ИмяСтраницы, Тип("ПолеФормы"), НоваяТаблица);
		НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;      
		НоваяКолонка.ПутьКДанным = "НовТаб.Ваучер";
		НоваяКолонка.Заголовок = "Ваучер";
		//2.СуммаПлатежа
		НоваяКолонка  = Элементы.Добавить("СуммаПлатежа"+ИмяСтраницы, Тип("ПолеФормы"), НоваяТаблица);
		НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;      
		НоваяКолонка.ПутьКДанным = "НовТаб.СуммаПлатежа";
		НоваяКолонка.Заголовок = "Сумма платежа";  
		//ИмяДляДействия = НоваяКолонка.Имя; 
		
		//3.ДокументПроформы
		НоваяКолонка  = Элементы.Добавить("ДокументПроформы"+ИмяСтраницы, Тип("ПолеФормы"), НоваяТаблица);
		НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;      
		НоваяКолонка.ПутьКДанным = "НовТаб.ДокументПроформы";
		НоваяКолонка.Заголовок = "Документ проформы";
		
		НоваяКолонка.ГоризонтальноеПоложениеВШапке = ГоризонтальноеПоложениеЭлемента.Центр;
		НоваяКолонка.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Центр;
		НоваяКолонка.АвтоМаксимальнаяШирина = Ложь;
		НоваяКолонка.МаксимальнаяШирина = 1;
		НоваяКолонка.ГоризонтальноеПоложениеВПодвале = ГоризонтальноеПоложениеЭлемента.Центр;
		
		//Добавляем подвал ТабличнойЧасти
		ДобавляемыеРеквизиты    = Новый Массив; 
		РеквизитПодвала = Новый РеквизитФормы("Итого"+ИмяСтраницы, Новый ОписаниеТипов("Число"));
		ДобавляемыеРеквизиты.Добавить(РеквизитПодвала);
		ИзменитьРеквизиты(ДобавляемыеРеквизиты);
		НоваяКолонка.ПутьКДаннымПодвала = "Итого"+ИмяСтраницы+""; 
		
		Если ТЗДанныеПроформы.Количество()>0 Тогда
			ОтборПоПроформе = Новый Структура;
			ОтборПоПроформе.Вставить("ДокументПроформы", Строчка.ДокументПроформы);
			НоваяТаблицаСОтбором = ТЗДанныеПроформы.НайтиСтроки(ОтборПоПроформе); 
			ВсегоСуммаПлатежей = 0;
			Для каждого СтрокаМассива из НоваяТаблицаСОтбором Цикл
				НовСтрока = НовТаб.Добавить();
				НовСтрока.Ваучер = СтрокаМассива.Ваучер;
				НовСтрока.СуммаПлатежа = СтрокаМассива.СуммаПлатежа;
				НовСтрока.ВалютаПлатежа = СтрокаМассива.ВалютаПлатежа;
				НовСтрока.ДокументПроформы = СтрокаМассива.ДокументПроформы;
				ВсегоСуммаПлатежей = ВсегоСуммаПлатежей + СтрокаМассива.СуммаПлатежа; //Цифра для ИТОГа по Колонке СуммаПлатежа
			КонецЦикла;
		КонецЕсли;
		Элементы["СуммаПлатежа"+ИмяСтраницы+""].ТекстПодвала = ВсегоСуммаПлатежей; //Выводим в ПОДВАЛ Сумму по колонке СуммаПлатежа
		
		НоваяКолонка.УстановитьДействие("ПриИзменении", "СуммаПлатежаПриИзменении"); //вот тут загвоздка Как обновить сумму в подвале если в строках колонки СуммаПлатежа изменили цифру?? 
	
	КонецЦикла;
//Делаем реквизит объекта табличнуюЧасть ДанныеПроформы невидимой
	Попытка
		ЭтаФорма.Элементы.ГруппаДанныеПроформы.Видимость = Ложь;		
	Исключение
	КонецПопытки;			
КонецПроцедуры
{"contextData":{"NaN":{}},"contextMarkers":[]}

Публикация кода

Размещая информацию на сайте, Вы подтверждаете согласие со всеми пунктами Пользовательского соглашения

Замечание к коду:

  • Загрузить конфигурацию
    • ERP 2.4
    • Управление торговлей 10.3
    • Управление торговлей 11.4
    • Бухгалтерия 2.0
    • Бухгалтерия 3.0
    • ЗУП 3.1
    • Розница 2.3
    • УНФ 1.6
    • БСП 3.1
  • Тема
    • Светлая
    • Светлая c подсветкой запросов
    • Темная
    • Темная с подсветкой запросов
  • Режим запроса
  • Поделиться
Код:
Код создания страниц с табличной частью на форме программно. Не пересчитывается ИТОГ в подвале по колонке СуммаПлатежа

© Александр Шкураев 2025