|   |   | 
| 
 | Задача про конверты и открытки | ☑ | ||
|---|---|---|---|---|
| 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) Извините, не обратил внимания на ссылку на тему.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |