Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Заполнение списка значений поля выбора , как справиться?          
micom Подменю пользователя
сообщение 16.10.16, 18:01
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 0 раз
Рейтинг: 0

Здравствуйте!
Только начинаю изучать программирование в 1С. В бухгалтерии и учете - 0, т.к. сам инженер по автоматизации технологических процессов (электросхемы, пром. контроллеры). Что-бы понять принципы программирования в 1С, начал делать конфигурацию для известного мне "бизнес-процесса" - учет энергоресурсов предприятия. Это так, предыстория.

Есть предприятие, которое потребляет какие-то ресурсы. Перечень ресурсов и услуг - в справочнике ВидРесурсов. Каждый ресурс учитывается точкой учета, допустим для счетчика электроэнергии этими ресурсами будут потребление активной электроэнергии, генерация активной электроэнергии, потребление реактивной, генерация реактивной электроэнергии. Есть справочник ТочкиУчета, где содержатся все точки учета, например электросчетчик по адресу ул. Щевченко,11, счетчик воды по адресу... и т.д. Каждый элемент справочника ТочкиУчета имеет табличную часть, где содержатся данные про учитываемые ресурсы (например для счетчика электроэнергии - это виды электроэнергии: активная потребление, акт. ген., реакт. потр., реакт.ген.).


Проблема заключается в заполнении списка поля выбора.
В обработке при выборе ресурса создается поле выбора, которое в списке должно содержать только те точки учета, которые могут учитывать данный ресурс. Т.е. если выбирается газ, то в списке - только счетчики газа, вода - только счетчики воды.

Код:
&НаСервере
  Процедура СоздатьИЗаполнитьПолеВыбораТочкаУчетаДаннымиИзЗапроса()
      Запрос = Новый Запрос();
      Запрос.Текст =
        "ВЫБРАТЬ     
        |    ТУ.Ссылка как ТочкаУчета
        //|    ,ТУУчитываемыеРесурсы.Ресурс.Ссылка,
        //|    ТУУчитываемыеРесурсы.Поставщик
        |ИЗ
        |    Справочник.ТочкиУчета.УчитываемыеРесурсы КАК ТУУчитываемыеРесурсы
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ТочкиУчета КАК ТУ
        |        ПО ТУУчитываемыеРесурсы.Ссылка = ТУ.Ссылка
        |ГДЕ
        |    ТУУчитываемыеРесурсы.Ресурс = &ПарамРесурс";

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

        
        ЭлементПолеВыбра.СписокВыбора.Очистить();
        ЭлементПолеВыбра.СписокВыбора.ЗагрузитьЗначения(ТЗРезультатЗапроса.ВыгрузитьКолонку("ТочкаУчета"));         
        
    КонецПроцедуры


Результат:


Как видно, нужные данные получаю (обведено красным), но перед ними отображается все содержимое справочника и в этом проблема. Данные, полученные в запросе отделены чертой.Я так понимаю, что ненужные мне данные отображаются из-за того, что при создании реквизита установлен тип Новый ОписаниеТипов ("СправочникСсылка.ТочкиУчета").
Как отобразить только результат запроса, который обведен?
Очень надеюсь на помощь в вопросе, над которым бьюсь уже несколько дней.

logist Подменю пользователя
сообщение 16.10.16, 19:25
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(micom @ 16.10.16, 19:01) *
ЭлементПолеВыбра.Вид = ВидПоляФормы.ПолеВвода;

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

Не понятен смысл программного создания реквизита. Вам нужно к созданному реквизиту подключить обработку события НачалоВыбора и в ней указать СтанадартнаяОбработка = Ложь, и далее отображать сформированный программно список выбора. Как-то так.

p.s. чтобы просто просматривать информацию есть Отчеты.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: micom,

micom Подменю пользователя
сообщение 17.10.16, 15:25
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 0 раз
Рейтинг: 0

СПАСИБО.
Буду пробовать.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 18.04.24, 18:22
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!