Коэффициенты переоценки ОС 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);
// КонецЕсли;
//КонецЦикла;
Предупреждение("Загрузка завершена");
КонецПроцедуры
ТЗудалитьНеиспШифр=СоздатьОбъект("ТаблицаЗначений");
ТЗудалитьНеиспШифр.НоваяКолонка("Шифр");
ДатаДок = ТекИспользоватьДату;
ГодПереоценки = ДатаГод(ДатаДок);
ТекстВопроса = "Загрузить значения коэффициентов за "+ГодПереоценки+" год?";
ДатаСтарыхОС = ДатаДок;
Путь = КаталогИБ()+"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;
Файл.Следующая();
КонецЦикла;
НаборЗаписей.Записать();
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Файл = Новый Файл(ИмяВременногоФайла);
Если Файл.Существует() Тогда
УдалитьФайлы(ИмяВременногоФайла);
КонецЕсли;
КонецПроцедуры
ДвоичныеДанные = ПолучитьДвоичныеДанныеИз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;"?
"НоваяЗапись.Коэф13 = Файл.N2;" в "оригинале" на "НоваяЗапись.Коэф13 = Файл.N1;"?
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник