gifts2017

Продолжение стаьи о том как облегчить перевод основных средств в бюджетных учреждениях с внебюджета на бюджет

Опубликовал Денис Денисовский (апостол) в раздел Программирование - Практика программирования

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

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

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

Приступим к практической части реализации проекта.

Открываем конфигуратор.

Находим  ветку «Обработки»  ,и создаем новую «ИзменениеРеквизитов».

В форме «Диалог» создадим следующие реквизиты:

  • Реквизит выбор фирмы
  •  Выбор счета
  • Выбор кбк

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

Реквизит «Выбор фирмы» нужен для выбора балансодержателя, так как в одной базе может вестись учет нескольких предприятий

Реквизит «Дата Изменения» это дата списания ОС, так как перед этим было произведено списание ОС конкретным документом. Так вот на дату этого документа в справочнике и ищем Ос, которые нужно изменить.

После выше описанных действий,  откроем закладку «Модуль», и напишем следующий код:

Процедура ПриВыбореСчета()
Если ВыбЕПСБУ= СчетПоКоду("101.07.2.3") Тогда
СчетУчета = СчетПоКоду("101.07.1");
КБКУчета=ВыбКБК;
ИсточникПриобретения=Перечисление.КодВидаДеятельности.Бюджет;
СчетНачисленияАмортизации = СчетПоКоду("104.07.1");
СчетУчетаЗатрат = СчетПоКоду("401.01.1")
КонецЕсли;
Если ВыбЕПСБУ= СчетПоКоду("101.07.2.2") Тогда
СчетУчета = СчетПоКоду("101.07.1");
КБКУчета=ВыбКБК;
ИсточникПриобретения=Перечисление.КодВидаДеятельности.Бюджет;
СчетНачисленияАмортизации = СчетПоКоду("104.07.1");
СчетУчетаЗатрат = СчетПоКоду("401.01.1")
КонецЕсли;
КонецПроцедуры
//*******************************************
// Данная процедура выполняет перебор Справочника ОС по заданным условиям
// и в случаи выполнения услвий меняет реквизиты
Процедура Выполнить()
Если ИзменениеРеквизитов=1 Тогда
СпрОС=СоздатьОбъект("Справочник.ОсновныеСредства");
СпрОС.ИспользоватьВладельца(ВыбФирмы);
СпрОС.ВыбратьЭлементы();
н=0; // счетчик для подсчета общего количетсва элементов справочника
к=0; // счетчик для подсчета количества измененных элементов справочника
Сообщить("Начало обработки"+" "+ТекущаяДата()+" "+ ТекущееВремя());
Пока СпрОС.ПолучитьЭлемент()=1 Цикл
ТЭ=СпрОс.ТекущийЭлемент();
Если ТЭ.ЭтоГруппа()=0 Тогда
Если СпрОС.ДатаВыбытия.Получить(РабочаяДата())<>РабочаяДата() Тогда
Иначе
Если СпрОС.СчетУчета = ВыбЕПСБУ Тогда
ПриВыбореСчета();
к=к+1; 
КонецЕсли;
н=н+1;
СпрОС.Записать();
КонецЕсли;
КонецЕСли;
КонецЦикла;
Сообщить("Всего объектов"+" "+н);
Сообщить("Изменено объектов"+" "+к);
Сообщить("Окончание обработки"+" "+ТекущаяДата()+" "+ ТекущееВремя());
Сообщить("Замена реквизитов завершена");
КонецЕсли;
КонецПроцедуры

 Ну, вот и все. Все необходимые изменения произведены. Сохраняем и работаем.

 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Дмитрий (zbug) 02.12.09 16:49
"Сохранить и работать" не получится.
Во-первых, автор, похоже, ничего не знает про "периодические реквизиты".
"СпрОС.ДатаВыбытия<>ВыбДата" просто не сработает.
Во-вторых, автор и не догадывается, что в других учреждениях может быть совершенно другой код КБК, чем "90307024219900001", а еще, знаете ли, может быть несколько разных кодов.
В-третьих, автор и не слышал, что может и не быть в плане счетов счета "101.07.2.2", например, а будет только "101.07.2" без дополнительных субсчетов.
В-четвертых, "СпрОС.КБКУчета.ДобавитьЗначение(Спр.ДляКодаСчета ("90307024219900001"));" тоже не будет работать, так как "ДобавитьЗначение" бывает только у "СпискаЗначений", у реквизита справочника будет "УстановитьЗначение", но и "УстановитьЗначение" пишется не так.
Ну так, еще мелочи. "СпрОс.Записать()" имеет смысл делать только для тех элементов, которые действительно были изменены.
2. Денис Денисовский (апостол) 03.12.09 03:52
(1) Опять же уважаемы, спешу заметить, что в организациях бюджетного учета, а именно образование счет 101.07.2.3 и в данном контексте рассматривал только этот вариант. далее при как ты говоришь СпрОС.КБКУчета.ДобавитьЗначение(Спр.ДляКодаСчета ("90307024219900001"));" тоже не будет работать. Почему то прекрасно работает. Еще код КБК в образовании на бюджете, котором ведется основной учет это "90307024219900001", то, что есть другие ни кто не спорит. Так что данная статья только частный случай, а остальное, если есть у других другие счета переделай, в чем проблема. И если ты не знаком с бюджетным учетом в образовании может, стоит подумать, прежде чем давать комментарии!!!!
P.S. а с датой выбития действительно проглядел, что это периодический реквизит
3. Денис Денисовский (апостол) 03.12.09 03:52
Вернее P.S. а с датой выбытия действительно проглядел, что это периодический реквизит
4. Денис Денисовский (апостол) 03.12.09 06:18
Уважаемый Zbug, учел твою критику. И полностью переделал код, добавил выбор значений счета, сметы, а так же даты списания. Как говориться век живи век учись
5. SpideRus (SpideRus) 03.12.09 06:37
А где файл внешней обработки?
6. Дмитрий (zbug) 03.12.09 10:17
Уважаемый автор, настоятельно рекомендую изучить возможности обработки SetAttrs.ert, распространяемой формой "1С" на дисках ИТС в составе комплекта универсальных обработок для любых конфигураций на платформе 7.7.
Эта обработка позволяет решать эту задачу (и не только эту). Извините, но с Вашими навыками программирования, Вы все равно лучше не напишете.
По поводу "в организациях бюджетного учета, а именно образование, счет 101.07.2.3" замечу, что наличие дополнительных, не предусмотренных ни одной инструкцией по бюджетному учету, субсчетов 2.2 и 2.3 - это не особенность отрасли образование, а особенность перехода с инструкции 70н на инструкцию 25н (если Вам это что-то говорит) именно в программе "1С". И те учреждения, кто работали в "1С" еще с 2005 года, имеют такие субсчета, а те, кто начали на "1С" в 2006 и позже - не имеют. Ваше же замечание говорит о Вашей не слишком большой практике работы в бюджете.
Далее, по поводу "ДобавитьЗначение". В редакторе текстов модулей в конфигураторе выделяем это слово, нажимаем правую кнопку мыши, в контекстном меню выбираем команду "Найти в Синтаксис-Помощнике" и читаем:
ДобавитьЗначение(<?>,);
Синтаксис:
ДобавитьЗначение(<Значение>,<Строка>)
Назначение:
Добавить значение в список.
Параметры:
<Значение> - значение, которое добавляется в список;
<Строка> - символьное представление значения (необязателен, по умолчанию - стандартное символьное представление объекта).
Замечание:
В список нельзя добавить значение неопределенного типа, т.е. когда
ТипЗначения(<Значение>)=0,
то никаких действий метод не выполняет.

Как видите, "ДобавитьЗначение" предусмотрено только для "СпискаЗначений".

Далее, Ваш новый вариант тоже не будет работать. Обратите внимание на свою процедуру "ПриВыбореСчета()". Скажите мне, пожалуйста, к чему относится, например, "СчетУчета = СчетПоКоду("101.07.1");"?
К текущему элементу справочника? Так откуда процедура о нем знает? Вы же не догадались передать в процедуру обрабатываемый элемент - ни через параметр процедуры, ни через переменную модуля.
Еще раз повторюсь, не позорьтесь. Есть прекрасная универсальная обработка.
Жолтокнижниг; +1 Ответить
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа