1с соответствие/Структура

1. novobranec 20.09.20 18:19 Сейчас в теме
Добрый вечер, у меня есть структура и соответствие с 10ю элементами, в структуре и соответствии ключи разные, но значение одинаковые, нужно сравнить значения, если они одинаковые, то добавить в ТЗ в первую колонку ключи структуры, а во вторую колонку ключи соответствий, не понимаю как это реализовывать нужно ь-ь
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. FatPanzer 20.09.20 18:26 Сейчас в теме
Перебираешь в цикле одну коллекцию, а внутри этого цикла - перебираешь циклом вторую коллекцию. И сравниваешь значения.
Никаких проблем. Первый класс программирования.
3. novobranec 20.09.20 18:39 Сейчас в теме
(2)не совсем понимаю, как мне их перебрать, чтобы при совпадении Значений, у меня к ключу структура добавлялся ключ соответствия и по итогу чтобы я смог узнать общие количество в 3х ключах структуры
Прикрепленные файлы:
4. FatPanzer 20.09.20 18:40 Сейчас в теме
(3) Вложенные циклы в школе учил на информатике?
Ну или хотя бы просто циклы...
Ну или хотя бы синтакс-помощник про структуру и соответствие видел?
5. novobranec 20.09.20 18:44 Сейчас в теме
(4)да, я перебираю ключ и значение структуры с значением соответствия?
6. FatPanzer 20.09.20 18:45 Сейчас в теме
7. novobranec 20.09.20 18:46 Сейчас в теме
(4)я понимаю каким способом перебирать, я не совсем понимаю, что с чем перебирать, чтобы по итогу ключи структуры имели ключи соответствия
8. FatPanzer 20.09.20 18:46 Сейчас в теме
(7) Задача так не стоит. Задача стоит найти совпадения. А не "сделать так, чтобы ключи структуры имели ключи соответствия".
9. spacecraft 20.09.20 19:23 Сейчас в теме
(3) ключ структуры не может быть одинаковым для разных значений. На скрине уже ошибка формирования структуры.
То же относится и к соответствию.
Ключи структуры и соответствия должны быть уникальными.
10. FatPanzer 20.09.20 19:33 Сейчас в теме
(9) Ну логическая ошибка есть, несомненно. А фактической ошибки особенно нет - получится 4 элемента в структуре и 4 элемента в соответствии. И даже два совпадения значений получится...
Но автору явно стоит начинать не с обращения на форумы к спецам, а с изучения литературы для новичков.
11. novobranec 20.09.20 19:35 Сейчас в теме
(10)литературу я и так читаю, в данный момент решил сделать задание, которое как я уже понял, было не по зубам, это изначально было 2 тз, решил, что сделать через структуру и соответствие будет проще, но видимо ошибся
16. FatPanzer 20.09.20 19:42 Сейчас в теме
(11) Вы бы тогда описали задачу, и свое видение её решения - какой инструментарий, какими методами программирования пытаетесь решить и т.д.
(13)
Три[Стр.Значение] = Стр.Ключ;

Ошибочка )) Такого ключа в соответствии еще нет, операцию присвоения сделать нельзя. Только через Вставить() можно )))
novobranec; +1 Ответить
17. spacecraft 20.09.20 19:43 Сейчас в теме
(16)
Ошибочка )) Такого ключа в соответствии еще нет, операцию присвоения сделать нельзя. Только через Вставить() можно )))

Это соответствие. Для него не важно было или нет присвоение до этого.
novobranec; +1 Ответить
19. -AI- 20.09.20 19:44 Сейчас в теме
(11)
решил, что сделать через структуру и соответствие будет проще, но видимо ошибся

может сделать через список значений? там есть встроенная сортировка по значению и по представлению....

PS сопоставлять отсортированные списки проще...
20. novobranec 20.09.20 19:45 Сейчас в теме
(19)спасибо за совет, учту
21. FatPanzer 20.09.20 19:48 Сейчас в теме
(19) Как помогает сортировка избавиться от необходимости перебора?
22. -AI- 20.09.20 19:52 Сейчас в теме
(21) что бы сопоставить элементы, можно сделать перебор одним циклом, а не двумя вложенными
23. FatPanzer 20.09.20 20:27 Сейчас в теме
(22) Можно пример? Чем будет отличаться перебор сортированного списка от несортированного?

Чует мое сердце, что кто-то хочет для начала перегнать структуру и соответствие в дав списка значений (это уже два цикла).
Или кто-то хочет решить не ту задачу, которую поставил автор )))
24. -AI- 20.09.20 20:46 Сейчас в теме
(23)
Или кто-то хочет решить не ту задачу, которую поставил автор )))

если решать задачу из "шапки", то там действительно список значений не нужен....

но если учесть ту фразу автора, что я процитировал в сообщении, где я и предположил что список значений будет лучше...
я решил, что речи о соответствии со структурой в оригинальном ТЗ и нет вообще....
25. FatPanzer 20.09.20 21:06 Сейчас в теме
(24) Ну мы не знаем состава его ТЗ. Мы видим только примерный теоретический код в виде строковых значений коллекций (мюр-пур-хер...). Но если сравниваемые значения и результирующие ключи будут НЕ строковые - то нам никакие списки значений не помогут.

Так-то задача должна решаться вообще без преобразования ТЗ.
1. Прогнать обе таблицы через запрос внутренним соединением (нагрузить СУБД, что не всегда есть хорошо).
2. Циклом по одной ТЗ, внутри которого отбор строк по второй ТЗ и вывод совпадений в целевую ТЗ.
26. -AI- 20.09.20 21:14 Сейчас в теме
(25) если непонятно, то ещё раз скажу...
что с вашей логикой решения ТЗ из шапки я абсолютно согласен.

НО автор ясно дал знать, что сам решил использовать структуру и соответствие, и добавил что из наших рассуждений он понял что этот выбор не совсем правильный....

после чего, я всего лишь намекнул, что в 1С есть ещё один способ хранения данных, у которого есть встроенная фича, о которой часто забывают...

PS всё остальное - плод вашего бурного воображения...
29. XAKEP 21.09.20 19:41 Сейчас в теме
(25)
мюр-пур-хер...

:))) :))) :))) -_-
12. spacecraft 20.09.20 19:36 Сейчас в теме
(10) логические ошибки самые коварные. Компилятор на них не укажет, а новичок будет долго искать "пропавшие" данные. Лучше сразу на это указать.
13. spacecraft 20.09.20 19:37 Сейчас в теме
вот для примера:
Один = Новый Структура;
	Один.Вставить("куб", "раз");
	Один.Вставить("раз", "два");
	Один.Вставить("ку", "три");
	Один.Вставить("марка", "четыре");
	
	Два = Новый Соответствие;
	Два.Вставить(8, "раз");
	Два.Вставить(6, "два");
	Два.Вставить(4, "три");
	
	ТЗ = Новый ТаблицаЗначений;
	ТЗ.Колонки.Добавить("КлючСтруктуры", Новый ОписаниеТипов("Строка"));
	ТЗ.Колонки.Добавить("КлючСоответствия", Новый ОписаниеТипов("Число"));
	
	Три = Новый Соответствие;
	Для Каждого Стр Из Два Цикл
		Три[Стр.Значение] = Стр.Ключ;
	КонецЦикла;
	
	Для Каждого Стр Из Один Цикл
		Если Три[Стр.Значение] = Неопределено Тогда
			Продолжить;
		КонецЕсли;
		СтрТЗ = ТЗ.Добавить();
		СтрТЗ.КлючСтруктуры = Стр.Ключ;
		СтрТЗ.КлючСоответствия = Три[Стр.Значение];
	КонецЦикла;
Показать
Sahautdinova1987; novobranec; +2 Ответить
14. novobranec 20.09.20 19:38 Сейчас в теме
Ключи и значение, это 1 и 2 колонка, нужно найти совпадения было 2 колонки, после получившиеся числа добавить в 3 разных «группы» в 1 колонку (куб,раз и марка), изучу подробнее тему данную и вернусь к заданию уже самостоятельно,рано полез видимо очень
15. -AI- 20.09.20 19:39 Сейчас в теме
я бы обошелся без вложенных циклов, сделал бы проста 2 цикла...

первый "разворачивает" соответствие
(создать соответствие, где ключ и значение поменяны местами, относительно оригинальной)

а второй цикл обходит структуру
18. FatPanzer 20.09.20 19:43 Сейчас в теме
(15) Это уже оптимизация. У автора есть еще обычное непонимание коллекций и вложенных циклов, а вы уже про "разворот соответствия" )))
27. пользователь 20.09.20 22:05
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

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