Главная » 1С Предприятие » СОЗДАНИЕ СПРАВОЧНИКА 1С

0

5.1.1.   ЭТАП 1. ДОБАВЛЕНИЕ СПРАВОЧНИКА  В КОНФИГУРАЦИЮ

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

Рис.  5.16.  Изменение  периодического реквизита  Оклад

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

СохранениеПериодическихРеквизитов(к, "Оклад");  в котором к это число, равное 2, 3, 4 или 5.

5.1.4.3.       ПРОЦЕДУРЫ   МОДУЛЯ   ФОРМЫ   ГРУППЫ

Проверяют  на  уникальность  имя вновь вводимой или редактируемой группы.  Для проверки  (при  вводе новой группы)  мог бы подойти, например, следующий алгоритм:

1.      Выполнить  поиск группы  по наименованию (функция  НайтиПоНаименованию).

2.       Если группа  найдена, то запретить ввод записи  (нарушена уникальность).

Однако такой   алгоритм  непосредственно реализовать нельзя,  поскольку он  предполагает  изменение позиции справочника, что при работе  с формой группы (элемента) недопустимо.  Попытка изменения позиции  справочника, скажем,  в  результате  вызова НайтиПоНаименованию    вызовет   ошибку,   сопровождаемую    сообщением:    "Объект не может  быть перепозиционирован!"

Чтобы  это  ограничение обойти, следует  создать  объект сСотр_2  =  СоздатьОбъект("Справочник.Сотрудники_2");

с которым и употребить метод НайтиПоНаименованию:

// Второй параметр метода 0, следовательно, выполняем поиск во всем справочнике флаг = сСотр_2.НайтиПоНаименованию(Наименование,  0);

где Наименование имя вводимой  или редактируемой группы.

процедура ПриОткрытии( )                    //            Подготовительные действия ОчиститьОкноСообщений();

форма.ПанельИнструментов(0);  //          Отключаем панель  инструментов

форма.Заголовок("Подразделение предприятия"); конецПроцедуры // ПриОткрытии

функция Уникальность( ) далее

// Вызывает функцию  Уникальность, и если она  возвращает  1,

// то осуществляется запись группы справочника Сотрудники_2 процедура ПриЗаписи()

если (ПустоеЗначение(Наименование) =  1) тогда Предупреждение("Выберите   подразделение.");

СтатусВозврата(0);                     //              Не  записываем данные

// Если нарушена уникальность имен подразделений иначеЕсли  Уникальность() = 0 тогда

СтатусВозврата(0);                     //              Запрещает запись ошибочных  данных конецЕсли;

конецПроцедуры // ПриЗаписи

функция  Уникальность() перем сСотр_2, флаг;

// Выполняем  поиск группы по ее имени

// Вариант 1

// Группа не найдена, запись разрешена

// Вариант 2

// Группа найдена  и ее код равен коду редактируемой группы (при вводе новой группы

// это невозможно, поскольку коды  всех записей уникальны), запись разрешена

// Вариант 3

// Группа найдена  и ее код отличен от кода редактируемой

// или новой группы, запись запрещена

сСотр_2 = СоздатьОбъект("Справочник.Сотрудники_2"); флаг = сСотр_2.НайтиПоНаименованию(Наименование, 0);

если  флаг  = 0 тогда                                                 //                                                 Вариант  1 возврат 1;

иначеЕсли  (флаг  = 1) и (сСотр_2.код = Код)  тогда                   //           Вариант 2

возврат 1;

иначеЕсли (флаг =  1) и (сСотр_2.код  <> Код) тогда                 //Вариант                 3

Предупреждение("Неуникальное имя  подразделения."); возврат 0;

конецЕсли;

// То же можно записать компактнее:

// если (флаг =  1) и (сСотр_2.код  <> Код) тогда                   //             Вариант 3

//  Предупреждение("Неуникальное   имя  подразделения.");

//  возврат   0;

// конецЕсли;

// возврат 1;                                                    //                                                    Варианты  1 и 2 конецфункции // Уникальность

Замечание.  Такой  простой  способ  контроля  уникальности  названия   подразделения предприятия выбран потому,  что  в  справочнике Сотрудники_2  не  может быть  записей с  одинаковым  кодом. При  этом  мы  предполагаем, что  названия  подразделений и  ФИО сотрудников  совпадать не  могут.

Источник: Бартеньев О. В. 1С:Предприятие:  программирование для  всех.  Базовые объекты и расчеты на одной дискете. М.: Диалог-МИФИ, 2005. 464 с.

По теме:

  • Комментарии