Таблица Значений в обработке

1. maxim_zalatarev 09.11.20 11:59 Сейчас в теме
Есть функция которая строит Таблицу Значений, нужно сделать так чтобы была возможность обратиться к Сформированной ТЗ
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. FatPanzer 09.11.20 12:03 Сейчас в теме
Ну, как назвали таблицу, так к ней и обращайтесь.
Проблема-то в чем конкретно?
3. maxim_zalatarev 09.11.20 12:04 Сейчас в теме
5. 1ctalik 09.11.20 12:07 Сейчас в теме
(3) Пусть функция, которая строит таблицу, построит и вернет не пустую таблицу
6. FatPanzer 09.11.20 12:07 Сейчас в теме
(3) То есть вы сумели к ней обратиться в итоге, раз узнали, что она пустая? Значит всё - описанная вами проблема не имеет место быть. С чем я вас и поздравляю!
7. maxim_zalatarev 09.11.20 12:13 Сейчас в теме
(2) По нажатию кнопки, вызывается функция которая формирует ТЗ и возвращает, затем выводит 0 индекс ТЗ, по нажатию другой кнопки должна переходит по индексу, проверяет текущий шаг, где шаг1 - заполнение функции, если шаг 2, то Возврат ТЗ ну и ничего не возвращает мне, вот и вопрос, что я делаю не так
8. 1ctalik 09.11.20 12:15 Сейчас в теме
10. maxim_zalatarev 09.11.20 12:26 Сейчас в теме
(8)
Процедура Начать(Команда)
	Если ЭтаФорма.Выбор="" Тогда
		Сообщить("Выбери тему");
		Возврат
	КонецЕсли;
	ЭтаФорма.Элементы.Закончить.Видимость=Истина;
	ЭтаФорма.Элементы.Начать.Видимость=Ложь;
	Массив=ОбработкаМассива(0);
КонецПроцедуры

Функция ОбработкаМассива(Переменная)
	Если Переменная=0 Тогда
	ТаблицаПоиска=ТаблицаЗначений(ЭтаФорма.Выбор);	
	НайтиПоКоду(ТаблицаПоиска[0]);
	КонецЕсли;
Возврат ТаблицаПоиска;	
КонецФункции

Это то что я описывал как "Шаг", если шаг 1, тогда формирует таблицу, если второй, то возвращает и выводит ТЗ с 0 индексом

Процедура Следующий(Команда)
	Массив=ОбработкаМассива(1);
КонецПроцедуры
Показать

Это переход по индексу Массива возвращает с типом "Неопределенно"
9. FatPanzer 09.11.20 12:21 Сейчас в теме
(7)
вот и вопрос, что я делаю не так
Не так описываете проблему.
Что такое "выводит 0 индекс ТЗ"?
Что такое "должна переходить по индексу"? По какому?
Что такое "проверяет текущий шаг"?
Что такое "заполнение функции"?
Что такое "если шаг 2"?
Что такое "ничего не возвращает мне"?
4. user633533_encantado 11 09.11.20 12:05 Сейчас в теме
И что мешает это сделать ?
11. 1ctalik 09.11.20 12:54 Сейчас в теме
(10) Смотри ошибки, которые выдает программа. Твой код впринципе не рабочий.
Ну и когда ты второй раз вызываешь функцию, ТаблицаПоиска не определена. Когда функция закончена, все переменные, объявленные в ней удаляются из памяти, поэтому когда ты второй раз вызываешь эту процедуру, то такой переменной не существует , а ты ее как-то возвращаешь.

Как у тебя вот это все работает, я просто не представляю

ТаблицаПоиска=ТаблицаЗначений(ЭтаФорма.Выбор);
НайтиПоКоду(ТаблицаПоиска[0]);
12. maxim_zalatarev 09.11.20 12:59 Сейчас в теме
как тогда обратиться к сформированной ТЗ?
13. maxim_zalatarev 09.11.20 13:02 Сейчас в теме
(11)ТЗ обрабатывается сервером, была ошибка из-за того что я возвращаю ТЗ на клиент, поэтому по химичил с кодом по поводу

ТаблицаПоиска=ТаблицаЗначений(ЭтаФорма.Выбор);
НайтиПоКоду(ТаблицаПоиска[0]);


я делаю с 1с работаю недавно и мне нужен тестирование к ут 11.4, я нашёл только ранние варианты, а вопросы с ответами у меня есть, поэтому все значения у меня предопределённые и ничего добавляться не будет, поэтому качество кода не принципиально

Функция ТаблицаЗначений (СписокВопросы)
	Список=Новый ТаблицаЗначений;
	Список.Колонки.Добавить("Наименование");
	Список.Колонки.Добавить("Начало");
	Список.Колонки.Добавить("Конец");
	
	Главный=Список.Добавить();
	Главный.Наименование="Основной";
	Главный.Начало= 101;
	Главный.Конец= 174;
	
	Второстепенный=Список.Добавить();
	Второстепенный.Наименование="Дополнительный";
	Второстепенный.Начало= 201;
	Второстепенный.Конец= 255;	
	
	Для х=0 по Список.Количество()Цикл
		
		Если Список[х].Наименование=СписокВопросы Тогда
			Мини=Список[х].Начало;
			Макс=Список[х].Конец;
			Прервать
		Конецесли;
		
	КонецЦикла;
	
	Массив=новый Массив ;
	Для х=Мини по  Макс Цикл		
		Массив.Добавить(х)
	КонецЦикла;
	
	Рандом=Новый ГенераторСлучайныхЧисел();
	
	Если СтрДлина(Строка(Макс))>=3  Тогда
		Пока Истина Цикл
		Макс=Макс-100;
		Если НЕ СтрДлина(Строка(Макс))>=3 Тогда
			прервать
		КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
	Для х=0 по Массив.Количество()-1 Цикл
		Счёт=Рандом.СлучайноеЧисло(0,Макс-1);
		т=Массив[х];
		Массив[х]=Массив[Счёт];
		Массив[Счёт]=т;
	КонецЦикла;
	

Таб = Новый ТаблицаЗначений;
Таб.Колонки.Добавить("Значение");
Для х=0 по Массив.Количество()-1 Цикл
		Таб.Добавить();
	КонецЦикла;
Таб.ЗагрузитьКолонку(Массив, "Значение");



	Возврат Таб;
	
	
КонецФункции
Показать

мне сказали что массив не подойдёт
если есть мнение как всё это дело улучшить с радостью выслушаю
14. oleg-x 27 09.11.20 13:09 Сейчас в теме
(13) Сделайте ТЗ реквизитом формы и не будет проблем с передачей между клиентом и сервером, сможете к ней обратится как с клиента, так и с сервера.
15. maxim_zalatarev 09.11.20 13:21 Сейчас в теме
(14)Это должна быть таблица?
16. oleg-x 27 09.11.20 13:23 Сейчас в теме
(15) Если формируется таблица, то да. Есть у реквизита тип "Таблица значений".
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот