|
Вопрос по установке поля код в справочнике | ☑ | ||
---|---|---|---|---|
0
Rassvetniy
13.07.16
✎
02:22
|
Приветствую. Есть справочник товара, поле код число, свойство автономерация включено. Работает по принципу максимум +1. Если есть коды 1,2, 100 то следующий добавит 101. А как сделать чтоб не 101 было а 3? В каком месте можно переделать стандартное автоприсваивание кода?
|
|||
1
PR
13.07.16
✎
02:36
|
приустановкеновогокода
|
|||
2
Rassvetniy
13.07.16
✎
02:48
|
PR, это обработка события в модуле объекта насколько понимаю?
процедура приУстановкеНовогоКода(Ложь) конецпроцедуры а что дальше в этой процедуре писать что то не нашел пока что... |
|||
3
PR
13.07.16
✎
02:49
|
(2) Вообще, код туда пишется. Может тебе с чего попроще начать? С чтения ЖКК что ли.
|
|||
4
Rassvetniy
13.07.16
✎
03:44
|
данный код эффекта не дает:
Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс) // Вставить содержимое обработчика. СтандартнаяОбработка = Ложь; Код = 500; КонецПроцедуры что то нигде не пишут как обращаться в модуле объекта к текущему элементу который и вызвал событие, во всяком случае пока не нашел |
|||
5
PR
13.07.16
✎
03:46
|
(4) Объект.Код
>>что то нигде не пишут как обращаться в модуле объекта к текущему элементу который и вызвал событие Не гони >>во всяком случае пока не нашел А вот это уже больше похоже на правду |
|||
6
impulse9
13.07.16
✎
04:11
|
Глобальный контекст (Global context)
ОбновитьНумерациюОбъектов (RefreshObjectsNumbering) Синтаксис: ОбновитьНумерациюОбъектов(<Метаданные>) Параметры: <Метаданные> (необязательный) Тип: Массив; ОбъектМетаданных: Куб, ОбъектМетаданных: ТаблицаИзмерения, ОбъектМетаданных: ВнешнийИсточникДанных, ОбъектМетаданных: Поле, ОбъектМетаданных: Таблица, ОбъектМетаданных: HTTPСервис, ОбъектМетаданных: Функция, ОбъектМетаданных: ШаблонURLHTTPСервиса, ОбъектМетаданных: ОпределяемыйТип, ОбъектМетаданных: ПланВидовРасчета, ОбъектМетаданных: ПланСчетов, ОбъектМетаданных: БизнесПроцесс, ОбъектМетаданных: Документ, ОбъектМетаданных: ЖурналДокументов, ОбъектМетаданных: Задача, ОбъектМетаданных: ПланВидовХарактеристик, ОбъектМетаданных: ПланОбмена, ОбъектМетаданных: РегистрБухгалтерии, ОбъектМетаданных: РегистрНакопления, ОбъектМетаданных: РегистрРасчета, ОбъектМетаданных: РегистрСведений, ОбъектМетаданных: Справочник, ОбъектМетаданных: ФункциональнаяОпция, ОбъектМетаданных: ПараметрФункциональныхОпций, ОбъектМетаданных: Команда, ОбъектМетаданных: ГруппаКоманд, ОбъектМетаданных: ХранилищеНастроек, ОбъектМетаданных: ОбщаяКоманда, ОбъектМетаданных: WebСервис, ОбъектМетаданных: WSСсылка, ОбъектМетаданных: Интерфейс, ОбъектМетаданных: Константа, ОбъектМетаданных: КритерийОтбора, ОбъектМетаданных: Нумератор, ОбъектМетаданных: Обработка, ОбъектМетаданных: ОбщаяКартинка, ОбъектМетаданных: Макет, ОбъектМетаданных: ОбщийМодуль, ОбъектМетаданных: Форма , ОбъектМетаданных: Стиль, ОбъектМетаданных: Язык, ОбъектМетаданных: Отчет, ОбъектМетаданных: ПакетXDTO, ОбъектМетаданных: ПараметрСеанса, ОбъектМетаданных: Перечисление, ОбъектМетаданных: ПодпискаНаСобытие, ОбъектМетаданных: Подсистема, ОбъектМетаданных: Последовательность, ОбъектМетаданных: РегламентноеЗадание, ОбъектМетаданных: Роль, ОбъектМетаданных: ЭлементСтиля, ОбъектМетаданных: Графа, ОбъектМетаданных: Измерение, ОбъектМетаданных: ЗначениеПеречисления, ОбъектМетаданных: ОперацияWebСервиса, ОбъектМетаданных: Перерасчет, ОбъектМетаданных: ПараметрWebСервиса, ОбъектМетаданных: ПризнакУчетаПланаСчетов, ОбъектМетаданных: ПризнакУчетаСубконтоПланаСчетов, ОбъектМетаданных: Реквизит, ОбъектМетаданных: ТабличнаяЧасть, ОбъектМетаданных: Ресурс, ОбъектМетаданных: РеквизитАдресации, ОбъектМетаданных: ОбщийРеквизит. Объект метаданного или массив объектов метаданных, для объектов которого будет выполнено обновление. Если значение параметра не указано, то обновление будет выполнено для всех типов объектов. Описание: Выполняет обновление номеров в соответствии с номерами, записанными в базе данных. После вызова данного метода все выданные, но незаписанные номера, становятся невалидными т.к. не гарантируется их уникальность. Данный метод разрешено вызывать только администратору системы. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). -------------------------------------------------------------------------------- |
|||
7
PR
13.07.16
✎
04:13
|
(6) И че и че?
|
|||
8
impulse9
13.07.16
✎
04:53
|
(7) в ИТС написано что надо ручками исправить 100 на 3, тогда все пойдет нормально.
http://its.1c.ru/db/metod8dev/content/1550/hdoc А если прямо надо 1,2,100,3,4, то надо автонумерацию отключать у справочника, и в модуле справочника в ПриЗаписи() или ПриУстановкеНовогоКода() делать поиск нужного номера |
|||
9
PR
13.07.16
✎
05:47
|
(8) Я смотрю, чтение не твое.
В (0) написано "поле код число". |
|||
10
Rassvetniy
15.07.16
✎
00:04
|
пока не дошли руки читать документацию а тут подсказок и не появилось ))
|
|||
11
Звездец
15.07.16
✎
00:07
|
(10) та действительно, читать докуметацию. Ишь чего надумали
|
|||
12
Rassvetniy
15.07.16
✎
02:43
|
единственно что вычитал в документации это обратится к объекту через ЭтотОбъект:
Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс) // Вставить содержимое обработчика. СтандартнаяОбработка = Ложь; ЭтотОбъект.Код = 500; КонецПроцедуры эффект 0, это событие вообще по ходу не отрабатывает ни на сообщение ни на точку останова 0 реакции |
|||
13
Rassvetniy
15.07.16
✎
03:11
|
вру событие обрабатывается если добавить ЭтотОбъект.Записать() и установить отказ на запись то указывает на строку в событии пока эксперименты этим ограничиваются )
|
|||
14
PR
15.07.16
✎
03:18
|
Бросай это неблагодарное дело, не твое это, видимо
|
|||
15
Rassvetniy
24.07.16
✎
14:13
|
если кто столкнется с тем же, вот решение вопроса который тут задавал:
Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс) // Вставить содержимое обработчика. СтандартнаяОбработка = Ложь; Рез = 1000000; Кл = 0; Пока Кл < Рез Цикл Запрос = Новый Запрос; Запрос.Текст = "выбрать максимум(код) как Рез, количество(код) как Кл из справочник.номенклатура где код<&пар "; Запрос.УстановитьПараметр("пар", Рез); РезультатЗапроса = Запрос.Выполнить(); ВыборкаЗаписи = РезультатЗапроса.Выбрать(); ВыборкаЗаписи.Следующий(); Рез = ВыборкаЗаписи.Рез; Кл = ВыборкаЗаписи.Кл; КонецЦикла; ЭтотОбъект.Код = Рез+1; КонецПроцедуры в идеале поиск конечно нужно заменить на бинарный, иначе надто много запросов запутаться можно в том, что ПриУстановкеНовогоКода работает только если поле код пустое и стоит автонумерация, если поле код уже заполнено нужно использовать процедуру ПередЗаписью |
|||
16
kosts
24.07.16
✎
14:22
|
Расстрелять за запрос в цикле. И вызывать в передзаписью не нужно иначе нельзя будет вручную ввести свой код, всегда будет меняться.
|
|||
17
Горогуля
24.07.16
✎
14:35
|
(16) погоди-ка с расстрелом ;)
(15) ну и зачем тут цикл? |
|||
18
Aleksey
24.07.16
✎
14:52
|
(16) Если расстреливать тех кто пишет запрос в цикле, то кто тогда типовые от 1С писать будут? Ведь типовые - это кладезь болтов на стандарты и правила. Их там так густо набито...
|
|||
19
kosts
24.07.16
✎
15:34
|
(18) Не спорю, в некоторых сложных случаях, действительно лучше и проще циклом сделать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |