arefaste/1C_Forums huggingface dataset:
Хочу на форме отчета на СКД вывести Таблицу Значений, чтобы пользователь ее заполнил, а я ее использовал при получении данных в программной компоновки.
Проблема в том, что при рисовании своих форм Таблицу значений вставляю и использую, но отчет получается не красивым и пользователь не может изменить настройки.
А если использую стандартные формы отчета, то не знаю как туда вставить свою ТЗ...
Отчет внешний и ничего, другого (конфу, расширения) трогать не хочется.
Кто-нибудь с такой проблемой сталкивался?
---
используйте стандартную форму настроек, и вставьте команду (кнопку) со своими доп настройками рядом со стандартными (Вызов формочки с вашей таблицей).
 Либо скопируйте стандартную форму настроек, дополните её своим функционалом, и используйте её как форму настроек для внешнего отчета.
---
используйте стандартную форму настроек, и вставьте команду (кнопку) со своими доп настройками рядом со стандартными (Вызов формочки с вашей таблицей).
 Либо скопируйте стандартную форму настроек, дополните её своим функционалом, и используйте её как форму настроек для внешнего отчета.
---
Я правильно понял, что:
1. Используем форму отчета из общих форм
2. Копируем ФормуНастроек в свою форму и используем ее в отчете?
---
По первому варианту, честно говоря, не понял, как не изменяя конфигурацию вставить свою кнопку в ФормуОтчета...
---
Интересно, а как вы собирались что-то изменить, не изменяя ничего?
---
Не меняя ничего в конфигураторе. В отчете можно все что угодно делать
---
Ну да, ну да...
---
На форме отчета отображаются параметры, типы данных не включают таблицу значений, но есть ХранилищеЗначения.
Вариантом решения добавить программно кнопку на форму которая открывает форму с редактированием ТЗ, результат сохраняется в параметр с типом ХранилищеЗначения.
Отчет формируется программно с переносом из ХранилищеЗначения в дополнительный набор данных.
---
Скопировал ФормуОтчета и ФормуНастроек из общих форм. Немного поменял и получил то, что хотел )
Спасибо BackinSoda, что навел на мысль о копировании формы, что-то сразу не пришло в голову
Где хранится адрес контактного лица контрагента в УНФ 1.6?
---
Вы путаете "где" и "как" - а это далеко не одно и то же )
Вам отвечают на вопрос, который Вы задали изначально, т.е. "где".
---
откройте конфигуратор и посмотрите связь
---
собственно потому и спрашиваю что не разобрался)
---
если это не шутка и никто не ответит, то через полчаса поставлю унф и посмотрю.
---
по компании все данные вытащил, а по контакту не вижу
---
оно ?
---
Возможно... я не совсем понимаю как адрес выдернуть)
---
вы код для функции или процедуры задумали ?
---
мне надо в макет для печати подставить адрес контактного лица.
---
(11
я в этом не помощник :)

вам повезет,если это будет только реквизит
или два адреса

а если таблица значений ?
---
Ну и обновите конфигурацию, у вас явно неактуальная
---
При создании нового Контрагента в журнале регистрации:
Данные. Добавление Справочник. Контрагенты
Данные. Добавление Справочник. Контакты
Данные. Изменение Регистр сведений. Связи контрагент контакт

Табличную часть .КонтактнаяИнформация пишете, что Вы уже нашли у Контрагента, то же самое есть у Контакта.
---
Не совсем) Нашёл строку кода, которая выводит инфу по компании, ну прошёлся по ней, посмотрел как работает модуль. Пример:

```1c
    УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(ДокСсылка.Организация.Ссылка,),"ФактическийАдрес")
```

А вот где явно можно выхватить адрес контакта я не могу разобраться. Надо в макет добавить поле, адрес контакта, что на фото отмечено в первом посте.
---
Вы путаете "где" и "как" - а это далеко не одно и то же )
Вам отвечают на вопрос, который Вы задали изначально, т.е. "где".
---
Пожалуй вы правы, я неверно сформулировал вопрос. Имел ввиду другое. Тему можно считать закрытой.
Товарищи. Помогите понять, это глюк платформы какой-то или настройки сбились или просто я тупой такой?

Сделал я недавно обработку в которой указываешь путь каталога и она выгружает туда данные.
Потребовалось сделать аналогичную. Добавляю как и прежде строковый реквизит, переношу на форму и замечаю что у меня в свойствах Поля пропали закладки "Использование", "Расположение" и "оформление".

Открываю предыдущую обработку и там такая же ситуация.
В первый раз такое. Пытался поискать информацию, но ничего не нашёл. Потому обращаюсь к более опытным, может подскажете, что можно сделать?

Если плохо объяснил, то здесь застрял на 3 пункте: http://i.doc-lvv.ru/public/1105907/
---
Как я понял это скриншот из сайта, а не ваш. Лучше прикрепите скриншот из вашего конфигуратора. А так проверьте фильтр в окне свойства поля. Может он у вас включен (см.скриншот)
---
Как я понял это скриншот из сайта, а не ваш. Лучше прикрепите скриншот из вашего конфигуратора. А так проверьте фильтр в окне свойства поля. Может он у вас включен (см.скриншот)
---
Сообщение было скрыто модератором.
---
Вот и минус работы на маленьком мониторе. Вообще не заметно было что он включен. Стыдно что сам не додумался просто проверить
Здравствуйте. Подскажите пожалуйста, как доработать такой запрос?

```1c
    ВЫБОР
    | КОГДА ЕСТЬNULL(ФИОГлавногоБухгалтера.РасшифровкаПодписи, "НЕ ЗАПОЛНЕНО")
    | ТОГДА ФИОГлавногоБухгалтера.РасшифровкаПодписи = "Петров Петр Петрович"
    | ИНАЧЕ ФИОГлавногоБухгалтера.РасшифровкаПодписи КОНЕЦ КАК ГлавныйБухгалтерРасшифровкаПодписи,
```

Этот код позволяет получить ФИО главного бухгалтера с формы документа " командировки", но есть еще один документ командировка группой (где указывается сразу несколько людей), этот документ расформировывается на несколько командировок (первый вариант), но по умолчанию в форме не указываются нужные подписанты, установлен всего один, который перетянут от командировки группой, пока у меня нет других вариантов (если только добавить на форму реквизит ответственных лиц), поэтому решил обойтись таким вариантом. Т.е. если в документе "Командировка" не заполнены поля ответственных, в данном случае главный бухгалтер, то в наглую прописываем значение "Петров Петр Петрович"
---
КОГДА - ЧТО? Результатом КОГДА должно быть выражение, возвращающее Булево.

Тут можно просто

```1c
    "ВЫБОР
    | ЕСТЬNULL(ФИОГлавногоБухгалтера.РасшифровкаПодписи, "Петров Петр Петрович") КАК ГлавныйБухгалтерРасшифровкаПодписи,"
```
---
КОГДА - ЧТО? Результатом КОГДА должно быть выражение, возвращающее Булево.

Тут можно просто

```1c
    "ВЫБОР
    | ЕСТЬNULL(ФИОГлавногоБухгалтера.РасшифровкаПодписи, "Петров Петр Петрович") КАК ГлавныйБухгалтерРасшифровкаПодписи,"
```
---
ЕСТЬNULL(ФИОГлавногоБухгалтера.РасшифровкаПодписи, ""Петров Петр Петрович"") Спасибо! Все получилось, я в процессе изучения.
---
подскажите, а если в запрос добавить с регистра сведения об ответственных, как с помощью такого же механизма вместо строки вписать результат запроса!

```1c
    ЕСТЬNULL(ФИОГлавногоБухгалтера.РасшифровкаПодписи, "данные с регистра") КАК ГлавныйБухгалтерРасшифровкаПодписи,"
```
---
я понимаю, что можно было напрямую вставить через цикл в коде (не в запросе), но у меня там заполнение параметров макета идет через массив, я не могу это осуществить!
---
Ничего не понял. Да и не хочу.
Вроде бы простой вопрос, но никак не соображу как проще сделать.

Есть массив. Элементы массива - СтрокаТаблицыЗначений.
Перебираю массив. Нужно записать строки в другой массив меняя некоторые данные.

Создаю новую строку "НоваяСтрокаПозиций = СтрокаТаблицыЗначений;"
Если изменить "НоваяСтрокаПозиций" то и в "СтрокаТаблицыЗначений" данные меняются.

Как правильно скопировать, без ссылки?
---
```1c
    НоваяТаблица = СтрокаИсходнойТаблицы.Владелец().СкопироватьКолонки();
```
---
СтрокаТаблицыЗначений без таблицы значений не живёт, поэтому для копирования строк придётся создать новую таблицу значений или использовать эту же ТЗ, добавляя в нее строки. у ТЗ есть метод Скопировать. Либо, вместо новой строки ТЗ использовать структуру с соответствующими ключами.
---
СтрокаТаблицыЗначений без таблицы значений не живёт, поэтому для копирования строк придётся создать новую таблицу значений или использовать эту же ТЗ, добавляя в нее строки. у ТЗ есть метод Скопировать. Либо, вместо новой строки ТЗ использовать структуру с соответствующими ключами.
---
Как создать таблицу значений с колонками из строки без добавления колонок руками?
---
```1c
    НоваяТаблица = СтрокаИсходнойТаблицы.Владелец().СкопироватьКолонки();
```
---
Спасибо. То, что надо.
---
ЗаполнитьЗначенияСвойств()
---
Для заполнения свойств в строке приёмнике должны быть колонки. Руками создавать колонки неохота.
---
```1c
    Для Каждого Колонка ИЗ СтараяТЗ.Колонки Цикл
    НоваяТЗ.Колонки.Добавить(Колонка.Имя, Колонка.Тип);
    КонецЦикла;
```
---
Первый раз сделать:

```1c
    НоваяТаблица = СтараяТаблица.Скопировать(МассивОтобранныхСтрок, ЕслиНадоСтрокаСНазваниямиНужныхКолонок);
```

З.Ы. Вместо отобранных строк можно использовать ПараметрыОтбора
З.Ы.Ы. Можно сначала скопировать, а уже потом в копии менять, а не при копировании

З.Ы.Ы.Ы. Вместо первого, ещё
СкопироватьКолонки (CopyColumns)
Синтаксис:
СкопироватьКолонки(<Колонки>)
Параметры:
<Колонки> (необязательный)
Тип: Строка.
Список колонок для копирования в формате: "Колонка1, Колонка2...". Если список не задан, то будут скопированы все колонки.

Лишнее удалить, что нужно изменить...
---
Нет "СтараяТаблица". Есть МАССИВ с строками таблицы.
---
Тогда смотри (6)
---
Такого оригинального подхода (через Ж...!!!) не видел...

Класс!!!
"+"!!!
---
Да все типовые так работают ))) Например та же БСПшная СтрокаТаблицыЗначенийВСтруктуру тоже работает через СтрокаТЗ.Владелец().Колонки
---
все типовые так работают

Значит не обращал внимания :-(
---
Нет "СтараяТаблица". Есть МАССИВ с строками таблицы.

Если есть массив отобранных строк - то есть и таблица источник...
Можно ли сделать выборку из запроса раз в секунду где-то сохраняя саму выборку?

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

(15) любопытная ссылка, спасибо!
---
бовал сохранить как реквизит формы с типом Произвольный , 1С обругала.

Если для формы там есть тип - Таблица значений
Для Объекта - есть хранилище значений. Правда может потребоваться сделать "ЗначениеВСтрокуВнутр"
---
В обсуждении этой https://infostart.ru/1c/articles/1451815/ темы есть интересный пример бесконечного фонового задания, которое могло бы подойти для решения вашей задачи.
---
А зачем делать несколько выборок если не делая запроса данные не изменятся?
---
выборка большая, хочу раз в секунду порциями обрабатывать, чтобы не вешать комп для других, типо как длительные операции
---
Тогда и нужно "повесить" запрос на фоновое задание...
---
но их я что-то с разбегу не могу освоить
---
Выборка одна.
---
Почему запрос не разбить на несколько частей и фоновым обрабатывать каждую порцию?
---
запрос не разбить на несколько частей и фоновым обрабатывать каждую порцию?

Не совсем понимаю как можно "разбить" запрос...

Можно пример!?

Если это что то типа: Выбирать несколько раз с меньшими интервалами дат? Но тогда например нужно будет суммировать обороты каждого периода...
---
Ответ зависит от запроса и от обработки результата. Неужели нельзя сначала просуммировать, а потом выбирать N строк, как пример?
---
Соль как раз в том, что нельзя изменять конфигурацию
---
Обработку выборки можно менять? Можно при обходе выборки при достижении определенного количества запускать фоновое
---
ладушки, подумаю над разбиением запроса.
---
если выборки большие, то оптимальнее сохранять на ее на диск (ЗначениеВСтрокуВнутр или ЗначениеВФайл), а попытки с формой и реквизитами будут плачевны.
---
В чем проблема сохранить выборку в тз и результат обработать потоками?
---
Если выборка действительно огромная, то серверу 1С может не хватить памяти и он начнет выгружать таблицы значений на диск, что приведет к замедлению работы.
---
тогда тоже самое делать с выборкой, делить ее на мелкие ТЗ и все также обрабатывать потоками.
---
я свою траблу решил выборкой по частям
т.е. на форме завел список обработанных ссылок, и при следующем запуске запроса их игнорировал.
Наверное можно было бы подключить обработчик ожидания, но уже не понадобилось, вручную запустил ...дцать раз

(15) любопытная ссылка, спасибо!
Как правильно написать? В отладчике смотрю колонка1, колонка2
 и т.д. существует. Как к ним обратиться в цикле?
```1c
    Для СчетчикДва = 1 По 31 Цикл
    нСтр.Колонка[СчетчикДва] = СчетчикДва
    КонецЦикла;
```
---
нСтр["Колонка"+СчетчикДва]
---
нСтр["Колонка"+СчетчикДва]
---
Спасибо
Доброго времени суток, не отрабатывает внешнее событие, создал обработку с формой, на форму повесил внешнее событие в свойствах

```1c
    Перем rs232;

    Процедура КнопкаВыполнитьНажатие(Кнопка)

    ЗагрузитьВнешнююКомпоненту("D:\vk_rs232\vk_rs232.dll");
    ПодключитьВнешнююКомпоненту("AddIn.vk_rs232");
    rs232 = Новый("AddIn.vk_rs232");
    rs232.ОткрытьПорт("COM5");

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

    Процедура ВнешнееСобытие(Источник, Событие, Данные)

    Сообщить(Данные);

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

Программой Arduino слушаю порт данные приходят.
Что было сделано - регистрация dll, запуск 1С от имени администратора
---
В настройках весов установил возврат каретки и все отрабатывает как нужно, во внешнее соединение попадает, данные приходят.
---
ПодключитьВнешнююКомпоненту немного меняли в новых платформах. Подключите так, как в синтаксис-помощнике рекомендуют, через оповещения
---
В настройках весов установил возврат каретки и все отрабатывает как нужно, во внешнее соединение попадает, данные приходят.
Здравствуйте! как можно снять замочки с расширения (необходимо снять галку "совместимость")?
---
Вы открыли расширение через Файл - Открыть?
Так оно не редактируется.

Надо в добавить новое расширение в конфигурацию (Конфигурация - Расширения конфигурации - Добавить), а потом загрузить в него расширение из файла и выбрать файл cfe.
Тогда расширение можно будет редактировать.
---
Расширение к хранилищу подключено?
---
Оно не подключено - выдает ошибку
---
Вы открыли расширение через Файл - Открыть?
Так оно не редактируется.

Надо в добавить новое расширение в конфигурацию (Конфигурация - Расширения конфигурации - Добавить), а потом загрузить в него расширение из файла и выбрать файл cfe.
Тогда расширение можно будет редактировать.
---
Спасибо! Помогло
Добрый день.

Следующий код отрабатывает без ошибок, но на форме таблица не отображается. В структуре реквизитов формы она есть.
Подскажете, какой механизм я не задействовал?

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

    ИмяРегистра = "Продажи";
    ИмяТаблицы = "Таблица_";

    ТипыРеквизита = Новый Массив;
    ТипыРеквизита.Добавить(Тип("РегистрНакопленияНаборЗаписей." + ИмяРегистра));
    ОписаниеТиповДляРеквизита = Новый ОписаниеТипов(ТипыРеквизита);

    МассивРеквизитов = Новый Массив;
    МассивРеквизитов.Добавить(Новый РеквизитФормы(ИмяТаблицы, ОписаниеТиповДляРеквизита,, "Регистр", Истина));

    ИзменитьРеквизиты(МассивРеквизитов);

    Для каждого ОписаниеРеквизита Из МассивРеквизитов Цикл
    Элемент = Элементы.Добавить(ОписаниеРеквизита.Имя, Тип("ТаблицаФормы"));
    Элемент.ПутьКДанным = ОписаниеРеквизита.Имя;
    Элемент.Обновить();
    КонецЦикла;

    КонецПроцедуры
```
---
Колонки в таблицу не добавили.
---
Колонки в таблицу не добавили.
---
Потому что надо добавлять колонки... Без колонок таблицы не существует, соответственно она не отображается.
---
Спасибо, думал, что они сами из набора "мигрируют".
Доброго времени суток!
Помогите с вопросом, есть выборка данных, которая выводит Регистратор, Контрагента и ТТН - строковое значение (оно получается из доп реквизита)
Как в отчете сделать группировку и какой функцией склеить все ТТН в одно поле?
---
Держи. Все просто - как и описывал выше:
Вычисляемое поле
Ресурс для этого поля (ресурс лучше не рассчитывать для общих итогов - оно там не нужно).
Обязательное условие - создать группировку, т.к. ресурсы рассчитываются для группировок.
Судя по всему, у вас была проблема в том, что вы для детальных записей пытались это посчитать.
---
https://infostart.ru/public/326358/
---
сейчас попробую
---
Склеить функцией массив() или вычислитьвыражениесгруппировкоймассив ("ТТН","ТТН").
Или функцией вычислитьвыражениесгруппировкойтаблицазначений ().
---
вычислитьвыражениесгруппировкоймассив ("ТТН","ТТН")
СоединитьСтроки, всевозможные вычислить и тд я попробовал в первую очередь, безрезультатно
---
Покажите схему, настройку структуры
Можно еще вот это почитать: https://infostart.ru/public/267055/

Функция вычислитьвыражениесгруппировкоймассив() и вычислитьвыражениесгруппировкойтаблицазначений() работают для группировок.
Другими словами, вам нужно создать вычисляемое поле, например "Перечень ТТН" и для него создать ресурс с выражением вычислитьвыражениесгруппировкоймассив ("ТТН","ТТН").
Далее в настройках схемы вы создаете группировку Путевой лист, Контрагент, и в выбранных полях указываете ресурс "Перечень ТТН"
---
Вот простой пример, может кто наглядно показать прям в нём как правильно ещё можно объединить строки в одно поле?
---
Держи. Все просто - как и описывал выше:
Вычисляемое поле
Ресурс для этого поля (ресурс лучше не рассчитывать для общих итогов - оно там не нужно).
Обязательное условие - создать группировку, т.к. ресурсы рассчитываются для группировок.
Судя по всему, у вас была проблема в том, что вы для детальных записей пытались это посчитать.
---
Вот в чём проблема. Я не делал группировку, а создавал детальные записи. Спасибо большое
---
Низкий поклон, мне тоже нужно было складывать строки в группировке из строк детальных записей!!!
Добрый день!
Помогите, сам уже не вывожу второй день
Необходимо в справочнике Партнеры добавить колонку в динамический список, в колонке вывести срок окончания действующего договора
Редактирую запрос динамического списка добавляю нужные реквизиты, в конфигураторе на форму списка добавляю колонку, все Ок, но в Предприятии нет колонки, пытался установить стандартные настройки, чистить КЭШ, ставил Галочку отображать всегда, ничего не помогло.
Потом чтобы проверить правильно ли я вообще пытаюсь отредактировать динамический список попробовал создать обычный справочник на подобии справочника партнеров с нуля, там все Ок, нормально отображает все колонки, все отлично настраивается , а в типовом не хочет(
Вычитал что скорее всего запрос мой подменятся другим, типовым, не могу найти где, как передать уже измененный запрос ума не приложу, хелп
erp 2.5.6.144/8.3.18.1289
---
там текст запроса формируется программно в общем модуле ПартнерыИконтрагенты вроде. Смотрите "При создании на сервере"
---
там текст запроса формируется программно в общем модуле ПартнерыИконтрагенты вроде. Смотрите "При создании на сервере"
---
там текст запроса формируется программно в общем модуле ПартнерыИконтрагенты вроде. Смотрите "При создании на сервере"
Спасибо, Нашел, правда подменяет, боже, а я ведь отладчиком до этого пролетал это место и не смотрел туда
Спасибо еще раз огромное
---
левое соединение к договорам по Владельцу + проверка Действующий + агрегирование например Максимум(ДатаЗавершения)
иначе будет ошибка задвоения партнеров
вроде как все
---
левое соединение к договорам по Владельцу + проверка Действующий + агрегирование например Максимум(ДатаЗавершения)
Спасибо за ответ, но не совсем то о чем я спрашивал, но еще раз спасибо за внимание
---
Единственное не пойму, нахрена функция возвращает готовый запрос созданный програмно
(в моем случае Функция ТекстЗапросаДинамическогоСпискаПартнерыСИнформациейПоКонтраг­енту в общем модуле ПартнерыИКонтрагенты ),
при том что запрос можно составлять в форме списка справочника...
Вопрос риторический, но если кто объяснит буду признателен
---
как вариант, этот же запрос может понадобиться где-то в другом месте
и доставать его из формы, это....

а из общего модуля, совсем другое.
Здравсвуйте, коллеги. Есть справочник КлассификаторЕдиницИзмерений, подскажите, пожалуйста, как вытащить из него Ссылку,Наименование и Код с помощью структуры? И где более подробно можно почитать про работу структуры .Заранее благодарен=)
---
Есть книга 1С:Предприятие 8.1. Простые примеры разработки к этой книге прилагается шаблон с примерами кода (смотри приложенный скриншот)
---
Эээээ....

```1c
    Структура = Новый Структура("Ссылка, Наименование, Код");
    ЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796");
    ЗаполнитьЗначенияСвойств(Структура, ЕдиницаИзмерения);
```
---
почитать про работу структуры
Что имеешь ввиду? Это как "про работу"? Структура - это тип данных. Почитайте СП. Это самые азы
---
ну имею ввиду как работать с этим типом данных. Понял, спасибо =)
---
Если есть БСП, то ф-я общего модуля ОбщегоНазначения.ЗначенияРеквизитовОбъекта(...)
---
Есть книга 1С:Предприятие 8.1. Простые примеры разработки к этой книге прилагается шаблон с примерами кода (смотри приложенный скриншот)
Добрый день, в конфигурации УТ создан новый справочник, который хранит реквизиты документа ЗаказКлиента. Прямо из документа вводом по строке можно создать новый элемент справочника. Реализовал проверку на дубликат, а вот как сделать отсечение лишних пробелов в начале и конце не соображу (новичек). На форме документа на поле ввода реквизита при событии создания добавил процедуру. Верное направление? Но вот в коде не уверен
 Если Объект.ЭтоНовый() Тогда
    Объект.Наименование = СокрЛП ("Новый элемент");
 КонецЕсли;
Вернее ко точно не верный. Может кто подскажет?
---
добавь в событие "ПередЗаписью" модуля объекта:
Если ЭтоНовый() Тогда
Наименование = СокрЛП (Наименование);
КонецЕсли;

Не знаю с точки зрения ведения справочника подойдет вам это или нет, но будет отрабатывать всегда, даже при программном создании элементов.
---
В форме нет метода "ЭтоНовый()", он доступен в модуле объекта. На форме можно проверять через ссылку:

```1c
    Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
    Объект.Наименование = СокрЛП ("Новый элемент");
    КонецЕсли;
```
---
Спасибо, сейчас попробую.А вот таким способом в модуле объекта сделал проверку на дубликаты при создании. Работает, но верно ли точки зрения программистов.

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

Не не то, не работает. Может в событиях ПриСоздании не сюда надо было вписывать?
---
добавь в событие "ПередЗаписью" модуля объекта:
Если ЭтоНовый() Тогда
Наименование = СокрЛП (Наименование);
КонецЕсли;

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