# Инструкция по новому шаблону
###### tags: `Tag(change me!)`
> Что нового:
> 1) Убраны все старые формы
> 2) Все формы стандартизированы и генерируются автоматически.
> 3) Любую форму теперь может создать каждый контент-менеджер.
### Что означают символы рядом с названием полей:
\* — поле обязательно для заполнения;
= — значение для поля выбирается из выпадающего списка;
🖉 — в поле можно вводить свое значение.
## Почему я решил переделать формы?
Потому что в старом шаблоне было слишком много кода и при
малейшем обновлении (или удаление поля, или изменение размера формы), приходилось тратить много времени.
## Инструкция по корректной работе формы. Что нужно сделать:
1) Доступ к базе данных (размещен здесь: `\\1cprdb\Отделы\content\database.db`). Если работа производится в сети нашего офиса (через VPN), то форма будет работать. Иначе, если будут сложности, то придется переходить на другую базу, к которой можно будет подключиться без VPN.
2) Установить драйвер для базы данных (очень прост в установке).
http://www.ch-werner.de/sqliteodbc/sqliteodbc.exe
3) Включенные необходимые библиотеки для работы скрипта. Прилагаю скрин.

4) Включить данный флажок, что на скрине. 
### Все свойства каждого атрибута категорий:
- is_required - Обязательно ли для заполнения. Допустимые значения : 1 - обязательно, 0 - необязательно.
- is_used - Используется ли в форме. Допустимые значения : 1 - обязательно, 0 - необязательно.
- field_type - Тип поля. Возможные значения: combo - Обычный select, list - мультиселект, text - обычный textbox.
- template - Шаблон поля (short_descr). По этому шаблону будет формироваться краткое описание. Как это работает? В тексте описания нужно указать название поля, к примеру, attribute_set, razmer_sm и т.д. Они должны быть обязательно указаны в фигурных скобках, иначе парсинг описания не сработает.
Пример описания:
```
Производитель: {producer_proizvoditel}
Материал: {osnovnoi material} ({osnovnoi_material_proizv})
Состав: {sostaw_materiala}
Размер: {razmer_obobshen}
Размер пододеяльника: {razmer_sm}
Тип застежки: {zastejka}
Размер простыни: {razmer_prostini} ({tip_prostini})
Размер наволочек: {razmer_navolochek_i_podushek}
Упаковка комплекта: {upakovka}
Cтрана бренда: {strana_proizvodstva}
{dop_komplektacia}
{additional_description2}
```
- priority - Приоритет полей при генерации формы. Приоритет в отображении в форме (Приоритет 1….n) Чем значение меньше, тем раньше будет отображаться в форме. Ничего страшного, если приоритет одинаковый.
Главное, чтобы присутствовало значение.
- is_custom - Кастомное поле, которое принимает значения: 1 - кастомное, 0 - обычное. Если данное свойство не указано для стандартного поля, то ничего страшного. Главное, чтобы было значение 1 для тех полей, которые нужно формировать автоматически. Пример кастомного поля - в КПБ, к примеру, есть поле razmer_obobshen. Он формируется автоматически. Если нужно
будет генерировать еще какое-то дополнительное поле для определенной категории, то это нужно будет сообщить программисту и он его добавить.
- field_name - Название поля. Название, которое будет отображаться в форме для определенной категории определенного поля.
### Часто задаваемые вопросы:
1) Вопрос: Как сделать так, чтобы скроллилась форма колесиком мыши?
Ответ:
Обновлено - теперь работает во всех формах.
2) **Вопрос:** Как добавить/удалить поле в форме, т.к. оно больше не
используется в форме?
**Ответ:** В админке открываем окно "Свойства атрибутов категории", далее вводим данные во все необходимые поля и нажимаем кнопку "Изменить свойство". Если удалить нужно, значит нужно присвоить статус is_required = 0 и is_used = 0.
3) **Вопрос:** Как добавить новую категорию, чтобы можно было
создать для нее форму?
**Ответ:** На данный момент, это можно сделать только вручную прогриммисту. Если возникнет такая потребность, то добавлю в админке возможность добваить новую категорию.
4) **Вопрос:** Как добавить краткое описание или изменить его для категории?
**Ответ:** В админке, в поле Шаблонизатор краткого описания.
5) **Вопрос:** Как удалить возможное значение в поле для нескольких форм сразу?
**Ответ:** В админке, в разделе Множественное управление значениями в формах.
6) **Вопрос:** Куда делись старые формы?
**Ответ:** Я их удалил. Если вдруг нужны старые формы,
особенно сложные, наборы, к примеру, то используйте старый шаблон.
7) **Вопрос:** Не работает форма, установлен драйвер, влажки все выставлены по библиотекам, но ошибка все равно "Источник данных не найден ODBC"
**Ответ:** Нужно проверить разрядность вашего Экселя. Прилагаю скрин. 
Далее удалить драйвер, который был скачан по ссылке http://www.ch-werner.de/sqliteodbc/sqliteodbc.exe - потому что он для 64-разрядной версии.
И скачать 32 разрядный (если в экселе указана 32 разрядная версия) и установить его. Ссылка для скачивания: http://www.ch-werner.de/sqliteodbc/

