Как изменить дату периодических реквизитов

Дата первоначального значения периодических реквизитов

Я
   YDen

25.10.08 — 21:03

Здравствуйте!

Не подскажите, как программно изменить дату первоначального значения периодических реквизитов (т.е убрать 01.01.1980)?

Спасибо

  

Партнерская программа EFSOL Oblako

   FanatToNight

1 — 25.10.08 — 21:08

Обработка.ЗаписьПериодическихРеквизитовДляСотрудника
Процедура ПриОткрытии()
и другие процы, поищи в конфигураторе текст «01.01.1980»

   YDen

2 — 25.10.08 — 21:13

(1)У меня с нуля конфа написана.

Сделал периодическим реквизит, нужно убрать в истории 01.01.1980

   FanatToNight

3 — 25.10.08 — 21:13

(2) тогда возьми ЗиК для образца, спиши оттуда методику

   FanatToNight

4 — 25.10.08 — 21:15

если не упомянута эта дата нигде в самописке, значит, она идет из движка, так что исправить вход не удастся. Только выход

   YDen

5 — 25.10.08 — 21:22

(4)

Да, идет от движка.

Я для пробы изменил на периодический только один реквизит. Вопрос: можно ли откатившись назад, до изменения типа реквизита, сделать подготовку, чтобы изменив тип на периодический видеть дату не 01.01.1980, а например 01.01.2008?

Спасибо

   FanatToNight

6 — 25.10.08 — 21:26

:) к сожалению, мне остается только повториться: в указанной обработке устанавливается кодом выходная дата. Посмотрел-бы ты, как это делается в стандартной..
отладчик тебе поможет, найдешь верное решение..

   Санта Клаус

7 — 25.10.08 — 21:29

ни хрена не понятно, есть ведб ИспользоватьОюъект(), Установить()..

   FanatToNight

8 — 25.10.08 — 21:30

Есть и ИспользоватьДату()

   Санта Клаус

9 — 25.10.08 — 21:32

ну и какие проблемы

   YDen

10 — 25.10.08 — 21:39

(7)Если ко мне вопрос то:

самопальная с 0 конфигурация. Есть справочник, заполнен данными. Изменил тип реквизита на периодический. Установилась первоначальная дата изменения его на 01.01.1980. Хочу программно поменять на, например 01.01.2008. Вручную долго.

   Emvika

11 — 25.10.08 — 21:41

(5) ну и установи значение на 01.01.2008, а значение с 01.01.1980 удали

что мешает?

   Emvika

12 — 25.10.08 — 21:43

(10) только такое изменение ни на что абсолютно не повлияет

   YDen

13 — 25.10.08 — 21:44

(11)

Отсутствие знаний по этому вопросу :(

   YDen

14 — 25.10.08 — 21:45

(12)

Не будут у юзеров вопросы: А почему тут такой год?

   Санта Клаус

15 — 25.10.08 — 21:48

(12) кстате правильно. Так что не парься и оставляй как есть

   YDen

16 — 25.10.08 — 21:52

(15)

(12)-реально напрягаетнапрягают

   Smitt

17 — 25.10.08 — 21:57

(16) тебя спасет объект «Периодический» см Синтаксис помощник

   Эльниньо

18 — 25.10.08 — 21:57

Вот делать то нечего людям!

   Санта Клаус

19 — 25.10.08 — 21:58

Сотрудники.Оклад.Установить(‘01.01.08’, «Тарелка супа»);

   YDen

20 — 25.10.08 — 22:37

Спасибо всем, получилось.

   Спр=СоздатьОбъект(«Справочник.Сотрудники»);

   Спр.НайтиПоНаименованию(«преподаватели»,0,1);

   Если Спр.Выбран() > 0 Тогда

       Спр.ИспользоватьРодителя(Спр.ТекущийЭлемент());

       Спр.ВыбратьЭлементы();

       Пока Спр.ПолучитьЭлемент()=1 Цикл

           Пер = СоздатьОбъект(«Периодический»);

           Пер.ИспользоватьОбъект(«НагрузкаОсновная»,Спр.ТекущийЭлемент());    

           Пер.ВыбратьЗначения();

           Пока Пер.ПолучитьЗначение() = 1 Цикл

               Если Пер.ДатаЗнач=’01.01.1980′ Тогда

                   Пер.Удалить();

               КонецЕсли;

           КонецЦикла;

           КонецЦикла;

   КонецЕсли;

Перед этим создал еще одну запись в периодический реквизит с новой датой и прежним значением. Потом удалил первую запись (код выше).

  

Smitt

21 — 25.10.08 — 22:45

(20) Ну вообще-то атрибут «ДатаЗнач» (если мне не изменяет склероз) доступен на запись, т.е. можно было не сознавать новую и удалять старую, а перебирая значения таким же макаром как у тебя присвоить другую дату в ДатаЗнач. Это так, для справки ;)

June 5 2009, 10:52

Вариант редактирования периодических реквизитов в формах

Редактирование периодических реквизитов в формах 1с8

Периодические реквизиты объектов в формах отображаются картинкой с изображением песочных часов справа от поля ввода реквизита.

В формах объектов, содержащих периодические реквизиты, есть поле ввода даты с подписью «На дату».

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

При открытии формы в поле «На дату» подставляются текущая дата и время.

Для того, чтобы изменить значение периодического реквизита объекта, нужно изменить значение этого реквизита в поле ввода. При записи объекта, если хотя бы один реквизит был изменен, пользователю будет выдан вопрос, устанавливать ли значения периодических реквизитов на указанную в поле «На дату» дату.  Для каждого измененного реквизита будет указано предыдущее и текущее состояние.

По нажатию на кнопку история открывается история значений реквизита по датам с колонками «Дата», «Значение».

В этом списке можно производить следующие действия:

1.       Изменять дату значения – войти в режим редактирования строки, изменить дату, завершить редактирование строки.

2.       Изменять значение на дату – войти в режим редактирования строки, изменить дату, завершить редактирование строки.

3.       Изменять значение и дату – войти в режим редактирования строки, изменить значение и дату, завершить редактирование строки.

4.       Удалить запись об изменении значении реквизита – выделить одну или несколько записей, нажать кнопку удалить в форме истории значений реквизита. При этом будет выдан запрос подтверждения операции.

Нажатие на кнопку «История» не устанавливает (но и не очищает) признак модифицированности поля редактирования периодического реквизита, т.е. при записи объекта по этому реквизиту не будет устанавливаться значение на дату.

В общем и целом: надо перебрать все периодические значения всех элементов справочника и изменить даты значений на нужные, что-то типа:КонецЦикла;Вопрос в том, что вставить в условие?

сильно…ты че хочешь конкретно?хочешь срезать историю на определенную дату?

Из базы в базу обработкой был перенесен справочник. Затем значения периодических реквизитов (истории значений как таковой нет — по одному значению на каждый реквизит) были записаны на дату, как оказалось, неправильную. Теперь эту дату надо изменить.

err Пер.Записать;{Обработка.яСменаПерРекв.Форма.Модуль}: Перед выполнением операции нужно вызвать ‘ИспользоватьОбъект’!

2 ИспользоватьОбъект(,ТекСпр); — где имя реквизита, что меняется?ИспользоватьОбъект(<ИмяРеквизита>,<Объект>)Назначение:Сопоставляет объект типа ‘Периодический’ периодическому реквизиту справочника или периодической константе.Возвращает: 1 — если вызов метода закончился успешно, 0 — иначе.Параметры:<ИмяРеквизита> — строка с названием периодического реквизита справочника или периодической константы;

Ты зачем ЖКК цитируешь? Я и сам умею. Если <ИмяРеквизита> опущено, то выборка по всем пер. реквизитам, что мне и надо.

2 Хорошо, молчу-молчу… тем более — есть чем заняться…

