Простой способ обнуления Регистров накопления в типовых конфигурациях на управляемых формах. УНФ, УТ 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 не будет опубликован. Обязательные поля помечены *