8) **Вопрос:** Мне пока что не ясно, что нужно сделать, чтобы создать форму, т.е. как открыть "конструктор".
**Ответ:** Форма создается при нажатии "Ок" при открытии формы ctrl+shift+A. Если нужно сначала все проверить и настроить все поля для работы формы, то нужно также открыть форму ctrl+shift+a и нажать кнопку "Админка".
9) **Вопрос:** Как выбрать форму из уже существующих? И есть ли какие-то формы вообще?
**Ответ:** Если форма уже использовалась и она создана, то она просто откроется так же как вы и делали ранее, с помощью формы ctrl+shift+a. Если вдруг при открытии формы окажется, что она пустая, значит она только что сгенерировалась и нужно настроить все поля в админке.
10) **Вопрос:** И есть ли какие-то нюансы при создании? Например, где хранится вновь созданная форма, чтобы доступ к ней был у всех вовлеченных сотрудников.
**Ответ:** если что-то нужно измнить в форме (удалить поле), то нужно в главной форме(ctrl+shift+a) нажать кнопку "Обновить поля". Новая форма хранится в этом же шаблоне. Даже если вы не обновили шаблон в папке "Контент", то она сгенерируется автоматом, т.к. вся информация по генерации формы есть в базе данных.
11) **Вопрос:** Удалил атрибут, как его восстановить?
**Ответ:** Восстановить никак, но можно создать с этим же именем через админку в разделе "Атрибуты".
12) **Вопрос:** у нас все довольно часто меняется, могут быть добавлены новые атрибуты в старые категории. например, я создам сегодня в админке новый атрибут для кпб, он сам появится или вручную нужно будет добавлять где-то? например, плотность для кпб и этот атрибут будет выводиться в фильтре на сайте
**Ответ:** Порядок следующий:
- Открываем админку.
- Открываем раздел "Атрибуты"
- Вводим произвольное название и название новой колонки как на листе "Серии". Нажимаем добавить атрибут в базу.
- Закрываем админку. (Если будет неудобно, то уберу этот пункт)
- Открываем админку. (Если будет неудобно, то уберу этот пункт)
- Заходим в раздел "Свойства Атрибутов категорий"
- Указываем нужную категорию (Постельное белье в данном случае).
- Указываем новый атрибут
- Прописываем все свойства по данному полю (как заполняются указывал выше в инструкции)
- Закрываем админку.
- Запускаем главную форму ctrl+shift+a
- Выбираем категорию "Постельное белье"
- Нажимаем обновить поля.
- Ждем пару секунд.
- Нажимаем "Ок" и в форме должно появиться новое поле.
13) **Вопрос:** Можно ли сделать так, чтобы значение какого-то атрибута добавилось для всех категорий? например виды упаковок.
**Ответ:** Да, можно. В админке есть раздел "Множественное управление значений в формах". Можно мультиселектом выбрать те формы, в которые нужно добавить необходимое значение. Или удалить, если нужно.
14) **Вопрос:** Как создать новую форму?
**Ответ:** Порядок следующий:
- Добавить название категории в админке в разделе "Категории"
- Закрыть админку.
- Нажать комбинацию ctrl+shift+g и дождаться окончания операции. Появится msgBox
- Создать поля для формы в админке (все процедуры создания полей описаны выше в инструкции)
15) **Вопрос:** заголовок атрибута - это категория в смысле?
**Ответ:** Это просто словесное название атрибута. Он также используется в форме. например razmer_sm название атрибута = Общий размер.
### Известные проблемы
1) Описываю в каком случае будет возникать ошибка 91 в главной форме: Если в открытой главной форме будет нажата кнопка "Обновить поля" во второй раз после нажатия кнопки Ок. Лечится простым закрытием главной формы, если нужно было во второй раз запустить обновление полей для определенной категории. Связано с тем, что в памяти сохраняется ссылка на форму, даже если ее закрыть правильным вызовом Unload. По идее это должно было решить проблему, но мне так и не удалось ее устранить. Но на общую работу шаблона это никак не влияет.
т.к. форму менять нельзя после ее правки, то нужно убрать из памяти форму
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/339dd559-0b81-4b65-b889-8f372094b18a/userform-designer-failure?forum=exceldev
Чтобы этого избежать, то делаем релоад. Но он не сработал. Пока проблема остается открытой, но она некритична.
Designer = nothing
### Работаем с админкой:
- Админку можно открыть с помощью команды CTRL+SHIFT+A и нажать на кнопку "Админка".