|
Задача про конверты и открытки | ☑ | ||
---|---|---|---|---|
0
НастяПРО
10.04.24
✎
10:18
|
Ребята, всем привет! Это снова я!! У меня задача по программированию 1С. Даны открытки и конверты. То есть у меня дано 2 документа: Открытки(с реквизитами(в табличной части) наменование, длина, ширина) и конверты с теми же реквизитами в табличной части. Нужно создать отчет, в котором при выборе документов с открытками и конвертами распределялась каждая открытка по нужному ей конверту. То есть, чтобы у открытки длина и ширина была меньше конверта. Я уже создала форму отчета. Туда добавила табличный документ. И в нем нарисовала поля:
№ Конверт Открытка 1 2 3 То есть это нужно заполнить. Также я добавила документы конверты и открытки для их выбора и кнопку для формирования отчета(заполнения табличного документа). Помоги мне решить эту задачу Вот мой код. Но он не работает корректно. ТабличныйДокумент = ЭтотОбъект.Реквизит1; Для Каждого Открытка Из Открытки.ТабличнаяЧастьОткрытки Цикл Для Каждого Конверт Из Конверты.ТабличнаяЧастьКонверты Цикл Если Открытка.Длина < Конверт.Длина И Открытка.Ширина < Конверт.Ширина ИЛИ Открытка.Ширина < Конверт.Длина И Открытка.Длина < Конверт.Ширина Тогда ТабличныйДокумент.Область("Конверт1").Текст = Конверт.Наменование; ТабличныйДокумент.Область("Открытка1").Текст = Открытка.Наменование; ТабличныйДокумент.Область("Конверт2").Текст = Конверт.Наменование; ТабличныйДокумент.Область("Открытка2").Текст = Открытка.Наменование; ТабличныйДокумент.Область("Конверт3").Текст = Конверт.Наменование; ТабличныйДокумент.Область("Открытка3").Текст = Открытка.Наменование; //Строка = Конверт.Наименование; //Строка = Открытка.Наименование; Сообщить(Открытка.Наменование); КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры Мне нужно сделать так, чтобы каждая область табличного документа заполнялась разными документами. А сейчас он заполняет эти области только одними и теми же значениями. |
|||
1
Garykom
10.04.24
✎
10:31
|
В табличной части?
Ссылок нет, наименование как ключ - маразм. |
|||
2
Михаил Козлов
10.04.24
✎
10:33
|
Попробуйте в условии поставить скобки:
Если (Открытка.Длина <= Конверт.Длина И Открытка.Ширина <= Конверт.Ширина) ИЛИ Открытка.Ширина <= Конверт.Длина И Открытка.Длина <= Конверт.Ширина) Тогда... и посмотрите в отладчике. |
|||
3
Garykom
10.04.24
✎
10:37
|
На этот раз "экселевская" задачка с двумя табличками
Кстати задачка весьма хитрая (но к 1С никакого отношения не имеет) Потому что подбирать конверты надо в условиях их нехватки Т.е. брать не любой подходящий конверт а лишь чуть больше из оставшихся (и то можно не уложиться в случае неудачи и придется заново перебор запускать) А уже занятые конверты того, задача на распределение всех открыток по имеющимся конвертам |
|||
4
НастяПРО
10.04.24
✎
10:36
|
(2) не сработало. всю равно выводит по одной и той же итерации. нужно что бы при выполнении условия происходила запись, после происходила итерация циклов на + 1, и также происходил поиск по ранее заданному условию
|
|||
5
Garykom
10.04.24
✎
10:40
|
Для сокращения вариантов перебора можно использовать площадь (ширина*длина) открыток и конвертов
|
|||
6
НастяПРО
10.04.24
✎
10:47
|
Хорошо, но это не решает мою проблему.
|
|||
7
Optan
10.04.24
✎
10:52
|
А уже использованные конверты, из перебора не нужно убирать?
И прерывать перебор для этой открытки? |
|||
8
Garykom
10.04.24
✎
10:55
|
(6) Вероятно потому что кто еще не освоил алгоритмы и забыл вставить Прервать внутри условия?
После Сообщить. Это кроме (2). Чтобы внутренний цикл (по конвертам) закончился и продолжился внешний (по открыткам) далее. Это если надо на каждую открытку только один подходящий конверт вывести вместо всех подходящих. |
|||
9
НастяПРО
10.04.24
✎
10:55
|
(7) В том-то и дело, что их нужно убирать и как-то записывать ниже уже следующую пару открытки и соответствующему ей конверту. Но как это сделать? У меня записываются только одно и то же значение
|
|||
10
НастяПРО
10.04.24
✎
10:58
|
Выводит то же самое, одинаковые значения
|
|||
11
Garykom
10.04.24
✎
10:58
|
(9) Для начала у тебя нет в документах полей для пометок уже использованных конвертов и какая открытка с каким конвертом связана.
Значит что? Надо добавить еще нечто где это будет помечаться и связываться! |
|||
12
НастяПРО
10.04.24
✎
10:59
|
(11) В задании сказано, что конфигурацию нельзя изменять, нужно только создать отчет
|
|||
13
Garykom
10.04.24
✎
11:00
|
(12) Эмм. В 1С есть дофига универсальных коллекций в памяти.
https://xn----1-bedvffifm4g.xn--p1ai/articles/%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-%D1%83%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC%D0%B8-%D0%BA%D0%BE%D0%BB%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D1%8F%D0%BC%D0%B8/ |
|||
14
Garykom
10.04.24
✎
11:02
|
Для табличной части (ТЧ) самое близкое это ТаблицаЗначений (ТЗ)
|
|||
15
boev82
10.04.24
✎
11:03
|
А что мешает такую пометку в таблицу значений конвертов добавить? И еще в коде идет присвоение одного и того же значения "Конверт.Наменование" и "Открытка.Наменование" для разных областей. Тут нужен какой-то счетчик
|
|||
16
НастяПРО
10.04.24
✎
11:04
|
(15) Хорошо, а как мне его сделать?
|
|||
17
Garykom
10.04.24
✎
11:06
|
Методом "изучить учебник" уже пробовали?
|
|||
18
НастяПРО
10.04.24
✎
11:07
|
(17) Я преподаватель, книжку я уже изучила
|
|||
19
boev82
10.04.24
✎
11:10
|
Мне кажется мы кормим тролля
|
|||
20
Sorento
10.04.24
✎
11:12
|
(19), ты прочитал род занятий?))
|
|||
21
Garykom
10.04.24
✎
11:13
|
ТЗ = ТЧ.Выгрузить(); // создает ТЗ из ТЧ
ТЗ.Колонки.Добавить("Открытка"); // Добавляет новую колонку Открытка |
|||
22
НастяПРО
10.04.24
✎
11:18
|
Все, не надо больше, я умная, разобралась. ББ всем
|
|||
23
maxab72
10.04.24
✎
11:28
|
(3) Просто перебор надо начинать с самых больших открыток. Тогда они займут самые большие конверты, а для мелочи останутся что помельче. Это значительно сократит перебор.
Эта задача очень похожа на другую, дано N видов деталей, и M размеров коробок. Есть таблица, в какой размер коробки сколько деталей влазит. Есть стоимость каждой коробки, есть расценка за упаковку 1 коробки любого размера. Дано количество деталей всех типов. Задача минимизировать затраты на упаковку - т.е. стоимость коробок + стоимость работы упаковщика. |
|||
24
НастяПРО
10.04.24
✎
11:29
|
(23) Да все, все, успокойся, малец. Сделала уже, я умничка
|
|||
25
Garykom
10.04.24
✎
11:30
|
(23) Самые большие по какому измерению?
Есть же ширина и длина )) |
|||
26
Garykom
10.04.24
✎
11:32
|
(24) Неа.
Ты пропустила что может быть всего один вариант сопоставления. Или даже не быть совсем варианта распределить все. Ибо маленькие открытки можно легко засунуть в большие конверты, заняв их. Но на большие открытки не останется больших конвертов... |
|||
27
НастяПРО
10.04.24
✎
11:33
|
(25) Да узбагойтез уже, сделала, сделала. САМА!!!!!
|
|||
28
НастяПРО
10.04.24
✎
11:34
|
(2) Отдельную благодарность от всего Ямало-Ненецкого автономного округа выражаю этому человеку. Запишу тебя в список наследников. Квартира отойдет ему.
|
|||
29
Михаил Козлов
10.04.24
✎
19:00
|
(26) Я так понял, что она просто получает таблицу, какие открытки в какие конверты помещаются. Типа матрицы (по горизонтали открытки, по вертикали конверты и на пересечении стоит + или -, в зависимости от того помещается ли).
Если нужно закупить конверты под открытки, тогда просто: покупаем минимальные по размеру под количество открыток. Если нужно распределить по имеющимся конвертам, тогда можно говорить об "оптимизации". |
|||
30
Garykom
10.04.24
✎
19:03
|
(29) Открытки и конверты
Нужно разработат внешний отчет, который по всем отраженным в ИБ документам определит, какие открытки в какие конверты можно поместить для выполнения рассылки, при условии, что открытки нельзя сгибать, но поворачивать можно как угодно. При этом надо постараться, чтобы число неотправленных открыток было минимальным. |
|||
31
Михаил Козлов
10.04.24
✎
19:23
|
(30) Не указано, что по конвертам есть ограничения.
Не указано открытка какого размера нужна для документа. |
|||
32
Михаил Козлов
10.04.24
✎
19:25
|
(30) Извините, не обратил внимания на ссылку на тему.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |