Модераторы: stron
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение уникального номера документа, Получение уникального номера документа 
:(
    Опции темы
Guitar_Player
Дата 29.2.2008, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2007
Где: г.Новосибирск

Репутация: нет
Всего: нет



При перезгрузке приходного кассового ордера возникла ошибка не уникального номера документа. 
Новый номер получал так: Док.УстановитьНовыйНомер();
Как можно исправить это? Еще например если в документах типа авансовый платеж создавать подряд 5 документов с номерами, к примеру (00001,00002,00003,00004,00005) а потом удалить 2рой, то если снова создать то номер будет не 00002 а 00006. как это можно исправить?
PM MAIL WWW ICQ   Вверх
Barcoder
Дата 29.2.2008, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



1. Если в документе автонумерация, тогда не нужно УстановитьНовыйНомер().
2. стандартно 1С не сможет так нумеровать, пишите функцию, которая будет искать пропуски номеров и присваивать эти номера. Другой вариант - обработка "перенумерация документов".
PM MAIL   Вверх
Guitar_Player
Дата 29.2.2008, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2007
Где: г.Новосибирск

Репутация: нет
Всего: нет



Ну с пропущенными номерами я разберусь. А вот с получением нового не понял...
В документе автонумерация. Это как проверить? посмотреть?
Т.е. вы хотите сказать что потому что в документе автономирация то сначала присваивается номер при создании автоматически а потом я вручную присваиваю номер? и по этому ошибка. Так?

PM MAIL WWW ICQ   Вверх
Barcoder
Дата 29.2.2008, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



проверьте в конфигураторе у данного документа стоит ли галочка автонумерация.
Если есть, тогда уберите вообще УстановитьНовыйНомер.
Проблема также может возникнуть, если нумерация документов у Вас в пределах года (тоже в конфигураторе смотрите), в этом случае, если создавать документы прошлым годом, нужно изменить РабочуюДату на 31.12.2007.
PM MAIL   Вверх
Guitar_Player
Дата 29.2.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2007
Где: г.Новосибирск

Репутация: нет
Всего: нет



А можно автоматизировать этот процесс?
Т.е. обработка может сохранять/загружать разные документы. И как проверить стоит ли галочка, чтобы тогда не выполнять получитьномер?
PM MAIL WWW ICQ   Вверх
Barcoder
Дата 29.2.2008, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



Автоматизировать все можно, но нужно понять, почему не уникальный номер.
Причины: 
1. Номер документа строчного типа, и нумерация была типа 001,002,003....999 - при создании следующего документа присвоится тоже 999, т.е. не уникальный. В этом случае нужно перенумеровать документы, добавив спереди нули,например: 000001,000002....
2. Выбрана нумерация документа  в пределах года, месяца и т.п. В этом случае, чтобы создать документ, рабочая дата 1С должна соответствовать периоду нумерации создаваемого документа.
3. У документа в конфигураторе задана короткая длина поля номера, например: Номер типа Число 5 : т.е. 99999 будет последним, все вновь создаваемые документы тоже будут иметь номер 99999...


УстановитьНовыйНомер используется обычно так:  Док.УстановитьНовыйНомер(Организация.Префикс), когда учет по нескольким организациям, чтобы номер документа содержал префикс выбранной фирмы. Выбрали в документе другую фирму, вызываем снова Док.УстановитьНовыйНомер(Организация.Префикс).
Когда распределенная база, также нужно использовать этот метод, чтобы не совпали номера документов, созданных в центре и в филиале. Префикс тогда складывается из СокрП(Константа.ПрефиксБазы)+СокрП(Организация.Префикс), например.

PM MAIL   Вверх
Itsys
Дата 1.3.2008, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 7
Всего: 34



Наличие автонумерации можно проверить через Метаданные,

Проблем может быть несколько:
1. Преход на год(ы) назад, в этом случае помогает сначала установить дату у документа, а потом получить новый номер УстановитьНовыйНомер()
2. Может быть проблема с некорректными исправлениями номеров (например если номер текстовый и кто-то умный вместо 000001 исправит на 1, то автонумерация будет работатть только до 9) - обходится добавлением префикса УстановитьНовыйНомер("0")

PM MAIL WWW Skype   Вверх
Guitar_Player
Дата 1.3.2008, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2007
Где: г.Новосибирск

Репутация: нет
Всего: нет



 добавив спереди нули,например: 000001,000002...
А как добавить с переди нули? Там же длина номера ограниченна? Т.е. Нужно изменить длину номера а потом перенумировать все документы? Как изменить длину номера. Вроде же программно никак?.
2. Выбрана нумерация документа  в пределах года, месяца и т.п. 
Вы хотите сказать. Что нужно проверить через метаданные стоит ли у этого конкретного документа флажек нумерация в течении года?
и если стоит то перевести рабочую дату на дату создания документа. Получить номер и вернуть рабочую дату обратно. так?
обходится добавлением префикса УстановитьНовыйНомер("0")
Не понял почему ну помогает...
=================================
Теперь надо объединить все эти варианты в одну функцию и получить номер...
PM MAIL WWW ICQ   Вверх
Itsys
Дата 2.3.2008, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 7
Всего: 34



 smile 
Код

Док = СоздатьОбъект("Документ.Счет");
Док.Новый();
Док.ДатаДок = НужнаяДата; //Устанавливаем дату документа
Док.УстановитьНовыйНомер("0"); //А потом присваеваем новый номер


Теперь понятно?
PM MAIL WWW Skype   Вверх
Guitar_Player
Дата 2.3.2008, 06:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2007
Где: г.Новосибирск

Репутация: нет
Всего: нет



Хм... Это то понятно. я так и делал....
А как нули спереди добавить?
PM MAIL WWW ICQ   Вверх
Itsys
Дата 2.3.2008, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 7
Всего: 34



Цитата(Itsys @  2.3.2008,  00:27 Найти цитируемый пост)
Док.УстановитьНовыйНомер("0");

Тебе нули и добавит, не добавит только в случае, если у тебя номер числовой, или с номерами накосячили так, что теперь надо все документы перенумеровывать...

Можно, конечно, придумать обходной путь - но нет никакой гарантии, что ты не сталкнешься задвоенным номером.... так что если с номерами бардак - то только полна перенумерация уже существующих документов.
PM MAIL WWW Skype   Вверх
Guitar_Player
Дата 2.3.2008, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2007
Где: г.Новосибирск

Репутация: нет
Всего: нет



Хорошо... 
Вот смотрите ошибка о том что номер не уникальный возникает только при попытке записать документ. 
Можно так написать
Код

Попытка 
    Док.Записать();
Исключение
    ПравкаНомеров();
КонецПопытки;

или так не стоит?
как понять что с номерами накосячили и нужно перенумировать документы?
PM MAIL WWW ICQ   Вверх
Guitar_Player
Дата 2.3.2008, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2007
Где: г.Новосибирск

Репутация: нет
Всего: нет



Я почти сделал. Но у меня появился вопрос... Если мы перенумируем всю базу. То это может привести к ошибке так или нет?
Если загрузить какой нибудь новый документ у которого был,например в ТЧ, реквизит типа документ то он же этот реквизит будет находить вот так 
Код

Док.НайтиПоНомеру(тдНомер,тдДата,тдИдентВида)

Он его найдет по дате и индефикатору если номер изменился или не найдет? Повидимому не найдет и будет ошибка! Так?
У меня база маленькая проверить негде...
Как  быть?
PM MAIL WWW ICQ   Вверх
Itsys
Дата 2.3.2008, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 7
Всего: 34



 smile 
Конечно не найдет, т.к. в указанном тобой выражении главное 
Цитата(Guitar_Player @  2.3.2008,  18:26 Найти цитируемый пост)
тдНомер

- это номер документа, как же он его найдет, если ты номер поменяешь....

Если у тебя загруженные документы в дальнейшем используются в качестве реквизитов, то менять номера вообще нельзя!!!!

В этом случае надо разбираться почему у тебя задваиваются номера документов!!!!

Опиши задачу более подробно, постараемся разобраться, что ты делаешь не так.

PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "1C: Предприятие, SAP, ERP и учётные системы"
stron

Запрещается!

1. Обсуждение крэков, кейгенов и других подобных программ

Пробуйте искать сами или обращайтесь в приват к участникам форума.

Темы с подобными вещами будут немедленно удаляться, а нарушители - получать предупреждения.

Также запрещается обсуждение проблем работы этих программ (что куда вписать, куда что скопировать и т.п...)

2. Давать ссылки на взломанные продукты

  • Пожалуйста, пользуйтесь поиском перед тем, как задать вопрос - возможно ответ уже есть на форуме.
  • Название темы должно отражать её суть
  • Действия модераторов можно обсудить здесь

С уважением, stron, Pegas.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | 1C: Предприятие, SAP, ERP и учётные системы | Следующая тема »


 




[ Время генерации скрипта: 0.0891 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.