Имя: Пароль:
1C
1С v8
Программное копирование доумента
, ,
0 igel1969
 
18.02.16
15:28
Здравствуйте!
1С 8.2 УТ 10.3
Копирую документ (не сегодняшний, за предыдущие даты)

КопияДО = ДО.Скопировать();
        КопияДО.Дата = ДО.Дата;
        КопияДО.Товары.Очистить();
        Стр = КопияДО.Товары.Добавить();
        Стр.Номенклатура = Номенклатура;
        Стр.Количество = 1;
        Стр.Цена = Цена;
        Стр.Сумма = Цена;
        Стр.ХарактеристикаНоменклатуры = Характеристика;
        Стр.ЕдиницаИзмерения = ЕИ;
        Стр.СтавкаНДС = СтавкаНДС;

        
        КопияДО.Контрагент = КонтрагентГл;
        КопияДО.ДоговорКонтрагента = КонтрагентГл.ОсновнойДоговорКонтрагента;
        Сообщить(КопияДО.Номер);
        КопияДО.Записать(РежимЗаписиДокумента.Проведение);


Пишет Не уникальный номер, а в Сообщить выводит пустоту.
Пожалуйста, подскажите, что можно сделать?
1 Лефмихалыч
 
18.02.16
15:30
ДокументОбъект.<Имя документа>.УстановитьНовыйНомер (DocumentObject.<Имя документа>.SetNewNumber)
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
УстановитьНовыйНомер (SetNewNumber)
Синтаксис:

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

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

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

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

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

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:

Для документов с нумерацией в пределах периода, номер устанавливается в пределах периода, соответствующего установленной дате документа. Если дата - пустая, процедура установит номер в пределах периода соответствующего пустой дате.
Пример:

РасходнаяНакладная.УстановитьНовыйНомер(ПрефиксИБ);


См. также:

ДокументОбъект, событие ПриУстановкеНовогоНомера
2 igel1969
 
18.02.16
15:38
(1) Я понимаю, что пишу бред, но номер устанавливается какой-то уже существующий. Причем я даже нашел документ с таким же номером в этом году (((((( очень странно. При ручном создании документа номер присваивается нормально.
Может мне создавать документ текущей датой, а потом его назад переносить?
3 Лефмихалыч
 
18.02.16
15:42
(2) еще подумай
4 igel1969
 
18.02.16
15:44
(3) Попробовал вообще без даты - так оно создало номер 0000000001.
5 Идентификатор
 
18.02.16
15:48
(4) организаций сколько в базе. Префиксы есть?
6 igel1969
 
18.02.16
15:48
Похоже, придется заново весь документ создавать, чего-то этот механизм "Скопировать" некорректно работает ((((
7 Идентификатор
 
18.02.16
15:50
(6) нормально он работает. (1) внимательно прочитай и (3)
8 igel1969
 
18.02.16
15:50
Префикс есть, он прошит в настройках, так что когда я
запускаю
КопияДО.УстановитьНовыйНомер();
то номер присваивается уже с префиксом, хотя я его и не указал. Но номер почему-то существующий.
Организация одна.
9 Идентификатор
 
18.02.16
15:52
(8) код с последними изменениями выложи
10 Ma3eIIa
 
18.02.16
15:52
Так ты же тот же номер ставишь !!!!
КопияДО.Дата = ДО.Дата;
11 Ma3eIIa
 
18.02.16
15:53
(10) пля дату :)
12 Лефмихалыч
 
18.02.16
15:56
(6) будет то же самое
13 Ma3eIIa
 
18.02.16
15:56
Очисти номер и дату у с копированого документа и сохрани
14 igel1969
 
18.02.16
15:57
КопияДО = ДО.Скопировать();
        КопияДО.Дата = ТекущаяДата();
        КопияДО.УстановитьНовыйНомер();
        КопияДО.Дата = ДО.Дата;
        КопияДО.Товары.Очистить();
        Стр = КопияДО.Товары.Добавить();
        Стр.Номенклатура = Номенклатура;
        Стр.Количество = 1;
        Стр.Цена = Цена;
        Стр.Сумма = Цена;
        Стр.ХарактеристикаНоменклатуры = Характеристика;
        Стр.ЕдиницаИзмерения = ЕИ;
        Стр.СтавкаНДС = СтавкаНДС;

        
        КопияДО.Контрагент = КонтрагентГл;
        КопияДО.ДоговорКонтрагента = КонтрагентГл.ОсновнойДоговорКонтрагента;
                Сообщить(КопияДО.Номер);
        КопияДО.Записать(РежимЗаписиДокумента.Проведение);
15 Лефмихалыч
 
18.02.16
15:59
(14) рано ты установку номера вызвал - он от организации и даты щависит
16 Лефмихалыч
 
18.02.16
15:59
а еще есть метод УстановитьЗначениясвойств(). А у табличной части есть методы Загрузить() и Выгрузить()
17 igel1969
 
18.02.16
16:03
(13) тогда вообще говорит - редактирование данных данного периода запрещено. видимо, нулевую дат ставит
18 Лефмихалыч
 
18.02.16
16:08
19 igel1969
 
18.02.16
16:15
(18) Само остроумие.

(Остальные) Может у меня проблема в копии базы данных? Хотя вроде утром копировал (((
20 hhhh
 
18.02.16
16:27
(19) просто очисти номер. Зачем ты туда старое значение фигачишь?
21 igel1969
 
18.02.16
16:29
(20) В какой строке я туда старое значение фигачу??????
22 Лефмихалыч
 
18.02.16
16:30
(21) вызови УстановитьНовыйНомер() после того, как присваиваешь дату и организацию
23 igel1969
 
18.02.16
20:50
(22) я и так, и так пробовал (((
24 hhhh
 
18.02.16
21:03
(21) в строке

КопияДО = ДО.Скопировать();

Фигачишь в новый документ старое значение номера.
25 hhhh
 
18.02.16
21:04
(23) ладно научу. Пиши

КопияДО = ДО.Скопировать();
КопияДО.Номер = "";

с тебя 500 рублей.