Как создать Двумерный или Многомерный массив? Код 1C v 8.х ДвумерныйМассив = Новый Массив( 2 , 8 ) ;
ДвумерныйМассив = Новый Массив;
МассивВторогоПорядка = Новый Массив( 8 ) ;
ДвумерныйМассив. Добавить( МассивВторогоПорядка) ;
ДвумерныйМассив. Добавить( МассивВторогоПорядка) ;
Значение = ДвумерныйМассив[2 ][5 ];
Значение = ДвумерныйМассив. Получить( 2 ) . Получить( 5 ) ;
Многомерный массив
Код 1C v 8.2 УП Массив = Новый Массив( 3 , 2 ) ;
Массив[0 ][0 ] = "Знач11" ;
Массив[0 ][1 ] = "Знач12" ;
Массив[1 ][0 ] = "Знач21" ;
Массив[1 ][1 ] = "Знач22" ;
Массив[2 ][0 ] = "Знач31" ;
Массив[2 ][1 ] = "Знач32" ;
Для Каждого Строка Из Массив Цикл
Для Каждого Элемент Из Строка Цикл
Сообщить( Элемент) ;
КонецЦикла ;
КонецЦикла ;
Для ИндексСтрока = 0 По Массив. Количество( ) - 1 Цикл
Для ИндексСтолбец = 0 По Массив[ИндексСтрока]. Количество( ) - 1 Цикл
Сообщить( Массив[ИндексСтрока][ИндексСтолбец]) ;
КонецЦикла ;
КонецЦикла ;
КонецПроцедуры
Категория:
Работа с Массивом, Структурой, Соответств�… Как сделать чтобы при выделении числе в табличном документе, отчете выводилась их сумма? Часто бывает необходимость сложить несколько чисел в печатной форме, например, как это сделано в Excel.
Сегодня решить посмотреть Бухгалтерию КОРП. Нашёл в ней очень интересную штуку: поле в котором показан результат сложения выделенных ячеек печатной формы. Конечно, такую штуку бы правильнее реализовать на уровне платформы. Но коль нет, можно оказывается сделать ручками. Как говориться, и за это богам спасибо.
Вот исходный код из Бухгалтерии КОРП:
Код 1C v 8.х
Функция ВычислитьСуммуВыделенныхЯчеекТабличногоДокумента(ПолеТабличногоДокумента) Экспорт
Сумма = 0 ;
Для Каждого Область Из ПолеТабличногоДокумента. ВыделенныеОбласти Цикл
Если ТипЗнч( Область) = Тип( "ОбластьЯчеекТабличногоДокумента" ) Тогда
Для ИндексСтрока = Область. Верх По Область. Низ Цикл
Для ИндексКолонка = Область. Лево По Область. Право Цикл
Попытка
Сумма = Сумма + Число( СтрЗаменить( ПолеТабличногоДокумента. Область( "R" + Формат( ИндексСтрока, "ЧГ=0" ) + "C" + Формат( ИндексКолонка, "ЧГ=0" ) ) . Текст, " " , "" ) ) ;
Исключение
КонецПопытки ;
КонецЦикла ;
КонецЦикла ;
КонецЕсли ;
КонецЦикла ;
Возврат Сумма;
КонецФункции
Подумав немного, я добавил в функцию ещё расчёт среднего и определение количества ячеек с числами. Получилось вот что:
Код 1C v 8.х Функция ВычислитьСуммуВыделенныхЯчеекТабличногоДокумента(ПолеТабличногоДокумента, average = 0, count = 0) Экспорт
Сумма = 0 ;
count = 0 ;
Для Каждого Область Из ПолеТабличногоДокумента. ВыделенныеОбласти Цикл
Если ТипЗнч( Область) = Тип( "ОбластьЯчеекТабличногоДокумента" ) Тогда
Для ИндексСтрока = Область. Верх По Область. Низ Цикл
Для ИндексКолонка = Область. Лево По Область. Право Цикл
Попытка
vNumber = Число( СтрЗаменить( ПолеТабличногоДокумента. Область( "R" + Формат( ИндексСтрока, "ЧГ=0" ) + "C" + Формат( ИндексКолонка, "ЧГ=0" ) ) . Текст, " " , "" ) ) ;
Сумма = Сумма + vNumber;
count = count + 1 ;
Исключение
КонецПопытки ;
КонецЦикла ;
КонецЦикла ;
КонецЕсли ;
КонецЦикла ;
Если count < > 0 Тогда
average = Сумма / count;
Иначе
average = 0 ;
КонецЕсли ;
Возврат Сумма;
КонецФункции
Результат на картинке:
Да, чуть не забыл самое главное, функцию надо вызвать в обработчике ПриАктивизацииОбласти поля табличного документа.
Автор: Pim Категория:
Табличный документ