Имя: Пароль:
1C
1С v8
как перезаписать Счет фактуру?
0 Juli_Juli
 
29.02.12
12:57
создала программно документ счет фактуру, затем хочу заполнить табличныую часть. но при попытке перезаписать счет фактуру - пишется Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных(возможно запись была изменена или удалена)! причем ссылка на объект счета фактуры есть и табл.часть заполняется методом Добавить(), но вот метод Записать() не срабатывает. что делать? как перезаписать с заполненной табличной частью?
1 zak555
 
29.02.12
12:59
Объект.ОбменДанными.Загрузка = Истина
2 zak555
 
29.02.12
13:01
заполняешь ТЧ интерактивно, а потом хочешь записать программно ?
3 Ненавижу 1С
 
гуру
29.02.12
13:02
код покажи, ну и фото
4 Juli_Juli
 
29.02.12
13:13
для каждого строка из ТЗ цикл  
Если строка.Indecator="N" И строка.Записывать_в_1с=истина тогда //начинается новый счет
//создала ДокАкт-Реализацию                
//создаем Счет-фактуру
               ДокФактура=документы.СчетФактураВыданный.СоздатьДокумент();
               НоваяСтрока = ДОкФактура.ДокументыОснования.Добавить();
               НоваяСтрока.ДокументОснование = ДокАкт.Ссылка;
               ДокФактура.ЗаполнитьОсновнойСчетФактура();
               ДокФактура.Организация=ДокАкт.Организация;
               ДокФактура.Дата=докАкт.Дата;
               ДокФактура.Контрагент=ДокАкт.Контрагент;
               ДокФактура.ДоговорКонтрагента=докАкт.ДоговорКонтрагента;
               ДокФактура.Записать(РежимЗаписиДокумента.Запись);
               ТекФактура=ДокФактура.Ссылка;
               сообщить("Счет-фактура создана и записана "+ДокФактура.Номер);
Если строка.Indecator="P" и счетчикЗаписи=1 тогда //заполняется табличная часть счета - услуги
             ДокСчУслуги=ДокСч.Услуги.Добавить();
               ДокАкт.Записать();
               ДокФактура.Разблокировать();
       //так же заполняем табл часть Счета-фактуры
       для каждого СтрокаТаблЧастиУслугиАкт из ДокАкт.Услуги цикл
           НоваяСтрокаФактуры=ДокФактура.услуги.Добавить;
                       НоваяСтрокаФактуры.Номенклатура=СтрокаТаблЧастиУслугиАкт.Номенклатура;
           НоваяСтрокаФактуры.Содержание=СтрокаТаблЧастиУслугиАкт.Номенклатура.НаименованиеПолное;
           НоваяСтрокаФактуры.Количество=СтрокаТаблЧастиУслугиАкт.Количество;
           НоваяСтрокаФактуры.СтавкаНДС=СтрокаТаблЧастиУслугиАкт.СтавкаНДС;
           НоваяСтрокаФактуры.СуммаНДС= СтрокаТаблЧастиУслугиАкт.СуммаНДС;
           НоваяСтрокаФактуры.Цена=СтрокаТаблЧастиУслугиАкт.Цена;
           НоваяСтрокаФактуры.Сумма=СтрокаТаблЧастиУслугиАкт.Сумма;
       конецЦикла;
           ДокФактура.ОбменДанными.Загрузка = Истина;
                   ДокФактура.Записать();
КонецЕсли;
КонецЕсли;
КонецЦикла;
5 Ненавижу 1С
 
гуру
29.02.12
13:15
(4) когда меняешь записываешь основание, оно меняет счет-фактуру
по-моему тебе надо просто что-то типа:

ДокФактура=документы.СчетФактураВыданный.СоздатьДокумент();
ДокФактура.Заполнить(ДокАкт);
6 zak555
 
29.02.12
13:17
(4) фотка ?
7 sanja26
 
29.02.12
13:22
(4) зачем 2 раза записывать??  ТекФактура нигде не используется
8 Juli_Juli
 
29.02.12
13:31
потому что у меня есть таблица из биллинга. и первая строка в таблице - данные по шапке документа, далее строки по табличной части. записывать в цикле по строкам табличной части - столько раз и записшется фактура. с другими документами все нормально проходило - я каждый раз перезаписыввала, при добавлении новой строки табличной части. тут проблема именно в документе основания....
9 Juli_Juli
 
29.02.12
14:47
решили проблему путем того, что мне из биллинга дали признак последней строки табличной части документа. т.о. присвоение документа-основание - делается в моментзаписи последней строки табл.части - и все тогда записывается как надо.
Но! он только записывается, но не проводится. т.е. если открыть док.ручками и провести, то проводится без проблем - или групповой обработкой справочников и документов. как его провести? потому как когда пишешь ДокФактура.Записать(РежимЗаписиДокумента.Проведение);
ругается - действие не может быть выполнено в режиме загрузки данных

просто метода Записать() - просто записывает, но не проводит - в чем разница и как это лечить?
10 Wobland
 
29.02.12
14:48
(9) сказать Записать() правильный режим проведения
11 Wobland
 
29.02.12
14:49
(10) поспешил