Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 июл 2025, 08:26

Программное добавление в ДЗ

Автор sali, Вчера в 07:52

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

sali

есть дз на форме с 3 основными реквизитами и программно создаю 4 по нажатию на булевое значение.
то бишь, Снимок экрана 2025-07-18 104749.png
если галочка есть у "розничная цена" значит идет код создания дополнительного реквизита и заполнение
&НаСервере
Процедура РозничнаяЦенаПриИзмененииНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Склад КАК Склад,
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество,
| ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
| ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
|ГДЕ
| ЦеныНоменклатурыСрезПоследних.ВидЦены.Наименование ПОДОБНО ""розничная цена""
|ИТОГИ ПО
| Номенклатура ИЕРАРХИЯ";

РезультатЗапроса = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
//ЗначениеВРеквизитФормы(РезультатЗапроса, "Дерево");
НоваяКолонка = ДанныеФормыВЗначение(Дерево, Тип("ДеревоЗначений"));
    НоваяКолонка.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
Для Каждого СтрокаДЗ Из НоваяКолонка.Строки Цикл
СтрокаДЗ.Номенклатура = РезультатЗапроса.Колонки.Номенклатура;
СтрокаДЗ.Склад = РезультатЗапроса.Колонки.Склад;
СтрокаДЗ.Количество = РезультатЗапроса.Колонки.Количество;
        СтрокаДЗ.Цена = РезультатЗапроса.Колонки.Цена;   
    КонецЦикла;   
    ЗначениеВДанныеФормы(НоваяКолонка, Дерево);

КонецПроцедуры 

&НаКлиенте
Процедура РозничнаяЦенаПриИзменении(Элемент)   
   // ОчиститьНаСервере();
    Если РозничнаяЦена Тогда
РозничнаяЦенаПриИзмененииНаСервере();
    КонецЕсли;
//НоваяКолонка = ДанныеФормыВЗначение(Дерево, Тип("ДеревоЗначений"));
//НоваяКолонка.Колонки.Добавить("Родитель", Новый ОписаниеТипов("Число"));
//Для Каждого СтрокаДЗ Из НоваяКолонка.Строки Цикл
// СтрокаДЗ.Номенклатура = Выборка.Номенклатура;
// СтрокаДЗ.Склад = Выборка.Склад;
// СтрокаДЗ.Количество = Выборка.Количество;
//    СтрокаДЗ.Цена = Выборка.Цена;   
//КонецЦикла;   
//ЗначениеВДанныеФормы(НоваяКолонка, Дерево);

КонецПроцедуры

заполнение происходит, колонки нет
Снимок экрана 2025-07-18 105211.png

fruitella

Задачи от Sali. Ребят у меня в общем не создается что-то, но я вам скину не нужный кусок кода.
Братан, если у тебя с заполнением проблем нет, так зачем ты нам показываешь как ты заполняешь свою ДЗ, но при этом не показываешь кусок кода, где ты ее программно создаешь и описываешь?

sali

Цитата: fruitella от Вчера в 08:52но я вам скину не нужный кусок кода.
Цитата: fruitella от Вчера в 08:52где ты ее программно создаешь и описываешь?
это весь код который прописал для программного создания колонки и заполнение ее. если ничего не отправлять будет следующий вопрос - а где код? как ты там что-то заполняешь, мы тут не телепаты :btbzdb:

antoneus

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


fruitella

Вот, дельный совет. Создай ДЗ обычным способом через настройки конфигуратора, не программно. И по своей логике просто сделай видимость той или иной колонки через условное оформление, это также не программно и не создавай себе проблем. А если все же ты хочешь создавать свой реквизит программно, то этой делается  в событии при создании на сервере, на моменте, когда форма у пользователя еще не открыта.

fruitella

Цитата: sali от Вчера в 09:02
Цитата: fruitella от Вчера в 08:52но я вам скину не нужный кусок кода.
Цитата: fruitella от Вчера в 08:52где ты ее программно создаешь и описываешь?
это весь код который прописал для программного создания колонки и заполнение ее. если ничего не отправлять будет следующий вопрос - а где код? как ты там что-то заполняешь, мы тут не телепаты :btbzdb:

Мне конечно не часто приходилось программно создавать реквизиты, может 2-3 раза в жизни. Если все же смотреть на твой закомментированный кусок, даже не гуглив примера можно легко догадаться, что там чего-то не хватает. У тебя нет обращение к элементам формы. Т.е. у пользователя сформирована форма, колонку ты вроде как описал и заполнил, но не помещаешь эти данные в элементы формы. Можно посмотреть самый простой пример добавление любого реквизита на форму и сделать аналогично.

sali

как сделать видимость реквизита ДЗ? создал в дереве новый реквизит и убрал видимость , через условное оформление формы сделал условие чтобы оно отображалась тогда когда реквизит "розничная цена" = истина, оно не отрабатывает

antoneus

Не надо условное оформление. Обработчик события ПриИзменении

&НаКлиенте
Процедура ВНаличииПриИзменении(Элемент)
    Элементы.ДеревоЗначенийВНаличии.Видимость = ВНаличии
КонецПроцедуры

sali

antoneus, всмысле???
обращаемся к дереву значений к методу видимость , а после равно пишем реквизит этого дерева, у которого видимость истина должна быть???
ЧЕГО???

antoneus

Чего???

>обращаемся к дереву значений

нет

>к методу видимость

нет

>пишем реквизит этого дерева

нет

Мы обращаемся к элементу формы, который отображает колонку дерева и устанавливаем ему видимость (это не метод дерева, а свойство элемента формы) в зависимости от значения флажка.

Теги:

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

Рейтинг@Mail.ru

Поиск