Закрытие остатков по регистрам накопления

24.10.18

Разработка - Механизмы платформы 1С

Гибкий способ закрытия остатков по регистрам накопления. ДЛЯ ПРОГРАММИСТОВ, НЕ ДЛЯ БУХГАЛТЕРОВ.

Как относительно быстро закрыть остатки по регистрам накопления. Разработано для конфигурации "Управление производственным предприятием", но частично доработав можно использовать с другими конфигурациями.

Делается на основе Инструменты разработчика (ИР). Тестировалось на версии 4.57

Задачу закрытия остатков можно разделить на два этапа - получение данных, занесение этих данных в документ. Все это можно сделать в Консоли запросов. Получение данных через запрос (со всеми имеющимися возможностями запросов), а результат запроса заносится в документ на вкладке "Обработка результата".

 

 

Код занесения данных 

//код адаптирован под конфигурацию "Управление производственным предприятием"

//исходные данные для заполнения
ДатаДокумента = ТекущаяДата();
ИмяРегистраНакопления = "ДенежныеСредства";

//Вариант 1. Создание нового документа.
ДокДвижения = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
ДокДвижения.Дата = ДатаДокумента;
ДокДвижения.УстановитьНовыйНомер();
//Вариант 2. Вставка в существующий документ. (Через кнопку Вставка/Ссылка на объект БД)
//ДокДвижения = Параметры.КорректировкаЗаписейРегистров03400000717От22_10_201816_12_02.ПолучитьОбъект();

РегистрМетаданные = Метаданные.РегистрыНакопления[ИмяРегистраНакопления];//этой строкой можем поймать ошибки

//заполняем данные, чтобы движения были видны в документе
СтрокаТЧ = ДокДвижения.ТаблицаРегистровНакопления.Добавить();
СтрокаТЧ.Имя = РегистрМетаданные.Имя;
СтрокаТЧ.Представление = РегистрМетаданные.Синоним;

ВыборкаЗапроса = мРезультатЗапроса.Выбрать();
Пока ВыборкаЗапроса.Следующий() Цикл
	//добавление построчно, т.к. таким образом не затираем уже имеющиеся данные в документе
	
	НовСтр =ДокДвижения.Движения[ИмяРегистраНакопления].Добавить();
	ЗаполнитьЗначенияСвойств(НовСтр, ВыборкаЗапроса);
	
	НовСтр.ВидДвижения = ВидДвиженияНакопления.Расход;	//либо в запросе ставить минус перед значением
	
	//НовСтр.Период = НовДок.Дата;	//в УПП период в регистры накопления устанавливается при записи документа
КонецЦикла;

//полученный (или дополненный) документ можно сразу записать, 
//а в текущей реализации документ НЕ ЗАПИСЫВАЕТСЯ СРАЗУ в базу данных
//ДокДвижения.Записать();
ОткрытьЗначение(ДокДвижения);

 

Грабли, примечания и дополнения.

Не просто так в кратком описании написано ДЛЯ ПРОГРАММИСТОВ, НЕ ДЛЯ БУХГАЛТЕРОВ. Гибкость и относительная простота требует понимания выполняемых действий и некоторую работу по доработке кода при применении.

1. И это весьма существенно, в коде необходимо прописывать значение ИмяРегистраНакопления.

2. В запросе необходимо выводить все поля регистра (это для начинающих программистов, иначе можете не закрыть именно эти остатки).

3. Если остатки выбираются из Таблицы остатков регистра накопления, то полям Ресурсов необходимо  дать синоним в соответствии с именами в конфигураторе (их легко посмотреть в конструкторе запроса).

3.1. Если вдруг необходимо сделать движения на основе Таблицы оборотов регистра накопления, то надо опредяться какие данные ресурсов нужны, и которым необходимо присвоить корректный синоним.

4. Можно заносить данные в документ порциями - первый раз в новый документ, затем в уже существующий. Но при этом условия в запросе надо будет менять, код занесения данных для довнесения данных в документ также изменить, а документ записывать после каждого занесения данных. Либо наоборот, в документ внести избыточные данные, а затем удалить из документа лишние строки.

5. Код внесения данных в документ заточен на конфигурацию Управление производственным предприятием. То есть - данные будут заноситься в документ "Корректировка записей регистров", который имеет следующие особенности:
- чтобы данные в документе были видны пользователю необходимо занести информацию о изменяемом регистре в табличную часть ТаблицаРегистровНакопления;
- данные сразу записываются в движения документа;
- частично данные обрабатываются самим документом при записи (в частности устанавливается период).

Для иных конфигураций требуется адаптировать код под эту конфигурацию.

6. Кстати, убедитесь, что документ, куда заносятся данные, является регистратором данного движения. :)

7. Возможно, в некоторых конфигурациях, при занесении данных в документ, надо будет часть данных прописывать в коде (например период) либо наоборот, в тексте запроса убрать некоторые поля (например регистратор).

8. Возможно, некоторые бухгалтеры потребуют, чтобы в документе был вид движения - приход. В этом случае в тексте запроса перед полями ресурсов надо будет поставить знак "минус".

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

закрытие остатки регистры накопления

См. также

Сервисы интеграции без Шины и интеграции

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    2525    dsdred    16    

57

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    5791    dsdred    53    

82

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    5783    YA_418728146    25    

67

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6911    dsdred    36    

113

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    18990    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12657    human_new    27    

76

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    9324    YA_418728146    6    

143

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    6504    sebekerga    54    

95
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kosmo0 108 31.10.18 10:00 Сейчас в теме
:) Прям какая-то мистика творится. Первоначально ИР были без ссылки. Попросили сделать ссылку. Сделал. В итоге ссылка не та которую прописывал.

А в целом ИР хороши для разовых проблем. Тех, которые возникают внезапно и больше не проявляются. Плюс можно данные перетаскивать из инструмента в инструмент. Например из консоли запроса в консоль кода, там данные изменил и тут же посмотрел таблицу значений (в плане что там получилось после изменения).
2. kosmo0 108 04.09.19 15:07 Сейчас в теме
Для регистров бухгалтерии ЗаполнитьЗначенияСвойств(НовСтр, ВыборкаЗапроса); не пройдет для субконто.

либо прописывать каждое субконто подобно

НовСтр.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = ВыборкаЗапроса.СубконтоКт1


либо (по Дт и по Кт)

Для Каждого текСуб Из НовСтр.СчетКт.ВидыСубконто Цикл
    НовСтр.СубконтоКт[текСуб.ВидСубконто]=ВыборкаЗапроса["СубконтоКт"+текСуб.НомерСтроки];
КонецЦикла;
3. tormozit 7140 08.08.22 23:32 Сейчас в теме
В ИР 6.38 добавлен инструмент "Редактор остатков". Он в частности позволяет просто "закрывать" остатки регистра.
Прикрепленные файлы:
Оставьте свое сообщение