Проверка уникальности по наименованию в общей форме.
Добрый день.
Начинаю изучать 1С.
И вопрос вот в чем.
Нужно составить функцию в общем модуле которая бы проверяла уникальность элемента по наименованию. А потом эту функцию вызывать в любом справочнике процедурой передЗаписью.
&НаСервере
Функция ПроверкаНаИменование();
Элемент = Справочники.(Наименование);
Если Не Элемент.Пустая() Тогда
Отказ= Истина;
Сообщить ("Уже существует");
КонецЕсли;
Вот так вот начал действовать....Но выдается ошибка.
Может ктонибудь намекнуть в какую сторону мне думать?
КонецФункции
Начинаю изучать 1С.
И вопрос вот в чем.
Нужно составить функцию в общем модуле которая бы проверяла уникальность элемента по наименованию. А потом эту функцию вызывать в любом справочнике процедурой передЗаписью.
&НаСервере
Функция ПроверкаНаИменование();
Элемент = Справочники.(Наименование);
Если Не Элемент.Пустая() Тогда
Отказ= Истина;
Сообщить ("Уже существует");
КонецЕсли;
Вот так вот начал действовать....Но выдается ошибка.
Может ктонибудь намекнуть в какую сторону мне думать?
КонецФункции
По теме из базы знаний
- Выгрузка-загрузка любых данных из 1С (и измененных) в XML между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2/3.0
- Разработка и сценарное тестирование с Vanessa-ADD. Практические примеры сценариев. Шаги встроенной библиотеки
- Подготовка к экзамену 1С:Специалист по платформе. Рецепты от Капитана
- Самые используемые методы БСП 3.1.9
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Элемент = Справочники[НазваниеСправочникаСтрокой].НайтиПоНаименованию(Наименование,Истина);
Если ЗначениеЗаполнено(Элемент) Тогда
Отказ= Истина;
Сообщить ("Уже существует");
КонецЕсли;
Как советовали выше, делаешь подписку на событие и в общем модуле пишешь данный код.
Только подправить надо.
Если ЗначениеЗаполнено(Элемент) Тогда
Отказ= Истина;
Сообщить ("Уже существует");
КонецЕсли;
Как советовали выше, делаешь подписку на событие и в общем модуле пишешь данный код.
Только подправить надо.
Во-первых если выдается ошибка - вы должны показать обществу эту ошибку...
Во-вторых тут очевидный неверный текст функции...
для использования функции для любого справочника вы должны использовать примерный механизм
Во-вторых тут очевидный неверный текст функции...
для использования функции для любого справочника вы должны использовать примерный механизм
******************
ИмяСпр="Номенклатура";
СуществуетЭлементСправочникаСТакимНаименованием=ПроверкаНаИм<wbr>енование(ИмяСпр, "Мой любой товар");
************************
Функция ПроверкаНаИменование(ИмяСправочника, НаименованиеОбъектаСправочника);
ТоварНайден=Справочники[ИмяСправочника].НайтиПоНаименованию( НаименованиеОбъектаСправочника,Истина);
Если НайденнаяСсылка = Справочники[ИмяСправочника].ПустаяСсылка()
Тогда Результат=Ложь;
Иначе Результат=Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
Показать
(6) начинать нужно с достижения работоспособности кода. его можно поместить в обработку , в которой добавляются элементы справочников хоть для тестирования.
А в конце необходимо задействовать механизм подписок на события справочников ПередЗаписью.
То есть для каждого справочника должна быть подписка...
А в конце необходимо задействовать механизм подписок на события справочников ПередЗаписью.
То есть для каждого справочника должна быть подписка...
Вот такие ошибки выдает:
{ОбщийМодуль.Проверки.Модуль(4,24)}: Ожидается идентификатор
Элемент = Справочники.<<?>>(Наименование); (Проверка: Сервер)
{ОбщийМодуль.Проверки.Модуль(4,25)}: Ожидается символ ';'
Элемент = Справочники.(<<?>>Наименование); (Проверка: Сервер)
{ОбщийМодуль.Проверки.Модуль(4,37)}: Неопознанный оператор
Элемент = Справочники.(Наименование<<?>>); (Проверка: Сервер)
{ОбщийМодуль.Проверки.Модуль(4,24)}: Ожидается идентификатор
Элемент = Справочники.<<?>>(Наименование); (Проверка: Тонкий клиент)
{ОбщийМодуль.Проверки.Модуль(4,25)}: Ожидается символ ';'
Элемент = Справочники.(<<?>>Наименование); (Проверка: Тонкий клиент)
{ОбщийМодуль.Проверки.Модуль(4,37)}: Неопознанный оператор
Элемент = Справочники.(Наименование<<?>>); (Проверка: Тонкий клиент)
{ОбщийМодуль.Проверки.Модуль(4,24)}: Ожидается идентификатор
Элемент = Справочники.<<?>>(Наименование); (Проверка: Сервер)
{ОбщийМодуль.Проверки.Модуль(4,25)}: Ожидается символ ';'
Элемент = Справочники.(<<?>>Наименование); (Проверка: Сервер)
{ОбщийМодуль.Проверки.Модуль(4,37)}: Неопознанный оператор
Элемент = Справочники.(Наименование<<?>>); (Проверка: Сервер)
{ОбщийМодуль.Проверки.Модуль(4,24)}: Ожидается идентификатор
Элемент = Справочники.<<?>>(Наименование); (Проверка: Тонкий клиент)
{ОбщийМодуль.Проверки.Модуль(4,25)}: Ожидается символ ';'
Элемент = Справочники.(<<?>>Наименование); (Проверка: Тонкий клиент)
{ОбщийМодуль.Проверки.Модуль(4,37)}: Неопознанный оператор
Элемент = Справочники.(Наименование<<?>>); (Проверка: Тонкий клиент)
Что нужно сделать
Создайте общий модуль и напишите в нём функцию, возвращающую «Истина», если пользователь пытается создать элемент справочника (любого), который совпадает по наименованию с уже существующим. Функция должна подходить для любого справочника.
Примените написанную функцию из общего модуля хотя бы в двух справочниках («Номенклатура», «Контрагенты»), чтобы запретить запись элемента, если функция возвращает «Истина».
Подсказка: учтите, если пользователь перезаписывает уже существующий элемент, нужно в проверку добавить условие: проверку осуществляем, только если это новый элемент. Иначе такая проверка будет находить по наименованию редактируемый пользователем элемент и возвращать «Истина».
Создайте общий модуль и напишите в нём функцию, возвращающую «Истина», если пользователь пытается создать элемент справочника (любого), который совпадает по наименованию с уже существующим. Функция должна подходить для любого справочника.
Примените написанную функцию из общего модуля хотя бы в двух справочниках («Номенклатура», «Контрагенты»), чтобы запретить запись элемента, если функция возвращает «Истина».
Подсказка: учтите, если пользователь перезаписывает уже существующий элемент, нужно в проверку добавить условие: проверку осуществляем, только если это новый элемент. Иначе такая проверка будет находить по наименованию редактируемый пользователем элемент и возвращать «Истина».
//НА МОДУЛЕ СПРАВОЧНИКА.
Процедура ПередЗаписью(Отказ)
НазваниеСправочника = Ссылка.Метаданные().Имя;
Отказ = ДубльЭлементСправочника.ПроверкаНовогоЭлемента(Наименование,НазваниеСправочника,ЭтоНовый());
КонецПроцедуры
//ОБЩИЙ МОДУЛЬ. Имя общего модуля: "ДубльЭлементСправочника"
//Проверяем свойства "ДубльЭлементСправочника", чтобы вызов был Клиент, Сервер
&НаСервере
Функция ПроверкаНовогоЭлемента (Наименование,НазваниеСправочника,ЭтоНовый) Экспорт
Отказ = Ложь;
Если ЭтоНовый Тогда
Элемент = Справочники[НазваниеСправочника].НайтиПоНаименованию(Наименование);
Если НЕ Элемент.Пустая()Тогда
Отказ=Истина;
Сообщить("Уже существует элемент с таким наименованием!");
КонецЕсли;
КонецЕсли;
Возврат Отказ;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот