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

   Slypower

28.02.19 — 11:57

В общем, задача такая. В справочнике Товары есть периодический реквизит ЦенаУч. Он может менять как документов, так и руками. Как записать значение на 04.12.2018г.,  чтобы ьыли заполнены все значения: номерддокумента, сам документ, номерстроки. Если руками вносить, то заполняется только дата и значение. Документ создавать на эту дату — нельзя. Как программно сделать запить?

  

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

   Ёпрст

1 — 28.02.19 — 11:59

(0) какой документ вы там хотите увидеть, если документ создавать нельзя ?

   Slypower

2 — 28.02.19 — 11:59

Документ прихода товара))))

   Slypower

3 — 28.02.19 — 12:00

Он уже есть, его нужно подтянуть. Перепроводить сам документ нельзя

   skafandr

4 — 28.02.19 — 12:00

(0)Сам то понял что написал? Какой документ и при чем тут периодический реквизит?

   Mikeware

5 — 28.02.19 — 12:02

(3) запиши напрямую…

   skafandr

6 — 28.02.19 — 12:03

(0) периодический реквизит ЦенаУч как ты правильно написал имеет только значение и дату с которого это значение записано. Остальные данные если ты их видишь хранятся в других реквизитах

   Slypower

7 — 28.02.19 — 12:04

(5) вот интересно как?

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

    СпрТовары.НайтиЭлемент(ВыбТовар);

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

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

    Пер.ИспользоватьОбъект(«ЦенаУч»,СпрТовары);

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

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

        
            Пер.ТекущийДокумент() = ТЗ_Форма.Документ;

            Пер.ТекущийДокумент().НомерДок = ТЗ_Форма.НомерДок;

            Пер.НомерСтроки() = ТЗ_Форма.НомСтроки;//ДанныеИзДок(Пер.ТекущийДокумент(),»НомерСтроки»);

            
            Попытка

                Пер.Записать();

            Исключение

                Сообщить(ОписаниеОшибки());

            КонецПопытки;

        
    КонецЦикла;

Так в ошибку бьет.

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

    СпрТовары.НайтиЭлемент(ВыбТовар);

    ТЗ_Форма.ВыбратьСтроки();

    Пока ТЗ_Форма.ПолучитьСтроку() = 1 Цикл

        Если ТЗ_Форма.НовЗнач = НетПометки Тогда

            Продолжить;

        КонецЕсли;

        СпрТовары.ТекущийЭлемент().ИспользоватьДату(ТЗ_Форма.ДатаЗн);

        //СпрТовары.ЦенаУч.Установить(ТЗ_Форма.ДатаЗн,ТЗ_Форма.Документ);

        //СпрТовары.ЦенаУч.Установить(ТЗ_Форма.ДатаЗн,ТЗ_Форма.НомерДок);

        //СпрТовары.ЦенаУч.Установить(ТЗ_Форма.ДатаЗн,ТЗ_Форма.НомСтроки);

        //СпрТовары.ЦенаУч.Установить(ТЗ_Форма.ДатаЗн,ТЗ_Форма.Значение);

        СпрТовары.УстановитьАтрибут(«ЦенаУч»,ТЗ_Форма.Значение);

    КонецЦикла;

    
    Попытка

        СпрТовары.Записать();

    Исключение

        Сообщить(ОписаниеОшибки());

    КонецПопытки;

Так ничего не меняется.

   Mikeware

8 — 28.02.19 — 12:05

(7)

update _1sconst …

ну и у документа флаг поставить, что им пеиодические реквизиты справочников двнуты

   Mikeware

9 — 28.02.19 — 12:06

   trad

10 — 28.02.19 — 12:09

штатными средствами:

У документа убрать «Авто удаление движений»

Доработать модуль проведения, снабдив его специальной веткой алгоритма проведения

И таки провести

   Bigbro

11 — 28.02.19 — 12:12

голосую за (10)

   Mikeware

12 — 28.02.19 — 12:13

(10) (11) для одного ддокумента вообще можно руками проставить

   trad

13 — 28.02.19 — 12:14

(12) да, я бы тоже сделал прямым вмешательством, но я в себе уверен

   Ёпрст

14 — 28.02.19 — 12:23

(10) автоудаление тут вообще не при чем :))

   Ёпрст

15 — 28.02.19 — 12:25

ну и да, самое простое, это update.

А так, можно и это доработать, было бы желание

http://catalog.mista.ru/public/79515/

   trad

16 — 28.02.19 — 12:30

(14) и как ты предлагаешь перепровести документ не трогая существующие движения

   Ёпрст

17 — 28.02.19 — 12:35

(16) ну посмотри (15)

   Ёпрст

18 — 28.02.19 — 12:35

на досуге..

   Ёпрст

19 — 28.02.19 — 12:36

Единственное, я забил на периодику и на проводки, лень было в своё время доделывать

   Bigbro

20 — 28.02.19 — 12:38

(15) гранату помню, пригождалась пару раз, спасибо! ))

   trad

21 — 28.02.19 — 12:42

(17) но в (10) речь про штатный механизм

   Ёпрст

22 — 28.02.19 — 12:46

(21) ты не поверишь, там всё штатно :)

   Ёпрст

23 — 28.02.19 — 12:46

через провести

   trad

24 — 28.02.19 — 12:50

(22) а перехватчик тогда накой?

   Ёпрст

25 — 28.02.19 — 12:57

(24) Чтобы не писать код в каждом модуле проведения документа.

Код то посмотри, там всего то 1 класс добавляется и привет

   Ёпрст

26 — 28.02.19 — 12:57

мот, сгодится для чего-нить

   trad

27 — 28.02.19 — 13:13

(25) лень

ты просто скажи в двух словах как, не трогая движения, перепровести док без 1спп и формекс

   Ёпрст

28 — 28.02.19 — 13:19

(27) провести(параметр) вестимо. Тока придется в модуле проведения обработать параметр.

в параметр передать ТЗ со всеми нужными движениями дока

   Ёпрст

29 — 28.02.19 — 13:21

Ну и твоя галка, как ты понимаешь, по-боку.

Есть галка, в коде обработки параметра не очищаем перед записью движения, есть — чистим. Всё собственна

   trad

30 — 28.02.19 — 13:25

(28) (29) это то все понятно

но ты же понимаешь разницу между «не трогать движения» и «восстановить те же движения»

   Ёпрст

31 — 28.02.19 — 13:29

(30) я понимаю, к чему ты клонишь, ты хочешь очищать только нужное и переписывать только его.

Но по-большому счету, можно и всё переписать

   Ёпрст

32 — 28.02.19 — 13:30

в любом случае, автор в (0) не осилит

   trad

33 — 28.02.19 — 13:30

(31) нельзя. ГП сдвинется

   Ёпрст

34 — 28.02.19 — 13:30

ну и править метаданные, врят ли будет

   Ёпрст

35 — 28.02.19 — 13:31

(33) :) ГП ? Дык установит(куда угодно)

   trad

36 — 28.02.19 — 13:31

(33) + пересчитаются потенциально кривые RG которые исправлять никто не просил

   trad

37 — 28.02.19 — 13:32

(35) но зачем, когда можно ничего этого не делать

   Ёпрст

38 — 28.02.19 — 13:33

(37) ну как зачем ? Кода меньше.

так-то update и привет

   trad

39 — 28.02.19 — 13:40

(38) меньше кода?

1.

собрать все движения по регистрам и периодике в параметр

вместо штатного проведения восстановить движения регистров и периодики из параметра

сделать дополнительное движение по периодике

2.

вместо штатного проведения сделать дополнительное движение по периодике

   trad

40 — 28.02.19 — 13:42

*поправка

2.

в штатном алгоритме добавить вызов ОчиститьДвижения()

вместо штатного проведения сделать дополнительное движение по периодике

   Сияющий в темноте

41 — 28.02.19 — 13:47

есть такой обьект Периодический,он позволяет как читать так и писать.

   Chameleon1980

42 — 28.02.19 — 13:57

(41) да погоди ты

   trad

43 — 28.02.19 — 14:03

(41) ТС нужно значение связать с документом. обьект Периодический такое не умеет

   Ёпрст

44 — 28.02.19 — 14:21

(39) конечно меньше, я даже поделку написал, вообще не надо лезть в модуль дока:)

   Ёпрст

45 — 28.02.19 — 14:22

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

Но, це зже частный случай

   trad

46 — 28.02.19 — 14:28

(45) в (10) самый что ни на есть общий и штатный способ дозаписи движений и периодики

   trad

47 — 28.02.19 — 14:29

в древнем типовом ТиСе даже помню был применен такой прием для частичного проведения при подборе товаров

   Ёпрст

48 — 28.02.19 — 14:34

(46) но в целом, галку можно и не снимать :)

   Ёпрст

49 — 28.02.19 — 14:34

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

   Ёпрст

50 — 28.02.19 — 14:39

Ну и если че, в (15) галка учитывается

   Ёпрст

51 — 28.02.19 — 14:39

;)

   trad

52 — 28.02.19 — 14:51

(50) но не решает задачи ТС ;)

  

Ёпрст

53 — 28.02.19 — 15:18

(52) Ну, не всё коту масленница, кому надо, доделает, там не так много кода добавить

June 5 2009, 10:52

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

Изменение значения
периодических реквизитов.
В отличии от
констант, периодические реквизиты справочников
могут быть изменены тремя способами: вручную,
программно и документом. 

Ручное изменение.
При просмотре списка справочника (или элемента
справочника) Вы всегда видите значение
периодических реквизитов на рабочую дату.  По
этому для ручного изменения значения реквизитов
лучше пользоваться клавишей F5 (или меню
«Действия» ->»История значения»). При
этом Вам потребуется выбрать реквизит, который
Вы хотите изменить. После этого открывается окно
истории в котором две колонки: «Дата» и
«Значение».  Здесь Вы сможете изменить
любое значение и любую дату, добавить строки или
удалить строки. Этот способ является встроенным
в систему и не зависит от компоненты и
конфигурации.
В некоторых конфигурациях существует программно
реализованная возможность работы с
периодическими реквизитами. Чаще всего эта
возможность «прячется» под кнопкой
«История».  При нажатии на эту кнопку
открывается окно, в котором Вы получаете много
дополнительных возможностей. Но большая часть из
них сводится к удалению значений/дат и чистку
истории. По крайней мере, в 4.26 конфигурации
бухгалтерии я не смог изменить значения
реквизита через кнопку «История».

Программное изменение.
Как и при изменении значений периодических
констант, при работе с периодическими значениями
справочников требуется всегда указывать дату на
которую Вы хотите получить или установить
значение.  Используются следующие методы.

Получить(ДатаЗн) — этот
метод позволяет получить значение на указанную
дату. Наиболее просто объяснит его работу на
небольшом примере:
Процедура Сформировать()
   
спр=СоздатьОбъект(«Справочник.Валюты»);
    спр.ВыбратьЭлементы(); //перебираем
элементы
    Пока спр.ПолучитьЭлемент()=1 цикл
        курсВалюты=спр.курс.Получить(‘01.01.2002’);
//получаем значение курса на 1 января 2002 года
       
КратностьВалюты=спр.кратность.Получить(‘01.01.2002’);
//получаем  кратность на 1 янв. 2002 г.
       
Сообщить(спр.Наименование);
        Сообщить(курсВалюты);
       
Сообщить(КратностьВалюты);
    конецЦикла;
конецПроцедуры

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

Установить(датаУстановки,
.Значение)
— метод позволяет устанавливать
значение периодического реквизита на любую
дату.  Предыдущий пример легко изменить, чтобы
процедура устанавливала значение курса и
кратности для всех валют в какое-то одно
значение: 
Процедура Сформировать()
   
спр=СоздатьОбъект(«Справочник.Валюты»);
    спр.ВыбратьЭлементы(); //перебираем
элементы
    Пока спр.ПолучитьЭлемент()=1 цикл
        // устанавливаем значение
курса на 1 января 2002 года равным единице
        спр.курс.Установить(‘01.01.2002’,
1); 
        //устанавливаем 
кратность на 1 янв. 2002 г. равной 2.
        спр.кратность.Установить(‘01.01.2002’,
2); 
      конецЦикла;
конецПроцедуры

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

ИспользоватьДату(Дата,
УстСразу)
— метод позволяет задать дату для
работы со всеми периодическими реквизитами
сразу для всего справочника, созданного с
помощью СоздатьОбъект(). После его применения,
обращение к периодическими реквизитам
происходит так же как к обычным реквизитам. 
Важно!!! После метода ИспользоватьДату() нельзя
использовать методы Установить() и Получить(). 
Особого внимания заслуживает  флаг УстСразу.
Если УстСразу=0, тогда метод начинает работать со
следующей выборки элементов. Если устСразу=1,
тогда метод начинает работать уже в текущей
выборке

//*******************************************
Процедура Сформировать()
   
спр=СоздатьОбъект(«Справочник.Валюты»);
    спр.ИспользоватьДату(‘01.01.2002’);
    спр.ВыбратьЭлементы(); //перебираем
элементы
    Пока спр.ПолучитьЭлемент()=1 цикл 
        спр.курс=121; // обращаемся к
курсу как к простому реквизиту
        спр.кратность=233; 
        спр.записать(); //теперь
обязательно надо записать изменения!!!
    конецЦикла;
КонецПроцедуры

Получение значений
периодических реквизитов после метода
ИспользоватьДату() — выполняется аналогичным
образом:

Процедура Сформировать()
   
спр=СоздатьОбъект(«Справочник.Валюты»);
    спр.ИспользоватьДату(‘01.01.2002’, 1);
    спр.ВыбратьЭлементы(); //перебираем
элементы
    Пока спр.ПолучитьЭлемент()=1 цикл
        курсВалюты=спр.курс; 
       
КратностьВалюты=спр.кратность; 
       
Сообщить(спр.Наименование);
        Сообщить(курсВалюты);
       
Сообщить(КратностьВалюты);
    конецЦикла;
конецПроцедуры

Изменение периодических
реквизитов справочника документами.
Периодические реквизиты могут быть изменены
не только вручную и программно из обработки, но и
при проведении документа. Я это считаю отдельным
способом, так как методика работы в этом случае
несколько отличается от обычной ситуации. Все
дело в том, что при проведении документа,
значение реквизита устанавливается в нужное
значение, а при распроведении документа —
восстанавливается предыдущее значение. 
Восстановление происходит автоматически. Нет
необходимости в использовании процедуры отмены
обработки проведения.  Обращаю Ваше внимание
на то, что такая манипуляция возможна только с
периодическими реквизитами. Для обычных
реквизитов это не работает. Для установки
значений используется метод УстановитьРеквизитСправочника().
Этот метод можно применять только в модуле
документа. Синтаксис метода:
 УстановитьРеквизитСправочника(Элем,Рекв,Зн,ДатаУст,ИмяТ,Длина,Точность);
где Элем — элемент справочника, для которого
меняется значение периодического реквизита
Рекв — имя изменяемого реквизита (как оно задано в
конфигураторе)
Зн — устанавливаемое значение
ИмяТ, Длина, Точность — используются для
реквизитов неопределенного типа. В остальных
случаях — их применение не обязательно.
Пример применения этого метода Вы может найти в
типовой бухгалтерии (у меня 4.2) в документах:
«Приказ о приеме на работу», «Приказ о
кадровых изменениях», «Ввод в эксплуатацию
ОС», «Перемещение ОС», «Принятие к учету
НМА» и других документах.

    Наблюдение: на
собственном опыте знаю, что бухгалтеры делают
миллион ошибок, когда сталкиваются с
периодическими реквизитами. Им очень трудно
объяснить, что изменять значения надо через
кнопку F5, что значение в расчетах может
использоваться не то, которое они видят в
справочнике, а какое-то другое, которое было
«тогда». Универсального рецепта для борьбы с
этим не знаю. В своей практике стараюсь
заставлять бухгалтера менять периодическое
значение только через документ. В этом случае
резко уменьшается количество записи ошибок
«не на ту» дату. Из-за периодических
элементов очень страдает, на мой взгляд,
программа Зарплата и кадры. 

Задание для самостоятельной
работы:

1. Создайте документ,
предназначенный для изменения курсов валют в
справочнике Валюты.

2. В справочнике «Основные
средства»  есть надпись «Значения
периодических реквизитов указаны на дату…».
Рядом кнопка для изменения даты. Как изменение
даты влияет на отображаемые значения реквизитов.

На сегодня все. В следующем
выпуске: объект «Периодический»

Для работы с периодическими реквизитами справочников и периодическими константами в системе «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.       Отображение периодической информации

2.       Наборы реквизитов

3.       Периодические регистры сведений 1С

4.       Выводы об инструментах 1С  

1.      Отображение периодической информации

Приветствую, коллеги! Сегодня говорим о периодических реквизитах. Что это такое? Когда они нужны? Когда они не нужны? В чем смысл наборов периодических реквизитов? Какие еще периодические инструменты есть в 1С? Ответы на эти вопросы Вы узнаете их моей статьи.

Периодическими реквизитами называют реквизиты 1С, значения которых изменяются со временем; причем все эти измененные значения сохраняются и могут быть прочитаны в исторической перспективе.

С точки зрения пользователя «периодичность» реквизита означает возможность получить его значение на определенную дату. С точки зрения разработчика – это комплекс специализированных свойств и методов для использования в алгоритмах записи, чтения и отображения периодической информации.

Ярко выраженной «периодичностью» обладают реквизиты, в которых хранятся, например, курсы валют, цены товаров и услуг, ФИО кладовщиков или руководителей подразделений, ставки налогов и взносов и т.п.

А вот пример реквизита, который похож на периодический, но таковым не является. В рамках переговоров с покупателем вы обсуждаете цену товара. Сначала ему отправили коммерческое предложение; затем покупатель попросил скидку, показывая предложения конкурентов; потом попросил включить в цену стоимость доставки – и так несколько раундов переговоров, в которых значение цены якобы изменяется. Но на самом деле значение цены здесь одно – то, на котором остановились и включили в договор – то которое будет использоваться в бизнес-процессах в организации: расчете взаимной задолженности, определении доходности, налогообложении и т.д. Все остальные «промежуточные цены» являются лишь «пожеланиями» и в указанных бизнес-процессах использоваться не будут. Эти промежуточные цены могут фиксироваться в документах 1С 8 «Сделка» для анализа эффективности воронки продаж, но их смысловые значения не привязаны к дате – они привязаны к совокупности коммерческих условий работы на данном этапе переговоров.  

2.      Наборы реквизитов

Помимо периодичности отдельных реквизитов, можно говорить о периодичности их наборов. Пусть вы проектируете годовой бюджет ФОТ. В нем вы фиксируете суммы ФОТ в разрезе подразделений, должностей и даже ФИО (учитываете персональную ценность сотрудников). Бюджет утвердили; затем через месяц скорректировали – изменили суммы для утвержденных подразделений/должностей/ФИО; затем через полгода заменили одного сотрудника на другого и опять скорректировали бюджет – изменили ФИО и сумму (другая ценность сотрудника). В результате получили меняющееся во времени не одного значение реквизита, а целой совокупности связанных реквизитов. Это будет «набор периодических реквизитов» – в каждый момент времени он имеет свое смысловое значение – будет использоваться для план-фактного анализа в первом, втором квартале и так далее.

А вот пример изменяющегося набора реквизитов, который периодическим не является. Программа 1С позволяет вести версионирование объектов. Вы сохранили прайс-лист (в разрезе номенклатура/цена), а потом оказалось, что его кто-то не санкционированно изменил. Чтобы найти автора, понять содержание корректировок и откатить их назад как раз и используется механизм версионирования. Разумеется, зафиксированные корректировки имеют отметку времени; но основную смысловую нагрузку имеет сам факт корректировки, а не его расположение на временной шкале. Таким образом, версионируемые объекты (наборы реквизитов) не являются периодическими.

