Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
31 мая 2024, 21:22

Как привязать к справочнику значение

Автор maxxi, 06 сен 2023, 15:19

0 Пользователей и 1 гость просматривают эту тему.

maxxi

Здравствуйте, есть форма, там реквизиты Филиал и ВидЦен.
Скажите пожалуйста, как привязать ВидЦен к Филиалу, Например, когда выбираю Филиал1, автоматом выбиралась Цена1,выбираю Филиал2 автоматом подставилась Цена2 и так далее.
Спасибо.

maxxi


LexaK

вот пара вариантов
1. в справочник Филиалы добавить реквизит ВидЦены.
заполнить, при выборе филиала получать значение через "."
2.создать дополнительный реквизит или свойство. Заполнить и затем использовать (правда немного сложнее получать значение)
3.использовать какой нибудь справочник или регистр настроек, где будут связаны Филиал и ВыдЦены (получать данные запросом)
если помогло нажмите: Спасибо!

maxxi

Увы, все варианты не подходят, потому что не можем изменить конфигурацию.

Kvark5d

maxxi, что за конфигурация такая? В большинстве реализовано использование дополнительных реквизитов или свойств объектов.

maxxi

Kvark5d, Самописьная и находиться удаленно, у нас нет доступа к базе. Мы пишем внешнюю обработку

Kvark5d

maxxi, в таком случае получается что нет и невозможно создать источник для хранения соответствия филиала и вида цен.Что очень странно - очевидно, что если в задаче прописана необходимость заполнять один реквизит на основании другого то где то должно хранится их соответствие - связь между ними.
Получается два варианта:
1. отказаться от автозаполнения вида цены, в связи с отсутствием связи между ними.
2. Запросить у заказчика таблицу соответствия филиала и вида цен и прописать вручную в коде (пресловутое если). Но тогда при появлении нового филиала код необходимо будет править.

maxxi


maxxi

Запрос.УстановитьПараметр("ВидЦен",ВидЦен);   
Запрос.УстановитьПараметр("Филиал",Филиал);

ВидЦенФилиал = Новый Соответствие;
ВидЦенФилиал.Вставить("Филиал1", "ВидЦеныФилиала1");
ВидЦенФилиал.Вставить("Филиал2", "ВидЦеныФилиала2");
ВидЦенФилиал.Вставить("Филиал3", "ВидЦеныФилиала3");

Если Филиал="Филиал1" Тогда
   
    ВидЦен=ВидЦенФилиал.Получить("Филиал1");
           
КонецЕсли;
Вот мой код.

maxxi

а вот запрос:
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    Расход_В_МногоВалютаТовары.Товар КАК Товар,
        |    СУММА(Расход_В_МногоВалютаТовары.КолПродаж) КАК КолПродаж,
        |    Расход_В_МногоВалютаТовары.Товар.Валюта КАК Валюта
        |ПОМЕСТИТЬ ВТ_Расход
        |ИЗ
        |    Документ.Расход_В_МногоВалюта.Товары КАК Расход_В_МногоВалютаТовары
        |ГДЕ
        |    Расход_В_МногоВалютаТовары.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Нач, ДЕНЬ) И КОНЕЦПЕРИОДА(&Кон, ДЕНЬ)
        |    И Расход_В_МногоВалютаТовары.Склад.Филиал = &Филиал ИЛИ &Филиал В (Справочник.Филиал)
        |
        |СГРУППИРОВАТЬ ПО
        |    Расход_В_МногоВалютаТовары.Товар,
        |    Расход_В_МногоВалютаТовары.Товар.Валюта
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    СУММА(ОстаткиОстатки.Остаток) КАК Остаток,
        |    ВТ_Расход.Товар КАК Товар,
        |    ВТ_Расход.КолПродаж КАК КолПродаж,
        |    ВТ_Расход.Валюта КАК Валюта
        |ПОМЕСТИТЬ ВТ_РасходОстатки
        |ИЗ
        |    ВТ_Расход КАК ВТ_Расход
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Остатки.Остатки КАК ОстаткиОстатки
        |        ПО ВТ_Расход.Товар = ОстаткиОстатки.Товар
        |ГДЕ
        |    (ОстаткиОстатки.Склад = &Склад
        |            ИЛИ &Склад = ЗНАЧЕНИЕ(Справочник.Складлар.ПустаяСсылка))
        |    И (ОстаткиОстатки.Склад.Филиал = &Филиал
        |            ИЛИ &Филиал = ЗНАЧЕНИЕ(Справочник.Филиал.ПустаяСсылка))
        |
        |СГРУППИРОВАТЬ ПО
        |    ВТ_Расход.Товар,
        |    ВТ_Расход.Валюта,
        |    ВТ_Расход.КолПродаж
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    ВТ_РасходОстатки.Остаток КАК Остаток,
        |    ВТ_РасходОстатки.Товар КАК Товар,
        |    ВТ_РасходОстатки.КолПродаж КАК КолПродаж,
        |    ВТ_РасходОстатки.Валюта КАК Валюта,
        |    МАКСИМУМ(ПриходЦенаСрезПоследних.Цена) КАК Цена
        |ПОМЕСТИТЬ ВТ_ПриходЦенаРасходОстатка
        |ИЗ
        |    ВТ_РасходОстатки КАК ВТ_РасходОстатки
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПриходЦена.СрезПоследних КАК ПриходЦенаСрезПоследних
        |        ПО ВТ_РасходОстатки.Товар.Ссылка = ПриходЦенаСрезПоследних.Товар
        |
        |СГРУППИРОВАТЬ ПО
        |    ВТ_РасходОстатки.Товар,
        |    ВТ_РасходОстатки.Валюта,
        |    ВТ_РасходОстатки.КолПродаж,
        |    ВТ_РасходОстатки.Остаток
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_ПриходЦенаРасходОстатка.Остаток КАК Остаток,
        |    ВТ_ПриходЦенаРасходОстатка.Товар КАК Товар,
        |    ВТ_ПриходЦенаРасходОстатка.КолПродаж КАК КолПродаж,
        |    ВТ_ПриходЦенаРасходОстатка.Валюта КАК Валюта,
        |    ВТ_ПриходЦенаРасходОстатка.Цена КАК Цена,
        |    ТоварЦенаСрезПоследних.Цена1 КАК Цена1
        |ИЗ
        |    ВТ_ПриходЦенаРасходОстатка КАК ВТ_ПриходЦенаРасходОстатка
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТоварЦена.СрезПоследних КАК ТоварЦенаСрезПоследних
        |        ПО ВТ_ПриходЦенаРасходОстатка.Товар.Ссылка = ТоварЦенаСрезПоследних.Товар.Ссылка
        |ГДЕ
        |    (ТоварЦенаСрезПоследних.ВидЦен = &ВидЦен
        |            ИЛИ &ВидЦен = ЗНАЧЕНИЕ(Справочник.ВидЦен.ПустаяСсылка))";


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск