• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

4xter

Всем доброго времени суток. Порыскал по форуму, но решения не нашел. Проблема собственно вот в чем: пишу обработку, которая из текстового файла втягивает данные и формирует заявки в 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 этот номер остаётся свободен.

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

KiR

а как насчет того чтобы делать загрузку в ТаблицуЗначений, ее уже сортировать как нужно по дате, а из нее уже формировать заявки?
 
4

4xter

Была такая идея, но смутило вот что:
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-го числа.
 
K

KiR

я не совсем понял - контроля уникальности номеров заявок нет что-ли? или контроль уникальности должен быть равен 1 дню?
 
U

unknown181538

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

Natalya

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

Дайнеко

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

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

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

vbs

А что, тупо написать Док.НомерДок = НужныйНомер совсем не катит ?

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

unknown181538

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

Дайнеко

менее перверсионно

Как, как? И где таких слов набрался? :) У нас так во дворе отродясь никто так не ругался.
А что, тупо написать Док.НомерДок = НужныйНомер совсем не катит

Vbs! Я понял проблему, что в файле нет номеров. Ему, лишь-бы система сама присваивала. Но наталкивался на дублирование и конфликт уникальности.
 
V

vbs

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

4xter

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

4xter

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

unknown181538

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

4xter

Цитата:

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



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



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

Дайнеко

Тему закроем, но где слова благодарности персоналиям?
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!