Тут вот такая мысль… Пока еще появляются, может и неудачные…Если использовать ВыбратьЗначения и тут же менять дату значения — плохо будеть…Это все равно, что делать выборку по наименованиям спр-ка и менять наименованиеНадо их выбрать, загнать в СС, ТЗ. Потом все вместе и поменять… как в

Тэги:

Комментарии доступны только авторизированным пользователям

Клерк.Сообщество

Загрузка…

Здравствуйте!!! Подскажите, пожалуйста, как мне правильно поменять дату приема на работу ошибочно записалась дата 03.06 вместо 28.05. и теперь зарплата не идет за май месяц а выходит за июнь 2 дня, То есть как мне перепровести дату приема — через какой документ ?возможно ли и как это сделать в справочниках сотрудники ? или в другом? Это в программе 1с Бухгалтерия 7.7 .Пыталась поменять выходит две даты : одна провелась с окладом на 28 число, а в остальные константы -на 3 июня и в отчетах тоже 3 июня , Как удалить старую запись и записать по новой задним числом?

И еще подскажите, пожалуйста, почему -то не рассичываются налоги — страховые взносы на обязат. страхование с ФОТ, то. есть они должны рассчитаться после проведения документа закрытие месяца- автоматом? или после начисления зарплаты или еще каким- либо документом??? что-то я запуталась,
То. есть подскажите,пожалуйста, порядок расчета зарплаты и налогов с ФОТ в 1с Бухгалтерия 7.7 ,что-то не идет у меня. И далее чтобы сделать регламентированную отчетность по взносам в ПФ- РСВ -1 , 4-ФСС, подоходный налог — она формируется автоматом ?либо нужно еще провести какой- нибудь документ после проведение ( закрытие месяца) 🤦‍♀️ перед тем как уже отчетность выводить за месяц, квартал? Просветите, пожалуйста, меня!!!! Огромное, огромное Огромное спасибо!!!

Цитата (Glavbuh Alenka): Здравствуйте!!! Подскажите, пожалуйста, как мне правильно поменять дату приема на работу ошибочно записалась дата 03.06 вместо 28.05. и теперь зарплата не идет за май месяц а выходит за июнь 2 дня, То есть как мне перепровести дату приема — через какой документ ?возможно ли и как это сделать в справочниках сотрудники ? или в другом? Это в программе 1с Бухгалтерия 7.7 .Пыталась поменять выходит две даты : одна провелась с окладом на 28 число, а в остальные константы -на 3 июня и в отчетах тоже 3 июня , Как удалить старую запись и записать по новой задним числом?
И еще подскажите, пожалуйста, почему -то не рассичываются налоги — страховые взносы на обязат. страхование с ФОТ, то. есть они должны рассчитаться после проведения документа закрытие месяца- автоматом? или после начисления зарплаты или еще каким- либо документом??? что-то я запуталась,
То. есть подскажите,пожалуйста, порядок расчета зарплаты и налогов с ФОТ в 1с Бухгалтерия 7.7 ,что-то не идет у меня. И далее чтобы сделать регламентированную отчетность по взносам в ПФ- РСВ -1 , 4-ФСС, подоходный налог — она формируется автоматом ?либо нужно еще провести какой- нибудь документ после проведение ( закрытие месяца) 🤦‍♀️ перед тем как уже отчетность выводить за месяц, квартал? Просветите, пожалуйста, меня!!!! Огромное, огромное Огромное спасибо!!!

Дату приема на работу поменять легко: сделайте непроведенным приказ о приеме на работу, измените дату, проведите. Зайдите в справочник «Сотрудники» и установите значение периодических реквизитов на дату приема.
Чтобы рассчитывались налоги откройте: /Справочники/ /Сотрудники/ /Налоги и отчисления/ поставьте галочку /Начислять налоги с ФОТ/, рядом значок /История изменения реквизита/ откройте, проверьте с какого периода, должен быть Ваш приказ о приеме.
Перепроведите Закрытие месяца, где проверьте стоит ли галочка Начислять налоги с фонда оплаты труда. В справочнике Виды начислений (выплат) работникам тоже уточните стоят нужные Вам галочки? (ПФР, ФСС).
Чтобы у Вас автоматом начислялись налоги с ФОТ нужно сделать Начисление з/п и Закрытие месяца. Выплату з/п оформляете документом Выплата з/п (думаю знаете), но на налоги с ФОТ он не влияет. так, что разбирайтесь с Начислением, Справочниками и Закрытием месяца, все исправляйте, перепроводите, если что не получится — спрашивайте.
По 4-ФСС в 1С, у меня программа без обновлений, но должно быть в /Отчеты/ /Регламентированные/ /Отчеты в фонды/.
Насчет РСВ-1 тоже не знаю есть ли в обновленной 1С. Я делаю в Spu_orb, но есть и другие программы, знаю, что в разных регионах — разные, в ПФР программу дают бесплатно, с интернета тоже можно скачать.

Да, еще про НДФЛ Вы спросили, при проведении тех же документов начисляется. В справочнике /Сотрудники/ /Общие сведения/ поставьте галочку /Сотрудник является налоговым резидентом/.
Чтобы удостовериться какие проводки сделал Ваш документ можно: правой кнопкой на документ /Открыть операцию/ или /Проводки операции/, и все увидите, начислился ли НДФЛ, взносы в ПФР, ФСС; либо в открытом документе кнопка /Действия/ /Отчет о движениях документа/.
Вам нужно просто посидеть, пощелкать, сформировать разные отчеты, карточки, методом тыка, что называется, чтобы понять какой документ какие проводки формирует. Проведите разные документы, сформируйте ОСВ, анализ счета, чтобы наглядно увидеть проводки, сделаете в любой момент не проведенным и переделаете как нужно (конечно, если нет запрета на редактирование).
Все нюансы: как сформировать документ, отчет, найдете в самой программе /Помощь/ /Общее описание/, раскрываете нужную Вам папку: Документы, Отчеты, Справочники и т.д. и читаете, что Вам нужно. Вы посмелее изучайте программу, Вы ничего не нарушите, как бояться часто новички, всегда можно сделать шаг назад. А когда Вы самостоятельно пройдете по каждому документу и отчету, Вы уже ничего не забудете и не запутаетесь.
Удачи!

Для работы с периодическими реквизитами справочников и периодическими константами в системе «1С:Предприятие» версии 7.7 используется специальный агрегатный тип данных — "Периодический". Объекты данного типа предназначены для возможности записи, редактирования и удаления значений периодических реквизитов справочников и периодических констант непосредственно из программного модуля, без необходимости прибегать к интерактивным операциям.

Контекст работы с объектом

Во всех программных модулях доступ к атрибутам и вызов методов объекта "Периодический" может выполняться только при помощи переменной со ссылкой на объект данного типа. Сам объект создаётся при помощи функции СоздатьОбъект(), а чтобы вызвать метод объекта, имя метода (с указанием необходимых параметров) пишется через точку после идентификатора переменной.

При создании объекта данного типа функции СоздатьОбъект() в качестве параметра передаётся ключевое слово «Периодический» (англоязычный синоним — «Periodic»):

ВремРеквизиты = СоздатьОбъект("Периодический");

или

TempProp = CreateObject("Periodic");

Атрибуты объекта «Периодический»

Доступ к значению выбранного периодического реквизита справочника или константы предоставляет атрибут Значение объекта "Периодический". Англоязычный синоним имени атрибута — Value.

Доступ к дате значения выбранного периодического реквизита справочника или константы предоставляет атрибут ДатаЗнач объекта "Периодический". Англоязычный синоним имени атрибута — DateVal.

Пример использования атрибутов:

Вал = СоздатьОбъект("Справочник.Валюты");

Вал.НайтиПоКоду(1);
Если Вал.Выбран() = 1 Тогда
   Доллар = Вал.ТекущийЭлемент();
Иначе
   Предупреждение("Не найдена валюта!");
   Возврат;
КонецЕсли;
ПерВал = СоздатьОбъект("Периодический");
ПерВал.ИспользоватьОбъект("ТекущКурс", Доллар);

ПерВал.ОбратныйПорядок(1);
ПерВал.ВыбратьЗначения();
Пока ПерВал.ПолучитьЗначение() = 1 Цикл
   Курс = ПерВал.Значение;
   ДатаКурса = ПерВал.ДатаЗнач;
КонецЦикла;

Как видно из вышеприведённого примера, методика работы с периодическими реквизитами и константами проста:

  1. С помощью функции СоздатьОбъект() создаём объект типа "Периодический".
  2. С помощью метода ИспользоватьОбъект() (см. описание метода ниже) связываем созданный объект "Периодический" с конкретным периодическим реквизитом или константой.
  3. Используя атрибуты и методы объекта "Периодический", начинаем работать с выбранным периодическим реквизитом или константой.

Методы объекта «Периодический»

Связать созданный объект типа "Периодический" с конкретным реквизитом или константой позволяет метод ИспользоватьОбъект(). Англоязычный синоним имени метода — UseObject().

Синтаксис метода:

ИспользоватьОбъект(<ИмяРеквизита>, <Объект>)

где

  • <ИмяРеквизита> — строковое выражение, задающее название (идентификатор) периодического реквизита справочника или название (идентификатор) периодической константы, как они названы в Конфигураторе;
  • <Объект> — необязательный параметр. Значение элемента справочника, для которого задаётся применение объекта "Периодический". Данный параметр требуется задавать только в случае, если <ИмяРеквизита> — периодический реквизит справочника.

Если параметр <ИмяРеквизита> не задан (пустая строка), а параметр <Объект> задаёт элемент справочника, то выборка будет осуществляться по всем периодическим реквизитам для данного элемента справочника.

Задать тип периодическому реквизиту справочника или периодической константе неопределённого типа позволяет метод НазначитьТип(). Англоязычный синоним имени метода — SetType().

Синтаксис метода:

НазначитьТип(<ИмяТипа>, <Длина>, <Точность>)

где

  • <ИмяТипа> — строковое выражение — название типа данных, который назначается периодическому реквизиту справочника или периодической константе неопределённого типа, например, "Строка", "Число", "Справочник.Товары", "Документ.РасходнаяНакладная" и т.п.;
  • <Длина> — необязательный параметр. Числовое выражение — длина поля представления данных. Имеет смысл только при задании числового или строкового типа;
  • <Точность> — необязательный параметр. Числовое выражение — число знаков числа после десятичной точки. Имеет смысл только при задании числового типа.

Пример использования:

Тов = СоздатьОбъект("Справочник.Номенклатура");

Тов.НайтиПоКоду(51);
Если Тов.Выбран() = 1 Тогда
   ВыбТМЦ = Тов.ТекущийЭлемент();
Иначе
   Предупреждение("Не найден товар!");
   Возврат;
КонецЕсли;
ПерТМЦ = СоздатьОбъект("Периодический");
ПерТМЦ.ИспользоватьОбъект("ТМЦ", ВыбТМЦ);
ПерТМЦ.НазначитьТип("Справочник.Товары");

Получить значение реквизита или константы, актуальное на заданную дату позволяет метод ЗначениеНаДату(). Англоязычный синоним имени метода — ValueOnDate().

Синтаксис метода:

ЗначениеНаДату(<Дата>)

где <Дата> — выражение типа "Дата", задающее дату, на которую необходимо получить значение реквизита или константы.

Примечание: При использовании данного метода текущая позиция выборки, ранее открытая методом ВыбратьЗначение(), не сдвигается и не сбрасывается.

Пример использования:

К = ПерВал.ЗначениеНаДату(ДатаП);

Найти периодическое значение на заданную дату позволяет метод НайтиЗначение() (англоязычный синоним — FindValue()). Метод возвращает 1, если вызов закончился успешно, или 0, если нет. Режим поиска в случае, если на заданную дату не существует значения периодического реквизита, задаётся параметром <Режим>. Само же полученное при этом значение следует считывать из атрибута Значение объекта "Периодический" (то есть данный метод выполняет позиционирование, как и методы выборки).

Синтаксис метода:

НайтиЗначение(<Дата>, <Режим>)

где

  • <Дата> — выражение, задающее значение даты, на которую требуется найти значение периодического реквизита справочника или периодической константы;
  • <Режим> — числовое выражение, значение которого задаёт режим поиска, если на заданную дату не существует значения периодического реквизита. Если −1 (минус единица) — возвращается значение на предыдущую дату, если 0 — возвращается код завершения неуспешной операции, если 1 — возвращается значение на последующую дату.

Пример использования:

Если ПерВал.НайтиЗначение(ДатаП, -1 ) = 1 Тогда
   К = ПерВал.Значение;
Иначе
   Предупреждение("Значение не найдено!", 3);
   Возврат;
КонецЕсли;

Открыть выборку периодических значений за указанный период позволяет метод ВыбратьЗначения() (англоязычный синоним — SelectItems()). Выборка будет происходить при помощи метода ПолучитьЗначение() среди периодических значений текущего объекта применения, заданного методом ИспользоватьОбъект(). Возвращаемым значением метода ВыбратьЗначения() является число: 1 — если вызов метода закончился успешно, 0 — если нет.

Синтаксис метода:

ВыбратьЗначения(<ДатаНачала>, <ДатаКонца>)

где

  • <ДатаНачала> — необязательный параметр. Выражение типа "Дата", задающее дату начала периода выборки периодических значений. Если параметр не задан, то выборка начинается с самой ранней имеющейся даты;
  • <ДатаКонца> — необязательный параметр. Выражение типа "Дата", задающее дату конца периода выборки периодических значений. Если параметр не задан, то выборка заканчивается самой последней имеющейся датой.

Пример использования метода:

Вал = СоздатьОбъект("Справочник.Валюты");

Вал.НайтиПоКоду(1);
Если Вал.Выбран() = 1 Тогда
   Доллар = Вал.ТекущийЭлемент();
Иначе
   Предупреждение("Не найдена валюта!");
   Возврат;
КонецЕсли;
ПерВал = СоздатьОбъект("Периодический");
ПерВал.ИспользоватьОбъект("ТекущКурс", Доллар);

ПерВал.ОбратныйПорядок(1);
ПерВал.ВыбратьЗначения();
Пока ПерВал.ПолучитьЗначение() = 1 Цикл
   Курс = ПерВал.Значение;
   ДатаКурса = ПерВал.ДатаЗнач;
КонецЦикла;

Установить порядок выборки значений, открытой методом ВыбратьЗначения(), позволяет метод ОбратныйПорядок() (англоязычный синоним — BackwardOrder()), вызов которого должен происходить до вызова метода ВыбратьЗначения(). Возвращаемым значением метода является число: 1 — если вызов метода закончился успешно, или 0 — если нет. Пример использования метода приведён выше.

Синтаксис:

ОбратныйПорядок(<Режим>)

где <Режим> — числовое выражение, результирующее значение которого задаёт режим выборки периодических значений. Если значение равно 0, устанавливается прямой порядок выборки; если значение отлично от 0 — обратный порядок выборки. Параметр является необязательным. Значение по умолчанию — 1.

Открыть выборку периодических значений, установленных указанным документом, позволяет метод ВыбратьПоДокументу() (англоязычный синоним — SelectByDoc()). Выборка будет происходить при помощи метода ПолучитьЗначение() по всем справочникам и реквизитам. То есть при использовании данного метода игнорируется установка объекта применения, задаваемая методом ИспользоватьОбъект(). Возвращаемым значением метода ВыбратьПоДокументу() является число: 1 — если вызов метода закончился успешно, 0 — если нет.

