Версия для печати темы (https://pro1c.org.ua/index.php?s=a351a4dca3e161cff5218f4b21f254ae&showtopic=34597)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Как в табличное поле добавить строку из справочника?

Автор: Vzonder 17.01.17, 4:39


1С 8.2 УТ 10.3

Создал в форме Справочника Контрагента табличное поле, по абсолютной аналогии с ВидыДеятельности, с соответствующем набором реквизитов, Табличной частью и реквизитами.

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

На форме создал поле ввода: ПолеОсновнойВидДеятельности, подключил реквизит ОсновнойВидДеятельности, и включил кнопку выбора.

Теперь в ПолеОсновнойВидДеятельности можно выбирать элементы из СправочникСсылка.ВидыДеятельностиКонтрагентов.

При этом в Табличном поле ВидыДеятельности в имеющихся строках выбирается основной вид деятельности (подсвечивая шрифт жирным) в уже добавленных.

Возникла необходимость добавлять элементы (подобно действию кнопки добавить), путем выбора значения в ПолеОсновнойВидДеятельности.
Т.е. при отсутствии элемента, он автоматически добавляется в табличное поле ВидыДеятельности.

Понимаю, что в процедуре Процедура ПолеОсновнойВидДеятельности ПриИзменении(Элемент) необходимо задать запрос, который сравнит содержимое и если в списке строк не найдет элемент, то его добавит.

И тут у меня полный тупняк.
Вот какая…. Получается:


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


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

И объясните, пожалуйста, как правильно написать, чтобы добавлялась не только новая строка, но и автоматически вставлялся элемент из справочника ВидыДеятельностиКонтрагентов?


Автор: podcast 17.01.17, 9:33

Vzonder @ Сегодня, 4:39 * ,
Если я вас правильно понял, то нужно при изменении реквизита менять ТЧ справочника, то примерно так.

НоваяСтрока = ВидыДеятельности.Добавить();
НоваяСтрока.ОсновнойВидДеятельности = ОсновнойВидДеятельности;

Автор: Flexy 17.01.17, 22:41

Vzonder @ Сегодня, 4:39 * ,

Процедура ОсновнойВидДеятельностиПриИзменении(Элемент)
    Стру = Новый Структура("ВидДеятельности",ОсновнойВидДеятельности);
    Если ВидыДеятельности.НайтиСтроки(Стру).Количество() > 0 Тогда
        Возврат;
    КонецЕсли;
    НоваяСтрока = ВидыДеятельности.Добавить();
    НоваяСтрока.ВидДеятельности = ОсновнойВидДеятельности;
КонецПроцедуры

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua