25.09.2019 Вадим Хоменко 7707
Программное создание управляемой формы

Содержание:

1. Создание элементов формы

2. Работа с системой с учетом затрат 

    

1.    Создание элементов формы

 

Создание элементов формы – занятие отнюдь не программного характера. И делается это так. Мы создаем реквизиты формы 1С 8.3, потом «перекидываем» их в элементы формы, задаем оформление, и форма готова! В конфигураторе 1С 8 в таком случае мы увидим приближенную к пользовательскому интерфейсу форму. Это удобно.


Но бывают случаи, когда количество реквизитов формы заранее неизвестно. Что делать в этом случае? Можно, например, сделать намного больше реквизитов (с запасом), вынести их в элементы формы и скрывать программно лишние. Но всегда остается вопрос, достаточно ли мы создали тех самых реквизитов, и так ли поступают настоящие программисты?


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


2. Работа с системой с учетом затрат


Итак, имеем систему с учетом затрат на автопарк, в которой необходимо реализовать удобный функционал ввода стоимости топлива по поставщикам. Где хранятся сами данные, не столь важно, а вот наличие кросс-таблицы - обязательно!


Решено сделать слева виды топлива, сверху – поставщиков, а на пересечении –цены. Конечно же, добавим к этому дату, на которую действуют эти цены (но это уже просто руками). Аналогичная схема применяется при установке цен в 1С:УТ, Рознице, ERP, когда слева мы видим номенклатуру, а сверху – виды цен.


Наша форма будет выглядеть так:




Нам нужен реквизит «Дата». Это дата, на которую действуют цены, Список значений «Поставщики» - это для удобства работы (об этом дальше в коде) и «ТаблицаЗначений» - это и будет наша кросс-таблица (колонки и строки мы заполним программно).


Для обновления данных в таблице у нас будет отдельная процедура, чтоб можно было не только изначально построить ее, но и обновлять (если кто-то внес нового поставщика, вид топлива или цену). В процедуре запросом выбираем данные из трех таблиц: Виды топлива, Контрагенты (только поставщики топлива) и Цены топлива. Небольшое отступление: база самописная, и исходим мы от того, какой функционал уже реализован. В выборке мы получаем таблицу с тремя колонками «ВидТоплива, Поставщик, Цена» с итогами по виду топлива.


Преобразовываем реквизит формы «ТаблицаЗначений» в объект и удаляем колонки, которые могли быть созданы ранее (это для обновления).




Вы спросите, зачем очищать только что созданный массив? Это, наверное, привычка. Расскажу анекдот: «Буратино дали три яблока. Два он съел. Сколько яблок осталось у Буратино? Думаете одно? Ничего подобного. Никто же не знает, сколько у него уже было яблок до этого!». Мораль – обнуляйте переменные.


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




В таблицу объект добавляем первую колонку, она всегда будет «Вид топлива».




Далее делаем выборку по группировке «Вид топлива». Создаем строку. В детальных записях выбираем поставщика с ценами, создаем его колонку и заполняем ее для вида цены.

Так как имена реквизитов формы не могут содержать некоторые символы – убираем их.




Когда таблица объект заполнена, пробегаем циклом по ее колонкам и создаем колонки как реквизиты формы. И, конечно же, возвращаем наш объект Таблицу обратно в реквизит формы (со всеми заполненными ранее значениями, строками).




Теперь осталось добавить сами элементы на форму на основе созданных реквизитов.

И в том же цикле добавляем условное оформление 8.3, чтоб нули отображались как дефисы.




Вот и все. Осталось полюбоваться результатом. Вот как это выглядит в реальной базе.




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


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


Специалист компании ООО «Кодерлайн» 

Вадим Хоменко.

Наши проекты

ХИТЕК-ГРУП
ХИТЕК-ГРУП

Отрасль:
Продажа парикмахерского инструмента и аксессуаров

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Документооборот (ECM)
• Делопроизводство
Управление бизнес-процессами и И...

ООО «Вистеон Автоприбор Электроникс»
ООО «Вистеон Автоприбор Электроникс»

Отрасль:

Внедренное типовое решение:
1C:Управление производственным предприятием

- Управленческий учет; - Расчет зарплаты; - Логистика адресного склада; - Учет ...

ООО "АСТАРМЕДИКА КЛИНИКА МИКРОХИРУРГИИ ГЛАЗА"
ООО "АСТАРМЕДИКА КЛИНИКА МИКРОХИРУРГИИ ГЛАЗА"

Отрасль:
Деятельность больничных организаций

Внедренное типовое решение:
БИТ:Управление медицинским центром 8

- Управление отношениями с клиентами (CRM)
- Делопроизводство
- Ведение но...

ООО «Солви Пак»
ООО «Солви Пак»

Отрасль:
Торговля. Производство печати на рулонных материалах

Внедренное типовое решение:
1С:CRM+1С:Комплексная автоматизация

Управление отношениями с клиентами (CRM) ...

Автоматизация кадрового учета на базе «1С:ERP Управление предприятием 2.0»
Автопредприятие ПАО «Газпром»

Отрасль:
Транспорт

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Настройка подсистемы кадрового учета;
- Перенос персональных данных;
- З...

Внедрение ПП «1С:Предприятие 8. Аренда и управление недвижимостью на базе "1С:Бухгалтерия 8"» в компании «Бутово Молл»
ООО «Бутово Молл»

Отрасль:
Недвижимость

Внедренное типовое решение:
1С:Аренда и управление недвижимостью на базе «1С:Бухгалтерия 8»

Управление продажами, логистикой и транспортом (SFM, WMS, TMS):
- Оформление зак...

ООО «Мир Аксиомы»
ООО «Мир Аксиомы»

Отрасль:
Аудиторские и консалтинговые услуги

Внедренное типовое решение:
1С:Бухгалтерия КОРП

- Бухгалтерский учет:
Банк и касса
Завершение периода
Нематериальные ...

ООО “РТИТС”
ООО “РТИТС”

Отрасль:
Транспортные системы

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Блок регламентированного кадрового учета и расчета заработной платы в 1С:ERP;...

Автоматизация торговых операций на базе "1С:Управление торговлей" в ОАО "Авиазапчасть"
ОАО «Авиазапчасть»

Отрасль:
Авиационно-космическая промышленность

Внедренное типовое решение:
1С:Управление торговлей

- Оптовая торговля;
- Оформление заказов покупателей;
- Планирование прод...

ООО ХДМ Рус
ООО ХДМ Рус

Отрасль:
Торговля

Внедренное типовое решение:
1С:Бухгалтерия ПРОФ

Бухгалтерский учет Банк и касса Расчеты с контрагентами Торговые операции ...

ООО «ДАФ Тракс Рус» (DAF Trucks Rus)
ООО «ДАФ Тракс Рус» (DAF Trucks Rus)

Отрасль:
Машиностроение

Внедренное типовое решение:
«1С:Управление корпоративными финансами»

- Осуществлена разработка матрицы прав и ролей для финансового подразделени...

АО «Аэроклуб»
АО «Аэроклуб»

Отрасль:
Услуги в области делового туризма

Внедренное типовое решение:
1С:Бухгалтерия 8 КОРП

Проведение серии интервью с руководством и ключевыми специалистами Разраб...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение