Простой способ обнуления Регистров накопления в типовых конфигурациях на управляемых формах. УНФ, УТ 11


Простой способ обнуления Регистров накопления в типовых конфигурациях на управляемых формах. УНФ, УТ 11 и в других.
Обратился заказчик с проблемой, много ошибок в учете, некоторые отчеты врут, разбираться не кому и некогда, просит начать учет по некоторым регистрам с нуля, с документа ввода остатков.
Создавать чистую пустую базу, значит потерять историю работы.
Делать свертку базы долго и муторно.
Исправлять ошибки задним числом, за уволившимися сотрудниками занятие не благодарное.
Было принято решение провести анализ регистров, и те по которым данные сильно не сходятся обнулить, и заново начать учет через ввод остатков.

1) Т.к. конфигурация у нас уже была снята с замка. Было принято решение доработать типовой документ КорректировкаРегистров, добавить в него команду заполнения табличной части остатками по регистру. Опытным путем было получено, что документ с количествов строк более 6000 длительно зависал при проведении. Поэтому большие регистры лучше разбивать на несколько документов, по 6000 строк,.ограничение в запросе.

Нужно в форму документа добавить команду, разместить кнопку (см. скрин шот №1) на форме и добавить в модуль эти две процедуры:

&НаСервере
Процедура Команда1НаСервере()
Для каждого ЭлементСписка Из Объект.ТаблицаРегистров Цикл
ИмяРегистра = ЭлементСписка.Имя;

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

&НаКлиенте
Процедура Команда1(Команда)
Команда1НаСервере();
КонецПроцедуры

2) Если конфигурация типовая, специально сделал, внешнюю обработку. См скрин-шот №2. 

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

P.S. Если обработка вам помогла, поблагодарите автора, поставив звездочку!

15 Comments

  1. Altair777

    Для этого не надо корежить типовой документ. Есть такой справочник «Дополнительные отчеты и обработки»

    Reply ↓
  2. IvanovAV

    (1) Есть еще чудные процедуры на БСП «СведенияОВнешнейОбработке(), ПолучитьТаблицуКоманд() , ДобавитьКоманду()», писать которые нет никакого желания, и разбираться во всех премудростях этих процедур (и версий БСП), когда проблему нужно решить быстро, особенно когда конфигурация уже без замка.

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

    Reply ↓
  3. Altair777

    (2)

    забыли и поехали решать следующие проблемы

    Вот именно! А Вы людям голову морочите, публикуете.

    Reply ↓
  4. IvanovAV

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

    А у клиента должен быть выбор, быстро и дешево, или по фен-шую долго, дорого. Реальному бизнесу глубоко побоку на все эти версии БСП, если бы они клиенту прибыль приносили, например дебиторку выбивали, или новых клиентов искали.

    Reply ↓
  5. Bassgood

    (0) Не могу не посоветовать Вам свою внешнюю обработку, которая может не только обнулять остатки регистров, но также и сторнировать обороты, заполнять документ корректировки произвольным образом через конструктор СКД, а также выполнять произвольный алгоритм на встроенном языке для обработки конечного результата заполнения документа.

    Корректировка регистров зачастую это не разовая потребность, попробуйте ее и ощутите разницу 🙂

    Вот: http://infostart.ru/public/377369/

    p.s. И это все без изменения типовой конфы, что может быть очень важно для небольших компаний (допустим для тех, кто использует УНФ)

    Reply ↓
  6. Bassgood

    (2) На самом деле с этим стоит разобраться лишь раз — далее все это делается по накатанной, тем более на ИС (и на ИТС вроде как тоже) уже давно имеются шаблоны для создания внешних отчетов и обработок.

    Reply ↓
  7. Altair777

    (4) А при чем тут БСП, в конце концов? Написать внешнюю печатную форму для документа, это довольно частая ситуация.

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

    Reply ↓
  8. IvanovAV

    (6) Разбирался с этими процедурами еще в 2011 году, потом заказов на эту тему не было. В 2017, уже правила игры изменили, тратить рабочее время впустую, для того чтобы через 2 года опять изучать, что и где в БСП в очередной раз поменяли нет желания. По личной статистике на программирование уходит 20-30 минут, а на подключение через новый механизм внешних форм еще 1 час.

    Reply ↓
  9. Bassgood

    (4) По мне так, вариантов решения проблемы может быть несколько, но бОльшая часть из них может быть ошибочными или не оптимальными, в этих случаях.

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

    Reply ↓
  10. Bassgood

    (8)

    а на подключение через новый механизм внешних форм еще 1 час.

    Вы явно что-то делаете не так 🙂

    Reply ↓
  11. IvanovAV

    (7) Про качество типовых: когда после автоматического обновления очередной объект или реквизит типовой конфигурации, переименуют. Например, кто из Вас помнит, справочник ЕдинициИзмерения в УдалитьЕдинициИзмерения, а на следующий день 50 входящих звонков от различных фирм: «Опять Ваша 1С (ваши внешние формы и отчеты) после обновления не работают, и что мы-клиенты в очередной раз вам платить должны за доработки, за которые уже платили!?». И какая разница внешние они или внутренние, если их постоянно допиливать нужно… Клиенту пофигу, когда с него деньги дерут, за услуги в которых он не нуждается!

    Раньше во времена 7.7 и УТ 10.3 никогда структуру типовой базы, просто так от балды не меняли, а теперь почти после каждого релиза в УТ 11, какой-то реквизит переименовывают в Удалить, и пошла круговерть, вместо реальной работы, дурнёй занимаемся, зато вся страна при деле, все в мыле… Только выхлопа от этой дурной работы нет!

    Reply ↓
  12. Altair777

    (11) Про качество типовых, я не так давно писал в комментах.

    http://forum.infostart.ru/forum86/topic174648/#message1818494

    Я вот читаю Ваши комментарии, как Вы заботитесь о клиентах 🙂 Наверное, даже написали свою собственную версию УТ-11?

    Reply ↓
  13. Bassgood

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

    Раньше во времена 7.7 и УТ 10.3

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

    Reply ↓
  14. IvanovAV

    (12) Мы написали свою собственную УТ 11, еще в двухтысячных годах, только на платформе 7.7, и каждую неделю дорабатываем. Возможно лет через 20, УТ 11 по функционалу догонет нашу программу, хотя очень сомневаюсь, т.к. они двигаются совсем в другую сторону, хотят угодить всем подряд и маленьким и крупным фирмам… Я частично раскрывал функционал нашей программы в других темах, есть в истории сообщений моего профиля. Только наша программа не тиражная, очень узко заточенная.

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

    Будет время все красиво оформить, и описать, буду постепенно выкладывать на инфостарт.

    Наши разработки, больше похожи на разработки СабСистема, Евгения Шекина, Eugeener, чем на разработки типовой 1С.

    Reply ↓
  15. IvanovAV

    (13) В этом с Вами полностью согласен. Только у клиента на руках договор ИТС, в рамках которого мы, как франч, обязаны обновлять и консультировать целый год, практически бесплатно. Когда конфигурация хотя бы чутка изменена договор ИТС уже не работает, идет расширенный договор на сопровождение, поэтому с такими клиентам проблем с оплатой меньше. Они понимают за что платят деньги. А клиентами с голым ИТС, я больше не занимаюсь, пусть стажеры «на кошках тернируются», это и была основная причина почему я ушел из франча (постоянный геморр с типовыми и за бесплатно), и теперь фрилансер, сам выбираю себе проекты по душе.

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *