Как запросом получить записи перерасчета 1с
Откройте в конфигураторе текст обработчика проведения документа НачисленияСотрудникам и добавьте в него следующий текст на встроенном языке (добавляйте в соответствующие строки только те команды, которые выделены жирным шрифтом):
Процедура ОбработкаПроведения(Отказ, Режим)
// Записываем движения регистров
Движения.Начисления.Записать();
// Получим список всех сотрудников, содержащихся в документе
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| НачисленияСотрудникамНачисления.Сотрудник
|ИЗ
| Документ.НачисленияСотрудникам.Начисления КАК НачисленияСотрудникамНачисления
|ГДЕ
| НачисленияСотрудникамНачисления.Ссылка = &ТекущийДокумент");
Запрос.УстановитьПараметр("ТекущийДокумент", Ссылка);
// Сформируем список сотрудников
ТаблЗнач = Запрос.Выполнить().Выгрузить();
МассивСотрудников = ТаблЗнач.ВыгрузитьКолонку("Сотрудник");
СписокСотрудников = Новый СписокЗначений;
СписокСотрудников.ЗагрузитьЗначения(МассивСотрудников);
РасчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.
ОсновныеНачисления. Оклад, СписокСотрудников);
Движения.Начисления.Записать( , Истина);
РасчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.
ОсновныеНачисления.Премия, СписокСотрудников);
Движения.Начисления.Записать( , Истина);
Обратите внимание: при проведении документа сначала записываются движения, сформированные документом, в регистр, а затем этот набор записей регистра передаются в процедуру расчета. Сначала для расчета первичных записей (Оклад), а затем для расчета вторичных (Премия). Процедура расчета на основе описанных в ней алгоритмов и данных, содержащихся в записях регистра, должна сформировать значения ресурсов регистра. После того, как ресурсы будут рассчитаны, перезаписывается набор записей регистра без формирования записей перерасчета (второй параметр в методе Записать() – Истина).
Перед вызовом процедуры из общего модуля формируется список сотрудников, содержащихся в документе, чтобы передать его в вызываемую процедуру.
Теперь создайте в ветке Общие новый общий модуль ПроведениеРасчетов. Укажите, что он будет глобальный, установите соответствующий флажок. Добавьте в него заготовку процедуры РасчитатьНачисления:
Процедура РасчитатьНачисления(НаборЗаписейРегистра, ТребуемыйВидРасчета,
СписокСотрудников) Экспорт
Регистратор = НаборЗаписейРегистра.Отбор.Регистратор.Значение;
// Рассчитать первичные записи
Если ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда
// Рассчитать вторичные записи
ИначеЕсли ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Премия Тогда
КонецЕсли;
КонецПроцедуры
Алгоритм расчета начислений будет различным при расчете первичных и вторичных записей, и каждая из его частей будет находиться в своей ветке условия Если .
При расчете первичных записей понадобятся данные графика из регистра расчета, поэтому добавьте в первую ветку условия запрос по виртуальной таблице регистра расчета РегистрРасчета.Начисления.ДанныеГрафика:
// Рассчитать первичные записи
Если ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НачисленияДанныеГрафика.ЗначениеПериодДействия КАК Норма,
| НачисленияДанныеГрафика.ЗначениеФактическийПериодДействия КАК Факт,
| НачисленияДанныеГрафика.НомерСтроки КАК НомерСтроки
|ИЗ
| РегистрРасчета.Начисления.ДанныеГрафика(
| Регистратор = &Регистратор И
| ВидРасчета = &ВидРасчета И
| Сотрудник В (&СписокСотрудников))
| КАК НачисленияДанныеГрафика";
Запрос.УстановитьПараметр("Регистратор", Регистратор);
Запрос.УстановитьПараметр("ВидРасчета", ТребуемыйВидРасчета);
Запрос.УстановитьПараметр("СписокСотрудников", СписокСотрудников);
ВыборкаРезультата = Запрос.Выполнить().Выбрать();
// Рассчитать вторичные записи
ИначеЕсли ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Премия Тогда
В этом запросе из виртуальной таблицы данных графика регистра расчета выбирается значение графика для периода действия и для фактического периода действия. При задании параметров виртуальной таблицы выборка ограничивается регистратором, нужным видом расчета и списком сотрудников, по которым нужно получить значения графика.
Теперь добавьте обход переданного в процедуру набора записей и расчет записей, для которых получены значения графика:
Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл
СтруктураНомер = Новый Структура("НомерСтроки");
СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки;
ВыборкаРезультата.Сбросить();
Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда
Если ВыборкаРезультата.Норма = 0 тогда
Сообщить("Вид расчета: Оклад – Нет рабочих дней в заданном периоде",);
ЗаписьРегистра.Результат = 0;
Иначе
// Рассчитать оклад по фактическому периоду и исходным данным
ЗаписьРегистра.Результат = (ЗаписьРегистра.ИсходныеДанные /ВыборкаРезультата.Норма) * ВыборкаРезультата.Факт;
Сообщить("Выполнен расчет" + ЗаписьРегистра.Регистратор + " - "
+ ЗаписьРегистра.ВидРасчета + " – " + ЗаписьРегистра.Сотрудник, );
КонецЕсли;
КонецЕсли;
КонецЦикла;
// Рассчитать вторичные записи
ИначеЕсли ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Премия
Для каждой записи из набора записей регистра расчета выбирается номер строки и по этому номеру ищется соответствующая запись в выборке из результата запроса. Если в результате запроса есть запись с таким номером строки, рассчитывается результат записи регистра расчета.
Добавьте текст запроса во вторую ветку условия Если … с той лишь разницей, что теперь будут формироваться значения базы, используя виртуальную таблицу регистра расчета РегистрРасчета.Начисления.БазаНачисления:
// Рассчитать вторичные записи
ИначеЕсли ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Премия Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НачисленияБазаНачисления.РезультатБаза КАК База,
| НачисленияБазаНачисления.НомерСтроки КАК НомерСтроки
|ИЗ
| РегистрРасчета.Начисления.БазаНачисления(
| &ИзмеренияОсновного,
| &ИзмеренияБазового, ,
| Регистратор = &Регистратор И
| ВидРасчета = &ВидРасчета И
Измер = Новый Массив(1);
Измер[0] = "Сотрудник";
Запрос.УстановитьПараметр("ИзмеренияОсновного", Измер);
Запрос.УстановитьПараметр("ИзмеренияБазового", Измер);
Запрос.УстановитьПараметр("Регистратор", Регистратор);
Запрос.УстановитьПараметр("ВидРасчета", ТребуемыйВидРасчета);
Запрос.УстановитьПараметр("СписокСотрудников", СписокСотрудников);
ВыборкаРезультата = Запрос.Выполнить().Выбрать();
В заключение осталось добавить во второе условие Если … обход набора записей регистра расчета и вычисление результата вторичных записей:
// Рассчитать вторичные записи
ИначеЕсли ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Премия Тогда
Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл
СтруктураНомер = Новый Структура("НомерСтроки");
СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки;
Код 1C v 8.х
Данная функция возвращает значение Истина, если хотя бы в одной из таблиц перерасчета есть хотя бы одна запись по данному документу. Если таких записей нет, то функция вернет значение Ложь, и перерассчитывать записи этого документа не нужно.
Собственно перерасчет записей, как и их расчет, рекомендуется выполнять в процедуре общего модуля по тем же причинам, что и расчет. Процедура перерасчета отличается от процедуры расчета только тем, что в расчете участвуют не все записи документа, а только удовлетворяющие усло- виям проводимого перерасчета. Например, только записи по конкретным сотрудникам и конкретным видам расчета.
Наконец, после того как нужные записи перерассчитаны, необхо- димо средствами встроенного языка удалить соответствующие записи из таблицы перерасчета, так как перерасчет больше не требуется.
Процедуру перерасчета записей документа рекомендуется помещать в модуле этого документа как экспортную процедуру. В этом случае она может быть вызвана из других модулей, в том числе из обработки перерасчета, описанной в предыдущем разделе. В качестве параметров в процедуру должна передаваться информация о том, какие именно записи документа необходимо перерассчитать. Ниже приведен пример такой процедуры, где в качестве параметра используется список сотрудников, по которым необходимо выполнить перерасчет.
Процедура перерасчета записей документа
Код 1C v 8.х
Процедуры общего модуля, выполняющие непосредственный перерасчет записей, по алгоритму схожи с процедурами расчета. Основное отличие состоит в том, что в процедурах перерасчета происходит расчет только тех записей, которые удовлетворяют заданным условиям. В данном случае это записи по заданному списку сотрудников. Также при перерасчете не нужно производить предварительную запись набора с формированием фактического периода действия, так как набор уже записан в регистр (перерассчитываемый документ всегда проведен). Ниже приведен пример процедур ПерерассчитатьЗаписиРегистраРасчета() и ПерерассчитатьНаборЗаписей(). Эти процедуры используют вызов тех же самых процедур и функций, которые используются при расчете.
Процедуры перерасчета записей
Код 1C v 8.х
Похожие FAQ
Автоматизация обмена данных используя обработку "Универсальный обмен данными в формате XML" 10
Автоматизация обмена между базами используя обработку " Универсальный обмен данными в формате XML" В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки " Универсальный обме Автоматическая выгрузка загрузка данных используя регламентное задание 12
Для обмена данными между программами необходимо сделать следующее: 1. При помощи Конвертации Данных создать правила выгрузки данных 2. Нужно чтобы в конфигурации была обработка УниверсальныйОбменДаннымиXML , желательно последней версии! (При помо Блокировка записей, невозможно изменить или удалить из регистра. Конфликт блокировок MS SQL + 1C 3
При попытке удалить запись из регистра сведений - получаю ошибку: она заблокирована, ошибка блокировок и т.д. Отключил всех пользователей, перезапустил сервер, пробую удалить - опять ошибка блокировки :( Путем тестов было вяснено, что проблема Восстановление партионного учета в УТ 1
Проблема следующая: при выполнении стандартной обработки " проведение по партиям" , непонятно почему, но граница актуальности партионного учета не сдвигается, хотя при перепроведении документов никаких ошибок не возникает. Оказывается: дата гр Временные таблицы 0
Не помню уже с какого релиза в запросах стало можно использовать временные таблицы. Для этого используется объект «Менеджер временных таблиц». Фактически менеджер временных таблиц описывает пространство имен временных таблиц и отвечает за их создание Посмотреть все результаты поиска похожих
Еще в этой же категории
Итак, в алгоритме работы с данными расчета осталось одно "узкое" место – контроль актуальности данных, содержащихся в регистре расчета. До сих пор пользователь использовал служебный отчет Перерасчет для того, чтобы определить, являются ли данные в регистре расчета актуальными или же они требуют перерасчета.
Теперь необходимо создать специальную процедуру, которая будет определять, требуется ли перерасчет данных регистра расчета и, если такая необходимость есть, выполнять перерасчет.
Поскольку единственным способом получения итоговой информации о начислениях сотрудникам в учебной конфигурации является отчет НачисленияСотрудникам, для вызова этой процедуры необходимо создать основную форму этого отчета и добавить кнопку Перерасчитать в командную панель ДействияФормы (рис. 267).
Рис. 267. Командная панель формы отчета НачисленияСотрудникам
В обработчик события нажатия кнопки Перерасчитать вставьте текст вызова процедуры перерасчета, очистки табличного поля и вывода нового результата:
Саму процедуру перерасчета поместите в общем модуле ПроведениеРасчетов:
Процедура ПерерасчитатьНачисления(ТребуемыйВидРасчета) Экспорт
// Здесь следует выбрать из набора записей перерасчета
// записи в следующей последовательности:
// записи документа1 для сотрудников из списка,
// записи документа2 для сотрудников из списка,
Запрос = Новый Запрос(
| РегистрРасчета.Начисления.Перерасчет КАК НачисленияПерерасчет
СписокСотрудников = Новый СписокЗначений;
// Перебрать группировку по регистратору.
Пока ВыборкаПоРегистратору.Следующий() Цикл
// Перебрать группировку по сотрудникам
// для выбранного регистратора
// и создать список сотрудников.
Пока ВыборкаПоСотрудникам.Следующий() Цикл
// Получить набор записей регистра расчета
// для выбранного регистратора.
РасчитатьНачисления(НаборЗаписей, ТребуемыйВидРасчета, СписокСотрудников);
// Очистить перерасчитанные записи в перерасчете.
В самом начале процедуры запросом выбираются данные о записях перерасчетов, содержащие переданный вид расчета и сгруппированные по объекту перерасчета. Далее, при обходе результата запроса, для каждого объекта перерасчета формируется список сотрудников, читаются соответствующие записи регистра расчета и вызывается процедура РасчитатьНачисления, которая использовалась вами при расчете записей документа НачисленияСотрудникам. После того, как расчет записей выполнен, набор записей записывается без формирования записей перерасчета и записи перерасчета очищаются по тому объекту перерасчета, который только что был обработан.
Запустите 1С:Предприятие и проверьте, как выполняется перерасчет записей регистра расчета.
Отмените проведение всех документов Начисления сотрудникам и проведите документ Начисления сотрудникам №1 и затем №2. Сформируйте отчет Начисления сотрудникам (рис. 268).
Теперь откройте документ Начисления сотрудникам №1, измените оклад Гусакова на 10000 и проведите документ. В отчете НачисленияСотрудникам нажмите кнопку "Перерасчитать". Будет выполнен перерасчет начисления премии Гусакову и Деловому (рис. 269).
Результат работы отчета будет содержать новые значения премии Гусакова (рис. 270).
Рис. 268. Отчет Начисления сотрудникам
Рис. 270. Отчет Начисления сотрудникам
И, наконец, проведите документ Начисления сотрудникам №3 и нажмите кнопку "Перерасчитать" в отчете НачисленияСотрудникам. Снова будет произведен перерасчет оклада и премии Гусакова (рис. 271).
А данные отчета будут содержать актуальные значения начисления оклада и премии (рис. 272).
В данной статье на примерах покажем принцип действия «механизма зависимости по базовому периоду«, а также покажем принцип действия перерасчётов в 1С. В качестве примера для расчёта возьмём расчёт премии сотрудника процентом от оклада, пусть премия сотруднику начисляется ежемесячно и её размер зависит от начисленного оклада за 2 предыдущих месяца.
Премия — это вид расчёта не обладающий протяжённостью во времени. Объекта для хранения видов расчётов не обладающих протяжённостью во времени у нас в конфигурации не предусмотрено. Создадим такой объект.
Добавим в конфигурацию план видов расчёта «ДополнительныеНачисления». Перейдём на вкладку «Расчет».
Флаг «Использует период действия» не устанавливаем так как план видов расчёта «ДополнительныеНачисления» не будет хранить виды расчётов обладающие протяжённостью во времени. Установим флаг «Зависимость от базы» в значение «Зависит по периоду действия«(в нашем случае база для расчета премии будет зависеть от периода действия оклада), если «Зависимость от базы» установить в значение «Зависит по периоду регистрации» тогда база для расчета премии будет зависеть от периода регистрации записи по окладу(поле ПериодРегистрации регистра расчёта).
В качестве базовых планов видов расчёта укажем ПВР «Основные начисления»(так как вид расчёта Оклад у нас хранится в ПВР «Основные начисления») и ПВР «Дополнительные начисления»(пусть в базу для расчёта премии у нас попадает не только оклад, но и премия начисленная в предыдущие периоды).
Создадим предопределённый вид расчёта «Премия».
На вкладке «Базовые» мы видим планы видов расчёта «Основные начисления» и «Дополнительные начисления»(это те ПВР, которые мы указали на вкладке «Расчёт» в качестве базовых планов видов расчёта). Укажем виды расчёта «Оклад» и «Премия». Примечание: в качестве базовых можно указать как протяжённые, так и не протяжённые во времени виды расчётов(в данном примере вид расчёта «Оклад» у нас обладает протяжённостью во времени, а премия нет).
На вкладке «Ведущие» укажем такие же виды расчёта «Оклад» и «Премия». На вкладке ведущие указываются виды расчётов при изменении которых требуется пересчитать текущий вид расчёта «Премия»(т.е. в данном случае при изменении оклада за прошлые периоды мы должны пересчитать премию за текущий период, а также при изменении премии за прошлые периоды мы должны пересчитать премию за текущий период). С вкладкой «Ведущие» связан объект «Перерасчёты«. Перерасчёт показывает какие данные необходимо пересчитать при изменении ведущих видов расчёта.
Создадим регистр расчёта «Дополнительные начисления».
На вкладке «Основное» укажем созданный ранее план видов расчета «Дополнительные начисления». Поставим флаг «Базовый период» — у нас стали доступны поля «Базовый период начало» и «Базовый период конец«. Укажем периодичность — месяц. В качестве регистратора укажем документ «Начисление зарплаты». Структура регистра показана выше — измерение «Сотрудник», ресурс «Сумма», реквизит «Параметр» для хранения процента премии.
В полях «Базовый период начало» и «Базовый период конец» мы указываем за какой период брать базу для расчёта премии.
Доработаем документ «Начисление зарплаты»:
Добавим табличную часть «Дополнительные начисления».
Реквизит «ВидРасчета» имеет тип «ПланВидовРасчетаСсылка.ДополнительныеНачисления», типы остальных реквизитов очевидны.
Дополним обработку проведения документа движениями по регистру расчета «ДополнительныеНачисления»:
Заполним в документе табличную часть «ДополнительныеНачисления» и проведём документ:
В движениях документа видим, что все поля заполнились кроме суммы т.к. расчёт премии ещё не сделали:
Базовый период для расчета премии у нас 01.01.2017-28.02.2017, процент премии-10, сотрудник Иванов.
Выполним расчёт премии:
Для этого дополним общий модуль «Расчет» кодом расчета премии, полный текст общего модуля расположен ниже:
Для расчёта премии используем виртуальную таблицу «БазаОсновныеНачисления«(эта таблица у нас доступна в конструкторе запросов так как мы для ПВР «ДополнительныеНачисления» в качестве базовых планов видов расчёта указали ПВР»ОсновныеНачисления»). База будет получена за интервал между «Базовый период начало» и «Базовый период конец» по виду расчёта «Оклад» так как он у нас входит в базу для премии. Так же в виртуальную таблицу необходимо передать массив измерений регистра в разрезе которых будем получать базу, у нас это измерение одно «Сотрудник», его и передаём. Если измерения будет 2, тогда передать 2.
Проверим, считается ли премия:
Создадим 2 документа с видом расчёта «Оклад» по сотруднику Иванов за Январь 2017 и Февраль 2017. На основе этих документов и будет собираться база для расчёта премии.
Перепроведём документ(за март 2017) в котором начисляем премию. В движениях документа видим, что премия рассчиталась и начислена в размере 12000 рублей.
Проверим расчёт премии: По сотруднику Иванов за период Январь 2017 — Февраль 2017 было начислено 120000 рублей оклада. (120000/100)*10 = 12000 рублей.
Перерасчёты
Теперь поговорим про перерасчеты.
Создадим в регистре расчёта «ДополнительныеНачисления» перерасчёт «Перерасчет1» с измерением «Сотрудник».
Свяжем измерение перерасчёта «Сотрудник» с измерением «Сотрудник» регистра «ДополнительныеНачисления» и измерениями регистров, указанных на вкладке «Ведущие».
Благодаря этой связи премия, начисленная на основании «Оклада» при изменении этого «Оклада» попадёт в перерасчёт. Это значит, что при изменении базы для премии по сотруднику Иванов, премия по сотруднику Иванов попадёт в перерасчёт.
Проверим так ли это…
Создадим отчёт на СКД на основе данных «Перерасчет1».
Изначально отчёт пустой…
Теперь изменим значение оклада по сотруднику Иванов за Февраль 2017 — было 60000 рублей, изменим на 80000 рублей.
В данной статье на примерах покажем принцип действия «механизма вытеснения по периоду действия«.
Для наглядности расчета Оклада добавим в структуру регистра расчета ресурс «ОтработаноЧасов» и реквизит «ЧасовПлан».
Следует понимать, что реквизиты регистра расчёта служат только для хранения справочных данных, ни в вытеснении, ни при получении базы для расчёта они не участвуют(мы не получаем базу для расчёта на основе реквизитов регистра расчета) поэтому «ЧасовПлан»(количество плановых рабочих часов в месяце) мы делаем реквизитом. На основе ресурсов регистра расчёта мы можем получать базу для расчета(скажем премии) поэтому «ОтработаноЧасов»(количество фактически отработанных работником часов в месяце) делаем ресурсом.
Будем заполнять добавленные поля при расчёте Оклада:
Перепроведём ранее созданный документ:
В движениях документа видно, что плановых часов в месяце 184, оклад сотрудника составляет 60000 рублей, отработанных часов в месяце 64, начисленная зарплата 20 869,57 рублей. Проверим, правильно ли рассчитался оклад: (60000/184) * 64 = 20 869,57 рублей.
В прошлой статье(см.Регистры расчета в 1С для чайников(Часть 1)) мы познакомились с виртуальной таблицей «ДанныеГрафика» регистра расчёта, сейчас изучим виртуальную таблицу «ФактическийПериодДействия«.
Виртуальная таблица «ФактическийПериодДействия» в результате выполнения запроса вернёт нам интервал(или интервалы т.к. их может быть несколько) времени на которых действовал вид расчёта Оклад.
Сформируем запрос к таблице «ФактическийПериодДействия» и выполним его в консоли запросов:
В качестве параметра «РегистраторДок» укажем ссылку на наш документ «Начисление зарплаты», в качестве параметра «Оклад» укажем вид расчёта «Оклад».
Результат выполнения запроса представлен ниже:
Как мы видим результат запроса выдал 1 строку с видом расчета «Оклад» и полями: «ПериодДействияНачало» равным 01.03.17, «ПериодДействияКонец» равным 10.03.17, «ОтработаноЧасов» равным 64. Таблица «ФактическийПериодДействия» вернула нам интервал действия вида расчёта Оклад до вытеснения командировкой.
Введём в плане видов расчёта «Основные начисления» новый вид расчёта «Командировка», командировка будет вытеснять «Оклад» по периоду действия.
В качестве вытесняющих видов расчёта для вида расчёта «Оклад» укажем вид расчёта «Командировка».
Дополним обработку проведения документа «Начисление зарплаты», для вида расчёта «Командировка» сразу же будем начислять фиксированную сумму:
Добавим в существующем документе вид расчёта командировка c 03.03.2017 по 05.03.2017 для сотрудника Иванов. Проведём документ.
В движениях документа видим 2 записи — по окладу и командировке.
По командировке сразу же начислена фиксированная сумма 5000 рублей. Так же мы видим, что поле «Отработано часов» по окладу также уменьшилось(было 64 часа, стало 56 часов). Произошло вытеснение вида расчёта «Оклад» видом расчёта «Командировка» по периоду действия т.к. период действия командировки расположен на периоде действия оклада и командировка имеет больший, чем оклад приоритет.
Примечание: Вытесняющий и вытесняемый виды расчетов должны принадлежать одному плану видов расчёта и обладать протяжённостью во времени. Механизм вытеснения не имеет смысла для видов расчётов не протяжённых во времени.
Командировкой был вытеснен 1 рабочий день(03.03.2017) вместо 3(03.03.2017-05.03.2017) так как даты 04.03.2017 и 05.03.2017 являются выходными днями исходя из графика работы.
Сформируем запрос к таблице «ФактическийПериодДействия» и выполним его в консоли запросов, мы получим результат после вытеснения оклада командировкой:
В результате выполнения запроса мы получили 2 записи по виду расчёта Оклад, 1 запись с периодом действия 01.03.2017-02.03.2017, 2 запись с периодом действия 06.03.2017-10.03.2017. Между этими 2 записями и действует вид расчёта «Командировка». P.S. Все остальные поля виртуальной таблицы «ФактическийПериодДействия» полностью аналогичны физической таблице регистра расчёта «Основные начисления».
Читайте также: