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

Легкий вопрос для профи. Алгоритм. Пример Вывод массива данных в ТЧ внешней обработки обычное приложение.

Автор You_0, 28 янв 2023, 16:23

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

You_0

Ученик. Необходимо во внешней обработке создать форму с табличной частью создать одну колонку и вывести массив данных в одной из колонок таблиц. Обычное приложение.

Внешнюю форму, ТЧ (выделена красным на фото), и Реквизит к ней (одна колонка "фрукты") я создать могу,Неверный ID вложения.   в модуле формы прописываю массив данных фрукты (яблоки, груши, апельсины)

Вопрос!!!!

Какой синтаксис мне нужно прописать в модуле формы чтобы при запуске в ТЧ, в колонке выводились пронумерованный
массив данных т.е в первой колонке яблоки, во 2 - груши, в 3 - апельсины.

Я уже второй день перерываю ютуб и яндекс, точного решения найти не могу, вот даже зарегистрировался здесь.

Afinogen

то есть у вас есть  массив (яблоки, груши и т.д.) а вам надо  каждое значение в отдельную колонку вывести?

делайте так

1. вариант - оттолкнувшись от массива


НоваяСтрока = Таблица.Добавить();
КолонкиТаблицы = Таблица.Колонки;

Для Н=0 ПО ВашМассив.ВГраница()  Цикл
 НоваяСтрока[КолонкиТаблицы[Н].Имя] = ВашМассив[Н];
КонецЦикла;


тут главное что бы индекс значения в массиве совпадал с индексом колонки в таблице
вариант 2 оттолкнувшись от таблицы


НоваяСтрока = Таблица.Добавить();
КолонкиТаблицы = Таблица.Колонки;
ИндексКолонки = 0;

Для Каждого ТекущаяКолонка ИЗ КолонкиТаблицы  Цикл
НоваяСтрока[ТекущаяКолонка .Имя] = ВашМассив[ИндексКолонки];

ИндексКолонки  = ИндексКолонки +1;

КонецЦикла


You_0

У меня одна колонка ("фрукты" - является табличным реквизитом) и один массив "ф" (яблоки, груши и т.д.)
Моя задача чтобы в этой колонке "фрукты"  в каждой новой строчке этой колонке  выводилось по одному элементу массива:

фрукты
______


яблоки
------
груши
------
. . . .

Вот я написал в модуле код:

ф = новый массив;
ф.Добавить("Яблоки");
ф.Добавить("Груши");
ф.Добавить("Апельсины");


фрукты = Таблица.фрукты;
НоваяСтрока = Таблица.Добавить();
Для Н=0 ПО ф.ВГраница()  Цикл
   

 НоваяСтрока[ф[Н].фрукты] = ф[Н];
КонецЦикла;

Выводится две ошибки я не могу понять что не так.

{ВнешняяОбработка.Пример2.Форма.Форма.Форма(19,10)}: Переменная не определена (Таблица)
фрукты = <<?>>Таблица.фрукты; (Проверка: Толстый клиент (обычное приложение))

{ВнешняяОбработка.Пример2.Форма.Форма.Форма(20,15)}: Переменная не определена (Таблица)
НоваяСтрока = <<?>>Таблица.Добавить(); (Проверка: Толстый клиент (обычное приложение)

Максим75

You_0, ну надо еще создать эту самую таблицу значений

Таблица = Новый ТаблицаЗначений;
НоваяСтрока = Таблица.Добавить();

потом я так понимаю эту Таблицу необходимо еще на форму кинуть так?
на форме есть элемент связанный с реквизитом типа ТаблицаЗначений, так?

тогда после всего еще надо
ЭлементыФормы.Фрукты.Загрузить(Таблица); - это выгружается сама созданная таблица значений в реквизит формы
ЭлементыФормы.Фрукты.СоздатьКолонки() - это обязательно, если обычное приложение; вроде как написано, что реквизит называется Фрукты.


You_0

Максим75, Можно ли уже имея табличную часть создать код который заставлял имеющийся массив распределяться в этой самой ТЧ? Если да то как это сделать?

Afinogen

Как раз в данном случае когда вы сделали реквизит то вам достаточно писать

Новаястрока = табличнаячасть1.добавить()

You_0

Я запутался давайте еще раз
Моя задача чтобы создать обработку с табличной частью:


1. На данном этапе я создал в обработке табличную часть -  "ТабличнаяЧасть1"
2. Также в этой табличной части я создал табличный реквизит - "Фрукты"

(Я не разбираюсь может быть и два пункта не нужно было делать, но я сделал)

3. Далее я создал форму обработки и в ее модуле указал следующий код:

Процедура КнопкаВыполнитьНажатие(Кнопка)
   
ф = новый массив;
ф.Добавить("Яблоки");
ф.Добавить("Груши");
ф.Добавить("Апельсины");
ф.Добавить("Лимоны ");
ф.Добавить("Абрикосы");
   
КонецПроцедуры
Скриншот 29-01-2023 150820.jpg
4. Также в диалоге обработки я вставил созданную ТабличнуюЧасть1 и в неё добавил реквизит (размещение данных) "Фрукты"
Скриншот 29-01-2023 151258.jpg

5. Что я должен сделать или что я должен исправить чтобы при запуске обработке получал таблицу и при нажатии на кнопку выполнить получал следующую картину:
Скриншот 29-01-2023 142246.jpg


Максим75

You_0, ф = новый массив;
ф = новый массив;
ф.Добавить("Яблоки");
ф.Добавить("Груши");
ф.Добавить("Апельсины");
ф.Добавить("Лимоны ");
ф.Добавить("Абрикосы");

Для Н=0 ПО ф.ВГраница()  Цикл
        Новаястрока = табличнаячасть1.добавить();
        НоваяСтрока.фрукты = ф[Н];
КонецЦикла;

You_0

Огроменное спасибо теперь все получилось!!!

Прошу прощения если мой вопрос был некорректен и ввел кого-то в заблуждение.

Вопрос - закрыт.

Теги:

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

Рейтинг@Mail.ru

Поиск