Как установить префикс нумерации справочника? УстановитьНовыйКод(<ПрефиксКода>)
Параметры:
<ПрефиксКода> (необязательный)
Тип: Строка.
Строковое значение префикса. Если префикс указан, то новый код будет формироваться с учетом префикса.
Описание:
Устанавливает новый код. Если в коде присутствует числовая часть, то новый код автоматически устанавливается следующим за имеющимся максимальным. При этом определяется текущий максимальный код среди элементов данного справочника.
Если передан префикс, то новый код устанавливается следующим образом: выполняется поиск максимального кода среди кодов, имеющих данный префикс, новый код выбирается как следующий от найденного кода.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Примечание:
Префикс имеет смысл, если для справочника в конфигураторе выбран тип кода Строка.
Пример:
Код 1C v 8.х УстановитьНовыйКод(Организация.Префикс+Строка(Прав(Год(ТекущаяДата()),2))+"-");
Объект.УстановитьНовыйКод("Пр-");
Категория:
Справочники Прямые запросы к SQL серверу. Как то возникла ситуация, когда в справочник, с включенной проверкой на уникальность кода, из вне приходят элементы с такими же кодами. Отключать проверку нельзя. Пришлось делать затычку.
Подключение к SQL в общем то широко описано:
Код 1C v 8.х Функция Подключение(Сервер,БД)
cnn = Новый COMОбъект("ADODB.Connection");
cnn.ConnectionTimeOut = 0;
cnn.CommandTimeOut = 0;
cnn.connectionString = "SERVER="+Сервер+"; Database="+БД+"; DRIVER=SQL Server; UID=sa; PWD=*****;";
cnn.Open();
if cnn.State()=0 then
Сообщить("Не удалось соединиться с сервером");
cnn = 0;
Возврат Ложь;
endif;
cnn.Execute("SET NOCOUNT ON");
Возврат cnn;
КонецФункции
Сервер и БД можно получить и программно, но муторно. Эти данные можно взять из свойств БД на сервере 1С.
Название таблицы и полей в SQL можно получить с помощью команды 1С:
Цитата Глобальный контекст
ПолучитьСтруктуруХраненияБазыДанных (GetDBStorageStructureInfo)
Синтаксис:
ПолучитьСтруктуруХраненияБазыДанных(<Объекты метаданных>, <Имена базы данных>)
Параметры:
<Объекты метаданных> (необязательный)
Тип: Массив. Массив имен объектов метаданных или массив объектов метаданных, для которых требуется получить структуру таблиц базы данных.
<Имена базы данных> (необязательный)
Тип: Булево. Определяет, в каких терминах выдается информация о структуре хранения.
Истина - в терминах СУБД
Ложь - в терминах SDBL.
Значение по умолчанию: Ложь
Возвращаемое значение:
Тип: ТаблицаЗначений. Возвращает таблицу значений с описаниями структуры таблиц, индексов и полей базы данных в терминах SDBL или используемой СУБД, в зависимости от значения параметра "Имена базы данных".
Если параметр не используется, то возвращаемая таблица значений содержит информацию о структуре таблиц базы данных всех объектов метаданных.
Таблица значений включает следующие колонки:
ИмяТаблицыХранения(StorageTableName) – имя таблицы SDBL или базы данных;
ИмяТаблицы(TableName) – имя таблицы в терминах языка запросов (для тех у кого оно есть);
Метаданные(Metadata) – полное имя объекта метаданных;
...
Дальше нам нужно новый элемент справочника все ж таки записать, ну например :
Код 1C v 8.х
Попытка
спр.Записать();
Исключение
Сообщить("Не уникальный код "+стр.Код+" у элемента "+стр.Наименование);
Спр.УстановитьНовыйКод();
Спр.Записать();
КонецПопытки;
Все, делаем подмену.
Код 1C v 8.х подключение=Подключение(Сервер,База);
ТекстЗапроса="UPDATE Номенклатура
|SET Номенклатура._Code="+Формат(КодНужный,"ЧГ=0")+"
|FROM _Reference57 AS Номенклатура
|WHERE (CAST(Номенклатура._Folder AS int)=1)
|AND (Номенклатура._Code="+Формат(Спр.Код,"ЧГ=0")+")
|";
подключение.Execute(ТекстЗапроса);
Сообщить("Код "+КодБыл+" подменен на "+КодНужный);
Категория:
Запросы Создание и запись новой группы справочника Код 1C v 8.х НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();
// Получить ссылку на группу, в которой должна находиться создаваемая группа.
Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Материалы", Истина);
НоваяГруппа.Наименование = "Строительные";
НоваяГруппа.Родитель = Родитель;
// Установить другие реквизиты.
НоваяГруппа.Записать();
Код 1C v 7.x спр=СоздатьОбъект("Справочник.Контрагенты");
//создаваться будет прямо в корне справочника
спр.НоваяГруппа();
спр.Наименование="Наша новая группа";
//и так далее
//спр.Реквизит1="......"
//спр.Реквизит2="......"
спр.УстановитьНовыйКод();
спр.Записать();
Категория:
Справочники Создание и запись нового элемента справочника Код 1C v 8.2 УП &НаКлиенте
Процедура ПоКнопкеНовыйКонтрагент(Команда)
// Вставить содержимое обработчика.
Перем НовыйКонтрагент;
НовыйКонтрагент = Новый Структура("Наименование, ПолноеНаименование, ИНН");
НовыйКонтрагент.Наименование = "РиК ООО";
НовыйКонтрагент.ПолноеНаименование = "ООО Рога и копыта";
НовыйКонтрагент.ИНН = "123456789012";
Если СоздатьНовогоКонтрагента(НовыйКонтрагент) = 0 Тогда
Сообщить("Не удалось создать нового контрагента");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СоздатьНовогоКонтрагента(СтруктураСправочника)
Перем НовыйКонтрагент,СпрПользователи;
СпрКонтрагенты = Справочники.Контрагенты;
НовыйКонтрагент = СпрКонтрагенты.СоздатьЭлемент();
НовыйКонтрагент.Наименование = СтруктураСправочника.Наименование;
НовыйКонтрагент.ПолноеНаименование = СтруктураСправочника.ПолноеНаименование;
НовыйКонтрагент.ИНН = СтруктураСправочника.ИНН;
Попытка
НовыйКонтрагент.Записать();
Возврат 1;
Исключение
Возврат 0;
КонецПопытки;
КонецФункции
Код 1C v 8.х //Пример 1
НовыйЭлемент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйЭлемент.Наименование = "ООО Березка";
// Установить другие реквизиты.
НовыйЭлемент.Записать();
НовыйЭлемент = Справочники.Банки.СоздатьЭлемент();
// Получить ссылку на группу, в которой будет находиться новый элемент.
Родитель = Справочники.Банки.НайтиПоКоду("000000001");
НовыйЭлемент.Наименование = "ВТБ";
НовыйЭлемент.Код = "000000011";
НовыйЭлемент.Родитель = Родитель;
// Установить другие реквизиты.
НовыйЭлемент.Записать();
//Пример 2
СпрСотр = Справочники.Сотрудники;
//или так:
//СпрСотр = Справочники["Сотрудники"]
НовЭл = СпрСотр.СоздатьЭлемент();
НовЭл.Наименование = "Иванов Иван Иванович";
НовЭл.Оклад = 100;
НовЭл.Записать();
Код 1C v 7.x //Пример 1
//создаваться будет прямо в корне справочника
спр = создатьОбъект("Справочник.Контрагенты");
спр.Новый();
спр.Наименование = "ООО Березка";
спр.УстановитьНовыйКод();
// итак далее
//спр.Реквизит1="......"
//спр.Реквизит2="......"
спр.Записать();
//Пример 2
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.Новый();
СпрСотр.Наименование = "Иванов Иван Иванович";
СпрСотр.Оклад = 100;
СпрСотр.Записать();
Категория:
Справочники