7.7 Нумерация документов

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Peroman, 28 июл 2010.

  1. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Нужно перенумеровать доки:
    Код:
    
    Процедура Сформировать()
    
    Док = СоздатьОбъект("Документ.ЗаявкаНовая");
    Док.ВыбратьДокументы();
    
    НовыйНомер=0;
    //НачатьТранзакцию();
    
    Пока Док.ПолучитьДокумент() = 1 Цикл
    Если Лев(Док.НомерДок,2) = "Х-" Тогда
    НовыйНомер=НовыйНомер+1;
    Док.НомерДок="Вр-0"+НовыйНомер;
    Сообщить(Док.НомерДок);
    Док.Записать();
    КонецЕсли;
    КонецЦикла;
    
    Док.ВыбратьДокументы();
    Пока Док.ПолучитьДокумент() = 1 Цикл
    Если Лев(Док.НомерДок,2) = "Вр" Тогда
    Док.НомерДок=СтрЗаменить(Док.НомерДок,"Вр","Х");
    Сообщить(Док.НомерДок);
    Док.Записать();
    КонецЕсли;
    КонецЦикла;
    
    КонецПроцедуры
    
    
    При повтороном переборе документов на 0100 выскакивает ошибка: номер не уникальный. Почему?
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
  3. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
  4. Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
  5. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    точнее не то чтобы не-то , при условии выбора документов с префиксом х-, опять таже петрушка, ошибка: не удалось записать, номер не уникальный
    Если префикс ставить просто "х" или любая друга буква например "Т-" все нормуль
  6. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Там для скачки нужно авторизироваться, я там был зарегин но давно а по новой региться лень
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Значт х- у вас уже есть... Перенумеровать ВСЕ в хх, а потом уже в х-
  8. TopicStarter Overlay
    Peroman
    Offline

    Peroman Опытный в 1С

    Регистрация:
    26 май 2009
    Сообщения:
    879
    Симпатии:
    13
    Баллы:
    29
    Код:
    Док = СоздатьОбъект("Документ.ЗаявкаНовая");
    
    Док.ВыбратьДокументы();
    //НачатьТранзакцию();
    НомерДокумента=0;
    Пока Док.ПолучитьДокумент() = 1 Цикл
    НомерДокумента=НомерДокумента+1;
    Если Найти(СокрЛП(Врег(Док.НомерДок)),"Х")= 1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда	</span>
    Сообщить(Док.НомерДок);
    Док.НомерДок = "Х-0"+НомерДокумента;
    попытка
    Док.Записать();
    Исключение
    Сообщить(Док.НомерДок+"не записалось");
    Конецпопытки
    Иначе 
    Продолжить
    КонецЕсли;
    КонецЦикла;
    
    
    Вот так делаю 2 раза, на первом проходе матюкается на уникальность, во втором нет. :unsure: Почему?
    Просто любопытно.
  9. Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    Добавь на форму сз.типдок, рекв.преф - т.строка.В модуль:
    Код:
    //
    Процедура Выполнить()
    тип=типдок.получитьзначение(типдок.текущаястрока());
    док=создатьобъект("Документ."+тип+"");
    НовыйНомер=0;
    док.выбратьдокументы();
    Пока док.получитьдокумент()=1 цикл
    НовыйНомер=НовыйНомер+1;
    Док.НомерДок=СокрЛП(СокрЛП(преф)+СокрЛП(НовыйНомер));
    Док.Записать();
    КонецЦикла;	
    КонецПроцедуры
    
    Для с=1 по Метаданные.Документ() Цикл
    ТипДок.ДобавитьЗначение(Метаданные.Документ(с).Идентификатор);
    КонецЦикла;
    

Поделиться этой страницей