Выпуск № 1031 от 09.06.2009, 12:35
Администратор рассылки: Калашников О.А., Руководитель
В рассылке: подписчиков - 520, экспертов - 111
В номере: вопросов - 1, ответов - 1
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
Вопрос № 168931: Приветствую всех. Бух77.Организована реализация талонов на бензин по штрихкоду, в него вошли номер контрагента 3 знака, номерТМЦ 2 знака, вид талона 2 знака, номер талона 5 знаков и последний по EAN, дошли 5 знаков номера талона до 99999, а дальше мн...
Вопрос № 168931:
Приветствую всех. Бух77.Организована реализация талонов на бензин по штрихкоду, в него вошли номер контрагента 3 знака, номерТМЦ 2 знака, вид талона 2 знака, номер талона 5 знаков и последний по EAN, дошли 5 знаков номера талона до 99999, а дальше мне нужно чтобы опять начались с №1, по 80000 уже из программы удалены, с 80000 по 99999 еще используются их пока удалять нельзя, а справочник естественно пишет следующий после 99999
Отвечает Владимир Лазурко, Профессионал :
Здравствуйте, Провоторов Николай Владимирович.
Навскидку, самый простой вариант - это увеличить длину кода. Но если увеличить разрядность номера нельзя и стоит задача нумеровать с начала, сделайте следующее:
Создайте константу, определяющую последний номер чека, например, НомерТалона.
При создании нового талона проверяйте значение константы, добавляйте единицу к этому номеру и присваивайте код. Также при этом необходимо увеличивать на единицу и значение константы.
Такую процедуру назначения номеров необходимо вставить во все модули, где создается новый талон
Запись нужно делать в транзакции, тогда есть гарантия того, что больше никто не изменит счетчик номеров и не запишет новый элемент. Дополнительно это отсеивает ошибку записи к записи элемента с одинаковым кодом (например ,два пользователя начали формировать талоны - оба прочитали значение константы, оба добавили по единице и получили один и тот же код. Во
т пример кода:
Код:
... НачатьТранзакцию(); ЕстьОшибки=1; // Флаг ошибок Пока ЕстьОшибки=1 Цикл НомерТалона = Константа.НомерТалона; СпрТалоны.Код = НомерТалона; Попытка СпрТалоны.Записать(); ЕстьОшибки=0; Исключение Если ОписаниеОшибки()="Код
не уникальный!" Тогда НомерТалона=НомерТалона+1; Константа.НомерТалона = НомерТалона; Иначе //ОписаниеОшибки()="Код не уникальный!" // другая ошибка -написать обработкик для этой тошибки КонецЕсли; //ОписаниеОшибки()="Код не уникальный!" КонецПопытки; КонецЦикла; ЗафиксироватьТранзакцию(); ...
Если возникнут вопросы - можем продолжить в мини-форуме.
Успехо
в! С уважением, Владимир.
----- И как хотите, чтобы с вами поступали люди, так и вы поступайте с ними. (Евангелие от Луки, 6:31, совр. перевод)
Ответ отправил: Владимир Лазурко, Профессионал
Ответ отправлен: 04.06.2009, 17:26
Оценка ответа: 4 Комментарий к оценке: Приношу извинения, обстоятельства, у клиентов (IT-пожар), тушил. О моем вопросе, может быть вы не совсем поняли меня. Имеется док. реализ. талонов, из него открывается обработка, которая заполняется из документа и формирует штрихкод, только 13 цифр, КодКонтрагента 4 знака, КодТМЦ 2 знака, ВидТалона 1 знак, Код талона-5 знаков и контрольный EAN 1 знак, при сохранении сформированного списка->заполняется
справочник талонов, где записываются только коды талонов из 5 знаков, при достижении кода следующего за 99999 справочник отказывается записывать элемент из-за неуникальности номера, мне нужно, чтобы при достижении кода 99999 програмно справочник начинал код талона с №1 или еще интересней, со свободного самого малого
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 250435
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.