Массовое формирование документов

26.02.24

Задачи пользователя - Адаптация типовых решений

Описание, как сделать массовое формирование документов в пределах нескольких месяцев.

Добрый день!

Хочу написать статью, в которой будет реализован код для формирования документов для аренды на долгий или короткий срок.

1. Надо создать регистр сведений для того, чтобы он хранил данные о том, сколько сделано повторов. Он должен быть связан с документом, через который создаем документы.

 

 

2. Надо сформировать движение, где высчитываются месяцы аренды. Если дни аренды меньше месяца, то нам нужен один документ, а не несколько. Поэтому нам нужно выяснить, сколько месяцев аренды у нас получается. Итак, мы выяснили, что у нас больше одного месяца, и для этого формируем движение в регистр, откуда будем считывать данные. Также, считывая данные и получая дату, мы создаем документы до тех пор, пока не закончатся месяцы аренды. Затем мы очищаем регистр, но это мы записываем в модуле объекта.

 

  

 

 МесяцНачала = Месяц(НачалоАренды);
    МесяцКонца = Месяц(КонецАренды);  
    ЛетМеждуДатами = Год(КонецАренды) - Год(НачалоАренды); 
    КолВоМесяцевАренды = ЛетМеждуДатами*12 - МесяцНачала + МесяцКонца;

    Если КолВоМесяцевАренды > 1 Тогда
        
        Движения.Расш1_ПериодПовторовДок.Записывать = Истина;
        Движение = Движения.Расш1_ПериодПовторовДок.Добавить();
        Движение.Дата = НачалоАренды;
        Движение.КолВоПовторов = 1;
        Движение.КолВоМесяцевАренды = КолВоМесяцевАренды; 


3. Создаем общий модуль серверный модуль вызов сервера

и записываем следующий код:

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

 

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

4. И чтобы у нас формировались документы в фоновом режиме, надо открыть модуль приложения и написать код, чтобы при запуске начинал работать наш модуль.

&Перед("ПриНачалеРаботыСистемы")
Процедура Расш1_ПриНачалеРаботыСистемы()
  Расш1_Повторы.АрендыМесяцыДат();   
  ПодключитьОбработчикОжидания("Проверка",5);
КонецПроцедуры

 

Спасибо за прочтение. Надеюсь, вам этот механизм поможет!

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4724    10    5    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    3146    4    0    

20

Каждому менеджеру нужен свой Excel

Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    3683    dimanich70    10    

14

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1819    dimanich70    8    

14

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Доработка типового отчета "Связанные документы" позволяет просто и быстро расширять состав объектов для построения структуры подчиненности документов, используя объекты основной конфигурации и любых расширений.

1 стартмани

27.10.2023    2140    19    avmartynov    14    

44
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Chipchilinka 26.02.24 09:22 Сейчас в теме
2. timeforlive 15 01.03.24 14:50 Сейчас в теме
Это при условии, что аренда заключается строго на 1 месяц (или меньше)?
Оставьте свое сообщение