На выходе должен быть массив со списками значений типом товар. (так надо)). В МассивВсех - все товары (Товар1, Товар2, Товар3)
Вот что получилось, не могу понять. где нужно очищать временный список значений. или корректировка алгоритма, помогите пожалуйста :)
Вот что получилось, не могу понять. где нужно очищать временный список значений. или корректировка алгоритма, помогите пожалуйста :)
Масс = Новый Массив;
ЗаполнитьНабор(Масс);
Процедура ЗаполнитьНабор(МассивВозможных, ТекущийНомерСтроки = 0, ТекСтр="")
СписВрем = Новый СписокЗначений;
Если ТекущийНомерСтроки = МассивВсех.Количество() Тогда
Возврат;
КонецЕсли;
Для Сч = ТекущийНомерСтроки По МассивВсех.Количество() - 1 Цикл
Для Каждого Элемент из СписТекТовар Цикл
СписВрем.Добавить(Элемент);
КонецЦикла;
СписТекТовар = СписВрем.Скопировать();
СписТекТовар.Добавить(МассивВсех[Сч].Значение);
МассивВозможных.Добавить(СписТекТовар);
ЗаполнитьНабор(МассивВозможных, Сч + 1, СписТекТовар);
КонецЦикла;
КонецПроцедуры
ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Да, я видела, но может быть можно решить мои образом? Я еще думала, если вот так сделать? Пока не работает, но ближе к праве,и чувствую, что решение близко....Врем - это список значений
Процедура ЗаполнитьНабор(МассивВозможных, ТекущийНомерСтроки = 0, Врем="")
Если ТекущийНомерСтроки = МассивВсех.Количество() Тогда
Возврат;
КонецЕсли;
Если ТекущийНомерСтроки > 0 Тогда
МассивВозможных.Добавить(Врем);
КонецЕсли;
Для Сч = ТекущийНомерСтроки По МассивВсех.Количество() - 1 Цикл
СписТекТовар = Врем.Скопировать();
СписТекТовар.Добавить(МассивВсех[Сч].Значение);
ЗаполнитьНабор(МассивВозможных, Сч + 1, СписТекТовар);
КонецЦикла;
СписТекТовар.Очистить();
КонецПроцедуры
Показать
(4) Ultraunion.ru, я так понимаю тебе нужно получить все уникальные комбинации в зависимости от количества элементов. Условно каждый элемент в массиве уникален. Тогда это нужно делать цикл и строить условие, но я думаю это все равно лучше сделать запросом тем более что уже где то есть готовый!
Хорошо, я посмотрела у Ильдаровича, слишком там все умно в этом запросе комбинаторе. А мой код маленький и понятный. Жаль, что не рабочий))
Тем более это не совсем то, что мне нужно. Строки я могу скомбинировать (Строка будет - "Товар1Товар2". Но мне надо именно массив списков значений с определленным типом. чтобы в запрос в условие Товар1 В (&Список). И вот если я передаю строку, то ругается. Потому что не понимает тип значения. А если я создам массив со списком значений типом Товар. То все замечательно будет. и запрос подхватит.
Ну либо мне нужно как переделать строку в список значений. Это я тоже искала, не нашла
Подожду, вдруг кто-нибудь сталкивался с таким вопросом :)
Тем более это не совсем то, что мне нужно. Строки я могу скомбинировать (Строка будет - "Товар1Товар2". Но мне надо именно массив списков значений с определленным типом. чтобы в запрос в условие Товар1 В (&Список). И вот если я передаю строку, то ругается. Потому что не понимает тип значения. А если я создам массив со списком значений типом Товар. То все замечательно будет. и запрос подхватит.
Ну либо мне нужно как переделать строку в список значений. Это я тоже искала, не нашла
Подожду, вдруг кто-нибудь сталкивался с таким вопросом :)
Надо преобразовать массив в таблицу, передать в запрос, в котором левым соединением соеденить по Ссылка < ССылка
А можно, как в FORTRANE - в цикле, предварительно отсортирова. А можно, как в 1С, взяв За основу первый Элемент, а потом прибавлять, следующий. А можно ....
Или вот "Надо преобразовать массив в таблицу, передать в запрос, в котором левым соединением соединить по Ссылка < ССылка". Пожалуйста, распишите поподробнее. Неужели Колонку с самой собой левым соединением?
(0) Вот функция, решающая эту задачу Рекурсия здесь уже раскрыта.
Функция ВсеПодмножества(Множество)
Ответ = Новый Массив;
Ответ.Добавить(Новый СписокЗначений);
Для ИндексЭлемента = 0 По Множество.Количество() - 1 Цикл
Для ИндексВарианта = 0 По Ответ.Количество() - 1 Цикл
Ответ.Добавить(Ответ[ИндексВарианта].Скопировать());
Ответ[ИндексВарианта].Добавить(Множество[ИндексЭлемента])
КонецЦикла
КонецЦикла;
Возврат Ответ
КонецФункции
Показать
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот