Имя: Пароль:
1C
1С v8
создание документа
0 amadeus2010
 
17.04.12
16:29
Добрый вечер всем, пытаюсь создать новый документ для автоматического заполнения на основе существующего.Есть Документ Закрытие рейса,который надо заполнить программно.Прилагается код:

ДокументЗакрытие=Документы.ЗакрытиеРейса.СоздатьДокумент();
    ДокументЗакрытие.Организация=Справочники.Организации.НайтиПоКоду("000000001");
ДокументЗакрытие.Дата=ТекущаяДата();
       ДокументЗакрытие.Рейс=ДокументЗакрытие.Рейс.ДневнойНомерРейса;
       ДокументЗакрытие.СкладОтправитель=ДокументЗакрытие.СкладОтправитель.ТипСклада;
       ДокументЗакрытие.СкладПолучатель=Справочники.Склады.СкладНаВозврат;
ДокументЗакрытие.ОтражатьВБухгалтерскомУчете=Истина;
ДокументЗакрытие.ОтражатьВУправленческомУчете=Истина;
       ДокументЗакрытие.РеализацияНедостачи=Документы.РеализацияТоваровУслуг;
ДокументЗакрытие.Комментарий="Документ создан при помощи обработки Закрытие рейсов";
       
       
СтрокаДокумента=ДокументЗакрытие.Товары.Добавить();
       СтрокаДокумента.Номенклатура=ДокументЗакрытие.Рейс.Товары;
СтрокаДокумента.Количество= ДокументЗакрытие.Рейс.Количество;
       СтрокаДокумента.СерияНоменклатуры=Справочники.СерииНоменклатуры;
       СтрокаДокумента.ЕдиницаИзмерения=СтрокаДокумента.Номенклатура.ЕдиницаХраненияОстатков;
       СтрокаДокумента.Коэффициент=СтрокаДокумента.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент;
СтрокаДокумента.Качество=Справочники.Качество.Новый;
       СтрокаДокумента.ОстатокНаСкладе=ДокументЗакрытие.РаспределениеОстатковТоваровОрганизацийПоСкладам;
       СтрокаДокумента.СчетУчетаБУ=ПланыСчетов.Хозрасчетный.ГотоваяПродукция;
       СтрокаДокумента.НовыйСчетУчетаБУ=ПланыСчетов.Хозрасчетный.ГотоваяПродукция;
       СтрокаДокумента.ВнутреннийЗаказ=Документы.ВнутреннийЗаказ;
   
   КонецЕсли;

ДокументЗакрытие.Записать(РежимЗаписиДокумента.Запись);

КонецЦикла;

При попытке выполнить код создается документ но не все поля заполняются.
1 salvator
 
17.04.12
16:30
(0) Кури ЗаполнитьЗначенияСвойств()
2 amadeus2010
 
17.04.12
16:37
не совсем понял куда добавить ЗаполнитьЗначенияСвойств()
3 golden-pack
 
17.04.12
16:38
(0) при открытии затираются или типы разные
4 Плот
 
17.04.12
16:41
(0) Какие поля не заполняются?
5 Serg_1960
 
17.04.12
16:42
(0) "ДокументЗакрытие.СкладОтправитель=ДокументЗакрытие.СкладОтправитель.ТипСклада;" - однако, батенька, у вас своеобразный юмор :)
6 zak555
 
17.04.12
16:42
> ДокументЗакрытие.Рейс=ДокументЗакрытие.Рейс.ДневнойНомерРейса;



это что за строка ?
7 zak555
 
17.04.12
16:43
+

ДокументЗакрытие.СкладОтправитель=ДокументЗакрытие.СкладОтправитель.ТипСклада;
8 salvator
 
17.04.12
16:43
(2) Синтаксис-помощник открой и посмотри, е-мое.
9 Плот
 
17.04.12
16:43
(5):)))))
10 zak555
 
17.04.12
16:43
> пытаюсь создать новый документ для автоматического заполнения на основе существующего

существуующий док тоже ЗакрытиеРейса ?
11 Serg_1960
 
17.04.12
16:44
ааа... всё, я понял. Это развод. Поделитесь травкой.
12 salvator
 
17.04.12
16:44
Это лучше:

ДокументЗакрытие.РеализацияНедостачи=Документы.РеализацияТоваровУслуг;
13 rbcvg
 
17.04.12
16:45
"СтрокаДокумента.СерияНоменклатуры=Справочники.СерииНоменклатуры;" - работает?
14 Serg_1960
 
17.04.12
16:46
(13) Нет, естественно. У него раньше программу вышибает :)
15 zak555
 
17.04.12
16:47
(13) ну если Справочники - переменная и если есть в неё индетификаторе неруские буквы - думаю, что может работать
16 Serg_1960
 
17.04.12
16:55
Долго вспоминал - мне этот алгоритм что-то напоминает...

Вспомнил :)

Как в слове из четырех букв сделать четыре ошибки? Вместо слова "ёжик" - написать "йожег" :))
17 Плот
 
17.04.12
16:56
(14) :-))))
18 amadeus2010
 
17.04.12
16:58
Заполняются не все поля в частности
ДокументЗакрытие.Рейс=ДокументЗакрытие.Рейс.ДневнойНомерРейса;
       ДокументЗакрытие.СкладОтправитель=ДокументЗакрытие.СкладОтправитель.ТипСклада;
       ДокументЗакрытие.СкладПолучатель=Справочники.Склады.СкладНаВозврат;
не заполняются. Я хотел присвоить переменной ДокументЗакрытие значение  документа Закрытие рейса чтобы можно было обратиться к ней программно
19 rbcvg
 
17.04.12
17:01
(18) типы разные?
20 amadeus2010
 
17.04.12
17:03
да
21 spacehelp
 
17.04.12
17:03
Небо.Цвет = Небо.Цвет.Прозрачность;
Сколько в бочке огурцов цвета неба?
22 Плот
 
17.04.12
17:04
(18) Ниче не понял. Но то что ты делаешь в корне не верно. Еще раз напиши пжл что ты хочешь сделать
23 rbcvg
 
17.04.12
17:04
(20) еще есть вопросы?
24 vmv
 
17.04.12
17:06
я эту задачу с рейсами уж полгода читаю, ну никакой фантазии у троля.

нет чтобы замутить "я пишу конфигурацию для дома моды, как мне оргнизовать хранение коллекций от кутюр"
25 Serg_1960
 
17.04.12
17:09
(18) Мда... тяжелый случай :(

Автор, где у тебя обращение к значениям существующего документа. "ДокументЗакрытие" - это новый документ и обращаться к значениям реквизитов до их присвоения - бессмысленно.
26 amadeus2010
 
17.04.12
17:10
я хочу программно заполнить документ Закрытие рейса. Есть документы закрытие рейса и Рейс который является основанием для закрытие рейса.Теперь создал обработку которая должна заполнять документ Закрытие рейса. Понятно что при
ДокументЗакрытие.СкладОтправитель=ДокументЗакрытие.СкладОтправитель.ТипСклада;
значения заполняются из самих себя. Как создать ссылку на Закрытие рейса,чтобы подставлять ее в переменную ДокументЗакрытие?
27 zak555
 
17.04.12
17:12
(26) из челябинска  ?
28 amadeus2010
 
17.04.12
17:12
я вот и спрашиваю как обратиться  к значениям существующего документа?
29 amadeus2010
 
17.04.12
17:12
(26) нет,не местные
30 Плот
 
17.04.12
17:12
(26) это я еще понял "я хочу программно заполнить документ Закрытие рейса. Есть документы закрытие рейса и Рейс который является основанием для закрытие рейса.Теперь создал обработку которая должна заполнять документ Закрытие рейса." а дальше...
31 zak555
 
17.04.12
17:13
получить его надо
32 amadeus2010
 
17.04.12
17:13
дальше были рассуждения вслух
33 Serg_1960
 
17.04.12
17:14
Всё, сорри, - я пасс
34 amadeus2010
 
17.04.12
17:14
имеется ввиду ДокументЗакрытие=Документы.Закрытие.ПолучитьОбъект?
35 hhhh
 
17.04.12
17:17
(34) документ закрытие вы уже получили объект вот этой командой

ДокументЗакрытие=Документы.ЗакрытиеРейса.СоздатьДокумент();

вы создали новый объект, он у вас есть, получать его второй раз не надо.

Вам надо откуда-то взять документ Рейс. Где он у вас находится? В каком-то поле?
36 amadeus2010
 
17.04.12
17:20
в Закрытие Рейса есть реквизит Рейс,который имеет ссылку на  документ Рейс.
37 hhhh
 
17.04.12
17:22
(36) это не пригодится. Закрытие рейса у нас сначала абсолютно пустой, там все реквизиты пустые.
38 amadeus2010
 
17.04.12
17:24
а как примерно при наличии объекта можно получить ссылку на документ и присваивать ему значения?
39 salvator
 
17.04.12
17:27
(38) Примерно - через код.
40 Плот
 
17.04.12
17:28
(38) прочитайте для начала что такое ссылка и объект. Станет намного все понятнее.
41 hhhh
 
17.04.12
17:32
(38) это происходит как раз наоборот. У нас есть ссылка на документ, мы получаем из нее объект и начинаем присваивать реквизиты.