Синтаксис метода:

ВыбратьПоДокументу(<Документ>)

где <Документ> — выражение со значением типа "Документ", указывающее, по какому документу будет производиться выборка.

Пример использования метода:

Процедура ПечатьУстановокДокумента(Док)
   Если Док.Выбран() = 0 Тогда
      Возврат;
   КонецЕсли;
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("ПечатьИстории");
   Таб.ВывестиСекцию("Отчет");
   Ист = СоздатьОбъект ("Периодический");
   Ист.ВыбратьПоДокументу(Док);
   Пока Ист.ПолучитьЗначение() = 1 Цикл
      Таб.ВывестиСекцию("Строка");
   КонецЦикла;
   Таб.Опции(0, 0, 0, 0);
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Отчет");
КонецПроцедуры

Выбрать очередное значение из выборки, предварительно открытой методом ВыбратьЗначения() или ВыбратьПоДокументу(), позволяет метод ПолучитьЗначение() (англоязычный синоним — GetValue()). Само полученное значение следует считывать из атрибута Значение, а дату этого значения — из атрибута ДатаЗнач.

У метода ПолучитьЗначение() нет параметров, а возвращаемым значением является число: 1 — если элемент выбран успешно, 0 — если элемент не выбран (достигнут конец выборки).

Пример использования метода:

Процедура КурсыВалюты(КодВалюты)
   Вал = СоздатьОбъект("Справочник.Валюты");
   
   Вал.НайтиПоКоду(КодВалюты);
   Если Вал.Выбран() = 1 Тогда
      Доллар = Вал.ТекущийЭлемент();
   Иначе
      Предупреждение("Не найдена валюта!");
      Возврат;
   КонецЕсли;
   ПерВал = СоздатьОбъект("Периодический");
   ПерВал.ИспользоватьОбъект("Текущ_курс", Доллар);
   ПерВал.ОбратныйПорядок(1);
   ПерВал.ВыбратьЗначения();
   Пока ПерВал.ПолучитьЗначение() = 1 Цикл
      Сообщить("Курс на " + Строка(ПерВал.ДатаЗнач) + " = " + ПерВал.Значение);
   КонецЦикла;
КонецПроцедуры

Получить документ, который установил значение периодического реквизита справочника позволяет метод ТекущийДокумент() (англоязычный синоним — CurrentDocument()). Данный метод не имеет параметров и используется после получения очередного значения из выборки с помощью метода ПолучитьЗначение().

Пример использования:

Процедура ПечатьИстории(Элем)
   Если Элем.Выбран() = 0 Тогда
      Возврат;
   КонецЕсли;
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("ПечатьИстории");
   Таб.ВывестиСекцию("Отчет");
   Ист = СоздатьОбъект("Периодический");
   
   Ист.ИспользоватьОбъект("", Элем);
   Ист.ВыбратьЗначения();
   Пока Ист.ПолучитьЗначение() = 1 Цикл
      ДокИст = Ист.ТекущийДокумент();
      Если ДокИст.Выбран() = 1 Тогда
         
         Таб.ВывестиСекцию("ПоДокументу");
      Иначе
         
         Таб.ВывестиСекцию("Строка");
      КонецЕсли;
   КонецЦикла;
   Таб.Опции(0, 0, 0, 0);
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Отчет");
КонецПроцедуры

Получить значение текущего элемента справочника позволяет метод ТекущийОбъект() (англоязычный синоним — CurrentObj()). Данный метод не имеет параметров и используется после получения очередного значения из выборки с помощью метода ПолучитьЗначение(). Особенно он полезен при выборке по документу (см. описание метода ВыбратьПоДокументу()).

Пример использования метода:

Процедура ПечатьУстановокДокумента(Док)
   
   Если Док.Выбран() = 0 Тогда
      Возврат;
   КонецЕсли;
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("ПечатьИстории");
   Таб.ВывестиСекцию("Отчет");
   Ист = СоздатьОбъект("Периодический");
   Ист.ВыбратьПоДокумекту(Док);
   Пока Ист.ПолучитьЗначение() = 1 Цикл
      ИстОбъект = Ист.ТекущийОбъект();
      Если ИстОбъект.Вид() = "Товары" Тогда
         
         Таб.ВывестиСекцию("ПоТовару");
      ИначеЕсли ИстОбъект.Вид() = "Клиенты" Тогда
         
         Таб.ВывестиСекцию("ПоКлиенту");
      КонецЕсли;
   КонецЦикла;
   Таб.Опции(0, 0, 0, 0);
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Отчет");
КонецПроцедуры

Получить наименование текущего реквизита справочника позволяет метод ТекущийРеквизит() (англоязычный синоним — CurrentAttribute()). Метод не имеет параметров и возвращает строковое значение — наименование текущего реквизита справочника.

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

Пример использования метода:

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

Получить номер строки документа, изменившей периодическое значение реквизита справочника, позволяет метод НомерСтроки() (англоязычный синоним — LineNum()). Он не имеет параметров и используется после получения очередного значения из выборки. Особенно полезен при выборке по документу или по всем реквизитам.

Пример использования метода:

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

Выполнить запись периодического значения на заданную дату позволяет метод Записать() (англоязычный синоним — Write()). Если на заданную дату уже существует запись, то она модифицируется. Возвращаемым значением метода будет число: 1 — если вызов метода закончился успешно, 0 — если нет.

До вызова данного метода следует само значение записать в атрибут Значение, а дату этого значения записать в атрибут ДатаЗнач.

Пример использования метода:

Процедура ЗаписьКурсаДоллара(Курс)
   Вал = СоздатьОбъект("Справочник.Валюты");
   
   Вал.НайтиПоКоду(1);
   Если Вал.Выбран() = 1 Тогда
      Доллар = Вал.ТекущийЭлемент();
   Иначе
      Предупреждение("Не найдена валюта!");
      Возврат;
   КонецЕсли;
   ПерВал = СоздатьОбъект("Периодический");
   ПерВал.ИспользоватьОбъект("Текущ_курс", Доллар);
   ПерВал.Значение = Курс;
   ПерВал.ДатаЗнач = РабочаяДата();
   ПерВал.Записать();
КонецПроцедуры

Удалить периодическое значение на заданную дату позволяет метод Удалить() (англоязычный синоним — Delete()). Возвращаемым значением метода будет число: 1 — если вызов метода закончился успешно, 0 — если нет. До вызова данного метода атрибут ДатаЗнач должен содержать дату удаляемого периодического значения.

Пример использования метода:

Процедура ЧисткаКурсов()
   Вал = СоздатьОбъект("Справочник.Валюты");
   
   Вал.НайтиПоКоду(1);
   Если Вал.Выбран() = 1 Тогда
      Доллар = Вал.ТекущийЭлемент();
   Иначе
      Предупреждение("Не найдена валюта!");
      Возврат;
   КонецЕсли;
   ПерВал = СоздатьОбъект("Периодический");
   ПерВал.ИспользоватьОбъект("Текущ_курс", Доллар);
   ПерВал.ВыбратьЗначения();
   Пока ПерВал.ПолучитьЗначение() = 1 Цикл
      Курс = ПерВал.Значение;
      ДатаКурса = ПерВал.ДатаЗнач;
      Если Курс < 1000 Тогда
         ПерВал.Удалить();
      КонецЕсли;
   КонецЦикла;
КонецПроцедуры

Другие статьи по схожей тематике

  • Работа с константами
  • Работа с датами
  • Работа с журналами документов
  • Работа со справочниками в 1С
  • Работа с формами
  • Работы с табличными формами

Понравилась статья? Поделить с друзьями:
  • Как изменить название компании в налоговой
  • Как изменить платежные реквизиты в гис жкх
  • Как включить подогрев зеркал газель бизнес
  • Как изменить тип реквизита в расширении 1с
  • Как включить рефрижератор на газели бизнес