Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 окт 2024, 09:27

Товар со счета на счет

Автор ADRENALIN1986, 26 авг 2011, 16:16

0 Пользователей и 1 гость просматривают эту тему.

ADRENALIN1986

Здоаствуйте у меня есть счет 41.1 и 41.6(товары на упокавку) мне нужно в поступление товара что бы когда пришел товар с другой организации тоетсь с упаковки на приходе он проводился в обратно порядке с 41.6 на 41.1. Подскажите где изменить код или как лучше сделать очень нужно. 1с 7.7 Предприятие.

ADRENALIN1986

/_____________________________________________________________________________
Процедура ОбработкаПроведения()
   Перем ТаблицаПокупок,АвтоКП;
    // Авт. кн. покупок
   юАвтоКП(1,АвтоКП,Договор,ТаблицаПокупок);
   Сч18  = СчетПоКоду("18.4"); // НДС по приобретенным товарам
   Сч41_1 = СчетПоКоду("41.1");
   Сч41_2 = СчетПоКоду("41.2");
   Сч41_3 = СчетПоКоду("41.3");
   Сч41_4 = СчетПоКоду("41.4");
   Сч004  = СчетПоКоду("004");
   Если Договор.Валютный=1 Тогда
      Сч61 = СчетПоКоду("60.5"); // СчетПоКоду("61.2");
   Иначе   
      Сч61 = СчетПоКоду("60.4");
   КонецЕсли;

   Если ВидПоставщика = Перечисление.ВидПоставщика.Поставщики Тогда
      Если Договор.Валютный=1 Тогда
         Сч60 = СчетПоКоду("60.2");
      Иначе   
         Сч60 = СчетПоКоду("60.1");
      КонецЕсли;
   Иначе
      Если Договор.Валютный=1 Тогда
         Сч60 = СчетПоКоду("76.2");
      Иначе   
         Сч60 = СчетПоКоду("76.1");
      КонецЕсли;
   КонецЕсли;
   
   спрПарт = СоздатьОбъект("Справочник.ПартииТоваров");
   
   СуммаПоставки = Итог("Всего");
   СуммаНДС_18   = Итог("НДС");
   ВыбратьСтроки();
   Пока ПолучитьСтроку() = 1 Цикл
      Если Товар.ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.Товар Тогда
         глОшибкаПроведения(Контекст, "Номенклатурная единица "+Товар+" не является товаром.");
         СтатусВозврата(0); Возврат;
      КонецЕсли;

      Если Товар.ТипТовара = Перечисление.ТипыТоваров.НаКомиссии Тогда
         СчетУчета = Сч004;
          УчетнаяСтоимость = Всего;
         СуммаНДС_18 = СуммаНДС_18 - НДС;
         СуммаПоставки = СуммаПоставки - Всего;
      ИначеЕсли Товар.ТипТовара = Перечисление.ТипыТоваров.Тара Тогда
         СчетУчета = Сч41_3;
         УчетнаяСтоимость = Сумма;
      ИначеЕсли Товар.ТипТовара = Перечисление.ТипыТоваров.ПокупныеИзделия Тогда
         СчетУчета = Сч41_4;
         УчетнаяСтоимость = Сумма;
      Иначе //Если Товар.ТипТовара = Перечисление.ТипыТоваров.Собственный Тогда
         Если ВидПоступления = 2 Тогда //розница
            СчетУчета = Сч41_2;
            УчетнаяСтоимость = Всего;
            СуммаНДС_18 = СуммаНДС_18 - НДС;
         Иначе //Если ВидПоступления = 2 Тогда опт
            СчетУчета = Сч41_1;
            УчетнаяСтоимость = Сумма;
         КонецЕсли;
      КонецЕсли;
      
      Если Наценка > 20 Тогда
         Сообщить("В строке №"+НомерСтроки+" совокупная наценка > 20% !");
         СтатусВозврата(0);
         Возврат;
      КонецЕсли;
      
      
         спрпарт.ИспользоватьВладельца(Товар);
      спрПарт.Новый();
      
      спрПарт.Наименование = Строка(Товар.Наименование+"/"+спрПарт.Код+"/"+ДатаДок);
      Если Договор.Валюта.Выбран() = 1 Тогда
         спрПарт.ЦенаПост     = ЦенаИмпорт*Договор.Валюта.Курс.Получить(ДатаДок);
         спрПарт.УчЦена       = Цена*Договор.Валюта.Курс.Получить(ДатаДок);
      Иначе
         спрПарт.ЦенаПост     = ЦенаИмпорт;
         спрПарт.УчЦена       = Цена;
      КонецЕсли;
      спрПарт.Поставщик    = Контрагент;
      спрПарт.ДатаПост     = ДатаДок;
      спрПарт.Наценка      = Наценка;
      спрПарт.Записать();

      Партия = спрПарт.ТекущийЭлемент();
      
      Операция.НоваяПроводка();
      Операция.СодержаниеПроводки = "Поступили товары";
      Операция.НомерЖурнала = "ТВ";
      Операция.Дебет.Счет = СчетУчета;
      Если СчетУчета = Сч004 Тогда
         Операция.Дебет.Номенклатура  = Товар;       
         Операция.Дебет.ПартииТовара  = спрПарт.ТекущийЭлемент();
         Операция.Дебет.Контрагенты   = Контрагент;
         Операция.Дебет.МестаХранения = МестоХранения;
      Иначе
         Операция.Дебет.Номенклатура  = Товар;
         Операция.Дебет.ПартииТовара  = спрПарт.ТекущийЭлемент();
         Операция.Дебет.МестаХранения = МестоХранения;

         Операция.Кредит.Счет        = Сч60;
         Операция.Кредит.Контрагенты = Контрагент;
         Операция.Кредит.Основание   = Договор;
      КонецЕсли;
      Операция.Количество = Количество;
      Если Договор.Валютный=1 Тогда
         Если СчетУчета <> Сч004 Тогда
            Операция.Валюта   = Договор.Валюта;
            Операция.ВалСумма = УчетнаяСтоимость;     
         КонецЕсли;
         Курс = ПолучитьКурс(Договор.Валюта,ДатаДок);
         Операция.Сумма=УчетнаяСтоимость*Курс;
      Иначе
         Операция.Сумма = УчетнаяСтоимость;
      КонецЕсли;
      Если (АвтоКП=1) И (СчетУчета <> Сч004) Тогда
         ТаблицаПокупок.НоваяСтрока();
         ТаблицаПокупок.Товар = Товар;
         ТаблицаПокупок.Всего = Всего;
         ТаблицаПокупок.Сумма = Сумма;
         ТаблицаПокупок.НДС   = НДС;
         ТаблицаПокупок.СтавкаНДС = СтавкаНДС;
      КонецЕсли;
   КонецЦикла;


   Если СуммаНДС_18 <> 0 Тогда
      Операция.НоваяПроводка();
      Операция.СодержаниеПроводки = "Выделен НДС";
      Операция.НомерЖурнала = "ТВ";
      Операция.Дебет.Счет = Сч18;
      Операция.Дебет.Контрагенты = Контрагент;
      Операция.Кредит.Счет = Сч60;
      Операция.Кредит.Контрагенты = Контрагент;
      Операция.Кредит.Основание = Договор;
      Если Договор.Валютный=1 Тогда
          Операция.Валюта=Договор.Валюта;
         Операция.ВалСумма=СуммаНДС_18;     
         Курс = ПолучитьКурс(Договор.Валюта,ДатаДок);
         Операция.Сумма=СуммаНДС_18*Курс;
      Иначе
         Операция.Сумма = СуммаНДС_18;
      КонецЕсли;
   КонецЕсли;

   Если СуммаПоставки > 0 Тогда
      БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
      БухИт.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контрагент,2);
      БухИт.ИспользоватьСубконто(ВидыСубконто.Основание,Договор,2);
      БухИт.ВыполнитьЗапрос(,ТекущийДокумент(),Сч61);
      Аванс = БухИт.СКД();
      ЗачетАванса = Мин(СуммаПоставки, Аванс);
      Если ЗачетАванса > 0 Тогда
         Операция.НоваяПроводка();
         Операция.СодержаниеПроводки = "Зачтен аванс";
         Операция.НомерЖурнала = "ТВ";
         Операция.Дебет.Счет = Сч60;
         Операция.Дебет.Контрагенты = Контрагент;
         Операция.Дебет.Основание = Договор;
         Операция.Кредит.Счет = Сч61;
         Операция.Кредит.Контрагенты = Контрагент;
         Операция.Кредит.Основание = Договор;
         Если Договор.Валютный=1 Тогда
            Операция.Валюта=Договор.Валюта;
            Операция.ВалСумма=ЗачетАванса;
            Курс = ПолучитьКурс(Договор.Валюта,ДатаДок);
            Операция.Сумма=ЗачетАванса*Курс;
         Иначе
            Операция.Сумма = ЗачетАванса;
         КонецЕсли;
      КонецЕсли;
   КонецЕсли;
   Если АвтоКП=1 Тогда
       юДляЗаполненияАвтоКнигиПокупок(Контекст, ТаблицаПокупок);
   КонецЕсли;
   Операция.Записать();
КонецПроцедуры

//_____________________________________________________________________________

//Процедура ОбработкаУдаленияПроведения()
//   
//   тз  = СоздатьОбъект("ТаблицаЗначений");
//   сз  = СоздатьОбъект("СписокЗначений");   
//   спр = СоздатьОбъект("Справочник.ПартииТоваров");
//   
//   ВыбратьСтроки();
//   Пока ПолучитьСтроку() = 1 Цикл
//      сз.ДобавитьЗначение(Партия);
//   КонецЦикла;
//   
//   НайтиСсылки(сз,тз);
//   
//   тз.ВыбратьСтроки();
//   Пока тз.ПолучитьСтроку() = 1 Цикл
//      Если тз.ПолучитьЗначение(тз.НомерСтроки,2) = ТекущийДокумент() Тогда
//         тз.УдалитьСтроку();
//         тз.ВыбратьСтроки();
//      КонецЕсли;
//   КонецЦикла;
//   
//   Если тз.КоличествоСтрок() > 0 Тогда
//      ОткрытьФорму("Обработка.ВыводТаблицыСсылок",тз);
//      СтатусВозврата(0);
//      Возврат;
//   Иначе
//      ВыбратьСтроки();
//      Пока ПолучитьСтроку() = 1 Цикл
//         Партия = 0;
//      КонецЦикла;
//      
//      Для н = 1 По сз.РазмерСписка() Цикл
//         Если спр.НайтиЭлемент(сз.ПолучитьЗначение(н)) = 1 Тогда
//            спр.Удалить(1);
//         КонецЕсли;
//      КонецЦикла;
//   КонецЕсли;
//   
//КонецПроцедуры

//__________________

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск