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

МаркаАвтомобиля и МодельАвтомобиля

Автор Дмитрий Корнилов, 03 сен 2025, 16:44

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

Дмитрий Корнилов

Напишите обработку, полями которой будут: МаркаАвтомобиля и МодельАвтомобиля,
Данная обработка создает элемент справочника МаркиАвтомобилей, и элемент справочника МоделиАвтомобилей. Причем новый элемент справочника МоделиАвтомобилей подчиненный, его владелец это вновь созданный элемент справочника МаркаАвтомобилей (Для установки владельца используйте свойство объекта Владелец).

alexandr_ll

Дмитрий Корнилов, А что не получается? Работа со справочниками https://helpme1s.ru/spravochniki-v-yazyke-1s-8-v-primerax

Дмитрий Корнилов

alexandr_ll,

// Основной модуль обработки
Перем МаркаАвтомобиля, МодельАвтомобиля;

Процедура ПриОткрытии()
    // Инициализация полей ввода
    МаркаАвтомобиля = "";
    МодельАвтомобиля = "";
КонецПроцедуры

Процедура МаркаАвтомобиляПриИзменении(Элемент)
    МаркаАвтомобиля = Элемент.Значение;
КонецПроцедуры

Процедура МодельАвтомобиляПриИзменении(Элемент)
    МодельАвтомобиля = Элемент.Значение;
КонецПроцедуры

Процедура Добавить(Элемент)
    СоздатьАвтомобильНаСервере();
КонецПроцедуры

&НаСервере
Процедура СоздатьАвтомобильНаСервере()
   
    // Проверка заполнения полей
    Если ПустаяСтрока(МаркаАвтомобиля) Тогда
        ПоказатьПредупреждение(, "Не заполнено поле 'Марка автомобиля'!");
        Возврат;
    КонецЕсли;
   
    Если ПустаяСтрока(МодельАвтомобиля) Тогда
        ПоказатьПредупреждение(, "Не заполнено поле 'Модель автомобиля'!");
        Возврат;
    КонецЕсли;
   
    // Создание марки автомобиля
    СправочникМарки = Справочники.МаркиАвтомобилей;
   
    // Поиск существующей марки
    Марка = СправочникМарки.НайтиПоНаименованию(МаркаАвтомобиля);
   
    // Если марка не найдена - создаем новую
    Если Марка = СправочникМарки.ПустаяСсылка() Тогда
        НоваяМарка = СправочникМарки.СоздатьЭлемент();
        НоваяМарка.Наименование = МаркаАвтомобиля;
       
        // Генерация кода для марки
        Попытка
            НоваяМарка.Код = СправочникМарки.ПолучитьСледующийКод();
        Исключение
            НоваяМарка.Код = "";
        КонецПопытки;
       
        // Запись марки
        Попытка
            НоваяМарка.Записать();
            Марка = НоваяМарка.Ссылка;
            Сообщить("Марка автомобиля '" + МаркаАвтомобиля + "' успешно создана!");
        Исключение
            Сообщить("Ошибка при создании марки автомобиля: " + ОписаниеОшибки());
            Возврат;
        КонецПопытки;
    Иначе
        Сообщить("Марка автомобиля '" + МаркаАвтомобиля + "' уже существует!");
    КонецЕсли;
   
    // Создание модели автомобиля (подчиненной марке)
    СправочникМодели = Справочники.МоделиАвтомобилей;
   
    // Проверка существования модели
    Отбор = Новый Структура();
    Отбор.Вставить("Наименование", МодельАвтомобиля);
    Отбор.Вставить("Владелец", Марка);
   
    НайденныеМодели = СправочникМодели.НайтиПоРеквизиту(Отбор);
    Если НайденныеМодели.Количество() > 0 Тогда
        Сообщить("Модель автомобиля '" + МодельАвтомобиля + "' уже существует для марки '" + МаркаАвтомобиля + "'!");
        Возврат;
    КонецЕсли;
   
    // Создание новой модели
    НоваяМодель = СправочникМодели.СоздатьЭлемент();
    НоваяМодель.Наименование = МодельАвтомобиля;
    НоваяМодель.Владелец = Марка; // Установка владельца
   
    // Генерация кода для модели
    Попытка
        НоваяМодель.Код = СправочникМодели.ПолучитьСледующийКод();
    Исключение
        НоваяМодель.Код = "";
    КонецПопытки;
   
    // Запись модели
    Попытка
        НоваяМодель.Записать();
        Сообщить("Модель автомобиля '" + МодельАвтомобиля + "' успешно создана под маркой '" + МаркаАвтомобиля + "'!");
    Исключение
        Сообщить("Ошибка при создании модели автомобиля: " + ОписаниеОшибки());
        Возврат;
    КонецПопытки;
   
    // Очистка полей после успешного добавления
    МаркаАвтомобиля = "";
    МодельАвтомобиля = "";
   
КонецПроцедуры


Дмитрий Корнилов

alexandr_ll, Если вы написали сюда, пожалуйста, только по делу, а не засорять данную тему

sali

Цитата: Дмитрий Корнилов от 03 сен 2025, 18:48Если вы написали сюда, пожалуйста, только по делу, а не засорять данную тему
так ты напиши в чем суть создания этой темы, главный вопрос какой? а то ты тоже интересный, скопировал текст задания, отправил скрин формы обработки, саму обработку, и думаешь тебе сделают то что ты просишь? )
НЕт, это не так работает здесь. А если хочешь так , то иди в Инфостарт и ставь призовую сумму , которую ты можешь заплатить за рабочую обработку

Теги:
Рейтинг@Mail.ru

Поиск