Программное создание счета-фактуры и копирование свойств счета-фактуры из первичного счета-фактуры
Док = Объект.Ссылка;
ОбъектСчетаФактуры = Документы.СчетФактураВыданный.СоздатьДокумент();
ОбъектСчетаФактуры.Дата = Док.Дата;
//проверяю, сколько нулей не хватает спереди для Номера счет-фактуры и добавляю(зная, что в Номере "ртиу" 12 знаков)
//ОбъектСчетаФактуры.Номер = СтрЗаменить(Формат(Док.Номер, "ЧГ="), " ", "");
//НадоНулей = 12 - СтрДлина(Док.Номер);
//ВедущиеНули = Формат(0,"ЧЦ="+НадоНулей+";ЧН=; ЧВН=; ЧГ=0");
//ОбъектСчетаФактуры.Номер = ВедущиеНули + Док.Номер;
ОбъектСчетаФактуры.УстановитьНовыйНомер();
ОбъектСчетаФактуры.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.Корректировочный;
ОбъектСчетаФактуры.Заполнить(Док.Ссылка);
ОбъектСчетаФактуры.КодВидаОперации = "16";
ОбъектСчетаФактуры.КодВидаОперацииНаУменьшение = "18";
Организация = ОбъектСчетаФактуры.Организация;
Ответственный = ОбъектСчетаФактуры.Ответственный;
Дата = ОбъектСчетаФактуры.Дата;
ДанныеУполномоченногоЛица = ОбщегоНазначения.ПолучитьДанныеУполномоченногоЛица(Организация, Ответственный);
ОтветственныеЛица = ОбщегоНазначения.ОтветственныеЛица(Организация, Дата);
ВерсияПостановления = УчетНДС.ПолучитьВерсиюПостановления(Дата);
Если ВерсияПостановления = 1 Тогда
Объект.Руководитель = Справочники.ФизическиеЛица.ПустаяСсылка();
Объект.ГлавныйБухгалтер = Справочники.ФизическиеЛица.ПустаяСсылка();
Иначе
Если ДанныеУполномоченногоЛица = Неопределено Тогда
ОбъектСчетаФактуры.Руководитель = ОтветственныеЛица.Руководитель;
ОбъектСчетаФактуры.ГлавныйБухгалтер = ОтветственныеЛица.ГлавныйБухгалтер;
Иначе
ОбъектСчетаФактуры.Руководитель = ?(ДанныеУполномоченногоЛица.Руководитель=Неопределено,ОтветственныеЛица.Руководитель,ДанныеУполномоченногоЛица.Руководитель);
ОбъектСчетаФактуры.ГлавныйБухгалтер = ?(ДанныеУполномоченногоЛица.ГлавныйБухгалтер=Неопределено,ОтветственныеЛица.ГлавныйБухгалтер,ДанныеУполномоченногоЛица.ГлавныйБухгалтер);
КонецЕсли;
КонецЕсли;
Попытка
ОбъектСчетаФактуры.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ОбъектСчетаФактуры.Записать();
КонецПопытки;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СчетФактураВыданныйДокументыОснования.Ссылка,
| СчетФактураВыданныйДокументыОснования.ДокументОснование,
| СчетФактураВыданныйДокументыОснования.ДокументОснование.Комментарий,
| СчетФактураВыданныйДокументыОснования.ДокументОснование.ДокументРеализации,
| -СчетФактураВыданныйДокументыОснования.Ссылка.СуммаДокумента КАК СуммаИзменения
|ПОМЕСТИТЬ Корректировочные
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
|ГДЕ
| СчетФактураВыданныйДокументыОснования.Ссылка = &Ссылка
| И НЕ СчетФактураВыданныйДокументыОснования.ДокументОснование.ПометкаУдаления
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СчетФактураВыданныйДокументыОснования.Ссылка,
| СчетФактураВыданныйДокументыОснования.ДокументОснование
|ПОМЕСТИТЬ Первичные
|ИЗ
| Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
|ГДЕ
| СчетФактураВыданныйДокументыОснования.ДокументОснование В
| (ВЫБРАТЬ
| Корректировочные.ДокументОснованиеДокументРеализации
| ИЗ
| Корректировочные КАК Корректировочные)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Корректировочные.Ссылка КАК КоррСчФ,
| Корректировочные.ДокументОснование КАК Корр,
| Корректировочные.ДокументОснованиеДокументРеализации КАК Реал,
| Первичные.Ссылка КАК СчФВыданный,
| Первичные.Ссылка.Номер,
| ГОД(Первичные.Ссылка.Дата) КАК ДТ,
| ВЫРАЗИТЬ(Корректировочные.ДокументОснование.Комментарий КАК СТРОКА(7)) КАК Поле1,
| Корректировочные.СуммаИзменения,
| ЗначенияСвойствОбъектов.Значение
|ИЗ
| Корректировочные КАК Корректировочные
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Первичные КАК Первичные
| ПО Корректировочные.ДокументОснованиеДокументРеализации = Первичные.ДокументОснование
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
| ПО (ЗначенияСвойствОбъектов.Объект = Первичные.Ссылка)
| И (ЗначенияСвойствОбъектов.Свойство.Код = ""00000000059"")";
Запрос.УстановитьПараметр("Ссылка",ОбъектСчетаФактуры.Ссылка);
РТ = Запрос.Выполнить().Выгрузить();
Для Каждого Стр Из РТ Цикл
Если ЗначениеЗаполнено(Стр.Значение) Тогда
Элем = Стр.КоррСчФ;
СтруктураСвойства = Новый Структура;
СтруктураСвойства.Вставить("Свойство","Вид счет фактуры выданной");
СтруктураСвойства.Вставить("Значение",Стр.Значение);
НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
Если ЗначениеЗаполнено(СтруктураСвойства.Значение) Тогда
Запись = НаборЗаписейЗначенияСвойств.Добавить();
Запись.Объект = Элем.Ссылка;
Свойство=ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(СтруктураСвойства.Свойство);
Запись.Свойство = Свойство.Ссылка;
Запись.Значение = СтруктураСвойства.Значение;
КонецЕсли;
НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(Элем.Ссылка);
НаборЗаписейЗначенияСвойств.Отбор.Свойство.Установить(Свойство);
Попытка
НаборЗаписейЗначенияСвойств.Записать();
Исключение
Предупреждение("Не удалось записать значения свойств:" + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
Иначе
Сообщить(СокрЛП(Стр.СчФВыданный)+" - свойство Вид счет фактуры выданной не заполнено");
КонецЕсли;
КонецЦикла;