Вход | Регистрация

1С:Предприятие ::

Метки:Встроенный язык

Динамическое создание справочника или редактирование

Я
   Ninelka
 
16.04.04 - 17:15
Как из программы создать справочник, или уже к имеющемуся справочнику добавить реквизит, или изменить имя реквизита!!!
 
  Рекламное место пустует
   SiMazx
 
1 - 16.04.04 - 17:27
Никак...
Кажется на хиппо видел разработку по динамическим справочникам...
   mszsuz
 
4 - 16.04.04 - 18:15
// Инициализируем класс

    ЕСМ=СоздатьОбъект("ExtReference");      
   // создадим новый справочник - Месяца года, с реквизитами:

   //           "Код" - номер месяца

   //  "Наименование" - название месяца

   //        "Кратко" - первые три буквы названия месяца


    Если ЕСМ.СуществуетСправочник("МесяцаГода")=0 тогда
        Если ЕСМ.НовыйСправочник("МесяцаГода")=0 тогда
            Возврат;
        КонецЕсли;
    КонецЕсли;    
    ЕСМ.НазначитьСправочник("МесяцаГода");
    Если ЕСМ.СуществуетРеквизит("Кратко")=0 Тогда
        Если ЕСМ.ДобавитьРеквизит("Кратко","Строка",3,0)=0 тогда
            Возврат;
        КонецЕсли;    
    КонецЕсли;           
    
   // ... и заполним его 

    Для нм=1 по 12 Цикл
        Если ЕСМ.НайтиПоКоду(нм)=0 тогда
            ЕСМ.Новый();
            ЕСМ.Код=нм;
            ЕСМ.Наименование=Формат(Дата(2003,нм,1),"Д ММММ");
            ЕСМ.Кратко=Лев(ЕСМ.Наименование,3);
            ЕСМ.Записать();
        КонецЕсли;    
    КонецЦикла;            

   // Инициализируем новый класс, с предыдущим ещё будем работать ...

    ЕСС=СоздатьОбъект("ExtReference");
   // откроем существующий в метаданных справочник - Сотрудники, с реквизитами:

   //    "Наименование" - Полное ФИО сотра

   //    "ДатаРождения" - Дата       

    Если ЕСС.НазначитьСправочник("Сотрудники")=0 тогда 
        Возврат;                                        
    КонецЕсли;    
    
   // Добавим динамический реквизит "Год рождения"

    Если ЕСС.СуществуетРеквизит("ГодРождения")=0 Тогда
        Если ЕСС.ДобавитьРеквизит("ГодРождения","Число",4,0)=0 тогда
            Возврат;
        КонецЕсли;    
    КонецЕсли;         
    
   // Теперь для всех имеющихся сотрудников заполним ГодРождения из ДатыРождения

    ЕСС.ВыбратьЭлементы();
    Пока ЕСС.ПолучитьЭлемент()=1 Цикл
        ЕСС.ГодРождения=ДатаГод(ЕСС.ДатаРождения);
        ЕСС.Записать();
    КонецЦикла;    

   // Добавим динамический реквизит ДатаРожденияПрописью

    Если ЕСС.СуществуетРеквизит("ДатаРожденияПрописью")=0 Тогда
        Если ЕСС.ДобавитьРеквизит("ДатаРожденияПрописью","Строка",50,0)=0 тогда
            Возврат;
        КонецЕсли;    
    КонецЕсли;         
     
   // и заполним его из существующих и вновь полученных данных

    ЕСС.ВыбратьЭлементы();
    Пока ЕСС.ПолучитьЭлемент()=1 Цикл
        ДатаРожденияПрописью=""+ДатаЧисло(ЕСС.ДатаРождения);
        Если ЕСМ.НайтиПоКоду(ДатаМесяц(ЕСС.ДатаРождения))=1 тогда        
            ДатаРожденияПрописью=ДатаРожденияПрописью+" "+ЕСМ.Кратко;
        КонецЕсли;                                                   
        ДатаРожденияПрописью=ДатаРожденияПрописью+" "+ЕСС.ГодРождения+" г.";
        ЕСС.ДатаРожденияПрописью=ДатаРожденияПрописью;
        ЕСС.Записать();
    КонецЦикла;    

   // проверим, что получилось

    ЕСС.ВыбратьЭлементы();
    Пока ЕСС.ПолучитьЭлемент()=1 Цикл
        Сообщить(ЕСС.Наименование+" "+ЕСС.ДатаРождения+" ("+СокрЛП(ЕСС.ДатаРожденияПрописью)+")");
    КонецЦикла;
   Ninelka
 
6 - 16.04.04 - 23:53
Спасибо большое за совет, но к сожалению не работает, он сразу же ругается на первую же строчку ЕСМ=СоздатьОбъект(\"ExtReference\"). Не знаю даже из-за чего, может что-то нужно ещё дописать. Если что у меня 1С 7.7. Кстати ДобавитьРеквизит он по-моему тоже не знает. Помогите!!!
   GrayT
 
7 - 17.04.04 - 00:01
:)
Это ВК
   mszsuz
 
8 - 17.04.04 - 08:13


Список тем форума
 
Прочитай, хотя бы, Митичкина "Разработка в системе 1С:Предприятие 8". Волшебник
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует