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

Вывод в поле Наименование справочника Штатное список значений из справочника Подразделения?

Автор Ledgik, 12 фев 2019, 11:51

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

Ledgik

Есть два справочника Штатное и Подразделения. В справочнике Штатное есть автоматически генерируемое поле Наименование. Как программно сделать так чтобы​ в поле Наименование справочника Штатное выводились списком значений из поля Наименование справочника Подразделения? Я только начал изучать программирование в 1С. Вариант с добавлением в код модуля списка выбора я уже реализовал. Но сами понимаете что это не то. Посмотрите код. Может у кого то решение есть лучше.

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Элементы.Наименование.РежимВыбораИзСписка = Истина;

Элементы.Наименование.СписокВыбора.Добавить("Администрация");

Элементы.Наименование.СписокВыбора.Добавить("Бухгалтерия");

Элементы.Наименование.СписокВыбора.Добавить("Отдел ИТ");

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

&НаКлиенте

Процедура ТЧШтатноеЕдиницыПриИзменении(Элемент)

РассчитатьСуммуТЧШтатное();

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

&НаКлиенте

Процедура ТЧШтатноеОкладПриИзменении(Элемент)

РассчитатьСуммуТЧШтатное();

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

&НаКлиенте

Процедура ТЧШтатноеСуммаПриИзменении(Элемент)

Стр = Элементы.ТЧШтатное.ТекущиеДанные;

Если Стр.Единицы=0 И Стр.Оклад=0 Тогда

ИначеЕсли Стр.Единицы=0 Тогда

Стр.Единицы=Стр.Сумма / Стр.Оклад;

ИначеЕсли Стр.Оклад=0 Тогда

Стр.Оклад=Стр.Сумма / Стр.Единицы;

Иначе

Стр.Оклад=Стр.Сумма / Стр.Единицы;

КонецЕсли;

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

&НаКлиенте

Процедура РассчитатьСуммуТЧШтатное()

Стр = Элементы.ТЧШтатное.ТекущиеДанные;

Стр.Сумма = Стр.Единицы * Стр.Оклад;

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

&НаКлиенте

Процедура ЕдиницыИтогПриИзменении(Элемент)

Стр = Элементы.Штатное.ТекущиеДанные;

Стр.ЕдиницыИтог = Стр.Единицы + 1;

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

&НаКлиенте

Процедура СуммаИтогПриИзменении(Элемент)

Стр = Элементы.Штатное.ТекущиеДанные;

Стр.СуммаИтог = Стр.Сумма + 1;

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

&НаКлиенте

Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)

Объект.ЕдиницыИтог = Объект.ТЧШтатное.Итог("Единицы");

Объект.СуммаИтог = Объект.ТЧШтатное.Итог("Сумма");

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

bsn-chita

А с чем связано желание именно в Наименовании список выводить? Проще добавить реквизит в справочнике Штатное с именем Подразделение и типом СправочникСсылка.Подразделения, для свойства Быстрый выбор установить в значение Истина.

Ledgik

Все я уже решил проблему с помощью программистов другого форума вот так:

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


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

Рейтинг@Mail.ru

Поиск