Имя: Пароль:
1C
1С v8
В какой момент происходит присвоение номера документу?
0 mdv92
 
27.09.11
11:55
Перед Записью - его еще нет?
1 Fragster
 
гуру
27.09.11
11:57
а может и есть...
2 DrShad
 
27.09.11
12:02
в подписке на события
3 pioneer_22
 
27.09.11
12:03
нету, отловить можно с помощью ПриУстановкеНовогоНомера()
4 mdv92
 
29.09.11
16:11
Задачка - автоматически создавать договора с тем же номером, что и счет.
Перед записью - его еще нет (хотя в монопольном режиме - вроде, был...) А ПриЗаписи - их почему-то создалось уже 4 одинаковых! Кусочек этот писала не я, он был вставлен, но отключен. Я включила - и вот результат. Причем, непонятно, в какой момент они размножаются! Если жать на кнопку "записать" - он так и остается один...
5 Ненавижу 1С
 
гуру
29.09.11
16:16
(4) задача полный бред
6 Umka2008
 
29.09.11
16:16
В ПослеЗаписи() пробегай по договору и ставь ему номер дока.
7 Ненавижу 1С
 
гуру
29.09.11
16:23
(6) это че за бред?
8 hhhh
 
29.09.11
16:35
(5) не, ну у нас уже давно работает такая штука. Только у нас номер не при записи, а уже при открытии формы есть.
9 Сергей Д
 
29.09.11
16:39
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
УстановитьНовыйНомер (SetNewNumber)
Синтаксис:

УстановитьНовыйНомер(<ПрефиксНомера>)
Параметры:

<ПрефиксНомера> (необязательный)

Тип: Строка. Префикс устанавливаемого номера.
Значение по умолчанию: Пустая строка
Описание:

Устанавливает новый номер документа для заданного префикса номера.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Для документов с нумерацией в пределах периода, номер устанавливается в пределах периода, соответствующего установленной дате документа. Если дата - пустая, процедура установит номер в пределах периода соответствующего пустой дате.
10 Сергей Д
 
29.09.11
16:40
Ну и это... фотографию в студию :)
11 Лефмихалыч
 
29.09.11
16:41
(4) а просто при выводе на печать номер счета, в котором выбран договор что мешает?
12 Лефмихалыч
 
29.09.11
16:41
ну, или пры выводе договора на печать выводить номер счета - как там надо, не важно
13 rutony
 
29.09.11
16:47
(4) Код закомментирован, я разкомментировала, он работает криво...
Гениально)
14 _
vovanidze_3412341
 
29.09.11
17:08
А договор это в данном случае справочник "Договора" ?
15 mdv92
 
01.10.11
13:02
(14) Да, справочник "Договора". При открытии делать договор нереально - еще нет контрагента, и вообще, до записи - не правильно, ведь могут по ходу дела и передумать.
Договор - реквизит счета. После записи - как я могу создать договор, не записав его в счет?
Мне бы понять, почему договора размножаются, если идет создание "при записи"!, потому что смоделировать сознательно эту ситуацию я не смогла, да они и не каждый раз размножаются.
16 mdv92
 
02.10.11
12:26
Надо сегодня разобраться!
17 Шапокляк
 
02.10.11
12:44
(16) Создаете новый счет. Если в счете не выбран договор, или выберите имеющийся или пропишите процедуру создания нового. В зависимости от своих действий запишите в какую-нибудь глобальную переменную документа надо ли перенумеровывать договор. При записи документа в зависимости от значения этой переменной или перенумеровываете договор или нет. Если вы в существующем счете создаете новый договор, то и нумеруйте его сразу в соответствии с номером счета.
P.S. А вообще тут такой форум... Вы ж никаких своих вариантов не выкладываете, а только вопросы задаете. Если б вы мужского пола были, то вам бы уже продиктовали адрес куда идти.
18 mdv92
 
02.10.11
13:00
(17) Там примерно так и сделано, только договора почему-то размножаются одинаковые.
Может, "При закрытии" вставить?
19 Шапокляк
 
02.10.11
13:04
(18) Да где там? Код покажите.
20 kuza2000
 
02.10.11
13:06
А зачем вам стока договоров? Что за конфигурация?
21 mdv92
 
02.10.11
13:12
ПриЗаписи -
Если НадоСоздаватьДоговор() Тогда
           ДоговорКонтрагента = СоздатьНовыйДоговор();
       КонецЕсли;
А вот эти процедуры:
Функция НадоСоздаватьДоговор()
       
       НомерСчета = Прав(СокрЛП(Номер),4); // в БП 7.7 номера счетов сосояли из 6 символов
       Если НомерСчета=ДоговорКонтрагента.Номер И НачалоДня(Дата)=НачалоДня(ДоговорКонтрагента.Дата) Тогда
           Возврат Ложь;
       Иначе
           Возврат Истина;
       КонецЕсли;
       
КонецФункции
   
Функция СоздатьНовыйДоговор()
       
       НомерСчета = Прав(СокрЛП(Номер),4); // в БП 7.7 номера договоров-счетов состояли из 4 символов
       НовыйДоговор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
       НовыйДоговор = ДоговорКонтрагента.Скопировать();
       НовыйДоговор.Владелец = Контрагент;
       НовыйДоговор.Номер = НомерСчета;
       НовыйДоговор.Дата = Дата;
       НовыйДоговор.УстановитьНовыйКод();
       НовыйДоговор.СформироватьНаименованиеДоговора(НомерСчета, Дата);
       НовыйДоговор.Записать();
       
       Возврат НовыйДоговор.Ссылка;
       
   КонецФункции
22 Asmody
 
02.10.11
13:18
СоздатьЭлемент, а потом Скопировать — это феерично
23 mdv92
 
02.10.11
13:21
(22) Это не я писала. А что, их 2 получается???
Не, ну записывается-то  один!
24 mdv92
 
02.10.11
13:22
А как надо написать?
25 Шапокляк
 
02.10.11
13:33
Во-первых, Скопировать точно убрать. Во-вторых, попытайтесь, если уж вы создаете новый договор, создавать его с незаполненным реквизитом Номер, а в процедуре ПослеЗаписи проверяйте, если в договоре Номер пустой,то заполняйте его номером счета.
В-третьих... А почему вообще номер договора может не совпадать с номером счета? Вы дату существующего счета меняете и у вас номер меняется? Или вы выбираете в счет руками любой договор?
26 Asmody
 
02.10.11
13:35
(25) в-третьих — это как раз понятнее всего. Это ленивые бухгалтера
27 mdv92
 
02.10.11
13:35
Так а там валюта взаиморасчетов записывается и прочие реквизиты...
Я, наверное, в процедуру
Функция НадоСоздаватьДоговор()
       
       НомерСчета = Прав(СокрЛП(Номер),4); // в БП 7.7 номера счетов сосояли из 6 символов

       Если НомерСчета=ДоговорКонтрагента.Номер И НачалоДня(Дата)=НачалоДня(ДоговорКонтрагента.Дата) Тогда
           Возврат Ложь;
       Иначе
           Возврат Истина;
       КонецЕсли;
       
КонецФункции

Вставлю поиск по наименованию счета - для проверки.
28 Asmody
 
02.10.11
13:52
(27) в договоре сделай реквизит СчетОснование, если у на то пошло
29 mdv92
 
02.10.11
13:54
(28) С поиском - вроде получилось. Зачем мне лишние ссылки?
Ну, т.е., может она и не лишняя - потом еще несколько раз эта связь используется, но уже всё понаписано и ориентируется просто на номер.