В типовой конфигурации 1С:Управление торговлей (УТ) редакции 11.5 разработчиками не предусмотрена прямая связь создания документа Перемещение товаров на основании Реализации товаров и услуг. Это связано с разной бизнес-логикой документов: реализация фиксирует продажу внешнему контрагенту, а перемещение — внутреннее движение запасов между складами в рамках одной организации. Однако на практике часто возникают ситуации (например, при специфических схемах учета или работе с виртуальными складами), когда необходимо оперативно перенести список товаров из отгрузки в перемещение. Разберем подробно все доступные способы решения этой задачи: от самых простых до программных.
Начнем с самого доступного метода, который не требует программирования и внесения изменений в конфигурацию. В современных версиях платформы 1С:Предприятие 8.3 реализован мощный функционал работы с табличными частями. Если нам нужно разово или периодически переносить данные, проанализируем следующий алгоритм:
Реализация товаров и услуг) и перейдем на вкладку Товары.Перемещение товаров.Проанализируем этот процесс: система автоматически сопоставит колонки Номенклатура, Количество и Упаковка. Поскольку структуры табличных частей в этих документах во многом схожи, данные перенесутся корректно. Это идеальный вариант для пользователей, которым не требуется массовая автоматизация процесса.
Если задача стоит в автоматизации процесса (добавление кнопки "Создать на основании"), рассмотрим технический путь реализации через механизм расширений. Это позволит сохранить конфигурацию на поддержке и не затруднит будущие обновления. Нам потребуется вмешаться в логику модуля менеджера или объекта документа Перемещение товаров.
Разберем основные шаги реализации в расширении:
Перемещение товаров в расширение.ОбработкаЗаполнения для этого документа.ДанныеЗаполнения. Если это ДокументСсылка.РеализацияТоваровУслуг, запустим алгоритм переноса.Посмотрим на пример кода, который можно использовать в процедуре ОбработкаЗаполнения:
&После("ОбработкаЗаполнения")
Процедура Расш1_ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
// Заполняем основные реквизиты
ЭтотОбъект.Организация = ДанныеЗаполнения.Организация;
ЭтотОбъект.СкладОтправитель = ДанныеЗаполнения.Склад; // Склад из реализации будет отправителем
// Очищаем таблицу товаров перед заполнением
ЭтотОбъект.Товары.Очистить();
// Переносим строки
Для Каждого СтрокаИсточника Из ДанныеЗаполнения.Товары Цикл
НоваяСтрока = ЭтотОбъект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаИсточника);
// Если в перемещении используются статусы или специфические поля, заполняем их
НоваяСтрока.КоличествоУпаковок = СтрокаИсточника.КоличествоУпаковок;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Выясним важный нюанс: для того чтобы документ Перемещение товаров появился в подменю Создать на основании в форме реализации, необходимо также в расширении изменить состав команд документа-источника или добавить собственную команду, вызывающую открытие формы нового перемещения с параметром основания.
Часто потребность в перемещении на основании реализации возникает из-за необходимости продать товар от имени одной организации, в то время как фактически он числится за другой. Выясним причину: если мы пытаемся решить задачу "серого учета" через перемещения, то это может привести к путанице в остатках и взаиморасчетах. В УТ 11.5 для таких случаев предусмотрен штатный механизм Интеркомпани.
Рассмотрим, как это работает правильно с точки зрения методологии 1С:
Настройка и администрирование -> Настройка организаций -> Передачи между организациями настраивается схема, по которой Организация Б может продавать товары, принадлежащие Организации А.Реализацию товаров и услуг от Организации Б. Программа позволяет провести документ, фиксируя "отрицательный" остаток у Организации Б и резерв у Организации А.Оформление передач и выкупов. Система автоматически создает документы Передача товаров между организациями.Проанализируем ситуацию: этот способ полностью заменяет необходимость ручного создания перемещений. Документ Передача товаров выполняет роль перемещения, но при этом корректно отражает переход права собственности и формирует взаиморасчеты между юрлицами.
Если вы не хотите использовать расширения, можно применить механизм Дополнительных отчетов и обработок. Выясним преимущества этого метода: он не влияет на структуру базы данных и подключается в пользовательском режиме.
Создадим внешнюю обработку с типом ЗаполнениеОбъекта для документа Перемещение товаров. В модуле объекта обработки пропишем логику выбора реализации и заполнения табличной части. После регистрации такой обработки в системе, в документе Перемещение товаров в меню Заполнить появится пункт, позволяющий выбрать реализацию-основание и перенести из нее данные. Это наиболее безопасный способ для баз, находящихся на строгом аудите или облачном хостинге.
При выборе метода решения задачи "Перемещение на основании реализации", проанализируем итоговую цель:
ОбработкаЗаполнения.Помните, что Перемещение товаров всегда требует указания двух складов (Отправитель и Получатель), в то время как в Реализации указан только один. При автоматизации через код обязательно предусмотрите логику подстановки второго склада, иначе документ останется недозаполненным.