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

Содержание:

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

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

    

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

 

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


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


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


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


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


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


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




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


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


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




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


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




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




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

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




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




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

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




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




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


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


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

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

Наши проекты

Оптимизация производительности системы
ЗАО ИД «Комсомольская правда»

Отрасль:
Медиа

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

- Оптимизация производительности системы, в том числе сервера Postgre. ...

Госкорпорация «Ростех»
Госкорпорация «Ростех»

Отрасль:
Производство, ТЭК >> Машиностроение, приборостроение

Внедренное типовое решение:
1С:Управление холдингом 1.3.

Специалисты «Кодерлайн» помогли разработать и внедрить автоматизированную...

Автоматизация производственного планирования нефтесервисной компании на базе 1С:ЕРП 2.0
ЗАО «Инвестгеосервис»

Отрасль:
Нефтесервис

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

- Блок планирования проектов (процессы объемно-календарного планирования пр...

Внедрение 1С:Управление торговлей в оптово-розничной компании «Много Плитки»
ООО «Много Плитки»

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

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

Закупки (снабжение) и управление отношениями с поставщиками:
- Оформление ...

Автоматизация торгового учета на базе "1С:Управление торговлей"
ООО «ТЕЛЕВЕС РУСС»

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

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

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

Автоматизации бизнес-процессов учета и планирования на базе «1С:ERP Управление предприятием 2.0»
ООО «Буровая сервисная компания «ГРАНД»

Отрасль:
Нефтесервис

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

- Создание полноценной управленческой системы взамен существующих
- Внедр...

ООО «Стейдж Энтертейнмент Россия»
ООО «Стейдж Энтертейнмент Россия»

Отрасль:
Театральная деятельность

Внедренное типовое решение:
Платформа 1С:Предприятие 8

Реализован процесс трансформации данных бухгалтерского учета по РСБУ в дан...

ООО «ПКП КАБЭЛЕКТРОСНАБ»
ООО «ПКП КАБЭЛЕКТРОСНАБ»

Отрасль:
Производство кабельной продукции

Внедренное типовое решение:
1С:Управление небольшой фирмой 1.6

- Оформление заказов покупателей;
- Управление складскими запасами;
- Ана...

Фирма 1С
Фирма 1С

Отрасль:

Внедренное типовое решение:
1С:Документооборот

- Подготовка функциональной модели прикладного решения «1С:Документооборот...

ООО «ЛукБелОйл»
ООО «ЛукБелОйл»

Отрасль:
Нефтегазовая отрасль

Внедренное типовое решение:

- Обследовании бизнес-процессов «Документооборот», «Казначейство и Бюджети...

Разработка функциональных требований к информсистеме на базе «1С:Управление холдингом 8»
ФГУП «СВЯЗЬ-безопасность»

Отрасль:
Охранные услуги

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

- Зафиксировали процессы по блокам бухгалтерского, налогового учета, казнач...

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

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

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

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

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

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

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

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