|
![]() |
Царьков Валерий |
При переносе проводок из "Торговли 9.0" в "Бухгалтерию 4.2" с использованием стандартной процедуры "Выгрузка в 1С:Бухгалтерию" переносится и вся номенклатура. Бухгалтер, как правило, желает вместо полного списка товаров видеть что-то типа:
- товар 20% НДС без НП
- товар 10% НДС без НП
- товар без НДС без НП
- товар 20% НДС 5% НП
...
т.е чтобы номенклатура была сгруппирована по ставкам налогов НДС и НП.
Сделать такой "финт" несложно. Для начала необходимо создать в справочнике элементы номенклатуры, которые, собственно, и будем выгружать (лучше в отдельной папке "Для Бухгалтерии", или что-то вроде). Так получится столько элементов, сколько комбинаций налогов НДС и НП встречается у Вас (у нас 3 НДС * 2 НП = 6).
Коды и наименования присваиваем соответственно ставкам налогов:
"_00_0" "Товар без НДС без НП"
"_20_0" "Товар 20% НДС без НП"
"_10_5" "Товар 10% НДС 5% НП"
Теперь о том, как заменить фактическую номенклатуру из справочника на ту, которая будет выгружаться.
В обработке "XMLВыгрузкаДанныхВБухгалтерию" ищем вызов функции:
глПолучитьТаблицуПроводок(ДатаНач, ДатаКон, ФормЮрЛицо).
Она возвращает таблицу значений (в нашем примере Таб), в которой содержится полная информация о проводках (СчетД, СубконтоД1, СубконтоД2, СубконтоД3, СчетК, СубконтоК1, СубконтоК2, СубконтоК3, Сумма, Количество, ВалСумма, Валюта, Содержание, ВклСуммаОперации). Остается только заменить встречающуюся в таблице номенклатуру на специально созданные "мнимые" (или "виртуальные") товары:
Спр=СоздатьОбъект("Справочник.Номенклатура");
Таб.ВыбратьСтроки();
Пока Таб.ПолучитьСтроку()=1 цикл
Что=Таб.СубконтоД1;
//правда, это не все, номенклатура может встречаться не только в "СубконтоД1", но и в других
Если ТипЗначенияСтр(Что)="Справочник" тогда
Иначе
Продолжить;
КонецЕсли;
Если Что.Вид()="Номенклатура" тогда
Иначе
Продолжить;
КонецЕсли;
СтавкаНДС=Что.СтавкаНДС;
СтавкаНП=Что.СтавкаНП;
СпрИмя="Товар ";
СпрКод="_";
Если СтавкаНДС=Перечисление.СтавкиНДС.БезНДС тогда
СпрКод=СпрКод+"00";
СпрИмя=СпрИмя+"без НДС ";
ИначеЕсли СтавкаНДС=Перечисление.СтавкиНДС.НДС10 тогда
СпрКод=СпрКод+"10";
СпрИмя=СпрИмя+"10% НДС ";
ИначеЕсли СтавкаНДС=Перечисление.СтавкиНДС.НДС20 тогда
СпрКод=СпрКод+"20";
СпрИмя=СпрИмя+"20% НДС "
КонецЕсли;
СпрКод=СпрКод+"_"+СокрЛП(СтавкаНП.Ставка);
СпрИмя=СпрИмя+СтавкаНП.Наименование+" НП";
Если Спр.НайтиПоКоду(СпрКод)=0 тогда
//Неплохо бы создать новый элемент
Сообщить("Создайте товар: "+СпрИмя+" код: "+СпрКод);
КонецЕсли;
Таб.СубконтоД1=Спр.ТекущийЭлемент();
КонецЦикла;
Теперь свернем таблицу значений с группировкой по реквизитам:
Таб.Свернуть("СчетД, СубконтоД1, СубконтоД2, СубконтоД3, СчетК, СубконтоК1, СубконтоК2, СубконтоК3, Валюта, Содержание, ВклСуммаОперации", "Сумма, Количество, ВалСумма");
... и можно выгружать данные. Хотя "Количество" теперь потеряло смысл (там теперь сумма по разнам товарам и единицам измерения), так что его проще обнулить (можно во время смены товара).