Имя: Пароль:
1C
 
Программное создание ручной операции
0 егаис
 
05.03.15
14:03
Подскажите, изменился ли механизм создания ручной операции в БП 3.0?
Был модуль под 2.0
    ОперДок = Документы.ОперацияБух.СоздатьДокумент();
    ОперДок.Организация = Объект.Организация;
    ОперДок.Дата = КонецМесяца(Объект.ДатаЗакрытия);
    ОперДок.Ответственный = ПараметрыСеанса.ТекущийПользователь;
    Для каждого текСтрока Из тзРаспределить Цикл
//блабла.....
//проводки
        Проводка = ОперДок.Движения.Хозрасчетный.Добавить();
        Проводка.Регистратор = ОперДок.Ссылка;
        Проводка.Организация = Объект.Организация;
        Проводка.Период = ОперДок.Дата;
        Проводка.Содержание = "Распределение счета 20";
        
        Проводка.СчетДт = ПланыСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД;
        Проводка.СубконтоДт.НоменклатурныеГруппы = ОбъектВыполненияВыручка;
        
        Проводка.СчетКт = ПланыСчетов.Хозрасчетный.ОсновноеПроизводство;
        Проводка.ПодразделениеКт = ПодразделениеЗатрат;
        Проводка.СубконтоКт.НоменклатурныеГруппы = ОбъектВыполненияЗатрат;
        Проводка.СубконтоКт.СтатьиЗатрат = ТекСтрока.СтатьяЗатрат;
        
        Проводка.Сумма = Окр(текСтрока.СуммаОстаток, 2);
        
        Проводка.СуммаНУДт = Окр(текСтрока.СуммаНУОстаток, 2);
        Проводка.СуммаНУКт = Проводка.СуммаНУДт;
        
        Проводка.СуммаПРДт = Окр(текСтрока.СуммаПРОстаток, 2);
        Проводка.СуммаПРКт = Проводка.СуммаПРДт;
        
        Проводка.СуммаВРДт = Окр(текСтрока.СуммаВРОстаток, 2);
        Проводка.СуммаВРКт = Проводка.СуммаВРДт;
    
    КонецЦикла;


Вооооот, под 3.0 операция возвращается пустая, хотя отладчиком пробежал и проводки должны создаваться
В чем прабл?
1 Naumov
 
05.03.15
14:06
ОперДок.Движения.Хозрасчетный.Записать()?
2 егаис
 
05.03.15
14:07
сорь, в концовке так
    Попытка
        ОперДок.Записать();
        Сообщить("Создан документ: " + СокрЛП(ОперДок));
    Исключение
        Сообщить("" + ОписаниеОшибки(), СтатусСообщения.Внимание);
    КонецПопытки;
3 егаис
 
05.03.15
14:08
(1)
так ошибка
{Форма.Форма.Форма(97)}: Ошибка при вызове метода контекста (Записать)
        ОперДок.Движения.Хозрасчетный.Записать();
по причине:
Ошибка записи! Не установлен отбор по регистратору (Регистр бухгалтерии: Журнал проводок (бухгалтерский и налоговый учет))
4 Naumov
 
05.03.15
14:09
(3) заполняй регистратор
5 егаис
 
05.03.15
14:11
видимо поменялся, надо регистратор сначала записать потом через набор записей установить проводки, имхо
6 Naumov
 
05.03.15
14:12
(5) я автозаполнению никогда не доверял и раньше тоже заполнял.
7 егаис
 
05.03.15
14:12
все спс, вопрос закрыт
в 3.0 сначала нужно регистратор записать в базу
8 MSOliver
 
05.03.15
14:24
(7) а раньше не так было?)
9 Naumov
 
05.03.15
14:29
(8) По идее коллекция движений документа уже с отбором и по дефолту ранее Регистратор подставлялся сам.
10 MSOliver
 
05.03.15
14:33
(9) Вы правы, в (0) нет конструкции движения. Ручками набор, ручками регистратор, но чтоб присваивать регистратор нужно уже иметь ссылку.
11 MSOliver
 
05.03.15
14:34
Движения есть, ссылки нет, документ не записан
12 Timon1405
 
05.03.15
14:51
(11) а так не прокатит?
НоваяСсылкаОперация = Документы.ОперацияБух.ПолучитьСсылку(Новый УникальныйИдентификатор);
ОперДок.УстановитьСсылкуНового(НоваяСсылкаОперация);

...

Проводка.Регистратор = НоваяСсылкаОперация;
13 Nuobu
 
05.03.15
14:57
(3) Это от того, что твой документ не записан.
В строке Проводка.Регистратор = ОперДок.Ссылка;
ОперДок.Ссылка = неопределено.
Нужно сначала записать, а потом добавлять движения.
14 MSOliver
 
05.03.15
14:59
(12) ... возможно... проще проверить
механизм получения (Новый УникальныйИдентификатор) скрыт платформой, где гарантия что (Новый УникальныйИдентификатор) в цикле не совпадёт? Хотя Гилёв говорит вероятность стемиться к нулю...
15 MSOliver
 
05.03.15
15:00
(12) ну в целом я согласен, такой способ используется при синхронизации.
16 alle68
 
05.03.15
15:14
(15) Так он же нерабочий в контексте темы!
17 John83
 
05.03.15
18:58
(8) в 2.0 можно без проблем создать и открыть незаписанную операцию
18 MSOliver
 
05.03.15
19:39
(16) какой контекст? это в 7.7 передавалось, пьяный, старый:)
(17) открывать то зачем? ТС хотит создавать...
19 alle68
 
06.03.15
01:53
(18) "Контекст темы" - это весь бред в этой ветке.
"ОперДок.Движения.Хозрасчетный.Записать()" выдаст ту же ошибку и при применении (12). С чем ты согласен в (15), о каком способе речь ведёшь?
Программист всегда исправляет последнюю ошибку.