Программное создание элемента справочника

17.07.07

Разработка - Универсальные функции

Пример функции
// Описание:
// создает новый элемент и копирует в его реквизиты значения реквизитов источника
// Параметры:
// элИсточник - источник
// КопироватьИсторию - для периодических реквизитов копируется история: 0 - не копируется, 1 - полностью, 2 - только последнее значение реквизита
// ОткрытьНовый - открыть на экране
Функция СкопироватьЭлемент(элИсточник, КопироватьИсторию = 0, ОткрытьНовый = 0)

Перем спр;
Перем спрМД;

Если ПустоеЗначение(элИсточник) = 1 Тогда
Возврат 0;
КонецЕсли;

спр = СоздатьОбъект("Справочник." + элИсточник.Вид());
спр.ИспользоватьРодителя(элИсточник.Родитель);
спр.ИспользоватьВладельца(элИсточник.Владелец);
спр.Новый();
спрМД = Метаданные.Справочник(элИсточник.Вид());

Для н = 1 По спрМД.Реквизит() Цикл
рек = спрМД.Реквизит(н);

Если рек.Периодический = 0 Тогда
рек = рек.Идентификатор;
зн = элИсточник.ПолучитьАтрибут(рек);
спр.УстановитьАтрибут(рек, зн);
КонецЕсли;

КонецЦикла;

спр.Наименование = элИсточник.Наименование;

Попытка
спр.Записать();
ЗаписьЖурналаРегистрации(, "Записан новый элемент справочника", "Записан новый элемент справочника", спр.ТекущийЭлемент(), 2);
Исключение
Возврат 0;
КонецПопытки;

Если КопироватьИсторию > 0 Тогда
перИст = СоздатьОбъект("Периодический");
перПри = СоздатьОбъект("Периодический");

Для н = 1 По спрМД.Реквизит() Цикл
рек = спрМД.Реквизит(н);

Если рек.Периодический = 1 Тогда
рек = рек.Идентификатор;
перПри.ИспользоватьОбъект(рек, спр.ТекущийЭлемент());
перИст.ИспользоватьОбъект(рек, элИсточник);

Если КопироватьИсторию = 2 Тогда
перИст.ОбратныйПорядок(1);
КонецЕсли;

перИст.ВыбратьЗначения();

Пока перИст.ПолучитьЗначение() = 1 Цикл
перПри.Значение = перИст.Значение;
перПри.ДатаЗнач = перИст.ДатаЗнач;
перПри.Записать();

Если КопироватьИсторию = 2 Тогда
Прервать;
КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецЦикла;

КонецЕсли;

Если ОткрытьНовый = 1 Тогда
ОткрытьФорму(спр.ТекущийЭлемент());
КонецЕсли;

Возврат спр.ТекущийЭлемент();

КонецФункции

См. также

Универсальные функции Программист Платформа 1С v7.7 Россия Абонемент ($m)

В библиотеку собраны различные функции по работе с документами, журналами, типами данных, строками, датой и временем, таблицами значений, Excel, файлами, XML, JSON, Http-сервисами, SMTP серверами и т.п.

1 стартмани

22.12.2023    1370    14    user706545_kseg1971    0    

5

Универсальные функции Программист Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Получение реквизитов контрагентов из 1С:Контрагент для старых конфигураций под 1с 7.7.

25.04.2022    2338    zhenyat    7    

8

Универсальные функции Программист Платформа 1С v7.7 Россия Бесплатно (free)

Функция выводит таблицу значений в табличный документ. (v7.7) Особенно полезно при отладке. Не нужно вносить изменения в код, вызываем функцию как вычисляемое выражение при останове. Если таблица обрабатывается в несколько этапов, можно вывести её после каждого и визуально проследить эволюцию.

30.06.2021    5137    Zoltan_Black    11    

2

Универсальные функции Системный администратор Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Установка принтера по умолчанию в 1С 7.7. Обработка может быть полезна в том случае, когда нужно установить принтер по умолчанию, а доступа к рабочему столу нет (например, терминальный режим без рабочего стола или remoteApp)

1 стартмани

13.02.2019    13932    4    alsen    3    

5

Универсальные функции Программист Платформа 1С v7.7 Конфигурации 1cv7 1С:Комплексная 7.7 Абонемент ($m)

Предлагается набор функций 1с 7.7 для формирования строки json стандартными средствами.

1 стартмани

10.12.2018    10766    malovandrey    7    

19

Универсальные функции Работа с интерфейсом Программист Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

В статье дано описание создания индикатора на форме в среде разработки 1С:Предприятие 7.7 исключительно типовыми средствами.

1 стартмани

27.09.2016    18887    2    HAMMER_59    6    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. defini 464 24.07.07 08:53 Сейчас в теме
Не хочу обидеть, но складывается впечатление, что автор просто выдрал кусок кода из типовой конфиги.
2. poppy 24.07.07 12:17 Сейчас в теме
Ни здрасте, ни до свидания.
Код не отформатирован. Зачем все это?

Короче, низачот!
3. Automatik 959 25.07.07 06:24 Сейчас в теме
Это мой лично написанный код ! Форматирование исчезло почему-то само по себе.
7. poppy 25.07.07 12:05 Сейчас в теме
(3) Очень хорошо что ты умеешь писать код и готов им поделиться с товарищами.

Если уж оформляещь код в виде статьи, то напиши еще введение и заключение. А то не понятно, откуда взялся код? Зачем он написан? Для кого предназначена статья? Где его можно использовать? Где его нельзя (нежелательно) использовать? и т.д.
8. Abadonna 3968 25.07.07 15:33 Сейчас в теме
(7) "Очень хорошо что ты умеешь писать код и готов им поделиться с товарищами."
Почему-то училка вспомнилась... или пионервожатая ;) :)
9. poppy 25.07.07 19:04 Сейчас в теме
(8)
Наверно, накладывет отпечаток моя основная работа... ;)
4. Abadonna 3968 25.07.07 09:56 Сейчас в теме
>Форматирование исчезло почему-то само по себе.
Там надо в закладке Текс поставить тэги
Код
тут твой код
Показать полностью

и будет полное счастье.
Непонятно одно: кто не знает, как программно создать элемент справочника?
5. Abadonna 3968 25.07.07 09:58 Сейчас в теме
Тфу, блин, поставил тэги (4) оно их автоматом заменило
Напишу со звездочками (их не учитывать)
[*code]
твой код
[*/code]
6. zbug 23 25.07.07 10:09 Сейчас в теме
Жалко, что приведенный код не будет давать ошибки контроля уникальности в конфигурации, где используются префиксы автонумерации (например, в бюджетной).
Оставьте свое сообщение