Как в 1С:Управление торговлей 11.5 создать перемещение товаров на основании реализации

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В типовой конфигурации 1С:Управление торговлей (УТ) редакции 11.5 разработчиками не предусмотрена прямая связь создания документа Перемещение товаров на основании Реализации товаров и услуг. Это связано с разной бизнес-логикой документов: реализация фиксирует продажу внешнему контрагенту, а перемещение — внутреннее движение запасов между складами в рамках одной организации. Однако на практике часто возникают ситуации (например, при специфических схемах учета или работе с виртуальными складами), когда необходимо оперативно перенести список товаров из отгрузки в перемещение. Разберем подробно все доступные способы решения этой задачи: от самых простых до программных.

Способ 1: Использование штатного механизма копирования строк (Copy-Paste)

Начнем с самого доступного метода, который не требует программирования и внесения изменений в конфигурацию. В современных версиях платформы 1С:Предприятие 8.3 реализован мощный функционал работы с табличными частями. Если нам нужно разово или периодически переносить данные, проанализируем следующий алгоритм:

  1. Откроем документ-источник (Реализация товаров и услуг) и перейдем на вкладку Товары.
  2. Выделим все строки в табличной части (используем комбинацию клавиш Ctrl + A) или выберем конкретные позиции, удерживая Ctrl.
  3. Нажмем кнопку Копировать строки (пиктограмма с двумя листами) в командной панели таблицы или воспользуемся контекстным меню.
  4. Создадим новый документ Перемещение товаров.
  5. В новом документе на вкладке Товары нажмем кнопку Вставить строки (пиктограмма вставки).

Проанализируем этот процесс: система автоматически сопоставит колонки Номенклатура, Количество и Упаковка. Поскольку структуры табличных частей в этих документах во многом схожи, данные перенесутся корректно. Это идеальный вариант для пользователей, которым не требуется массовая автоматизация процесса.

Способ 2: Программная реализация через расширение конфигурации

Если задача стоит в автоматизации процесса (добавление кнопки "Создать на основании"), рассмотрим технический путь реализации через механизм расширений. Это позволит сохранить конфигурацию на поддержке и не затруднит будущие обновления. Нам потребуется вмешаться в логику модуля менеджера или объекта документа Перемещение товаров.

Разберем основные шаги реализации в расширении:

  1. Добавим документ Перемещение товаров в расширение.
  2. Создадим в расширении обработчик события ОбработкаЗаполнения для этого документа.
  3. В коде пропишем проверку типа параметра ДанныеЗаполнения. Если это ДокументСсылка.РеализацияТоваровУслуг, запустим алгоритм переноса.

Посмотрим на пример кода, который можно использовать в процедуре ОбработкаЗаполнения:


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

Выясним важный нюанс: для того чтобы документ Перемещение товаров появился в подменю Создать на основании в форме реализации, необходимо также в расширении изменить состав команд документа-источника или добавить собственную команду, вызывающую открытие формы нового перемещения с параметром основания.

Способ 3: Использование механизма «Интеркомпани»

Часто потребность в перемещении на основании реализации возникает из-за необходимости продать товар от имени одной организации, в то время как фактически он числится за другой. Выясним причину: если мы пытаемся решить задачу "серого учета" через перемещения, то это может привести к путанице в остатках и взаиморасчетах. В УТ 11.5 для таких случаев предусмотрен штатный механизм Интеркомпани.

Рассмотрим, как это работает правильно с точки зрения методологии 1С:

Проанализируем ситуацию: этот способ полностью заменяет необходимость ручного создания перемещений. Документ Передача товаров выполняет роль перемещения, но при этом корректно отражает переход права собственности и формирует взаиморасчеты между юрлицами.

Способ 4: Внешняя обработка заполнения

Если вы не хотите использовать расширения, можно применить механизм Дополнительных отчетов и обработок. Выясним преимущества этого метода: он не влияет на структуру базы данных и подключается в пользовательском режиме.

Создадим внешнюю обработку с типом ЗаполнениеОбъекта для документа Перемещение товаров. В модуле объекта обработки пропишем логику выбора реализации и заполнения табличной части. После регистрации такой обработки в системе, в документе Перемещение товаров в меню Заполнить появится пункт, позволяющий выбрать реализацию-основание и перенести из нее данные. Это наиболее безопасный способ для баз, находящихся на строгом аудите или облачном хостинге.

Резюме и практические советы

При выборе метода решения задачи "Перемещение на основании реализации", проанализируем итоговую цель:

  1. Если нужно быстро перенести 50 позиций один раз в неделю — используйте Copy-Paste (Ctrl+C / Ctrl+V).
  2. Если это регулярная операция для связи складов внутри одного юрлица — напишите небольшое расширение с переопределением ОбработкаЗаполнения.
  3. Если вы ведете учет по нескольким организациям и одна продает товар другой — обязательно настройте Интеркомпани. Это избавит вас от рутины и ошибок в себестоимости.
  4. При работе с "виртуальными складами" для коррекции остатков, создайте дополнительный реквизит в складах, чтобы программно определять, с какого "реального" склада на какой "виртуальный" должно идти перемещение при заполнении на основании реализации.

Помните, что Перемещение товаров всегда требует указания двух складов (Отправитель и Получатель), в то время как в Реализации указан только один. При автоматизации через код обязательно предусмотрите логику подстановки второго склада, иначе документ останется недозаполненным.

← На главную