Имя: Пароль:
1C
1С v8
COM-соединение, не записывается набор записей
,
0 MRAK
 
20.03.12
09:18
В чем может быть проблема?


               НаборВПриемнике = Соединение.AccountingRegisters.Хозрасчетный.CreateRecordSet();
               НаборВПриемнике.Filter.Recorder.Set(ОбъектВПриемнике.Ref);
               НаборВПриемнике.Read();
               
               НаборВПриемнике.Write();


Выдается ошибка:

{ОбщийМодуль.УправлениеСинхронизацией.Модуль(866)}: Ошибка при вызове метода контекста (Write)
               НаборВПриемнике.Write();
по причине:
Метод не найден
1 Галахад
 
гуру
20.03.12
09:37
Вроде так. Не?
НаборВПриемнике = Соединение.AccountingRegisters.Хозрасчетный.CreateRecordSet();
НаборВПриемнике.Filter.Recorder.Set(ОбъектВПриемнике.Ref);

ДвижениеВПриемнике = НаборВПриемнике.Add();
ДвижениеВПриемнике.Регистратор = ОбъектВПриемнике.Ref

...

НаборВПриемнике.Write();
2 MRAK
 
20.03.12
09:42
(1) нет. От этого ничего не изменится. Ошибка в том, что не найден метод "Записать"
3 hhhh
 
20.03.12
09:46
(2) может между Read и Write еще что-то делаете?
4 MRAK
 
20.03.12
09:50
(3) нету.
Пробывал Clear - тоже нормально отрабатывает, валится на write
5 qeos
 
20.03.12
09:52
а может по русски надо?
и отладчиком надо посмотреть что за объект во время записи.
6 БибиГон
 
20.03.12
09:54
НаборВПриемнике какого типа?
7 MRAK
 
20.03.12
09:56
(6) как положено, COMОбъект
8 MRAK
 
20.03.12
09:57
(6) а можно как-то его тип в приемнике посмотреть? Соединение.Type() не прокатывает
9 Defender aka LINN
 
20.03.12
09:59
(0) А что мешает писать на русском?
10 БибиГон
 
20.03.12
09:59
Понятно, тебе нужно получить записи чтобы их записать а у тебя COMОбъект
11 MRAK
 
20.03.12
10:05
(10) не обязательно. Записать можно и пустой набор.
12 MRAK
 
20.03.12
10:08
(9) Спасибо.
Как ни странно, сработало

НаборВПриемнике.Записать();

Это какой-то косяк 1С, что англоязычный синтаксис "Записать" через com не рабочий?
13 Defender aka LINN
 
20.03.12
10:14
(12) Я считаю, что их косяк в том, что там вообще есть английский синтаксис. Упаси господь потом за такими любителями что-то доделывать
14 MRAK
 
20.03.12
10:24
(13) видимо, код писался еще когда русский через com не поддерживался.

А как быть англоязычным 1С-писателям? Весь свой англоязычный код поганить строкой "RecordSet.Записать()" ?!!!
15 Defender aka LINN
 
20.03.12
10:26
(14) Ты много таких знаешь?
16 MRAK
 
20.03.12
10:29
(15) 1С продается не только в России. Код в локализованных решениях в английском синтаксисе
17 Defender aka LINN
 
20.03.12
10:31
(16) То есть, не знаешь. Я вот тоже.
18 MRAK
 
20.03.12
10:34
(17) ты не видишь суслика, а он есть)
19 Alex375
 
20.03.12
10:36
Попробуй параметр явно указать в write()
20 MRAK
 
20.03.12
10:41
(19) это не поможет. Да и не надо его явно указывать. Ошибку прочитай
21 Defender aka LINN
 
20.03.12
10:44
(18) Сделали бы просто другую версию платформы или локализацию. А то насмотрелся я на ужасы "труЪ программистов"... :)
22 БибиГон
 
20.03.12
10:48
(21) в смысле?
23 Defender aka LINN
 
20.03.12
10:49
(22) Ну, вот в (0) неплохой пример. За исключением того, что там ВЕСЬ код был так написан. И для полной радости все объекты гордо именовались по-английски.
24 MRAK
 
20.03.12
11:00
(23) ну когда ВЕСЬ код - это как раз нормально.
Бесит, когда винигрет из русско-английского синтаксиса
25 Defender aka LINN
 
20.03.12
11:13
(24) Дык венигрет там и был. Справочник.Contractors.Select(), Item.Наименование и все в таком духе