Для работы с периодическими реквизитами справочников и периодическими константами в системе «1С:Предприятие» версии 7.7 используется специальный агрегатный тип данных — "
Периодический"
. Объекты данного типа предназначены для возможности записи, редактирования и удаления значений периодических реквизитов справочников и периодических констант непосредственно из программного модуля, без необходимости прибегать к интерактивным операциям.
Контекст работы с объектом
Во всех программных модулях доступ к атрибутам и вызов методов объекта "
Периодический"
может выполняться только при помощи переменной со ссылкой на объект данного типа. Сам объект создаётся при помощи функции СоздатьОбъект()
, а чтобы вызвать метод объекта, имя метода (с указанием необходимых параметров) пишется через точку после идентификатора переменной.
При создании объекта данного типа функции СоздатьОбъект()
в качестве параметра передаётся ключевое слово «Периодический» (англоязычный синоним — «Periodic»):
ВремРеквизиты = СоздатьОбъект("Периодический");
или
TempProp = CreateObject("Periodic");
Атрибуты объекта «Периодический»
Доступ к значению выбранного периодического реквизита справочника или константы предоставляет атрибут Значение
объекта "
Периодический"
. Англоязычный синоним имени атрибута — Value
.
Доступ к дате значения выбранного периодического реквизита справочника или константы предоставляет атрибут ДатаЗнач
объекта "
Периодический"
. Англоязычный синоним имени атрибута — DateVal
.
Пример использования атрибутов:
Вал = СоздатьОбъект("Справочник.Валюты"); Вал.НайтиПоКоду(1); Если Вал.Выбран() = 1 Тогда Доллар = Вал.ТекущийЭлемент(); Иначе Предупреждение("Не найдена валюта!"); Возврат; КонецЕсли; ПерВал = СоздатьОбъект("Периодический"); ПерВал.ИспользоватьОбъект("ТекущКурс", Доллар); ПерВал.ОбратныйПорядок(1); ПерВал.ВыбратьЗначения(); Пока ПерВал.ПолучитьЗначение() = 1 Цикл Курс = ПерВал.Значение; ДатаКурса = ПерВал.ДатаЗнач; КонецЦикла;
Как видно из вышеприведённого примера, методика работы с периодическими реквизитами и константами проста:
- С помощью функции
СоздатьОбъект()
создаём объект типа"
Периодический"
. - С помощью метода
ИспользоватьОбъект()
(см. описание метода ниже) связываем созданный объект"
Периодический"
с конкретным периодическим реквизитом или константой. - Используя атрибуты и методы объекта
"
Периодический"
, начинаем работать с выбранным периодическим реквизитом или константой.
Методы объекта «Периодический»
Связать созданный объект типа "
Периодический"
с конкретным реквизитом или константой позволяет метод ИспользоватьОбъект()
. Англоязычный синоним имени метода — 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С
- Работа с формами
- Работы с табличными формами
08.12.14 — 12:03
Добрый день! Есть самописная конфигурация на 1с 7.7. В ней есть справочник сотрудники, из коего извлекаются значения реквизитов. Вот таким способом:
асСотрудники = СоздатьОбъект(«Справочник.Сотрудники»); асСотрудники.ИспользоватьРодителя(спБригада.ПолучитьЗначение(к));
асСотрудники.ВыбратьЭлементы(1);
Пока асСотрудники.ПолучитьЭлемент() = 1 Цикл
НоваяСтрока();
Сотрудник = асСотрудники.ТекущийЭЛЕМЕНТ();
ЗаполнитьСтроку();
КонецЦикла;
И всё бы хорошо, но возникла новая задача — получить значение периодического реквизита справочника Сотрудники на текущую дату.
Я пробовал такие варианты:
Сотрудник.ПериодРекв = Сотрудник.ПериодРекв.Получить(ДатаДок);
Сотрудник.ПериодРекв = Сотрудник.ПолучитьАтрибут(«ПериодРекв»).Получить(ДатаДок);
Но в итоге получал пустоту. Притом, если написать:
НоваяПеременная = Сотрудник.ПолучитьАтрибут(«ПериодРекв»).Получить(ДатаДок);
то реквизит подтягивается как надо. Проблема лишь в том, что мне надо чтобы реквизит извлекался в строку Сотрудник.ПериодРекв, а не лежал в отдельной переменной.
Может быть я спрашиваю глупость, прошу меня простить — я только изучаю 1с 7.7
1 — 08.12.14 — 12:05
ИспользоватьДату(ДатаДок)
2 — 08.12.14 — 12:06
(0) Типы не совпадают.
реквизит Сотрудник.ПериодРекв какого типа в справочнике ?
3 — 08.12.14 — 12:06
>>>Сотрудник.ПериодРекв = Сотрудник.ПериодРекв.Получить(ДатаДок);
Ну и это вообще какой-то поток сознания.
4 — 08.12.14 — 12:09
А мне интересно, чего это все клюшки изучать поперлись…
5 — 08.12.14 — 12:15
(4)В связи с кризисом многим будет не по карману 8-ка. Грядет массовый даунгрейд на клюшки!:-) Вот самые дальновидные зашевелились
6 — 08.12.14 — 12:17
(5) Самые дальновидные освоили клюшки еще лет 10 назад.
7 — 08.12.14 — 12:18
(6)Это да:-)
8 — 08.12.14 — 12:29
Не , просто кто на клюшках, еще по-старинке ЗП в долларах платят в конвертике.
9 — 08.12.14 — 12:30
Ну а тут — не детский фарт с курсом.
10 — 08.12.14 — 13:02
(1)
Спасибо, сейчас попробую
(2)
Реквизит Сотрудник.ПериодРекв имеет тип «Строка» длиной 5 символов
(4) (5) (6) (7) (8)
«Клюшка» обычно работает без моего участия, но тут ВНЕЗАПНО случилась реорганизация и меня попросили её поправить. ЗП, к сожалению, платят в рублях.
11 — 08.12.14 — 13:13
>>>Проблема лишь в том, что мне надо чтобы реквизит извлекался в строку Сотрудник.ПериодРекв, а не лежал в отдельной переменной.
вот это вот рассшифруй, а то вот это всё
Сотрудник.ПериодРекв = Сотрудник.ПериодРекв.Получить(ДатаДок);
Сотрудник.ПериодРекв = Сотрудник.ПолучитьАтрибут(«ПериодРекв»).Получить(ДатаДок);
бред
12 — 08.12.14 — 13:17
Сотрудник.ПериодРекв = Сотрудник.ПериодРекв.Получить(ДатаДок);
Сотрудник.ПериодРекв = Сотрудник.ПолучитьАтрибут(«ПериодРекв»).Получить(ДатаДок);
Это практически одно и тоже.
Пс. Есть 3 распространенных способа получения периодики (и парочка дополительных).
1. «ИспользоватьДату(ДатаДок)»
Зачение = Сотрудник.ПериодРекв;
2. Сотрудник.ПериодРекв.Получить(ДатаДок);
3. Ч/з объект периодический.
ПС. 1 и 2-й способы не совместимы, нельзя ИспользоватьДату + ПериодРекв.Получить(ДатаДок) либо один, либо другой.
13 — 08.12.14 — 13:21
(1)
Попробовал вот так:
асСотрудники = СоздатьОбъект(«Справочник.Сотрудники»);
асСотрудники.ИспользоватьРодителя(спБригада.ПолучитьЗначение(к));
асСотрудники.ВыбратьЭлементы(1);
асСотрудники.ИспользоватьДату(ДатаДок)
Пока асСотрудники.ПолучитьЭлемент() = 1 Цикл
НоваяСтрока();
Сотрудник = асСотрудники.ТекущийЭЛЕМЕНТ();
ЗаполнитьСтроку();
КонецЦикла;
В отладчике опять пустота.
(11)
Мне необходимо чтобы реквизит «ПериодРекв» из справочника Сотрудники, вместе с другими реквизитами, присутствовал в «Сотрудник». Сейчас там реквизиты наименование, код и прочие заполняются верно, а ПериодРекв пустой.
Сейчас так:
код «003» наименование «Петров» ПериодРекв «»
Надо так:
код «003» наименование «Петров» ПериодРекв «Должность»
14 — 08.12.14 — 13:25
(13) показывай что у тебя в ЗаполнитьСтроку()
15 — 08.12.14 — 13:40
(14)
Процедура ЗаполнитьСтроку()
Если Сотрудник.Выбран()=0 Тогда
Возврат;
КонецЕсли;
Кл=СоздатьОбъект(«Календарь.Пятидневка8»);
Кл.УчитыватьПраздники(1);
Кл.Автозаполнение(НачМесяца(ДатаДок),КонМесяца(ДатаДок));
Кл.ВыбратьДаты(НачМесяца(ДатаДок),КонМесяца(ДатаДок));
Для Д=1 По ДатаЧисло(КонМесяца(ДатаДок)) Цикл
Кл.СледующаяДата();
УстановитьАтрибут(«Н»+Д,Кл.ПолучитьАтрибут(«Значение»));
Если Число(ПолучитьАтрибут(«Н»+Д))=0 Тогда
УстановитьАтрибут(«Н»+Д,»В»);
КонецЕсли;
КонецЦикла;
Для Д=ДатаЧисло(КонМесяца(ДатаДок))+1 По 31 Цикл
УстановитьАтрибут(«Н»+Д,»Х»);
КонецЦикла;
КонецПроцедуры
16 — 08.12.14 — 13:43
(15) У тебя Сотрудник переменная модуля?
17 — 08.12.14 — 13:49
(16)
Нет, переменная в рамках процедуры. Вот целиком:
Процедура ЗаполнитьПоМастеру()
Т = СоздатьОбъект(«ТаблицаЗначений»);
Если спБригада.РазмерСписка() > 0 Тогда
УдалитьСтроки();
Для к = 1 По спБригада.РазмерСписка()
Цикл
асСотрудники = СоздатьОбъект(«Справочник.Сотрудники»);
асСотрудники.ИспользоватьРодителя(спБригада.ПолучитьЗначение(к));
асСотрудники.ИспользоватьДату(ТекущаяДата());
асСотрудники.ВыбратьЭлементы(1);
асСотрудники.ИспользоватьДату(ДатаДок);
Пока асСотрудники.ПолучитьЭлемент() = 1 Цикл
НоваяСтрока();
Сотрудник = асСотрудники.ТекущийЭЛЕМЕНТ();
ЗаполнитьСтроку();
КонецЦикла;
КонецЦикла;
КонецЕсли;
ВыгрузитьТабличнуюЧасть(Т,);
Т.НоваяКолонка(«ПериодРекв»);
Т.ВыбратьСтроки();
Пока Т.ПолучитьСтроку() = 1 Цикл
Т.Код = Число(Т.Сотрудник.Код);
Т.МояТабУпрОрг = Число(Т.Сотрудник.ПериодРекв);
КонецЦикла;
Т.Сортировать(«ПериодРекв+»);
ЗагрузитьТабличнуюЧасть(Т);
СортироватьСтроки(«Сотрудник.ПериодРекв»);
КонецПроцедуры
18 — 08.12.14 — 13:50
(17) М-да… ну и как ты хочешь, чтобы он ее у тебя во вложенной процедуре увидел?
19 — 08.12.14 — 13:51
п…ц
И где заполнение ПериодРекв в Таблице значений перед ЗагрузитьТабличнуюЧасть ?
ring0
20 — 08.12.14 — 13:57
Я изначально думал что ЗаполнитьСтроку() такой же стандратный метод как НоваяСтрока(). Теперь понял свою ошибку, спасибо.
Ввод записей в журнал расчетов 1
Добавление записи в журнал расчетов:
Метод Новая может быть вызван где угодно, в глобальном модуле, модуле обработок, документов и т.д.
Данный метод проверяет корректность заполненных реквизитов журнала расчетов. При вводе новых записей журнал
Внешние источники данных 0
Почему данная возможность вызывает такой интерес? Любой человек, который программировал в 1С при этом достаточно неплохо знаком с SQL и хотя бы в общих чертах знаком с архитектурой и принципами разработки других технологических платформ для бизнес пр
Выборка (перебор) бизнес-процессов 0
Выбрать( , , , )
отбора
отбора
(необязательный) — Структура. Задает реквизит вида расчета и значение этого реквизита, по которому будет создана выборка. Ключ структуры задает имя реквизита, а значение структуры — значение отбора по этому рекви
Выборка (перебор) видов расчета 0
Выбрать( , )
(необязательный) — Структура. Задает реквизит вида расчета и значение этого реквизита, по которому будет создана выборка. Ключ структуры задает имя реквизита, а значение структуры — значение отбора по этому реквизиту. В качестве рекви
Выборка запросом, перебор задач 1
Выбрать( Отбор , Порядок )
Отбор (необязательный) — Структура. Задает реквизит вида расчета и значение этого реквизита, по которому будет создана выборка. Ключ структуры задает имя реквизита, а значение структуры — значение отбора по этому рекви
Посмотреть все результаты поиска похожих
AndyG, эта конфа осталась от предыдущего программера. а периодический реквизит уже существует. так что проблема выбора у меня не стоит что есть то и надо.
У меня возник такой вопрос.
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект(«Запрос»);
ТекстЗапроса =
«//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ОбрабатыватьДокументы все;
|Долг = Справочник.Сотрудники.Долг; // это периодический реквизит
|Группировка Долг;
|Условие(Долг>0);
|»//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект(«Таблица»);
Таб.ИсходнаяТаблица(«Сформировать»);
// Заполнение полей «Заголовок»
Таб.ВывестиСекцию(«Заголовок»);
Состояние(«Заполнение выходной таблицы…»);
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Заполнение полей Код
Таб.ВывестиСекцию(«Код»);
КонецЦикла;
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать(«Сформировать», «»);
при таком коде, т.е. используется только один периодический реквизит запрос срабатывает и
выдает результат на начало выбранного промежутка времени. скажите это глюк? или я чего то не понял.