|
Как перемешать реквизиты в справочнике? 🠗 (Волшебник 13.02.2020 14:34) | ☑ | ||
---|---|---|---|---|
0
Reraru
13.02.20
✎
14:16
|
Имеется справочник с реквизитами одного типа - строка, в которых есть записи. Какую задать команду или обработчик чтобы порядок реквизитов каждый раз был бы случайным?
|
|||
1
ДенисЧ
13.02.20
✎
14:17
|
ЯНХНП.
|
|||
2
unbred
13.02.20
✎
14:32
|
создавать реквизиты программно. прикрутить ГСЧ к их именам.
|
|||
3
Reraru
13.02.20
✎
14:32
|
(1) ЯНХНП ?
|
|||
4
piter3
13.02.20
✎
14:34
|
(3) Ты не можешь нормально описать проблему
|
|||
5
Волшебник
модератор
13.02.20
✎
14:34
|
Порядок реквизитов в справочнике всегда фиксированный.
Выводить куда-то их можете в любом порядке. |
|||
6
Reraru
13.02.20
✎
14:35
|
(2) реквизиты справочника задаются так как есть - созданием элемента. Их может быть сколько угодно.
Моя цель при создании теста и ответа к нему, чтобы пользователь мог перемешать местами вопросы, а в вопросах заданные ответы |
|||
7
AlexPR111
13.02.20
✎
14:36
|
(0) А зачем? Что за задача? Система защиты нетленки?
|
|||
8
Fish
13.02.20
✎
14:38
|
(6) "перемешать местами вопросы" - ты хотел сказать перемеЩать или именно перемеШать?
|
|||
9
Reraru
13.02.20
✎
14:38
|
(7) тест, при создании которого порядок фиксированный. А пользователю необходимо этот порядок нажатием кнопки изменить.
|
|||
10
Fish
13.02.20
✎
14:41
|
(9) А ты (5) внимательно прочитал?
|
|||
11
IOANNscrp
13.02.20
✎
14:41
|
(9) Код справочника рандомно прописывай по нажатию кнопки. И выводи вопросы отсортированные по коду
|
|||
12
Reraru
13.02.20
✎
14:42
|
(8) вопросов может быть сколько угодно, ответов в вопросе обычно 4 и более.
Ответы из другого вопроса должны перемешиваться так чтобы они оставались привязанными к созданному вопросу. Например: Вопрос: сколько будет 2+2 = ? а 1 б 2 в 4 г 5 Пользователь нажал перемешать ответы в вопросе и они поменялись например: Вопрос: сколько будет 2+2 = ? а 2 б 1 в 5 г 4 |
|||
13
Reraru
13.02.20
✎
14:44
|
А с вопросами немного проще, допустим вопрос 2+2 был с номером 1, а вопрос кто полетел первым на луну 5. После перемешивания у вопросов стали другие номера, например 2+2 стал с номером 10, а вопрос кто полетел первым на луну 10.
Рандомно. |
|||
14
Reraru
13.02.20
✎
14:45
|
(11) Не совсем понимаю. Объясните пожалуйста мне то что имеете ввиду на примере.
|
|||
15
Reraru
13.02.20
✎
14:46
|
(13) Опечатка: вопрос кто полетел первым на луну 16.
|
|||
16
IOANNscrp
13.02.20
✎
14:48
|
Ответы где храните?)
|
|||
17
Reraru
13.02.20
✎
14:48
|
(5) Каким образом? Например?
|
|||
18
Reraru
13.02.20
✎
14:49
|
(16) Вопросы в справочнике вопросов, а ответы в справочнике ответов.
|
|||
19
FIXXXL
13.02.20
✎
14:49
|
(15) Вопросы - справочник? Собери элементы в таблицу и мешай как хочешь. Выдача вопросов - цикл по ТЗ
|
|||
20
IOANNscrp
13.02.20
✎
14:50
|
В справочнике ответов изменять код элемента рандомно по нажатию или добавить реквизит сортировка и изменять его рандомно. При выводе вопросов сортировать ответы по этому реквизиту(коду)
|
|||
21
FIXXXL
13.02.20
✎
14:51
|
(19) + в ТЗ поле - НомерВопроса, заполняешь рандомно, сортируешь - ПРОФИТ!
|
|||
22
FIXXXL
13.02.20
✎
14:51
|
да не трогайте вы справочник. ему интерфейс рандомно надо сделать
|
|||
23
Reraru
13.02.20
✎
14:52
|
||||
24
Reraru
13.02.20
✎
14:55
|
(19) Вы имеете ввиду табличную часть ? Я присваиваю реквизиту вопроса - вопрос, а реквизиту ответа - ответ без табличной части
|
|||
25
Reraru
13.02.20
✎
14:56
|
(21) нет, пользователь не должен вручную менять номера (код) реквизиты местами.
|
|||
26
Reraru
13.02.20
✎
14:56
|
(20) реквизит сортировка ? Я с ним не знаком.
|
|||
27
IOANNscrp
13.02.20
✎
15:03
|
(26) В справочник "Ответы" добавляете реквизит "ПорядокНомер" по умолчанию заполняете 1,2...n соответственно. Там где будете выводить вопрос и к нему ответы, ответы сортировать по реквизиту "ПорядокНомер" и выводить отсортированные. По нажатию на кнопку меняйте этот реквизит "ПорядокНомер" рандомно через генератор случайных чисел, например.
|
|||
28
Reraru
13.02.20
✎
15:06
|
(22) https://sun9-20.userapi.com/c200824/v200824357/65c8d/3vEn65r5JNM.jpg
Поначалу смысл был в замене: содержимое с реквизитом кода 4 переносится в содержимое с реквизитом кода 2, но это будет происходить ограничено так как число ответов в вопросе тоже ограничено и если ответу присвоится код 5, а ответов в вопросе допустим 4 то это будет неправильно. |
|||
29
FIXXXL
13.02.20
✎
15:06
|
(27) не надо переписывать справочник по каждому чЁху.
одновременно может отвечать куча народа каждому - свою таблицу или табличную часть обработки, сортированную локально для пользователя |
|||
30
FIXXXL
13.02.20
✎
15:07
|
(28) нарисуй таблицу Вопрос - Номер, заполни запросом Вопросы и в цикле Номера рандомно, отсортируй по Номер
|
|||
31
FIXXXL
13.02.20
✎
15:09
|
(30) таблица - не видна пользователю, по нажатию Далее на форме - перезаполняешь реквизит формы Вопрос следующей строкой таблицы Вопрос-Номер
|
|||
32
IOANNscrp
13.02.20
✎
15:09
|
(29) думаете серверная?)
|
|||
33
Reraru
13.02.20
✎
15:10
|
(29) над этим я тоже думаю, так как возможность перемешивать вопросы и ответы будет по идее только у создателя теста, а у проходящего этой возможности не будет, вместо этого я думаю над тем как реализовать переход от одного вопроса к любому другому который хочет пользователь
|
|||
34
Reraru
13.02.20
✎
15:10
|
(32) пока что нет
|
|||
35
Reraru
13.02.20
✎
15:15
|
(27) получается мне сначала нужно программно узнать код каждого реквизита?
|
|||
36
Reraru
13.02.20
✎
15:16
|
(27) с проверкой на то имеются ли новые реквизиты
|
|||
37
FIXXXL
13.02.20
✎
15:18
|
(33) зачем только у создателя? создатель задает список вопросов. порядок РАНДОМНЫЙ - для каждого пользователя опросника.
|
|||
38
IOANNscrp
13.02.20
✎
15:19
|
(35) не понятны ваши амбиции), по правильному и с умом это как описал FIXXXL.
|
|||
39
Reraru
13.02.20
✎
15:23
|
(38) достаточно когда создатель теста задал рандомный порядок ответов в вопросах каждому отвечающему. Если же отвечающий будет снова перемешивать вопросы то в первую очередь запутает сам себя.
|
|||
40
FIXXXL
13.02.20
✎
15:23
|
(35) лови
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) массивВопросов = Новый Массив; массивВопросов.Добавить("Что"); массивВопросов.Добавить("Кто"); массивВопросов.Добавить("Где"); массивВопросов.Добавить("Зачем"); НЧ = 0; Для Каждого Вопрос Из массивВопросов Цикл НоваяСтрока = ТаблицаВопросов.Добавить(); НоваяСтрока.Вопрос = Вопрос; ГСЧ = Новый ГенераторСлучайныхЧисел(НЧ); НоваяСтрока.НомерДалее = ГСЧ.СлучайноеЧисло(0, 1000); НЧ = НоваяСтрока.НомерДалее; КонецЦикла; ТаблицаВопросов.Сортировать("НомерДалее"); КонецПроцедуры |
|||
41
FIXXXL
13.02.20
✎
15:24
|
(39) Не надо этого. Открыл вопросник - получил сортировку.
|
|||
42
Reraru
13.02.20
✎
15:25
|
(41) а как будет код проверять уже существующие вопросы?
|
|||
43
Reraru
13.02.20
✎
15:26
|
(41) Вопросы и ответы задаются ведь в уже запущенном приложении 1С Предприятие
|
|||
44
Reraru
13.02.20
✎
15:29
|
(41) Я так понимаю, цикл не сможет работать с реквизитом ТекстВопроса справочника Вопросы ?
|
|||
45
IOANNscrp
13.02.20
✎
15:29
|
(42) код ничего создавать не будет, он будет брать уже существующие вопросы и рандомно каждый раз сортировать их при открытии пользователем
|
|||
46
FIXXXL
13.02.20
✎
15:36
|
(45) именно
или ТС чего-то скрывает :) |
|||
47
FIXXXL
13.02.20
✎
15:37
|
(42) где существующие?
|
|||
48
FIXXXL
13.02.20
✎
15:37
|
(44) цикл только строки перебирает, он ни с чем не работает
|
|||
49
IOANNscrp
13.02.20
✎
15:41
|
(48) все это, конечно, хорошо, но ТС на рабочий стол вывел списки справочников, создал вопросы и ответы, и хочет их менять каждый раз, а это уже совсем другая история
|
|||
50
Reraru
13.02.20
✎
15:56
|
(40) (45) Я вижу созданный массив, но в данном случае он не нужен. Ведь созданные вопросы, вначале создаются пользователем в запущенном 1С, а затем записываются в реквизит ТекстВопросы - строка.
Думаю стоит показать взаимосвязь справочников: https://vk.com/im?peers=c5_566449785_182236528_92638771&sel=548338439&tab=all Но одну проблему я пока так и недоагадался как решить: Создатель теста может задать вопрос, а к вопросу несколько правильных ответов. Но у меня пока что может засчитывать 1 правильный ответ в вопросе, а как сделать чтобы могло засчитываться несколько правильных ответов?. |
|||
51
Reraru
13.02.20
✎
15:58
|
&НаКлиенте
Процедура НачатьТест(Команда) ТестВПроцессе=Истина; ЗапВопросыОтветы(); Если ВопросыОтветы.Количество()=0 Тогда Предупреждение ("Тест не найден. Обратитесь к администратору"); Возврат; КонецЕсли; Элементы.Начало.Видимость=Ложь; Элементы.Тест.Видимость=Истина; НомерТекущегоВопроса=1; ЗапОтветы(); КонецПроцедуры //ОткрытьФорму("ОбщаяФорма.Авторизация"); &НаКлиенте Процедура УстановитьВидимость() Если НомерТекущегоВопроса=1 Тогда Элементы.Назад.Видимость=Ложь; Элементы.ЗавершитьТест.Видимость=Ложь; ИначеЕсли ВопросыОтветы.Количество()= НомерТекущегоВопроса Тогда Элементы.Вперед.Видимость=Ложь; Элементы.ЗавершитьТест.Видимость=Истина; Иначе Элементы.Назад.Видимость=Истина; Элементы.Вперед.Видимость=Истина; Элементы.ЗавершитьТест.Видимость=Ложь; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура Вперед(Команда) НомерТекущегоВопроса=НомерТекущегоВопроса+1; ЗапОтветы(); КонецПроцедуры &НаКлиенте Процедура Назад(Команда) НомерТекущегоВопроса=НомерТекущегоВопроса-1; ЗапОтветы(); КонецПроцедуры &НаКлиенте Процедура ЗапОтветы() УстановитьВидимость(); ЗапОтветыНаСервере(); КонецПроцедуры &НаСервере Процедура ЗапОтветыНаСервере() ВариантОтвета.Очистить(); Стр=ВопросыОтветы.Получить(НомерТекущегоВопроса-1); З=Новый Запрос; З.Текст=" |ВЫБРАТЬ | Ссылка |ИЗ | Справочник.Ответы |ГДЕ Владелец=&Вопрос |УПОРЯДОЧИТЬ ПО КОД"; З.УстановитьПараметр("Вопрос",Стр.Вопрос); Выб=З.Выполнить().Выбрать(); Пока Выб.Следующий() Цикл ВариантОтвета.Добавить(Выб.Ссылка,Выб.Ссылка.Наименование); КонецЦикла; Если НЕ Стр.Ответ.Пустая() Тогда Зн=ВариантОтвета.НайтиПоЗначению(Стр.Ответ); Зн.Пометка=Истина; КонецЕсли; Элементы.ТекстВопроса.Заголовок=Стр.Вопрос.Наименование+Символы.ПС+Стр.Вопрос.ТекстВопроса; КонецПроцедуры &НаСервере Процедура ЗапВопросыОтветы() З=Новый Запрос; З.Текст=" |ВЫБРАТЬ |Ссылка КАК Вопрос |ИЗ Справочник.Вопросы |ГДЕ НЕ ПометкаУдаления |УПОРЯДОЧИТЬ ПО Код"; ВопросыОтветы.Загрузить(З.Выполнить().Выгрузить()); КонецПроцедуры &НаСервере Функция ПроверкаОтветаНаВсеВопросы(КолПО) фл=Истина; Для Каждого Стр Из ВопросыОтветы Цикл Если Стр.Ответ.Пустая() Тогда фл=Ложь; Сообщить("Вы не ответили на "+Стр.Вопрос.Наименование); КонецЕсли; Если Стр.Ответ.ПравильныйОтвет Тогда КолПО=КолПО+1; КонецЕсли; КонецЦикла; Возврат фл; КонецФункции &НаКлиенте Процедура ЗавершитьТест(Команда) ОтветНаВопрос=Вопрос("Вы действительно хотите закончить тест?",РежимДиалогаВопрос.ДаНет); Если ОтветНаВопрос=КодВозвратаДиалога.Нет Тогда Возврат КонецЕсли; КолПО=0; Если НЕ ПроверкаОтветаНаВсеВопросы(КолПО) Тогда Возврат КонецЕсли; ТестВПроцессе=Ложь; Элементы.Тест.Видимость=Ложь; Элементы.РезультатТекст.Заголовок="Вы ответили правильно на "+КолПО+" вопросов из "+ВопросыОтветы.Количество(); Элементы.РезультатТекст.Видимость=Истина; КонецПроцедуры &НаКлиенте Процедура ВариантОтветаПометкаПриИзменении(Элемент) Стр=Элементы.ВариантОтвета.ТекущиеДанные; Если Стр.Пометка Тогда Для Каждого Зн Из ВариантОтвета Цикл Если Стр.Значение=Зн.Значение Тогда Продолжить КонецЕсли; Зн.Пометка=Ложь; КонецЦикла; Зн=ВопросыОтветы.Получить(НомерТекущегоВопроса-1); Зн.Ответ=Стр.Значение; Иначе Зн=ВопросыОтветы.Получить(НомерТекущегоВопроса-1); Зн.Ответ=NULL; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) ТестВПроцессе=Ложь; КонецПроцедуры &НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) Отказ=ТестВПроцессе; КонецПроцедуры &НаКлиенте Процедура Войти(Команда) ОткрытьФорму("ОбщаяФорма.Авторизация"); КонецПроцедуры |
|||
52
Reraru
13.02.20
✎
16:07
|
(45) да, так оно и есть. Этого я и хочу.
|
|||
53
Reraru
13.02.20
✎
16:08
|
(48) но он же как я понял перебирает строки заданного массива, а не реквизиты справочника.
|
|||
54
Reraru
13.02.20
✎
16:25
|
проблема не решена
|
|||
55
Reraru
13.02.20
✎
16:36
|
(40) пытаюсь переделать под справочники - не работает.
|
|||
56
Reraru
13.02.20
✎
16:45
|
(40) а возможно ли чтобы значение реквизита при записи справочника записывалось бы в массив ?
|
|||
57
Reraru
13.02.20
✎
17:41
|
ни у кого больше нет идей?
|
|||
58
unbred
13.02.20
✎
22:22
|
забахай ты свою нетленку на JS , на сях, или ещё на чём. нафик тебе эти извращения? идей миллион, а инструмент выбрал для создания костылей.
|
|||
59
Reraru
13.02.20
✎
22:26
|
(58) это реализация под 1С
|
|||
60
Reraru
13.02.20
✎
23:29
|
(40) какие ещё существуют под мой случай сортировки, но чтобы данные читались из реквизита ТекстВопроса ?
|
|||
61
Reraru
14.02.20
✎
00:28
|
(58) у меня ограниченный инструмент: только 1С и больше ничего. Как реализовать случайную сортировку реквизитов у справочника по коду реквизита? Я хочу вот такую реализацию: там где буду выводить вопрос и к нему ответы, ответы сортировать по реквизиту "ПорядокНомер" (код реквизита) и выводить отсортированные. По нажатию на кнопку меняю этот реквизит "ПорядокНомер" рандомно через генератор случайных чисел, например.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |