Имя: Пароль:
1C
1C 7.7
v7: 1С 77 Нумерация документов
0 maz
 
17.08.11
17:05
Ситуация: в ЗиК 77 документ Начисление Отпуска нумеровался себе преспокойно, но вдруг на определенном номере взял и перестал. Если поменять номера в документах, то автонумерация оживает, но опять же до этого определенного номера... С чем и что можно увязать - непонятно. Номера вручную не менялись, все так и шли автоматом, но после номера  001070, тупо ничего не присваивает и всё тут. Кто нить видит какое-то возможное объяснение такому непонятному поведению системы?
1 andrewks
 
17.08.11
17:08
заместо 0 бука О?
2 andrewks
 
17.08.11
17:08
+(1) *буква
3 maz
 
17.08.11
17:09
неа, автоматом ставит нули. букву не поставит:)
4 ado
 
17.08.11
17:29
(0) >> Номера вручную не менялись

Да щаззз!
5 maz
 
17.08.11
17:35
угу
6 maz
 
17.08.11
17:36
лично проверил:)
7 palpetrovich
 
17.08.11
17:38
ищи
Процедура глУстановитьНовыйНомер(Конт) Экспорт  
   Если Конт.Вид() = "НачислениеОтпуска" Тогда
       Конт.УстановитьНовыйНомер();
       Если Конт.НомерДок = "001070" Тогда  
           Конт.НомерДок = "";
           Конт.Записать();      
           Сообщить("Сектор ПРИЗ!!! Вам отпуск неположен ");
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры
8 maz
 
17.08.11
17:39
:)))))))))))))
9 zak555
 
17.08.11
17:41
(7) это откуда ?
10 palpetrovich
 
17.08.11
17:43
(9) отсюда :)
11 maz
 
17.08.11
17:45
кстати, в прошлом году эта цицра почему-то не смутила ничего. всё нумеровалось. Вот что это может быть? НУ ЧТООО???!
12 Gucci76
 
17.08.11
17:49
КоличествоПопыток надо увеличить в глобальнике.
Может из-за этого.
Я у которых такое бывает с 100 до 1000 увеличил.
13 palpetrovich
 
17.08.11
17:50
(11) если ты серъезно, посмтори в отладчике что 1с пытается присвоить, елси не найдешь гада - то  давай сюда больше инфы:
длина и тип номера - это раз, скопируй сюда проблемный "001070" через буфер обмена - два, а еще лучше сделай запрос по всем докам, выгрузи в ТЗ, отсортируй по номеру - и последние несколько сюда запость   :)
14 Gucci76
 
17.08.11
17:53
Обрати внимание на даты документов Отпуска.
Может док с отпуском отличаться сильно от текущей даты.
Короче, попробуй сначала (12)
15 ado
 
17.08.11
17:53
(6) Выводил на заднее крыльцо, и порол, пока не признались?
16 maz
 
17.08.11
17:55
серьёзно. серьёзней некуда:) по номеру отсортировал, смотрю сижу и диву даюсь, всё ну прям очень замечательно выглядит. Никаких не видно загогулин. И на скулёвой, и на файловой, и даж тестирование и исправление сделал. НИЧЕГОШЕНЬКИ не помогает.
НомерДок ДатаДок
001060    12.08.2011
001061    15.08.2011
001062    15.08.2011
001063    15.08.2011
001064    15.08.2011
001065    17.08.2011
001066    17.08.2011
001067    17.08.2011
001068    17.08.2011
001069    17.08.2011
001070    17.08.2011
   17.08.2011
17 Gucci76
 
17.08.11
17:56
(12) сделал????
18 maz
 
17.08.11
17:57
(12) сори, недопонял, какое имеется ввиду количество попыток? в смысле попыток чего?
19 Gucci76
 
17.08.11
17:58
КолвоПопыток т.е. надо искать в глобальнике
20 maz
 
17.08.11
17:58
ааа, ща попробую
21 Gucci76
 
17.08.11
17:58
подожу. Интересно, прав ли я???!!! )))))
22 Gucci76
 
17.08.11
17:59
Кстати, есть уже документы с пустым номером???
23 maz
 
17.08.11
18:00
снимите шляпы обнажите головы...
24 maz
 
17.08.11
18:00
КолвоПопыток!!!!!!!
25 maz
 
17.08.11
18:01
афигеть
26 Gucci76
 
17.08.11
18:01
ЗиК она специфичная, там есть много чего, чего нет в других конфах!!!!
27 maz
 
17.08.11
18:01
Илья, спасибо огромное!
28 maz
 
17.08.11
18:02
я вот честно, не предположил, что этот момент как-то прописывается кодом..
29 Gucci76
 
17.08.11
18:02
Рад стараться!!! ))))
30 maz
 
17.08.11
18:03
мне даже и в голову это не приходило. И раньше никогда не сталкивался и не видел эту закозюльку
31 Gucci76
 
17.08.11
18:04
Я с ЗиК-ой дружу много лет. В ней на самом деле можно сделать очень много всего почти не изменяя конфигурацию.
Жаль что 1С, забивает на 7.7
32 Gucci76
 
17.08.11
18:05
Остаюсь без хлеба.
А восьмерка идет тяжеловато )))))
33 maz
 
17.08.11
18:06
это кстати да! Согласен, очень много можно сделать не меняя конфу, Зика достаточно отлаженная вещь
34 maz
 
17.08.11
18:07
я потихоньку на 8ку пытаюсь переучиваться
35 maz
 
17.08.11
18:07
Вобщем гора с плечь)) оказывается в мире ещё много тайного и неизведнного)))
пойду в рабочей отлаживать
Ещё раз спасибо.!
36 Gucci76
 
17.08.11
18:08
Всегда пожалуйста!!!
37 Злопчинский
 
17.08.11
20:13
я так и не понял - в чем трабла была? и при чем здесь количество попыток...?
38 andrewks
 
17.08.11
20:37
(37) да обсуждали как-то уже.
в ЗиК свой хитроопый алгоритм сделали для нумерации. зачем - хз. возможно, чтобы не было пропущенных номеров.
реализация весьма корявая, как во многих местах в ЗиК:


Процедура глВводНовогоДокумента(КонтекстДокумента) Экспорт
   
   ВидДокумента    = КонтекстДокумента.Вид();
   мдДокумент        = Метаданные.Документ(КонтекстДокумента.Вид());
   
   // если передали документ, по которому возможна корректировка,
   // подберем ему "правильный" номер
   // по Больничному Листу не надо подбирать номер
   Если Найти( "ИсполнительныйЛист"
               "НарядБригадный"
               "НарядИндивидуальный"
               "НачислениеДивидендов"
               "НачислениеМатериальнойВыгодыПоВкладам"
               "НачислениеОтпуска"
               "НачислениеОтпускаГосслужащим"
               "НачисленияУдержанияСотрудника"
               "НачисленияУдержанияСписком"
               "Невыходы"
               "ПриказНаОплатуПоСреднему"
               "НачислениеСохраняемогоДенежногоСодержанияГосслужащему"
               "ПриказОРаботеВПраздники",    ВидДокумента)>0 Тогда
       
       ДлинаПрефиксаИБ = 0;
       ПрефиксИБ = "";
       Если ПустаяСтрока(ТекущаяИБКод())=0 Тогда //Работа в распределенной ИБ
           Если Константа.НеПрименятьПрефиксыИБ=0 Тогда
               ПрефиксИБ = СокрЛ(ВРег(Константа.ПрефиксИБ));
               ДлинаПрефиксаИБ = СтрДлина(ПрефиксИБ);
           КонецЕсли;
       КонецЕсли;
       ДлинаНомера = мдДокумент.ДлинаНомера-4-ДлинаПрефиксаИБ;
       ДатаДок        = КонтекстДокумента.ДатаДок;

       Документы = СоздатьОбъект("Документ."+ВидДокумента);
       Документы.ОбратныйПорядок(1);
       Если мдДокумент.ПериодичностьНомера="Год" Тогда
           Документы.ВыбратьДокументы(НачГода(КонтекстДокумента.ДатаДок),КонГода(КонтекстДокумента.ДатаДок));
       ИначеЕсли мдДокумент.ПериодичностьНомера="Месяц" Тогда
           Документы.ВыбратьДокументы(НачМесяца(КонтекстДокумента.ДатаДок),КонМесяца(КонтекстДокумента.ДатаДок));
       Иначе
           Документы.ВыбратьДокументы(КонтекстДокумента.ДатаДок,КонтекстДокумента.ДатаДок);
       КонецЕсли;
       Если Документы.ПолучитьДокумент()=1 Тогда
           НомерДок = Формат(Число(Формат(Сред(Документы.НомерДок,ДлинаПрефиксаИБ+1),"С"+ДлинаНомера)),"Ч(0)"+ДлинаНомера);
       Иначе
           НомерДок = Формат(Число(Формат(Сред(КонтекстДокумента.НомерДок,ДлинаПрефиксаИБ+1),"С"+ДлинаНомера)),"Ч(0)"+ДлинаНомера);
       КонецЕсли;
       Если Число(НомерДок)=0 Тогда
           НомерДок = Формат(1,"Ч(0)"+ДлинаНомера);;
       КонецЕсли;
       КолвоПопыток = 0;
       Пока Документы.НайтиПоНомеру(ПрефиксИБ+НомерДок,ДатаДок)=1 Цикл
           НомерДок = Формат(Число(НомерДок)+1,"Ч(0)"+ДлинаНомера);
           КолвоПопыток = КолвоПопыток+1;
           Если КолвоПопыток>100 Тогда
               НомерДок = "";
               Прервать
           КонецЕсли;
       КонецЦикла;
       КонтекстДокумента.НомерДок = ПрефиксИБ+НомерДок;
   КонецЕсли;
39 andrewks
 
17.08.11
20:37
вот за это:

Если КолвоПопыток>100 Тогда
               НомерДок = "";
               Прервать
           КонецЕсли;


надо прострелить автору коленку. даже обе.
40 maz
 
24.08.11
11:50
(39) угу. странный ход.