te10l
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору P.S.3 Ой, новую тему создал, дурак, модераторы, плиз, удалите или переместите Привет, население! У многих есть проблемка в 1С7: при вводе нового «элемента справочника» не ставит автоматически новый «код элемента» и стандартная функция «УстановитьНовыйКод(<Префикс>)» не помогает. Можно тип кода поменять со строкового на числовой, но это не правильный костыль, т.к. раз – нарушается «контроль уникальности», двас – если к коду уже где-то что-то привязано, то хана. Конечно кто-то это уже делал, я просто предлагаю свой вариант, может кому надо: В модуле «элемента» добавляем: В шапке: Перем НовыйКод_Н; //--// для скорости Процедура ПроверитьНовыйКод(НовыйКод,ВидСпр) Далее В теле: Процедура ПроверитьНовыйКод(НовыйКод,ВидСпр) //--// Спр=СоздатьОбъект("Справочник."+ВидСпр); Если Спр.НайтиПоКоду(НовыйКод)=1 Тогда НовыйКод_Н=Число(НовыйКод_Н)+1; Пока СтрДлина(НовыйКод_Н)<9 Цикл НовыйКод_Н="0"+НовыйКод_Н; КонецЦикла; Если Спр.НайтиПоКоду(НовыйКод_Н)=1 Тогда НовыйКод_Н=Число(НовыйКод_Н)+1; Пока СтрДлина(НовыйКод_Н)<9 Цикл НовыйКод_Н="0"+НовыйКод_Н; КонецЦикла; ПроверитьНовыйКод(НовыйКод_Н,ВидСпр); Иначе Код=НовыйКод_Н; СохранитьЗначение("НовыйКод_Н",НовыйКод_Н); КонецЕсли; Иначе Код=НовыйКод; СохранитьЗначение("НовыйКод_Н",НовыйКод); КонецЕсли; КонецПроцедуры //ПроверитьНовыйКод Процедура ВводНового(Копирование) НовыйКод_Н=ВосстановитьЗначение("НовыйКод_Н"); ПроверитьНовыйКод(Код,"Номенклатура"); Новый = 1; P.S. это для «Номенклатура» с длиной кода 9 P.S.2 это только для тех, кто правит стандартные конфигураци | Всего записей: 12 | Зарегистр. 26-01-2012 | Отправлено: 19:08 08-08-2022 | Исправлено: te10l, 19:13 08-08-2022 |
|