Интерактивное добавление полей

Версия для печатиPDF-версия

Платформа:

И снова здравствуй, уважаемый товарищ!

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

Ниже, я постараюсь максимально правильно обозначть цель и буду благодарен, за помощь в понимании механизма ее решения.

Ситуация такая. В своем документе расчета сторительного материала в процессе его создания, я осознал, что действую крайне не эффективно и даже готовая по моему замыслу форма будет не удобна. А именно...

Мы имеем группу параметров помещения, в которой вводим ширину, длину и высоту расчитываемого прямоугольника.

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

Создал 3 переменные ДлинаПомещения, ШиринаПомещения, ВысотаПомещения находящиеся в группе расчета общей площади. 

Так же добавил переменные ОбщаяПлощадьСтен и ПлощадьСтенБезДверей и ПлощадьСтенБезОконИДверей

Которые я расчитываю по нажатию кнопки, по следующему принципу. Я сразу создал переменные ДлинаДвери1,2,3,4...ШиринаДверей 1,2,3,4... и разместил их все на форме. Так как в теории, больше 8 дверей быть не может. Добавил рядом тумблер с выбором количества дверей и через оператор Если добился расчета общей площади дверей. То есть если значение переключателя 3, то считается только 3 поля, Если 1 то только 1. И все это В событии ПриИзменении данных значений.

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

Хотелось бы добится следующего результата.

Что бы по умолчанию ввод параметров требовался только для 1 двери. А при наличии дополнительных дверей, поля, для расчета их площади добавлялись по нажатию кнопки "Добавить дверь" и аналогично поступить с окнами, только по умолчанию их 0, но после нажатия кнопки "Добавить окно" появлялись поля для ввобда параметров окна с возможностью добавления 2-3-4-5 групп полей для ввода исходной информации.

 

И тут у меня возникает масса вопросов.

Во первых, неужели, каждый параметр двери или окна, должен быть как в моем решении в отдельном реквизите? Как избавится от этой баломути в реквизитах ДлинаОкна 1,2,3,4... ШиринаОкна 1,2,3,4..

Во вторых, каки образом добится реализации добавления этих параметров по кнопке.. Во вторых, так как я даже в теории, не могу понять, где должны в таком случае хранится эти значения и как к ним обращатся, но это станет понятно из ответа на первый вопрос..

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

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

Вы усложняете себе задачу.

Для этих целей прекрасно подходит табличная часть документа. Создаёте 2 табличные части Двери и Окна с реквизитами Длина и Ширина. Для расчета площади (в процедуре ПриИзменении или по кнопке) используете цикл Для Каждого:

ПлощадьДверей = 0;
Для Каждого СтрокаТаблицы Из Объект.Двери Цикл
    ПлощадьДверей = ПлощадьДверей + СтрокаТаблицы.Длина * СтрокаТаблицы.Ширина;
КонецЦикла;

В принципе, это можно использовать и для добавления помещений (если не нужно рассчитывать фактическую площадь за вычетом дверей и окон по каждому помещению).

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

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

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

Я понимаю, что можно сделать допустим вкладками(страницами на форме) необходимое количество таких площадей расчета, однако оно всегда будет разное и не красиво было бы действовать на примере того, как у меня организован на картинке расчет площади дверей, где расчет ведется, в зависимости от значения тумблера. Сейчас я прикреплю тот код, что я написал, уверен, Вы убедитесь в кривости, хоть и работоспособности его. Явно это можно сделать грамотнее. И с точки зрения пользователя, как раз таки будет удобнее добавлять помещения, окна и двери по кнопке. А уже разобравшись с этим и получив необходимую картину, я смогу расчитывать материал на каждое помещение, суммировать его и округлять до целого, заполняя тем самым табличную часть.. 

В принципе, мне нравится осваивать приемы разработки и сложность, при условии понимания лишь во благо.

Огромное спасибо, за оперативный ответ! Жду от Вас новых ответов, мнения и советов!

PS Этот документ, должен объединять в себе все квадраты в одной квартире и являтся окончательным для объекта(квартиры). Вы уже предупреждали меня об ограничениях пробной версии и в качестве подопытной, в случае ограничения, как я понял возможно использовать ломаные версии. А для работы можно будет использовать и лицензию. 13.000 может оказатся достаточно не большой суммой, если этот документ упростит мою работу. 1000р\месяц стоит того, что бы оптимизировать свое рабочее время. Так как я отвечаю за закупку этих самых материалов, количество которых на каждый объект высчитываю в ручную. 

Перечитав, еще раз уточню, что конечно мне необходима площадь без окон и дверей по каждому помещению, так как дальнейшие расчеты материала, для каждого помещения могут и скорее всего будут отличатся. То есть где то, допустим, штукатурка будет расчитыватся по одному расходу, где то по другому, где то шпатлевка будет в 2 слоя, а где то не будет совсем. Где то надо будет считать клей под плитку, а где то краску и т.д. То есть отдельные "помещения" должны иметь гибкую настройку всевозможных параметров производимых работ со стенами и полом. А уже после настройки параметров работ с каждым помещением, должно производится сложение материалов и добавление в табличную часть общей суммы.

Упрощенно комнаты

1.Штукатурка 7кг, Шпатлевка 3кг, КлейДляОбоев 3кг

2.Штукатурка 5кг, Шпатлевка 3кг, Краска 3кг

3.Штукатурка 5кг, Клей для плитки 8кг

В табличную часть же попадает

Штукатурка 17кг 

Шпатлевка 6кг

Клей для обоев 3кг

Краска 3кг

Клей для плитки 8кг

А каждая отдельная комната, настраивается однотипным образом, выбираем виды работ нужные, выбираем материал, выбираем доп.параметры, можно расчитывать промежуточные итоги по каждой комнате, после чего уже получать список общий.

Вот я и не могу понять, неужели при таком устройстве документа, мне нужно заранее определять кучи реквизитов по окнам и дверям усложняя их до вида для 1 комнаты Ширина/Длина1_1, для 2 комнаты Ширина/Длина2_1 И так для каждого окна и каждой двери....... 

 

C реквизитами дело тупиковое. Расширяемости никакой не будет. Чтобы добавить дополнительную дверь нужно будет изменять конфигурацию.

Самое логичное и правильное использовать табличные части. В ТЧ Окна и Двери добавить ещё один реквизит "Номер помещения". Заполнять можно либо в общей таблице (проще в реализации, но неудобно для пользователя), либо создавать для каждого помещения таблицу на форме с отбором данных из общей таблицы по номеру помешения (сложнее в реализации, но удобнее для пользователя).

По материалам также надо действовать.

Без учета расчета материалов, моя цель сейчас корректный расчет в одном документе площадей и перимериметров нескольких "помещений". А после этого уже исходя из этих данных прикручивать к каждому "помещению" дополнительные параметры и высчитывать количество материала на каждое помещени, суммировать и добвлять в табличную часть! При этом добавление окон, дверей и самих помещений реализовать по кнопке добавить или вводу\выбору числового значения на этапе заполнения документа. Как то так...

Сложно понимаю, как это должно выглядеть. Можно более подробно объяснить суть, пусть с более простым исполнением и менее удобной для пользователя.  Или если возможно расписать алгаритм разработки обоих решений. После чего, я отстану от Вас и начну перекапывать интернет в поисках ответов на вопросы как реализовать каждый пункт..) Верхом чудес, было бы наглядное представление на форме вида того, что примерно должно выйти. Проблем с дальнейшей реализацией расчета, как я понимаю у меня не должно особых возникнуть..

Ну или фото рисунка на бумаге схематического того, что должно получится на форме, что бы мне отталкиваясь от него искать решения. Я готов подрудится, и не хочу загружать Вас. Но из сказаного, мне практически не понятно, с чего мне сейчас начать. Как я понимаю реквизиты длины, ширины окон мне не к чему уже. Нужно создать табличные части с реквизитами Длина-Ширина-НомерПомещения. Оставить реквизиты для ввода общих параметров помещения.

И после этого значения из табличной части, использовать для вычисления "рабочей площади в отдельном реквизите?  Блин ну не понимаю.... Есть у меня квартира, 3 "помещения" тогда куда вводить параметры остальных двух помещений... Или создать отдельную табличную часть с общими параметрами и так же реквизитом номер помещения, после чего используя данные трех табличных частей получать значения, которые опять же будут записыватся куда? в четвертую табличную часть, где будут реквизиты отоброжающие рабочую площадь стен, пола, периметра для конкретного номера помещения? Как то так что ли?

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

 

Вроде смекнул о чем Вы говорили. Чуть позже предоставлю скрин, направите на путь истиный)