Предопределние даты документа в 1С 7.7

  • Автор темы 4xter
  • Дата начала
Статус
Закрыто для дальнейших ответов.
4

4xter

#1
Всем доброго времени суток. Порыскал по форуму, но решения не нашел. Проблема собственно вот в чем: пишу обработку, которая из текстового файла втягивает данные и формирует заявки в 1С 7.7 (конфиг. не типовой, релиз 7.70.027). Так вот в текстовом файле есть разные даты документа с разными позициями. Когда я использую Док.Новый(); а потом к этому док применяю дату из файла, то номер документа остаётся из текущей даты документа, а не подхватывается следующий по требуемой дате. Как быть?
Пример:
в файле содержаться строки (формат: ДатаДок,ВнешнийКодЗаказа Артикул):
24.11.10;1111; КодАрт1;
24.11.10;2222; КодАрт2 ;
25.11.10;3333; КодАрт3 ;
24.11.10;4444; КодАрт1 ;

Привязаться к внешнему коду заказа не могу, т.к. он генерируется не мной и может быть абсолютно любым.
По идее должно быть загружено 4 документа: 3 с датой 24.11.10 и номерами 1, 2 и 3; 1 док от 25.11.10 с номером 1.
а у меня получается что док от 25.11.10 загружается с номером 3, т.к. команда Док.Новый() первоначально создает его с таким номером от 24.11.10, а потом я программно меняю дату. И последний док тоже создается с номером 3, т.к. 24.10.11 этот номер остаётся свободен.

Заранее спасибо за помощь.
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#2
а как насчет того чтобы делать загрузку в ТаблицуЗначений, ее уже сортировать как нужно по дате, а из нее уже формировать заявки?
 
4

4xter

#3
Была такая идея, но смутило вот что:
24.11.10;1111; КодАрт1;
24.11.10;2222; КодАрт2 ;
24.11.10;4444; КодАрт1 ;
25.11.10;3333; КодАрт3 ;
25.11.10;5555; КодАрт3 ;

вот отсортированный вариант. Док.Новый() создаст так: 3 док-та от 24.11.10 с номерами 1,2,3. Потом создаст док от 25.11.10 с номером 4, а потом попытается создать ещё один док с номером 4 от 25-го числа.
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#4
я не совсем понял - контроля уникальности номеров заявок нет что-ли? или контроль уникальности должен быть равен 1 дню?
 

unknown181538

НеГуру
28.12.2008
1 417
0
#5
Как я понимаю, уникальность номеров в пределах дня.
Можно программно получать новый номер. Что-то вроде "УстановитьНовыйНомер()"
 

Natalya

Active member
02.02.2008
25
0
#6
Если номер не указывать, то присвается индивидуальный номер автоматически независимо от даты.
Код:
тз.ВыбратьСтроки();
Пока тз.ПолучитьСтроку()=1 Тогда
Док.Новый();
Док.ДатаДок=дата;
КонецЦикла;
Если это не происходит, то в обработке прописано присвоение номеров.
 

Дайнеко

Well-known member
19.11.2009
951
0
#7
Разбираемся:
Правее даты какие-то номерочки - это не есть номер, который нужно присвоить докам, или просто мусор?
Нужно, чтобы документы шли нормальным порядком, сами нумеровались уникальными номерами?

Если так или почти так, а может чуть нет так, но все-ж таки да.
У ваших доков в конифиге задан порядок нумерации в пределах короткого периода: неделя или месяц, в чем черт не шутит, может и день! (я по телеку видел, "извращенцы" называются) ! Когда загружаете данные прошлого месяца, программа думает так:
* Док.Новый() - "новый док тебе - ладно. Сегодня у нас какой месяц - ноябрь. Так, в ноябре последний номер шостый. Значит это будет семый".
* Док.ДатаДок=дата; "Программер! у тебя еще команда есть? Ага, перенести документ на октябрь. Ладно пусть 20.10.10"
* Док.Записать() "Хлопцы подвиньтесь! А что на седьмом кресле уже кто-то сидит? Программер фигов! Чего мне номер не поменял?"

Все просто, без всяких таблиц и сортиров.
ДатаСтарая = РабочаяДата(ДатаИзФайла);
Док.Новый()
и так до конца
РабочаяДата(ДатаСтарая);
 

vbs

Well-known member
18.02.2007
1 708
1
#8
А что, тупо написать Док.НомерДок = НужныйНомер совсем не катит ?

Я всякие документы разными обработками постоянно создаю. Вот, в одной из баз они всегда нумеруются
номерами заказчика, присланными в файлике. Проблем ни разу не испытывал.
Смахивает на колумбово яйцо :welcome:
 

unknown181538

НеГуру
28.12.2008
1 417
0
#9
Все просто, без всяких таблиц и сортиров.
ДатаСтарая = РабочаяДата(ДатаИзФайла);
Док.Новый()
и так до конца
РабочаяДата(ДатаСтарая);
Мне все же кажется, через УстановитьНовыйНомер или как ее там, менее перверсионно :welcome:
 

Дайнеко

Well-known member
19.11.2009
951
0
#10
Как, как? И где таких слов набрался? :) У нас так во дворе отродясь никто так не ругался.
А что, тупо написать Док.НомерДок = НужныйНомер совсем не катит
Vbs! Я понял проблему, что в файле нет номеров. Ему, лишь-бы система сама присваивала. Но наталкивался на дублирование и конфликт уникальности.
 

vbs

Well-known member
18.02.2007
1 708
1
#11
Тогда возможны два варианта :
1. Все документы за период - новые, других нет. Организуем счетчик с единицы, который сбрасываем при изменении даты.
2. В базе могут быть свои документы - используем менее перверсивный (sic!) метод от unknown181538
PS. Справедливо для перверсивной периодичности "день"
 
4

4xter

#13
Как бы не странно выглядело для Вас это, но нумерация действительно уникальна в пределах одного дня(было это до меня и менять навряд ли будут)! Номера заявок в файле это просто нумерация во внешней системе (если быть точнее то сайте, с которого получаем эти самые заявки) и использовать их для нумерации в 1С нельзя.
Мне нравится метод с рабочей датой, вот счас буду пробовать его. Никаких "страшных" последствий от изменения этой даты не будет. Естественно я её верну в исходное положение после окончания обработки!
 
4

4xter

#14
получилось с помощью изменения рабочей даты. всё Ок. Но всё таки не будет ли каких последствий. По идее не должно, но хотелось бы удостоверится от ГУРУ=))
 

unknown181538

НеГуру
28.12.2008
1 417
0
#15
получилось с помощью изменения рабочей даты. всё Ок. Но всё таки не будет ли каких последствий. По идее не должно, но хотелось бы удостоверится от ГУРУ=))
Не должно быть никаких последствий. Изменение рабочей даты нормально процедура, помимо прочего, доступная пользователю.
 
4

4xter

#16
Цитата:

(4xter @ 25:11:2010 - 12:03) *



получилось с помощью изменения рабочей даты. всё Ок. Но всё таки не будет ли каких последствий. По идее не должно, но хотелось бы удостоверится от ГУРУ=))



Не должно быть никаких последствий. Изменение рабочей даты нормально процедура, помимо прочего, доступная пользователю.
Спасибо. Думаю, что тему можно закрывать=)
 
Статус
Закрыто для дальнейших ответов.