Имя: Пароль:
1C
1C 7.7
v7: СоздатьОбъект
0 MagicFly
 
13.09.11
08:53
Помогите, пожалуйста. Как правильно написать процедуру, формирующую новый документ? У меня есть следую текст:

Процедура Выполнить()
Спр = СоздатьОбъект("Справочник.Приборы");
       Пока ПолучитьСтроку()=1  Цикл  
       Если ((МестоПоверки=Перечисление.МестоПоверки.ЦСМ) или (ПустоеЗначение(МестоПоверки)=1)) Тогда
           Продолжить;
           Док = СоздатьОбъект("Документ.КТПТР");
       Док.Новый();
       Док.НоваяСтрока();  
          Док.Номенклатура = Спр.ТекущийЭлемент();  
       КонецЕсли;
       КонецЦикла;
       Док.Записать();
       Док.Провести();
КонецПроцедуры

При проведении пишет:Док.Записать(); Значение не представляет агрегатный объект (Записать)
1 Rie
 
13.09.11
08:54
(0) А если условие не выполнится - то что ты Записать пытаешься?
2 ЧеловекДуши
 
13.09.11
08:55
(0)Читай Жёлтые книги 2 книги :)
3 miki
 
13.09.11
08:55
ты же создаешь объект и новый док в зависимости от условия. а записать пытаешься _всегда_. Вот когда условие ложно, то и матюкается. записывать-то собственно и нечего.
4 andrewks
 
13.09.11
08:55
Если ((МестоПоверки=Перечисление.МестоПоверки.ЦСМ) или (ПустоеЗначение(МестоПоверки)=1)) Тогда
           Продолжить;
           Док = СоздатьОбъект("Документ.КТПТР");
       Док.Новый();
       Док.НоваяСтрока();  
          Док.Номенклатура = Спр.ТекущийЭлемент();  
       КонецЕсли;


зачёт........
6 andrewks
 
13.09.11
08:56
(3) ты ещё на сам условный оператор полностью глянь
7 povar
 
13.09.11
08:56
(4) действительно магический мух
8 povar
 
13.09.11
08:57
зы. Вон из профессии !
9 miki
 
13.09.11
08:58
(6)Ну, пинать так пинать :)
За СоздатьОбъект в цикле - в сад!
10 forforumandspam
 
13.09.11
09:00
Спр = СоздатьОбъект("Справочник.Приборы");

Док.Номенклатура = Спр.ТекущийЭлемент();

Тоже очень интересно...
11 Анна_84
 
13.09.11
09:02
черствые, бессердечные люди! человек всего то 3г8м в 1С, а вы его так вот сразу... ну новичок пока он
12 forforumandspam
 
13.09.11
09:04
(11) ДЕНЬ ПРОГРАММИСТА, ёптыть!!!!
13 andrewks
 
13.09.11
09:09
(12) думаешь, он уже заквасил, и поэтому такой код вышел? а чё, выглядит правдоподобно
14 andrewks
 
13.09.11
09:10
(0)
1. Спр не спозиционирован
2. (9)
3.
вот это:
Док = СоздатьОбъект("Документ.КТПТР");
       Док.Новый();
       Док.НоваяСтрока();  
          Док.Номенклатура = Спр.ТекущийЭлемент();  
       КонецЕсли;

у тебя никогда не выполнится
4. ну и вообще... ну ты понял
15 povar
 
13.09.11
09:10
(13) судя по его темам, он всегда в закваске
16 Godofsin
 
13.09.11
09:10
(13) Только если пару бутылок вискаря....
17 aka AMIGO
 
13.09.11
09:11
Спр = СоздатьОбъект("Справочник.Приборы");
         Спр.ВыбратьЭлементы();
         Пока Спр.ПолучитьЭлемент()=1  Цикл  
             Если... Тогда
                 ....
                 Док.Новый();
                 ....
                 Док.Записать();
                 Док.Провести();
            КонецЕсли;
         КонецЦикла;
....
КонецВсему;
18 aka AMIGO
 
13.09.11
09:12
Если ((Спр.МестоПроверки =Перечисление.МестоПоверки.ЦСМ) или (ПустоеЗначение(Спр.МестоПоверки)=1)) Тогда
19 povar
 
13.09.11
09:13
(17) битва экстрасенсов ? Какой сезон ?
20 forforumandspam
 
13.09.11
09:13
(18) А может там не выбирать надо, а найти элемент справочника?
21 forforumandspam
 
13.09.11
09:14
(18) Тоде уже вдарил? А если "МестоПроверки" - элемент формы или глобальная переменная?
22 aka AMIGO
 
13.09.11
09:14
(19) первый :)
проба пера :)
23 aka AMIGO
 
13.09.11
09:15
(21) у него, судя по коду, реквизит справочника :)
24 1Сергей
 
13.09.11
09:15
Ещё ошибка: нет ВыбратьСтроки()
25 andrewks
 
13.09.11
09:15
понабежали... испугали автора )
26 aka AMIGO
 
13.09.11
09:16
(20) да пусть ищет :)
27 1Сергей
 
13.09.11
09:16
Ещё ошибка: Не видно процедуры ОбработкаПроведения(), хотя в сабже говорится про проведение
28 andrewks
 
13.09.11
09:17
(27) э?
29 1Сергей
 
13.09.11
09:18
(28) шо?
30 aka AMIGO
 
13.09.11
09:18
(24) имхо - это он так элементы справочника, как строки, выбирает :)

(27) и выборГруппы() надо-бы..
этак ты все функции ОВЯ заставишь человека записать в код :)
31 andrewks
 
13.09.11
09:19
(29) где там про модуль проведения?
32 1Сергей
 
13.09.11
09:20
(31) >>При проведении пишет:Док.Записать()
33 aka AMIGO
 
13.09.11
09:20
(31) а и точно! прав 1Сергей: в сабже написано "при проведении" :)
34 forforumandspam
 
13.09.11
09:21
Если он находится в модуле документа(на это указывает "ПолучитьСтроку()=1"), то "МестоПроверки", возможно, реквизит таблично части документа.
35 1Сергей
 
13.09.11
09:22
(34) и я о том же
36 andrewks
 
13.09.11
09:22
(32)(33) угу, вижу. я в ещё большем щоке
37 aka AMIGO
 
13.09.11
09:22
(34) и это возможно :)
38 forforumandspam
 
13.09.11
09:22
(33) Проведением он может называть всё что угодно, не стоит на этом заострять внимание.
39 MagicFly
 
13.09.11
09:29
МестоПоверки реквизит ТЧ, перечисление
40 aka AMIGO
 
13.09.11
09:37
(39) тогда оставь своё условие.
а вот  Спр.ТекущийЭлемент();   у тебя не определен.
41 Lepochkin
 
13.09.11
09:49
А что проводить то собрался??? Неизвестный объект. До проведения тут дело и дойти не успело.
42 1Сергей
 
13.09.11
09:55
Да, кстати. Строка:

   Док.Провести();

в модуле проведения приведёт к огромному болту
43 MagicFly
 
13.09.11
10:01
Как бы цель следующего содержания, надо создать документ, но при некотором условии. Т.е. не все строки взять из этого документа, а только те, которые удовлетворяют условию, реквизит МестоПовери, который является перечислением, будет выбран ЦСМ или он пустой, т.е. в этом случае эти строки не надо отбирать, а продолжать дальше перебирать строки
44 miki
 
13.09.11
10:02
(43)вариант:
выгрузи ТЧ в ТЗ, удали лишнее, если что осталось - новый док и загружай строки из ТЗ.
45 Escander
 
13.09.11
10:06
Слушайте, ну чего сегодня так жёстко-то, не пятница ведь!




Процедура Выполнить()
Спр = СоздатьОбъект("Справочник.Приборы");
Док = СоздатьОбъект("Документ.КТПТР");
ФФ=0;
ВыбратьСтроки();
       Пока ПолучитьСтроку()=1  Цикл  
       Если ((МестоПоверки=Перечисление.МестоПоверки.ЦСМ) или (ПустоеЗначение(МестоПоверки)=1)) Тогда
            Продолжить;
        КонецЕсли;
          Если фф=0 Тогда
             Док.Новый();
             фф=1;
          КонецЕсли;
       Док.НоваяСтрока();  
           //вот ту т следует спозиционировать куда надо, т.к. без этого след. строка выдаст ошибку
          Док.Номенклатура = Спр.ТекущийЭлемент();  
       КонецЕсли;
       КонецЦикла;
    Если фф=1 Тогда
       Док.Записать();
       Док.Провести();
    КонецЕсли;
КонецПроцедуры
46 povar
 
13.09.11
10:07
еще один...
47 Escander
 
13.09.11
10:08
(44) а ещё лучше запросом сразу со всеми условиями и результат запроса в ТЗ. Только имхо рано
48 MagicFly
 
13.09.11
10:12
(45) выдает ошибку след. содержания: Док.Новый(); Значение не представляет агрегатный объект (Новый)
49 Escander
 
13.09.11
10:21
(48) а что выдаст Сообщить(ТипЗначения(Док)); если поставить её перед
             Док.Новый();
50 zahar140382
 
13.09.11
10:22
Может он прикалывается???
51 Escander
 
13.09.11
10:22
кста, а как там с правами у того пользователя из под которого?
52 zahar140382
 
13.09.11
10:22
очень похоже
53 Escander
 
13.09.11
10:23
(50) он скорее всего туда что-то запихнул, т.к. если-бы проблема была в правах - был-бы еррор.


Не ну прям как пятницо!
54 zahar140382
 
13.09.11
10:25
Все идем к руководству и говорим впредь день программиста красное число и следующий за ним день.
55 zahar140382
 
13.09.11
10:25
)))
56 MagicFly
 
13.09.11
10:26
(49) выдает цифру 2
57 Escander
 
13.09.11
10:28
(56) 2 - строковый тип данных
а теперь расскажи зачем туда строку пихаешь? Иил может вызов отсюда куда-то делаешь? На всякий пожарный после объйвления процедуры добавь строку:
Перем Док;
58 1Сергей
 
13.09.11
10:29
(56) Док - реквизит документа штоль?
59 MagicFly
 
13.09.11
10:29
нет
60 povar
 
13.09.11
10:30
(59) замени Док на Док1
61 zahar140382
 
13.09.11
10:30
бред какойто!!
62 Escander
 
13.09.11
10:32
(61)намана, я тоже первое время всякую  хрень писал...

другое дело что сегодня уже штук 5 таких тем видел... при то, что не искал их!
63 zahar140382
 
13.09.11
10:33
Машины взбунтовали.день программиста есть, а дня железа нет
64 zahar140382
 
13.09.11
10:34
в одном случае док поруске в дргом косяк
65 zahar140382
 
13.09.11
10:35
посмотри Док где как написано перепиши руками порусски
66 zahar140382
 
13.09.11
10:40
накопируют из инета потом думают где косяк)))
67 Escander
 
13.09.11
10:43
ТС что там?
68 zahar140382
 
13.09.11
10:43
Док и Дoк отличи во втором случае o английская
69 zahar140382
 
13.09.11
10:44
(67) да думаю ЗАРАБОТАЛО)))))
70 zahar140382
 
13.09.11
10:44
побежал за пивом
71 zahar140382
 
13.09.11
10:46
72 Escander
 
13.09.11
10:47
(71) реально сегодня ПЯТНИЦО!!!!!
73 Визард
 
13.09.11
10:49
(15) не он пишет документаху :) к своей нетленке
OFF: Состав документации по описанию собственной конфигурации 1С
74 zahar140382
 
13.09.11
10:50
Escander да 99% у него был док не док
после
Док = СоздатьОбъект("Документ.КТПТР");
Док.Новый();
выдает ошибку след. содержания:  Значение не представляет агрегатный объект (Новый)Это толко может быть если Док <> Док
75 zahar140382
 
13.09.11
10:57
ну все не досвидания не спасибо)))
76 zahar140382
 
13.09.11
10:58
либо винду свалил горе кодер либо...
77 zahar140382
 
13.09.11
10:59
Мужики всех с днем программиста(1С)
78 MagicFly
 
13.09.11
11:00
ВАС всех тоже
79 MagicFly
 
13.09.11
11:00
с днем программиста
80 zahar140382
 
13.09.11
11:00
(79) ну че заработало?
81 MagicFly
 
13.09.11
11:01
ну почти, документ записывается, только пустая строка в табличную часть идет
82 forforumandspam
 
13.09.11
11:02
(81) бугага!
83 Escander
 
13.09.11
11:05
(81) счётчик спозиционировал? А ведь я сразу подозревал что там ещё море других реквизитов... за вас их будет Пушкин заполнять?
84 MagicFly
 
13.09.11
11:05
Всё!!!!! Взлетело. Всем спасибо
85 zahar140382
 
13.09.11
11:06
доделал перебор номенклатуры?
86 zahar140382
 
13.09.11
11:06
у тя небыло выбора номенклатуры
87 zahar140382
 
13.09.11
11:07
ты из Спр ничего невыбирал в коде
88 zahar140382
 
13.09.11
11:07
давай удачи .с ПРАЗДНИКОМ
89 1Сергей
 
13.09.11
11:58
расплескало Захара по всей ветке
90 ЧеловекДуши
 
13.09.11
12:01
(73)Видимо автор в (0) не прочитал ЖКК :D
91 forforumandspam
 
13.09.11
12:08
(89) Не только в этой.
92 Aprobator
 
13.09.11
14:11
(0) песец. У тебя док создается в цикле. Соответственно, что если захода в цикл не было, то и док нету вообще. Постов почти на сотню из за фигни развели.