Имя: Пароль:
1C
 
Как обратиться к константе из расширения конфигурации?
0 crazyara
 
26.06.25
20:06
Управляемые формы.
В расширении задана константа.

В расширении поменял несколько функций, поставил
&Вместо
и в них обращаюсь к константе из расширения конфигурация ("МОЕ").

ВводимаяСтрока=Константы.ДополнительнаяИнформацияКвитанцийСадоводов1.Получить();

Так не работает

ВводимаяСтрока=МОЕ.Константы.ДополнительнаяИнформацияКвитанцийСадоводов1.Получить();

тоже не работаает

Что делать?

Спасибо
1 Волшебник
 
26.06.25
20:08
Не пользуйтесь расширениями.
2 Волшебник
 
26.06.25
20:09
Перестаньте писать программный код наугад. Откуда Вы взяли это "МОЕ"? К какому свойства какого объекта Вы обращаетесь?
3 Волшебник
 
26.06.25
20:10
Заимствуйте объект в расширение
4 crazyara
 
26.06.25
20:13
МОЕ - это я сделал расширении конффигурации, переместил туда обработку и константу, но константу не видит
5 crazyara
 
26.06.25
20:15
ВводимаяСтрока=Константы.ДополнительнаяИнформацияКвитанцийСадоводов.Получить()

без единицы есть в основной конфигурации, так все работает...

Как обратиться к расширению?
6 Волшебник
 
26.06.25
20:24
Используйте контекст сервера
7 Ильф
 
26.06.25
20:41
(0) не рекомендуется добавлять метаданные в расширения
расширения - они для распространяемых неограниченному кругу лиц дополнений - т.е. из основной конфы к ним не обращаются (она о них ничего не знает)

а так

МетаданныеКонстаны = Константы;
МетаданныеКонстаны.ДополнительнаяИнформацияКвитанцийСадоводов1.Получить();

либо не обращать внимание на ругань СП - в (0) врете - оно работает, просто ругается на синтаксис
8 crazyara
 
26.06.25
20:46
&НаСервереБезКонтекста
   Функция МояКонстантаПолучить()
                возврат Константы.ДополнительнаяИнформацияКвитанцийСадоводов1.Получить();
       конецфункции

теперь он функции не видит
9 crazyara
 
26.06.25
20:57
Ильф, тоже не работает - не видит она константу
В отладке все константы из основной конфигурации..

&Вместо("НаименованиеВзносаПД4")
    Функция МОЕ_НаименованиеВзносаПД4(КвитанцияПД4)
       Перем ВводимаяСтрока;
                                        
               //   ВводимаяСтрока=ЭтотОбъект.Метаданные().Константы.ДополнительнаяИнформацияКвитанцийСадоводов1.Получить();  
            //        ВводимаяСтрока=Константы.ДополнительнаяИнформацияКвитанцийСадоводов1.Получить();  
                 //    ВводимаяСтрока=МОЕ.Константы.ДополнительнаяИнформацияКвитанцийСадоводов1.Получить();
                      //   ВводимаяСтрока=МояКонстантаПолучить() ;    
                         МетаданныеКонстаны = Константы;
ВводимаяСтрока=МетаданныеКонстаны.ДополнительнаяИнформацияКвитанцийСадоводов1.Получить();
    // взноса этот взнос. Если задолженность есть по нескольким взносам - то выводим слово "Взносы".
              Если КвитанцияПД4.ВладелецЧленСНТ Тогда
    //    НаименованиеДляНесколькихВзносов = НСтр("ru = 'Взносы'") +" 1 квартал 2025 и задолженность прошлых лет";
    //    НаименованиеДляНесколькихВзносов = НСтр("ru = 'Взносы'") +" 2 квартал 2025 ";
        НаименованиеДляНесколькихВзносов = НСтр("ru = 'Взносы '") + ВводимаяСтрока;
    Иначе
    //    НаименованиеДляНесколькихВзносов = НСтр("ru = 'Членский взнос'")+" 1 квартал 2025 г. и задолженность прошлых лет";
        НаименованиеДляНесколькихВзносов = НСтр("ru = 'Членский взнос '")+ ВводимаяСтрока;

    КонецЕсли;
        
    
    Если КвитанцияПД4.Взносы.Количество() > 1
        Или КвитанцияПД4.ВзносыПоСчетчикам.Количество() > 1
        Или КвитанцияПД4.Пени.Количество() > 1 Тогда
        Возврат НаименованиеДляНесколькихВзносов;
    КонецЕсли;
    
    // Теперь в каждой таблице либо один взнос, либо она пуста.
    // Нужно проверить, что во всех таблицах указан только один взнос.
    
    ЕстьТолькоВзносыПоСчетчикам = КвитанцияПД4.ВзносыПоСчетчикам.Количество() > 0
        И КвитанцияПД4.Взносы.Количество() = 0
        И КвитанцияПД4.Пени.Количество() = 0;
    
    ВзносыТаблиц = Новый ТаблицаЗначений;
    ВзносыТаблиц.Колонки.Добавить("Взнос");
    ВзносыТаблиц.Колонки.Добавить("Наименование");
    
    Если КвитанцияПД4.Взносы.Количество() > 0 Тогда
        ЗаполнитьЗначенияСвойств(ВзносыТаблиц.Добавить(), КвитанцияПД4.Взносы[0]);
    КонецЕсли;
    
    Если КвитанцияПД4.ВзносыПоСчетчикам.Количество() > 0
        И (КвитанцияПД4.ВзносыПоСчетчикам.Итог("КОплате") > 0 Или ЕстьТолькоВзносыПоСчетчикам) Тогда
        ЗаполнитьЗначенияСвойств(ВзносыТаблиц.Добавить(), КвитанцияПД4.ВзносыПоСчетчикам[0]);
    КонецЕсли;
    
    Если КвитанцияПД4.Пени.Количество() > 0 Тогда
        ЗаполнитьЗначенияСвойств(ВзносыТаблиц.Добавить(), КвитанцияПД4.Пени[0]);
    КонецЕсли;
    
    ВзносыТаблиц.Свернуть("Взнос,Наименование");
    
    Если ВзносыТаблиц.Количество() = 1 Тогда
        Возврат СокрЛП(ВзносыТаблиц[0].Наименование);
    Иначе
        Возврат НаименованиеДляНесколькихВзносов;
    КонецЕсли;
    
    // Теперь в каждой таблице либо один взнос, либо она пуста.
    // Нужно проверить, что во всех таблицах указан только один взнос.
    
        
КонецФункции



Функция помдменяет функцию из основной конфигурации, а оттуда она не видит константу из расширения конфигурации
10 Ильф
 
26.06.25
21:20
что значит не видит?
11 crazyara
 
26.06.25
22:04
Нет, все увидел, извиняюсь, спасибо большое !!!
Закон Брукера: Даже маленькая практика стоит большой теории.