#0
by Shade84
Как можно осуществить подбор свободного кода справочника "Номенклатура" без захвата одного и того же кода несколькими операторами, подскажите, пожалуйста? Код для 7.7 есть, может кто адаптировать поможет? Процедура ВводНового(ПризнКопирования) Процедура ПриЗаписи и Процедура ПриЗакрытии или
#2
by Shade84
это нужно, для того, чтобы занять ранее удаленные кода, а нам еще и для того, чтобы занять 10000 штук пропущенных ранее элементов
#10
by Shade84
чтобы занять 10000 штук пропущенных ранее элементов Пропустили случайно при объединении двух баз
#15
by ksupalo
Мы делали такое со счетами-фактурами, чтобы нумерация была корректной. Маска была ГГГГММДДХХХ, т.е. в один день можно было выписать 10 тыс. счетов фактур и номер был уникальный. Выполняется поиск номера по коду только в том случае, если номер не уникальный. Если пока собирались проводить, номер кто-то занял, процедура повторялась. Проблем не было.
#17
by Shade84
Тут наоборот нужно сначала искать меньшие от максимального кода. а если нет то присваивать следующий
#18
by PRO100 NigGaZ
Выбрать все коды запросом, удаляем префиксы, преобразуем в число, сортируем по возрастанию, запускаем цикл от 1 по ТЗ.Количество, в цикле если не а = ТЗ.НомерСтроки Тогда это и есть пропущенный номер, может так...
#21
by Shade84
Да, вариант хороший. Только не знаю: 1.) как это сделать? 2.) как потом получить код, который он хочет присвоить 3.) как указать старый код элементу номенклатуры
#23
by Крошка Ру
Выбрать ВСЕ коды, а потом их перебирать, вдруг попадется неиспользуемый? Это сильно. Да и выбирать-то придется каждый раз, когда нужно новый присвоить.
#25
by Крошка Ру
Раз уж пошла такая пьянка, может действительно завести регистр (на время, пока все пропущенные номера не заполнятся). Туда один раз выбрать все пропущенные номера, а потом при создании нового справочника искать номер сначала там, а уж если там нет, то добавлять новый.
#27
by Shade84
Да :) 1.) как это сделать? 2.) как потом получить код, который он хочет присвоить 3.) как указать старый код элементу номенклатуры
#33
by PRO100 NigGaZ
а в объекте элемента в этой процедуре наверное Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) КонецПроцедуры это при создании нового, по поводу производительности должен за 0,2 сек выполнить
#37
by Крошка Ру
Смотри, по порядку: 1) Создаешь РС 2) Заполняешь его неиспользуемыми кодами в промежутке (от 00000 до максимального используемого значения для данного справочника) 3) При создании нового элемента берешь минимальный код из РС и присваиваешь его записываемому элементу. (можно руками: Элемент.Код = НашКодИзРегистра) 4) Если элемент успешно записан, удаляешь из РС использованный номер(чтоб второй раз потом его не использовать) 5) Если РС - пустой(т.е все пробелы в нумерации закончились), то новый код устанавливаешь методом УстановитьНовыйКод
#41
by Shade84
Если код не равен отличается от числа строки то это то что нам нужно в идеале они все по порядку идут и равны
#42
by PRO100 NigGaZ
косяк Если а <> ТЗ[Формат(а-1, "ЧН=; ЧГ=0")].Код Тогда мы же сравниваем с кодом )))
#44
by Shade84
{Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(2982)}: Поле объекта не обнаружено Если а <> ТЗ[Формат(а-1, "ЧН=; ЧГ=0")].Код Тогда
#51
by hhhh
может просто у тех номенклатур, которые после вбили поменять префикс. Тогда само будет браться из пропущенного диапазона..
#62
by Крошка Ру
Ах, черт, и здесь ошибка)) В условии цикла ТекНомер надо не с количеством элементов выборки, а с максимальным кодом из выборки сравнивать
#68
by Крошка Ру
Нет, все нормально: ТекНомер изначально меньше Выборка.Код(или равен, но тогда сразу переходим к след коду из выборки). Поэтому, пока не сравняем ТекНомер с очередным кодом из выборки , во внутреннем цикле увеличиваем ТекНомер(и сохраняем его в регистре, т.к. в Выборке его нет). Как только сравнялся, "перескакиваем" на следующий код из Выборки и т.д., пока Выборка не закончится
#69
by Shade84
не получается список нужных кодов попадают ненужные 00001 00005 00006 00085 00089 где 1 это существующая папка 5 - элемент, а вот 4 нету 6 папка, 84 нету 88 нету
#78
by Крошка Ру
Ну все правильно)) Ты код посмотри. Сначала заносится в регистр СтрНомер, ПОТОМ он увеличивается на один. В этот момент ты говоришь : Ага! А СтрНомер-1 - это то, что нужно. Т.е. СтрНомер+1-1 - это то что нужно)) Поставь "Сообщить(СтрНомер)" перед "ТекНомер=ТекНомер+1" и увидишь чудо))
#82
by Salimbek
И вообще, я бы в ТЗ загнал все номера, потом укладываешь эту ТЗ во временную таблицу, а потом: Выбрать Первые свНомер из ВсяТЗ Левое соединение Справочник.Номенклатура как Номенклатура ПО ВсяТЗ.Код=Номенклатура.Код Где Номенклатура.Код ЕСТЬ NULL Упорядочить ПО свНомер И все это еще бы один раз на сервер загнать, чтобы для каждого таблички не перекладывать.
#88
by Крошка Ру
Так проще, да, но больно уж большую ТЗ загружать-соединять, это уж проще тогда просто перебором в цикле отсеивать ненужные номера, как в самом начале предлагалось
#94
by Salimbek
Да не вопрос, создаем служебный Регистр сведений "Нумерация" с одним лишь полем "Код", которое заполняем всеми нужными числами. Потом останется только вызвать запрос: Выбрать Первые 1 Нумерация.Код из РегистрСведений.Нумерация КАК Нумерация Левое соединение Справочник.Номенклатура как Номенклатура ПО Нумерация.Код=Номенклатура.Код Где Номенклатура.Код ЕСТЬ NULL Упорядочить ПО Нумерация.Код
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Подбор из подчиненного справочника и из справочника владельца
- Подбор и передача из подбора ТЗ
- Подбор товара... Как сделать, чтобы в документ при подборе
- Длина кода номенклатуры в тис 8, при создании новой формирутет 7 убирая нули в начале кода?
- Выгрузка в весы не кода весового товара, а кода номенклатуры
- Редактирование кода справочника в справочнике Номенклатура в УТ 11.0
- В подборе нет свободного остатка. УТ
- Иерархия справочника "ВидыНоменклатуры" как у справочника "Номенклатура"
- Как отключить контроль уникальности кода справочника номенклатура?
В этой группе 1С
- УТ 11. В реализации нет партий и себестоимости.
- Перенос аванса 76.АВ
- учет расходов на оборудование, отданного в аренду клиенту. УТ11
- v7: Кто работает с системой Эдисофт - помогите начать
- Как автоматически выполнять внешний отчет по расписанию?
- как сменить кодировку записи ping`а в лог-файл ?
- УТ11 оборачиваемость
- У пользователя недостаточно прав на исполнение операции над базой данных.
- КА_переоценка валютных средств
- Ошибка в отчете: "Поля периода должны нумероваться последовательно.."
- На ноутбуке 6 разделов на винчестере. Зачем столько?
- Как создать хранилище в com-соединении?
- Какой порт использует 4G и 3G от Мегафона ?
- выбор программного продукта для ресторана 1с 8
- Расчет ПСК
- Отладка подключения к WS
- Преобразование значения к типу Булево не может быть выполнено
- Эквайринг 1С:Бухгалтерия 3.0
- ЗУП 3.0 - отражение бригадного наряда
- Ошибка в БП 3.0 при установке интерфейса 7.7