Коэффициенты переоценки ОС 2023г. в формате DBF для загрузки в 1С - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

Коэффициенты переоценки ОС 2023г. в формате DBF для загрузки в 1С


Коэффициенты изменения стоимости видов (групп) основных средств по состоянию на январь 2023 г. для Республики Беларусь. Указанные  коэффициенты  применяются  организациями  при  проведении переоценки  основных  средств, не завершенных строительством  объектов и  неустановленного  оборудования, а  также при расчетах арендной  платы  и  проведении приватизации. Перед загрузкой коэффициентов - следует сделать копию базы данных (инструкция).

Предназначены для конфигурации с авторскими доработками:
  • 1С 8.3 (Бухгалтерия 2.1, 1.6)
  • 1С 7.7 (Бухгалтерия, настройка СХ)


1) Копируем файл в папку ExtForms Вашей базы данных 1С.
2) Открываем Справочник Коэфициенты Переоценки ОС.
3) Меняем дату значений периодических реквизитов
или Рабочую дату (Меню-Сервис-Параметры-вкладка Общие) на 31.12.2022.
4) Нажимаем кнопку загрузить и проверяем.
Пример кода загрузки в 1С 7.7 (авторская):
Процедура Загрузить1С77(Парам)

   ТЗудалитьНеиспШифр=СоздатьОбъект("ТаблицаЗначений");
   ТЗудалитьНеиспШифр.НоваяКолонка("Шифр");

   ДатаДок = ТекИспользоватьДату;
   ГодПереоценки = ДатаГод(ДатаДок);

   ТекстВопроса = "Загрузить значения коэффициентов за "+ГодПереоценки+" год?";

   ДатаСтарыхОС =  ДатаДок;
   Путь = КаталогИБ()+"ExtForms\KOS "+СокрЛП(ГодПереоценки)+".dbf";

   Если ФС.СуществуетФайл(Путь) = 0 Тогда
       Сообщить("Загрузка НЕ выполнена: не найден файл коэффициентов: " +СокрЛП(Путь));
   КонецЕсли;

   Если СокрЛП(Парам)<>"АвтоЗагрузкаКоэф" Тогда
       Если Вопрос(ТекстВопроса,"Да+Нет")="Нет" Тогда
           Возврат;
       КонецЕсли;
   КонецЕсли;

   Шифры=СоздатьОбъект("Справочник.КлассификаторЕН");
   Спр.ИспользоватьДату(ДатаДок);

   База=СоздатьОбъект("XBase");
   База.ОткрытьФайл(Путь);
   Если База.КодОшибки() <> 0 Тогда
       Сообщить("Ошибка открытия файла "+Путь,"!");
       Возврат;
   КонецЕсли;

   База.Первая();
   Пока База.ВКонце()=0 Цикл

       ШифрСтарт = Число(База.ПолучитьЗначениеПоля(3));
       ШифрФиниш = Число(База.ПолучитьЗначениеПоля(4));

       Для Наа=ШифрСтарт По ШифрФиниш Цикл

           Шифр = Формат(Наа,"С5");

           Если Спр.НайтиПоКоду(Шифр) = 0 Тогда
               Спр.Новый();
               Спр.Код = Шифр;
               Спр.Записать();
           КонецЕсли;

           Если ПустоеЗначение(Спр.Наименование) = 1 Тогда // наименование
               Если Шифры.НайтиПоКоду(Шифр) = 1 Тогда
                   Спр.Наименование = Шифры.Наименование;
                   Спр.Записать();
               КонецЕсли;
           КонецЕсли;

           Коэф0 = Число(СтрЗаменить(База.ПолучитьЗначениеПоля(6)+1,",","."));
           Если Коэф0=0 Тогда // формат 1С 8.3
               Коэф0=1;
           КонецЕсли;

           Спр.Коэф0 = Коэф0;

           Для а=1 По 12 Цикл
               Спр.УстановитьАтрибут("Коэф"+Формат(А,"Ч(0)2"),СтрЗаменить(База.ПолучитьЗначениеПоля(А+6),",","."));
           КонецЦикла;
           Спр.Записать();
           Состояние("загружаю шифр..."+СокрЛП(Наа)+" "+СокрЛП(Спр.Наименование));

           ТЗудалитьНеиспШифр.НоваяСтрока();
           ТЗудалитьНеиспШифр.Шифр = Шифр;

       КонецЦикла;

       Если База.Следующая()=0 Тогда
           Прервать;
       КонецЕсли;

   КонецЦикла;

   //Спр.ВыбратьЭлементы();
   //Пока Спр.ПолучитьЭлемент() = 1 Цикл
   //    СтрокаТ = 0;
   //    Если ТЗудалитьНеиспШифр.НайтиЗначение(Спр.Код,СтрокаТ,"Шифр")=0 Тогда
   //        Сообщить("удален неиспользуемый элемент "+Спр.ТекущийЭлемент());
   //        Спр.Удалить(1);
   //    КонецЕсли;
   //КонецЦикла;

   Предупреждение("Загрузка завершена");

КонецПроцедуры
Пример кода загрузки в 1С 8.3:
Процедура ЗаписатьKOC(ТекстРезультатаЗапроса, ДеревоГруппОбъект, ДатаПереоценки)

   ДвоичныеДанные = ПолучитьДвоичныеДанныеИзHEXСтроки(ТекстРезультатаЗапроса);

   Файл = Новый XBase;

   ВременныйКатолог = КаталогВременныхФайлов();
   ВременноеИмяФайла = Лев(Строка(Новый УникальныйИдентификатор), 8);
   ИмяВременногоФайла = ВременныйКатолог + ВременноеИмяФайла + ".DBF";
   ДвоичныеДанные.Записать(ИмяВременногоФайла);

   Попытка
       Файл.ОткрытьФайл(ИмяВременногоФайла,,Ложь);
   Исключение
       ШаблонСообщения = НСтр("ru = 'Ошибка при открытии файла коэффициентов переоценки.'");
       ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения,);
       ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
       Возврат;
   КонецПопытки;

   Если НЕ Файл.Открыта() Тогда
       ОбщегоНазначенияБПКлиентСервер.СообщитьОбОшибке("Невозможно открыть файл ", Истина);
       Возврат;
   КонецЕсли;
   Файл.Индексы.Добавить("IND1","LTRIM(TRIM(N1))+LTRIM(TRIM(N0))",Ложь);
   Файл.СоздатьИндексныйФайл(КаталогВременныхФайлов() + "\ind.cdx");
   Файл.ТекущийИндекс=Файл.индексы.Найти("IND1");
   Файл.Переиндексировать();

   Для НомСтроки=0 По ДеревоГруппОбъект.Строки.Количество()-1 Цикл
       ТекСтрока = ДеревоГруппОбъект.Строки.Получить(НомСтроки);
       Если ТекСтрока.Пометка=Неопределено Тогда
           Продолжить;
       КонецЕсли;
       Если ТекСтрока.Пометка>0 Тогда
           Для Каждого Стр Из ТекСтрока.Строки Цикл
               Если Стр.Пометка=Ложь Тогда
                   Продолжить;
               КонецЕсли;

               НашаГруппа = ТекСтрока.Группа;
               НашаПодГруппа = Стр.ПодГруппа;
               КодПоСправочнику = СокрЛП(НашаГруппа)+"_"+СокрЛП(НашаПодгруппа);
                СсылкаСпр = Справочники.ГруппыОсновныхСредств.НайтиПоНаименованию(КодПоСправочнику);
               Если НЕ СсылкаСпр.Пустая() Тогда
                   Файл.Первая();
                   НаборЗаписей = РегистрыСведений.КоэффициентыПереоценкиОС.СоздатьНаборЗаписей();
                   Если Файл.Найти(СокрЛП(НашаГруппа)+СокрЛП(НашаПодгруппа),"=") Тогда
                       НаборЗаписей.Отбор.Сбросить();
                       НаборЗаписей.Отбор.ГруппаПереоценки.Использование = Истина;
                       НаборЗаписей.Отбор.Период.Использование = Истина;
                       НаборЗаписей.Отбор.ГруппаПереоценки.Значение = СсылкаСпр;
                       НаборЗаписей.Отбор.Период.Значение = началоГода(ДатаПереоценки);
                       Пока не Файл.ВКонце() И (СокрЛП(Файл.N1) = НашаГруппа И СокрЛП(Файл.N0)= нашаПодГруппа) Цикл
                           НоваяЗапись = НаборЗаписей.Добавить();
                           НоваяЗапись.Период = началоГода(ДатаПереоценки);
                           НоваяЗапись.ГруппаПереоценки = СсылкаСпр;
                           НоваяЗапись.ПериодВвода = Число(Файл.Year);
                           НоваяЗапись.Коэф13          = Файл.N1;
                           НоваяЗапись.Коэф1             = Файл.N3;
                           НоваяЗапись.Коэф2             = Файл.N4;
                           НоваяЗапись.Коэф3             = Файл.N5;
                           НоваяЗапись.Коэф4             = Файл.N6;
                           НоваяЗапись.Коэф5             = Файл.N7;
                           НоваяЗапись.Коэф6             = Файл.N8;
                           НоваяЗапись.Коэф7             = Файл.N9;
                           НоваяЗапись.Коэф8             = Файл.N10;
                           НоваяЗапись.Коэф9             = Файл.N11;
                           НоваяЗапись.Коэф10          = Файл.N12;
                           НоваяЗапись.Коэф11          = Файл.N13;
                           НоваяЗапись.Коэф12          = Файл.N14;
                           Файл.Следующая();
                       КонецЦикла;
                       НаборЗаписей.Записать();
                   КонецЕсли;
               КонецЕсли;
           КонецЦикла;

       КонецЕсли;
   КонецЦикла;

   Файл = Новый Файл(ИмяВременногоФайла);
   Если Файл.Существует() Тогда
       УдалитьФайлы(ИмяВременногоФайла);
   КонецЕсли;
КонецПроцедуры
Если Вы хотите заказать услугу «Автоматическая загрузка (заполнение) справочников 1С» (код 1.4). Пожалуйста, ознакомьтесь с прайс-листом и оформите заявку через контактную форму.
1
Комментарий
Vladimir
28 янв 2023
С чем связана замена
"НоваяЗапись.Коэф13 = Файл.N2;" в "оригинале" на "НоваяЗапись.Коэф13 = Файл.N1;"?
____________________
Copyright©, «Программист 1С в г.Минске», 12.01.2023
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Назад к содержимому