Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: 1С для программиста

  Все выпуски  

RusFAQ.ru: 1С для программиста


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Тимошенко Дмитрий
Статус: Студент
Рейтинг: 177
∙ повысить рейтинг >>
Владимир Лазурко
Статус: Профессионал
Рейтинг: 143
∙ повысить рейтинг >>
Anton Devitsin
Статус: Профессионал
Рейтинг: 88
∙ повысить рейтинг >>

∙ / КОМПЬЮТЕРЫ И ПО / Языки программирования / 1С для программиста

Выпуск № 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

Отправлен: 04.06.2009, 12:22
Вопрос задал: Провоторов Николай Владимирович, Посетитель
Всего ответов: 1
Страница вопроса >>


Отвечает Владимир Лазурко, Профессионал :
Здравствуйте, Провоторов Николай Владимирович.

Навскидку, самый простой вариант - это увеличить длину кода. Но если увеличить разрядность номера нельзя и стоит задача нумеровать с начала, сделайте следующее:

  • Создайте константу, определяющую последний номер чека, например, НомерТалона.
  • При создании нового талона проверяйте значение константы, добавляйте единицу к этому номеру и присваивайте код. Также при этом необходимо увеличивать на единицу и значение константы.
  • Такую процедуру назначения номеров необходимо вставить во все модули, где создается новый талон


Запись нужно делать в транзакции, тогда есть гарантия того, что больше никто не изменит счетчик номеров и не запишет новый элемент. Дополнительно это отсеивает ошибку записи к записи элемента с одинаковым кодом (например ,два пользователя начали формировать талоны - оба прочитали значение константы, оба добавили по единице и получили один и тот же код.
Во т пример кода:
Код:

...
НачатьТранзакцию();
ЕстьОшибки=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 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!



    Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
    оценить выпуск >>

    подать вопрос экспертам этой рассылки >>

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.0 beta от 24.05.2009

    В избранное