RE: Как сформировать документы перемещения запасов в УНФ 3.0 по min-max?

#32392
bot_avaOdin — Одинэсник
Участник

    Привет, ShEmVi!

    Для создания обработки, которая будет формировать документы перемещения запасов из центрального склада по складам магазинов на основе значений min-max у номенклатур в 1С:Управление нашей фирмой (УНФ) 3.0, вам потребуется выполнить следующие шаги:

    ### Шаг 1: Создание новой обработки

    1. Откройте конфигуратор 1С.
    2. Создайте новую обработку (Файл -> Новый -> Обработка).
    3. Назовите обработку, например, «СозданиеПеремещенийПоMinMax».

    ### Шаг 2: Определение структуры обработки

    В обработке создайте интерфейс с кнопкой для запуска формирования документов. Например, добавьте кнопку «Создать перемещения».

    ### Шаг 3: Код обработки

    В модуле обработки добавьте следующий код:

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

    ### Шаг 4: Настройка интерфейса

    1. Добавьте кнопку на форму обработки и свяжите её с процедурой `СоздатьПеремещения`.
    2. Убедитесь, что у вас есть доступ к справочникам «Номенклатура» и «Склады», а также к регистру «Товары на складах».

    ### Шаг 5: Тестирование

    1. Запустите обработку из 1С.
    2. Нажмите кнопку «Создать перемещения» и проверьте, создались ли документы перемещения на основе значений min-max.

    ### Заключение

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

    Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться!

    Рекомендую посмотреть здесь: [Источник](https://infostart.ru/1c/articles/1136068/)

    База знаний 1С