//Сначала разберемся с услугами, которые идут не себестоимость. Для них нужно вводить документ ПоступлениеДопРасходов
ЕстьПроцедураЗагрузки = Истина; ИмяМенеджераОбъекта = "ПоступлениеТоваровУслуг";
Если ПустаяСтрока(ТекОбъект) и ПустаяСтрока(ИдентификаторОбъекта) Тогда Возврат; КонецЕсли;
тзПартии = Новый ТаблицаЗначений;
тзПартии.Колонки.Добавить("Номенклатура");
тзПартии.Колонки.Добавить("Сумма");
тзПартии.Колонки.Добавить("СуммаНДС");
тзПартии.Колонки.Добавить("СтавкаНДС");
КурсДокумента = ПолучитьЗначениеРеквизита("КурсДокумента");
Если КурсДокумента = 0 Тогда КурсДокумента = 1; КонецЕсли;
//Заполним табицу движений партий
Автомобили = Ложь;
ТекТабличнаяЧасть = ПолучитьТабличнуюЧасть(ИдентификаторОбъекта, "ПартииТоваров");
Если ТекТабличнаяЧасть.Количество() = 0 Тогда
ТекТабличнаяЧасть = ПолучитьТабличнуюЧасть(ИдентификаторОбъекта, "ОстаткиАвтомобилей");
Автомобили = Истина;
КонецЕсли;
Для к = 0 по ТекТабличнаяЧасть.Количество() - 1 Цикл
ЗначенияСтроки = ТекТабличнаяЧасть.Получить(к).Значение;
Если Автомобили Тогда
Номенклатура = ПолучитьОбъект(ЗначенияСтроки["Автомобиль"], "Справочник.Номенклатура");
Иначе
Номенклатура = ПолучитьНоменклатуру(ЗначенияСтроки["Номенклатура"]);
КонецЕсли;
СтрокаПартии = тзПартии.Добавить();
СтрокаПартии.Номенклатура = Номенклатура;
СтрокаПартии.Сумма = ЗначенияСтроки["Сумма"]/КурсДокумента;
СтрокаПартии.СуммаНДС = ЗначенияСтроки["СуммаНДС"]/КурсДокумента;
СтрокаПартии.СтавкаНДС = ПолучитьСтавкуНДСПоИдентификатору(ЗначенияСтроки["СтавкаНДС"]);
КонецЦикла;
тзПартии.Свернуть("Номенклатура,СтавкаНДС","Сумма,СуммаНДС");
Если тзПартии.Количество() > 0 Тогда
ТаблицаДанных = Новый ТаблицаЗначений();
ТаблицаДанных.Колонки.Добавить("Номенклатура");
ТаблицаДанных.Колонки.Добавить("Ссылка");
ТаблицаДанных.Колонки.Добавить("ВалютаОснования");
ТаблицаДанных.Колонки.Добавить("Сумма");
ТаблицаДанных.Колонки.Добавить("СуммаТовара");
ТаблицаДанных.Колонки.Добавить("СуммаНДС");
ТаблицаДанных.Колонки.Добавить("ДокументПартии");
ТаблицаДанных.Колонки.Добавить("УчитыватьНДС");
ТаблицаДанных.Колонки.Добавить("СуммаВключаетНДС");
ТаблицаДанных.Колонки.Добавить("Количество");
ТаблицаДанных.Колонки.Добавить("КоличествоМест");
ТаблицаДанных.Колонки.Добавить("ЕдиницаИзмерения");
ТаблицаДанных.Колонки.Добавить("Коэффициент");
ТаблицаДанных.Колонки.Добавить("СчетУчетаБУ");
ТаблицаДанных.Колонки.Добавить("СчетУчетаНУ");
ТаблицаДанных.Колонки.Добавить("ОтражениеВУСН");
ТаблицаДанных.Колонки.Добавить("СчетУчетаНДС");
ТаблицаДанных.Колонки.Добавить("СтавкаНДС");
ДокументПоступленияИД = ПолучитьЗначениеРеквизита("ДокументОснование");
ТипОбъекта = "Документ.";
Идентификатор = ПолучитьЗначениеРеквизита("_1С_ИдентификаторБД",ТипОбъекта,ДокументПоступленияИД);
//Идентификатор получаем только ради получения типа объекта. Если тип объекта основания у нас
//комплектация/разукомплектация, то документ основание у нас = ДокументПоступления + "-ПР"
//Потому что при перегрузке этих документов загружаются документы списания и поступления с окончанием "-ПР"
Если ТипОбъекта = "Документ.Комплектация" ИЛИ ТипОбъекта = "Документ.Разукомплектация" Тогда
ДокументПоступленияИД = ДокументПоступленияИД+"-ПР";
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ДокументПоступленияИД) Тогда
Сообщить("Не удалось перегрузить документ ""Поступление доп. расходов"" №"+ПолучитьЗначениеРеквизита("_1С_Номер")+". Не обнаружен документ основание!!!");
ДобавитьСообщениеОЗагрузке("208",ПолучитьПредставление(ВидОбъекта),ТекОбъект," Реквизит ""Документ расчетов с контрагентом"". ");
Возврат;
Иначе
КодСообщения = "";
ДокументПоступления = ЗагрузитьДокументПоСсылке(ДокументПоступленияИД,КодСообщения);
Если ДокументПоступления = Неопределено Тогда
Сообщить("Не удалось перегрузить документ ""Поступление доп. расходов"" №"+ПолучитьЗначениеРеквизита("_1С_Номер")+". Не обнаружен документ основание!!!");
ДобавитьСообщениеОЗагрузке("208",ПолучитьПредставление(ВидОбъекта),ТекОбъект," Реквизит ""Документ расчетов с контрагентом"". ");
Возврат;
Иначе
Если КодСообщения <> "" Тогда
ДобавитьСообщениеОЗагрузке(КодСообщения,ПолучитьПредставление(ВидОбъекта),ТекОбъект," Реквизит ""Документ расчетов с контрагентом"". ")
КонецЕсли;
КонецЕсли;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДокументОснование", ДокументПоступления.Ссылка);
Запрос.Текст ="ВЫБРАТЬ
| Док.Номенклатура,
| Док.Ссылка,
| Док.Ссылка.ВалютаДокумента КАК ВалютаОснования,
| Док.Сумма,
| Док.СуммаНДС,
| Док.Ссылка.УчитыватьНДС КАК УчитыватьНДС,
| Док.Ссылка.СуммаВключаетНДС КАК СуммаВключаетНДС,
| Док.Количество,
| Док.КоличествоМест,
| Док.ЕдиницаИзмерения,
| Док.Коэффициент,
| Док.СчетУчетаБУ,
| Док.СчетУчетаНУ,
| Док.ОтражениеВУСН,
| Док.СчетУчетаНДС
|ИЗ
| Документ.ПоступлениеТоваровУслуг.Товары КАК Док
|ГДЕ
| Док.Ссылка = &ДокументОснование
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Док.Номенклатура,
| Док.Ссылка,
| Док.Ссылка.ВалютаДокумента,
| Док.Сумма,
| Док.СуммаНДС,
| Док.Ссылка.УчитыватьНДС,
| Док.Ссылка.СуммаВключаетНДС,
| Док.Количество,
| Док.Количество,
| Док.ЕдиницаИзмерения,
| Док.Коэффициент,
| Док.СчетУчетаБУ,
| Док.СчетУчетаНУ,
| NULL,
| Док.СчетУчетаНДС
|ИЗ
| Документ.ПоступлениеТоваровУслуг.Оборудование КАК Док
|ГДЕ
| Док.Ссылка = &ДокументОснование
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Док.Номенклатура,
| Док.Ссылка,
| NULL,
| NULL,
| NULL,
| NULL,
| NULL,
| Док.Количество,
| Док.КоличествоМест,
| Док.ЕдиницаИзмерения,
| Док.Коэффициент,
| Док.СчетУчетаБУ,
| Док.СчетУчетаНУ,
| NULL,
| NULL
|ИЗ
| Документ.ПеремещениеТоваров.Товары КАК Док
|ГДЕ
| Док.Ссылка = &ДокументОснование
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Док.Номенклатура,
| Док.Ссылка,
| NULL,
| Док.Сумма,
| NULL,
| NULL,
| NULL,
| Док.Количество,
| Док.КоличествоМест,
| Док.ЕдиницаИзмерения,
| Док.Коэффициент,
| Док.СчетУчетаБУ,
| Док.СчетУчетаНУ,
| NULL,
| NULL
|ИЗ
| Документ.ОприходованиеТоваров.Товары КАК Док
|ГДЕ
| Док.Ссылка = &ДокументОснование";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
СтрокаТабличнойЧасти = ТаблицаДанных.Добавить();
СтрокаТабличнойЧасти.Номенклатура = Выборка.Номенклатура;
СтрокаТабличнойЧасти.Количество = Выборка.Количество;
СтрокаТабличнойЧасти.КоличествоМест = Выборка.КоличествоМест;
СтрокаТабличнойЧасти.ЕдиницаИзмерения = Выборка.ЕдиницаИзмерения;
СтрокаТабличнойЧасти.Коэффициент = Выборка.Коэффициент;
СтрокаТабличнойЧасти.ДокументПартии = ДокументПоступления.Ссылка;
СтрокаТабличнойЧасти.СуммаТовара = Выборка.Сумма;
СтрокаТабличнойЧасти.СчетУчетаБУ = Выборка.СчетУчетаБУ;
СтрокаТабличнойЧасти.СчетУчетаНДС = ПланыСчетов.Хозрасчетный.НДСпоПриобретеннымУслугам;
СтрокаТабличнойЧасти.СчетУчетаНУ = Выборка.СчетУчетаНУ;
СтрокаТабличнойЧасти.ОтражениеВУСН = ?(ЗначениеЗаполнено(Выборка.ОтражениеВУСН), Выборка.ОтражениеВУСН, Перечисления.ОтражениеВУСН.НеПринимаются);
СтрокаПартии = тзПартии.Найти(СтрокаТабличнойЧасти.Номенклатура,"Номенклатура");
Если СтрокаПартии <> Неопределено Тогда
СтрокаТабличнойЧасти.Сумма = СтрокаПартии.Сумма-СтрокаПартии.СуммаНДС;
СтрокаТабличнойЧасти.СуммаНДС = СтрокаПартии.СуммаНДС;
СтрокаТабличнойЧасти.СтавкаНДС = СтрокаПартии.СтавкаНДС;
КонецЕсли;
КонецЦикла;
ТаблицаДанных.Сортировать("СтавкаНДС");
ПредСтавкаНДС = "";
Док = 0;
ЭтоПервыйДокумент = Истина;
Для Каждого ТекСтрока Из ТаблицаДанных Цикл
ТекСтавкаНДС = ТекСтрока.СтавкаНДС;
Если ПредСтавкаНДС<>ТекСтавкаНДС Тогда
Если НЕ ЭтоПервыйДокумент Тогда
ЗакрытьДокумент(ТекОбъект);
УстановитьСоответствие(ИдентификаторОбъекта+"-"+Док, ТекОбъект);
ДобавитьИнформациюОЗагрузке(ТекОбъект);
Док = Док + 1;
КонецЕсли;
ДокМенеджер = Документы.ПоступлениеДопРасходов;
ТекОбъект = ДокМенеджер.ПустаяСсылка();
Если НЕ ПолучитьСоответствие(ДокМенеджер, ИдентификаторОбъекта+"-"+Док, ТекОбъект) Тогда
ТекОбъект = ДокМенеджер.СоздатьДокумент();
Иначе
ЭтоНовыйОбъект = Ложь;
Если НеОбновлятьСуществующие Тогда Возврат;КонецЕсли;
КонецЕсли;
ЗагрузитьШапку(ТекОбъект);
УстановитьРеквизит(ТекОбъект,"Дата", ПолучитьЗначениеРеквизита("_1С_Дата"));
УстановитьРеквизит(ТекОбъект,"СпособРаспределения", Перечисления.СпособыРаспределенияДопРасходов.ПоСумме);
УстановитьРеквизит(ТекОбъект,"СтавкаНДС", ТекСтрока.СтавкаНДС);
// установим счета бухгалтерского и налогового учета
ТекОбъект.ЗаполнитьСчетаУчетаРасчетов();
//Заполним по документу поступления.
ТекОбъект.Товары.Очистить();
ЭтоПервыйДокумент = Ложь;
КонецЕсли;
НоваяСтрока = ТекОбъект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрока);
ПредСтавкаНДС = ТекСтавкаНДС;
КонецЦикла;
ЗакрытьДокумент(ТекОбъект);
КонецЕсли;
Если Тип("ДокументСсылка.ПеремещениеТоваров") = ТипЗнч(ДокументПоступления) Тогда
ДобавитьСообщениеОЗагрузке("103",ПолучитьПредставление(ВидОбъекта),ТекОбъект,"Документ основание - ""Перемещение товаров"". Реквизит табличной части ""Сумма товара"" не может быть заполнен.");
КонецЕсли;
.... |