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

Содержание:

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

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

    

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

 

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


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


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


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


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


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


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




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


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


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




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


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




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




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

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




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




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

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




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




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


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


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

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

Наши проекты

Внедрение блоков в 1С:Комплексная автоматизация 8
ООО «Больцен Рус»

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

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

- Оперативный учет...

ФГУП «Почта России»
ФГУП «Почта России»

Отрасль:
Почта, доставка

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Бухгалтерский учет
- Расчет зарплаты и кадровый учет
- Налоговый учет ...

ООО "СЖД"
ООО "СЖД"

Отрасль:
Торговля, склад, логистика, транспорт

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

Расчет зарплаты
Подбор кадров
Кадровый учет
Анализ кадрового состава...

АО «РЭП Холдинг»
АО «РЭП Холдинг»

Отрасль:
Энергомашиностроительный холдинг

Внедренное типовое решение:
«1С: Управление производственным предприятием» и «1С:Консолидация ПРОФ»

- Функциональный блок «Консолидированная отчетность РСБУ» - разработка час...

ООО "Эскорт-Центр"
ООО "Эскорт-Центр"

Отрасль:
Профессиональные услуги

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

- Сквозной учет затрат по объектам
- Бухгалтерский учет
- Расчет зарплаты...

ООО "ОМЗ"
ООО "ОМЗ"

Отрасль:
Металлургическая промышленность, металлообработка

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

Автоматизация бизнес-процессов...

ООО «ПЛЮСПЭЙ»
ООО «ПЛЮСПЭЙ»

Отрасль:
Организацией расчетов посредством электронных средств платежа

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

- Разработка подсистемы оперативного учета транзакций...

МГК "Световые Технологии"
МГК "Световые Технологии"

Отрасль:

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

Специалисты "Кодерлайн" произвели доработки в системе 1С:ЕРП 2.4 с учетом треб...

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

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

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

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

ООО «Аэроэкспресс»
ООО «Аэроэкспресс»

Отрасль:

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

· Планирование закупок · Управление закупочными процедурами, включая 223 ФЗ ...

Внедрение блока бухгалтерского учета «1С:Управление производственным предприятием»
ОАО «Издательство «Просвещение»

Отрасль:
Производство

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

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

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

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

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

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

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

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

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

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