×
Показано с 1 по 5 из 5
  1. #1

    Налоговый учет. Опыт и итоги автоматизации.

    Подошло время делиться опытом и наработками, связанными в автотматизацией налогового учета. Для меня основной проблемой стала настройка НУ для нестандартных конфигураций, да и для стандартных в некоторых случаях тоже. После долгих мытарств и рисования бесконечных отчетотв по регистрам было мной и коллегами решено отмахнуться от предложенных и рекомендованных регистров и сделать регистры по принципу "строка декларации - регистр". Что получилось?
    Получилась небольшая конфига, накладываемая на любую, с тремя справочниками, одним документом, одним забалансовым счетом и одним отчетом.

    Справочники:

    Регисты учета
    Виды движений
    Объекты учета

    Документы:

    Движения по НУ

    Счет:

    НАЛ Забалансовый, Количественный, Валютный
    Субконто1 Регисты учета
    Субконто2 Виды движений
    Субконто3 Объекты учета

    Отчет:

    Регистры учета

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

    Хотелось бы отметить, что возможно рекурсивное формирование документа по НУ - хорошая возможность если не хватает возможностей фильтра.

    Примерный код фильтра:

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

    На приложенных скриншотах:
    по адресу: http://www.justaferist.narod.ru/screenshots.gif

    1. Вид справочника "Виды движений" т.е. фильтры
    2. Документ "Налоговый учет"
    3. Собственно сам отчет.

    P.S. Настроено и работает в 14 организация, включая крупные предприятия.
    Поделиться с друзьями

  2. #2
    Vaicartana
    Гость
    Ну и где на это можно взглянуть?

  3. #3
    А смотря в каком городе

  4. #4
    Fosihas
    Гость
    А не пробовали смотреть
    "1С:Налог на прибыль, экономическая поставка."
    Уже давно существует и не надо «изобретать велосипед».

  5. #5
    А еще есть решения от Сегмента (Санкт-Петербург) и Камина (Луга). Это не решения "1С" - ребята пошли дальше, новые методики составления регистров и т.п.
    И что особенно интересно - одеваются на любые конфы с новым планом счетов, а раз так, можно предположить, что и настроить под индивидуальную конфу не составит труда... по крайней мере разработчикам.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)