Перенос периодических реквизитов справочника 1С:Предприятие 7.7

  • proGroup
  • 5284
  • 0 Комментариев
  • периодический реквизит, 1С7.7, справочник

Для знающего 1С:Предприятие 7.7 человека не секрет, что справочник является списком возможных значений того или иного реквизита. Справочники используются в тех случаях, когда необходимо исключить неоднозначный ввод информации. Например, для того, чтобы покупатель, продавец, кладовщик, директор понимали, о каком товаре идет речь, каждый должен называть его одинаково. Система 1С:Предприятие позволяет вести практически неограниченное количество необходимых справочников. Каждый справочник представляет собой список однородных объектов: сотрудников, организаций, товаров и т. д. Каждый такой объект называется элементом справочника.

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

Может возникнуть ситуация случайного удаления всех периодических значений элемента справочника или его части. Ручной ввод старых значений не приемлем, как правило, ввиду большого объема периодических значений. Если есть свежая копия базы 1С:Предприятие, то большую часть данных можно экспортировать из нее и импортировать в рабочую базу. Для этого нам понадобится создать новую обработку или открыть в оболочке готовую обработку. Для тех, кто хочет сам написать свою обработку по выгрузке и загрузке данных, а так же разобраться, как работать с периодическими типами данных в 1С:Предприятие предлагаю краткое руководство ниже.

В конфигураторе создадим новую обработку. На форму обработки добавим реквизит с идентификатором «Валюта» и укажем ему тип: «Справочник.Валюты». Так же добавим на форму 3 кнопки. Первой укажем заголовок «Выгрузить» и укажем формулу «Выгрузить()» на вкладке «Дополнительно», второй укажем заголовок «Загрузить» и формулу «Загрузить()». Третья кнопка «Закрыть» и формула «#Закрыть». По внешнему виду форма должна получиться как на скриншоте.

1С:Предприятие 7.7 выгрузка переодических значений в файл

В модуль формы добавить две процедуры:

Процедура Выгрузить() 
//название файла для выгрузки
Файл = "kursi_val.txt";
Путь = "";

//создаем файл для выгрузки и записываем в название файла и путь в переменные Файл и Путь
//если файл не создан или нажата клавиша отмены, то процедура завершится
Если ФС.ВыбратьФайл(1,Файл,Путь,"Сохранить файл с данными курсов по валюте","Текстовый файл (*.txt)|*.txt") = 0 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;

//создаем объект с типом данных Текст
Текст = СоздатьОбъект("Текст");

//создаем объект с переодическим типом данных
ИстВал = СоздатьОбъект("Периодический");

//сопоставляем объект переодического типа периодическому реквизиту справочника
ИстВал.ИспользоватьОбъект("Курс",Валюта);

//выбираем данные по текущую дату
ИстВал.ВыбратьЗначения(,ТекущаяДата());

//получаем переодические значения
Пока ИстВал.ПолучитьЗначение()=1 Цикл
//создаем строковую переменную в которую пишем дату переодического занчения и само значение, разделитель ||
Стр = Строка(ИстВал.ДатаЗнач) +"||"+ Строка(ИстВал.Значение);

//записываем в текст строку с данными
Текст.ДобавитьСтроку(Стр);

КонецЦикла;

//записываем файл с выгруженными данными
Текст.Записать(Путь+"\"+Файл);

//сообщение которое появится после сохранения данных в файл
Предупреждение("Курсы валют выгружены");

КонецПроцедуры



//*******************************************
Процедура Загрузить()
//название файла для загрузки
Файл = "kursi_val.txt";
Путь = "";

//открываем файл для загрузки и записываем в название файла и путь в переменные Файл и Путь
//если файл не выбран или нажата клавиша отмены, то процедура завершится
Если ФС.ВыбратьФайл(0,Файл,Путь,"Открыть файл с данными курсов по валюте","Текстовый файл (*.txt)|*.txt") = 0 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;

//создаем объект с типом данных Текст
Текст = СоздатьОбъект("Текст");

//открываем файл на чтение
Текст.Открыть(путь+"/"+файл);

//создаем объект с переодическим типом данных
ИстВал = СоздатьОбъект("Периодический");

//перебираем строки текстового файла в цикле
Для к = 1 По Текст.КоличествоСтрок() Цикл

//сопоставляем объект переодического типа периодическому реквизиту справочника
ИстВал.ИспользоватьОбъект("Курс",Валюта);

//выбираем строку файла
Стр= Текст.ПолучитьСтроку(к);

//получаем дату переодического реквизита
ДатаЗнач = Лев(СокрЛП(Стр),8);

//получаем значение переодического реквизита
Значение = Прав(Стр,СтрДлина(СокрЛП(Стр))-10);

//устанавливаем дату переодического реквизита
ИстВал.ДатаЗнач = Дата(ДатаЗнач);

//устанавливаем значение переодического реквизита
ИстВал.Значение = Число(Значение);

//записываем данные переодического реквизита
ИстВал.Записать();
КонецЦикла;

//сообщение которое появится после загрузки данных
Предупреждение("Курсы валют загружены");

КонецПроцедуры

Сохраняем обработку и запускае её в режиме предприятия.

Скачать готовую обработку

0 Комментарии

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Вы можете авторизоваться на сайте через: