Имя: Пароль:
1C
 
Как получить ссылку нового документа еще не проведенного?
0 Katerinka-e
 
31.05.11
07:22
Подскажите как СтрокаТЧ.Документ присвоить ссылку нового документа ОперацииБух еще не проведенного

СтрокаТЧ = ЭлементыФормы.ВозвратК.ТекущиеДанные;
   
   //добавим документ Операции и добавим проводки    
    НовБУ = Документы.ОперацияБух.СоздатьДокумент();
    НовБУ.Организация = Организация;
    НовБУ.Дата = дата;
    НовБУ.Ответственный = Ответственный;
    НовБУ.Содержание = "Возврат корма. Документ: " + ДокументОбъект.Ссылка;  
   
    ОбщаяСумма = 0;
    Для каждого строка из ВозвратК цикл
    //добавление проводки в БУ
   
    Проводка = НовБУ.Движения.Хозрасчетный.Добавить();
    Проводка.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.12");
    Проводка.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("20.01.1");                                    
   
    УстановитьСубконто(Проводка.СчетДТ, Проводка.СубконтоДТ, 1, строка.Номенклатура);
    УстановитьСубконто(Проводка.СчетДТ, Проводка.СубконтоДТ, 2, склад);
    УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт, 1, Подразделение);
    УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт, 2, строка.ПартииПроизводсива);
    УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт, 3, Справочники.СтатьиЗатрат.НайтиПоКоду("000000005"));
    Проводка.КоличествоДТ = строка.Количество;
    Проводка.Сумма = строка.Сумма;
    Проводка.Период = дата;

    //добавление проводки в НУ
    ПроводкаНУ = НовБУ.Движения.Налоговый.Добавить();
    ПроводкаНУ.СчетДт = ПланыСчетов.Налоговый.НайтиПоКоду("10.12");
    ПроводкаНУ.СчетКт = ПланыСчетов.Налоговый.НайтиПоКоду("20.01.1.1");
   
    УстановитьСубконто(ПроводкаНУ.СчетДТ, ПроводкаНУ.СубконтоДТ, 1, СтрокаТЧ.Номенклатура);
    УстановитьСубконто(ПроводкаНУ.СчетДТ, ПроводкаНУ.СубконтоДТ, 2, склад);
    УстановитьСубконто(ПроводкаНУ.СчетКт, ПроводкаНУ.СубконтоКт, 1, Подразделение);
    УстановитьСубконто(ПроводкаНУ.СчетКт, ПроводкаНУ.СубконтоКт, 2, строка.ПартииПроизводсива);
    УстановитьСубконто(ПроводкаНУ.СчетКт, ПроводкаНУ.СубконтоКт, 3, Справочники.СтатьиЗатрат.НайтиПоКоду("000000005"));
    ПроводкаНУ.КоличествоДТ = строка.Количество;
    ПроводкаНУ.Сумма = строка.Сумма;
    ПроводкаНУ.Период = дата;
   
    ОбщаяСумма = ОбщаяСумма + Строка.сумма;
   
    СтрокаТЧ.Документ = НовБУ.УстановитьСсылкуНового();
    КонецЦикла;                          
   
   
    НовБУ.СуммаОперации = ОбщаяСумма;
    НовБУ.Записать();
1 Amra
 
31.05.11
07:27
Без фото не взлетит)
2 Rie
 
31.05.11
07:30
(0) Может, так:
НовБУ.УстановитьСсылкуНового();
СтрокаТЧ.Документ = НовБУ.Ссылка;
3 Sammo
 
31.05.11
07:39
Непроведенного или незаписанного?
4 Amiralnar
 
31.05.11
07:41
(3) Не установить, а непосредственно - получить.
5 Katerinka-e
 
31.05.11
07:42
незаписанного
6 Amiralnar
 
31.05.11
07:43
А что за нелогичный алгоритм??
7 Amiralnar
 
31.05.11
07:43
И кто мешает записать, а потом присвоить?
8 Sammo
 
31.05.11
07:44
Кстати. А почему бы не записать сначала документ, а потом записать его движения?
Либо как уже сказали - ПолучитьСсылку/УстановитьСсылкуНового - подробнее см. СП
9 Amiralnar
 
31.05.11
07:45
(8) Движения записывать не надо. Они сами должны записаться вместе с операцией.
10 Sammo
 
31.05.11
07:51
(9) Да все равно.
Суть в том, чтобы перед записью движений документ был уже записан.
Недостаток - проблемы при формировании проводок.
11 Amiralnar
 
31.05.11
07:53
(10) Как все равно? Я вас не понимаю.

Создаем объект документа. В этом объекте доступны движения. Они могут быть заполнены, а объект записан. Большего не требуется. Зачем записывать одно, другое, третье?
12 Amiralnar
 
31.05.11
07:54
У меня вообще вызывает вопрос сам алгоритм. Зачем одна и та-же СтрокаТЧ в цикле заполняется одним и тем-же документом? Это вроде как если с первого раза не получилось?
13 vicof
 
31.05.11
07:55
Проводка.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.12");
    Проводка.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("20.01.1");

как мило
14 Katerinka-e
 
31.05.11
07:58
(12) работает так есть документ Документ возврат у нем таблица. Берутся из таблицы каждая строка и данные в нес записываются в операция бух учет.
15 Sammo
 
31.05.11
07:59
(12) Да тут много вопросов - откуда берется ВозвратК + меня всегда умиляли переменные с названиями Строка и Дата и т.д. и т.п.
16 Katerinka-e
 
31.05.11
08:01
ВозвратК это таблица в документе ДокументВозврат
17 Katerinka-e
 
31.05.11
08:12
Итог не ясен!?
18 Amiralnar
 
31.05.11
08:13
(17) Поток сознания...
Используйте ПолучтьСсылкуНового(), и да прибудет с вами сила.
19 Katerinka-e
 
31.05.11
08:23
если я
СтрокаТЧ.Документ = НовБУ.ПолучитьСсылкуНового();

то с СтрокаТЧ.Документ пусто

если перед циклом записать созданный докумунт, а затем

СтрокаТЧ.Документ = НовБУ.ПолучитьСсылкуНового();

{Документ.ВозвратКормов.Форма.ФормаДокумента(110)}: Ошибка при вызове метода контекста (ПолучитьСсылкуНового): Получение новой ссылки доступно только для нового объекта.
      СтрокаТЧ.Документ = НовБУ.ПолучитьСсылкуНового();
20 Amiralnar
 
31.05.11
08:26
СтрокаТЧ.Документ - тип реквизита ТЧ не правильный.
21 Katerinka-e
 
31.05.11
08:45
Подскажите пожалуйста какой надо установить тип реквизита?
ставила строка и ссылкадокументы.операцииБух
22 Рыжий Лис
 
31.05.11
09:12
(19) Если "перед циклом записать", то это уже не новый документ.
23 Katerinka-e
 
31.05.11
09:29
(22) хорошо, а как тогда сделать?
24 Katerinka-e
 
31.05.11
09:29
правильно
25 Katerinka-e
 
31.05.11
09:38
Ау, плиз помогите?
26 Eugene_life
 
31.05.11
09:44
(25) У тебя тип реквизита "документ" наверное, а присваиваешь ему тип "Ссылка"
27 Рыжий Лис
 
31.05.11
09:45
СтрокаТЧ.Документ = НовБУ.Ссылка;
28 Katerinka-e
 
31.05.11
09:55
Спасибо большое!!
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.