Подчеркнем еще раз важную особенность «периодичности» реквизитов 1С и их наборов: смысловая нагрузка их значений строго привязана к временной шкале. Именно значение на определенный момент времени используется в бизнес-процессах.  

3.      Периодические регистры сведений 1С

С сутью периодических реквизитов разобрались. Теперь немного об их «кухне».

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

В 1С версии 8 механизма «периодический реквизит» нет, его заменили «периодические регистры сведений» 1С. Возможности этих регистров шире и удобнее. Они реализуют «периодичность» как для отдельного реквизита, так и для наборов реквизитов.  

4.      Выводы об инструментах 1С

Итак, подытожим:

· Если в бизнес-процессах в организации смысловые значения реквизитов строго связаны с моментом времени их проведения, то мы имеем дело с «периодическими реквизитами».

· Периодическими могут быть как отдельные реквизиты, так и их связанные наборы.

· Для работы с периодическими реквизитами система 1С версии 8 использует механизмы периодических регистров сведений 1С.

· Если же значения реквизитов хоть и располагаются на временной шкале, но их смысловое значения со временем строго не связано, то это не периодические реквизиты; для работы с ними следует использовать другие (не периодические регистры сведений) инструменты 1С, такие, например, как последовательность однотипных документов, версионирование объектов.

Специалист компании «Кодерлайн»

Игорь Борисенко

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

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

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

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

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

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

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

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

Тэги:

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

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

Подобное свойство реквизита справочника позволяет, например, легко организовать хранение истории изменения курсов в справочнике валют.

К периодическому реквизиту можно обращаться при помощи встроенного языка системы 1С:Предприятие — получать и записывать значение реквизита на указываемую дату. Однако, следует иметь в виду, что при получении значения реквизита на какую-то дату извлекается его значение на указанную или (если значение на указанную дату отсутствует) на ближайшую предыдущую дату, а запись значения периодического реквизита выполняется всегда на указанную дату.

В режиме использования конфигурации для периодического реквизита можно вызвать окно «История». Это окно представляет собой таблицу, состоящую из двух граф: дата изменения значения реквизита справочника и значение на эту дату. Окно «История» позволяет редактировать историю изменений значения реквизита напрямую: вводить новые строки, редактировать или удалять существующие.

Методы периодических реквизитов

//так мы узнаем, какая была у сотрудника категория на определенную дату
Катег = СпрСотр.Категория.Получить(НекаяДата); 
//так мы установим сотруднику категорию на определенную дату
СпрСотр.Категория.Установить(НекаяДата, НоваяКатегория);

Внимание! Эти методы можно применять, если ранее не применялся метод ИспользоватьДату

Установка даты выборки периодических реквизитов

//можно установить дату выборки периодических реквизитов для всего справочника
СпрСотр.ИспользоватьДату(НекаяДата); 
//тогда ниже уже нельзя использовать методы Установить и Получить 
//доступ к периодическим реквизитам становится такой же, как к обычным реквизитам
Катег = СпрСотр.Категория; 
СпрСотр.Оклад = 6000;

Объект «Периодический»
Для работы с историей периодического реквизита очень удобно использовать объект «Периодический».

Пример, вывести историю карьеры сотрудника за текущий год:

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

С помощью объекта Периодический можно также редактировать и удалять значения.

Проведение документов
При проведении документа часто требуется установить новое значение периодического реквизита на определенную дату. Это называется движение документа. В этом случае следует применять метод УстановитьРеквизитСправочника:

Процедура ОбработкаПроведения()
УстановитьРеквизитСправочника(Сотрудник, "Должность", НоваяДолжность, ДатаПеремещения);
КонецПроцедуры

Если документ имеет табличную часть и вы хотите, чтобы движения документа были привязаны к номеру строки документа, тогда следует применять метод ПривязыватьСтроку.

Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
ПривязыватьСтроку(НомерСтроки);
УстановитьРеквизитСправочника(Сотрудник, "Должность", НоваяДолжность, ДатаПеремещения);
КонецЦикла;
КонецПроцедуры

Strazik


2012-01-13 • Просмотров [ 6504 ]

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