Modber Сообщество
профессионалов по 1С

Автоматическое создание перемешения между организациями



Платформы: 1С:Предприятие 8.2
Конфигурации: 1С:Управление торговлей
Версия: 11
2013-04-08
3542 

 

Часто когда в базе ведется несколько организаций, от одной приходит товар, а другая его продает. При этом у нужно делать руками перемещение между организациями. Вот решения этой задачи.

1. В реализацию добавляем атрибут "ОрганизацияСКоторойБерем" с типов "Справочник.Организации".

2. Создаем новую подпуску на событие "Проведении реализации", со следующим кодом:

 

 

Процедура СоздатьДокументПеремещениеПриПроведенииОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
 УстановитьПривилегированныйРежим(Истина);
 ОрганизацияИсточник = Источник.ОрганизацияСКоторойБерем;
 
 Если ОрганизацияИсточник <> Справочники.Организации.ПустаяСсылка() Тогда
 Запрос = Новый Запрос;
 Запрос.Текст = "ВЫБРАТЬ
          | ПередачаТоваровМеждуОрганизациями.Ссылка
          |ИЗ
          | Документ.ПередачаТоваровМеждуОрганизациями КАК ПередачаТоваровМеждуОрганизациями
          |ГДЕ
          | ПередачаТоваровМеждуОрганизациями.ДокументОснование = &ДокументОснование";
 Запрос.УстановитьПараметр("ДокументОснование", Источник.Ссылка);
 Выборка = Запрос.Выполнить().Выбрать();
 Если Выборка.Следующий() Тогда
  ДокПеремещение = Выборка.Ссылка.ПолучитьОбъект();
 Иначе
  ДокПеремещение = Документы.ПередачаТоваровМеждуОрганизациями.СоздатьДокумент();
 КонецЕсли;
 ДокПеремещение.ДокументОснование = Источник.Ссылка;
 ЗаполнитьЗначенияСвойств(ДокПеремещение, Источник);
 ДокПеремещение.Дата = Источник.Дата — 1;
 ДокПеремещение.Организация = ОрганизацияИсточник;
 ДокПеремещение.ОрганизацияПолучатель = Источник.Организация;
 ДокПеремещение.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияТоваровВДругуюОрганизацию;
 ДокПеремещение.УстановитьНовыйНомер();
 
 ДокПеремещение.Товары.Очистить();
 Для Каждого ТекСтрока Из Источник.Товары Цикл
  НоваяСтрока = ДокПеремещение.Товары.Добавить();
  ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрока);
 КонецЦикла; 
 
 Попытка   
  ДокПеремещение.Записать(РежимЗаписиДокумента.Запись);
  Попытка          
   ДокПеремещение.Записать(РежимЗаписиДокумента.Проведение);      
  Исключение
   Сообщить(ОписаниеОшибки());
  КонецПопытки;
 Исключение
  Сообщить(ОписаниеОшибки());
 КонецПопытки;
 УстановитьПривилегированныйРежим(Ложь);
 КонецЕсли                                 
КонецПроцедуры

 

Естественно все применимо не только к реализация, но и везде где есть такая необходимость.


 




В центре внимания

Комментарии (0)