• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Работа со справочником

  • Автор темы bremlin
  • Дата начала
B

bremlin

Доброго времени суток.

Стоит значт 1С 7.7. Конфигурация самописная.
В общем, в основном работают по справочнику ЖКХ. К отдельному элементу обращаются "Квартира.НазваниеРеквизита". Вот теперь нужно для каждой квартиры добавить некоторый числовой параметр.
Добавляем новый реквизит в этот справочник. И дальше нужно чтоб при работе со справочником через документ, (в общем документ считает и выдает квитанцию оплаты), вот нужно чтоб при совпадении некоторых условий шла запись в новый параметр.

Я сделал что-то вроде
Если (Условие) Тогда
Квартира.Уведомление = 1;

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

Hryv

Квартира.Уведомление = 1;
Квартира.Записать();

Это если Квартира не реквизит документа, а создн через СоздатьОбъект("Справочник.Квартиры")

А если Квартира - это реквизит документа, тогда

СпрКв = СоздатьОбъект("Справочник.Квартиры");
СпрКв.НайтиЭлемент(Квартира);
СпрКв.Уведомление = 1;
СпрКв.Записать();
 
B

bremlin

Квартира - реквизит шапки документа.
При :

СпрКв = СоздатьОбъект("Справочник.Квартиры");
СпрКв.НайтиЭлемент(Квартира);
СпрКв.Уведомление = 1;
СпрКв.Записать();

Выдает ошибку:

СпрКв = СоздатьОбъект("Справочник.Квартиры");
{Документ.ЖКХ_СчетНаОплату.Форма.Модуль(1652)}: Неудачная попытка создания объекта (Справочник.Квартиры)

При чем в документе используется что-то вроде Если Квартира.Муниципальное=1 Тогда.
И "Квартира" нигде не объявляется. Есть только в реквизитах документа.
 
U

unknown181538

Значит справочник называется не "Квартиры" .
Соответственно пишите "СоздатьОбъъект("Справочник.НазваниеСправочникаКакОнУВасНазывается")". Остально все так же.
 
B

bremlin

Большое спасибо.
СпрКв = СоздатьОбъект("Справочник.ЖКХ");
СпрКв.НайтиЭлемент(Квартира);
СпрКв.Уведомление = 1;
СпрКв.Записать();

Прекрасно работает.

А вот чтоб теперь сделать отчет по этому значению, то просто меняю оборотно-сальдовую ведомость, пытался реализовать так:

СпрКв= СоздатьОбъект("Справочник.ЖКХ");
СпрКв.НайтиЭлемент(Квартира);
Увед = Квартира.Уведомление;
Если Увед = 1 Тогда
Т.ВывестиСекцию("Секция_2");

Но выдает ошибку:

Уведомля.НайтиЭлемент(Квартира<<?>>);
{Отчет.ОборотСальдВедНов1.Форма.Модуль(256)}: Переменная не определена (Квартира)

Попробовал даже просто объявить Квартира как переменную:(
тогда ругается
{Отчет.ОборотСальдВедНов1.Форма.Модуль(258)}: Значение не представляет агрегатный объект (Уведомление)

Подскажите пожалуйста.
 
V

vbs

Переменная "Квартира"
На момент вызова Уведомля.НайтиЭлемент(Квартира);
должна иметь значение = элементу из Справочника.ЖКХ
 
U

unknown181538

Что значит "отчет по этому значению"?
В первом случае "Квартира" - реквизит документа. Была доступна из модуля документа. В отчете "квартира", естественно, не определена, т.к. ты не указал, к какому документу она относится. Вообще, разберись с постановкой задачи.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!