Добавление в набор сторно-записей Если в рассчитываемом регистре установлено свойство Период действия, в сформированном наборе могут присутствовать записи, у которых период действия принадлежит более раннему периоду, чем период регистрации. В этом случае они могут вступать в конкуренцию на этом периоде действия с записями более раннего периода регистрации. Чтобы такие записи могли иметь непустой фактический период действия, необходимо допол- нить сформированный набор соответствующими сторно-записями.
Добавление сторно-записей происходит с использованием метода
ПолучитьДополнение() набора записей регистра. Ниже приведен текст модуля, позволяющий добавить в набор сторно-записи. Добавление записи происходит при помощи вызова процедуры
ДобавитьСтрокуСторноОсновныхНачислений() , которая должна быть описана в процедуре
РассчитатьОсновныеНачисления() . При этом для каждой сторно- записи необходимо добавить новую строку в табличную часть документа, чтобы при проведении эта запись попала в регистр
Код 1C v 8.х
Процедура ДобавитьСтрокуСторноОсновныхНачислений(ДанныеСтроки,
НаборЗаписей, ТабличнаяЧасть = Неопределено)
Движение = НаборЗаписей. Добавить( ) ;
Движение. ПериодРегистрации = ДанныеСтроки. ПериодРегистрацииСторно;
Движение. ПериодДействияНачало = ДанныеСтроки. ПериодДействияНачалоСторно;
Движение. ПериодДействияКонец = ДанныеСтроки. ПериодДействияКонецСторно;
Движение. ВидРасчета = ДанныеСтроки. ВидРасчета;
Движение. Сторно = Истина ;
Движение. ФизЛицо = ДанныеСтроки. ФизЛицо;
Движение. Организация = ДанныеСтроки. Организация;
Движение. ГрафикРаботы = ДанныеСтроки. ГрафикРаботы;
Движение. Размер = ДанныеСтроки. Размер;
Движение. ВидУчетаВремени = ДанныеСтроки. ВидУчетаВремени;
Движение. Подразделение = ДанныеСтроки. Подразделение;
Движение. СтатьяЗатрат = ДанныеСтроки. СтатьяЗатрат;
Если Не ТабличнаяЧасть = Неопределено Тогда
НоваяСтрока = ТабличнаяЧасть. Добавить( ) ;
НоваяСтрока. ФизЛицо = ДанныеСтроки. ФизЛицо;
НоваяСтрока. ВидРасчета = ДанныеСтроки. ВидРасчета;
НоваяСтрока. ДатаНачало = ДанныеСтроки. ПериодДействияНачалоСторно;
НоваяСтрока. ДатаКонец = ДанныеСтроки. ПериодДействияКонецСторно;
НоваяСтрока. Размер = ДанныеСтроки. Размер;
НоваяСтрока. Подразделение = ДанныеСтроки. Подразделение;
НоваяСтрока. Сторно = Истина ;
КонецЕсли ;
КонецПроцедуры
Процедура РассчитатьОсновныеНачисления() Экспорт
НачатьТранзакцию( ) ;
ТаблицаСторно = НаборОсновныеНачисления. ПолучитьДополнение( ) ;
Для Каждого СтрокаСторно из ТаблицаСторно Цикл
ДобавитьСтрокуСторноОсновныхНачислений( СтрокаСторно,
НаборОсновныеНачисления,
ОсновныеНачисления) ;
КонецЦикла ;
ЗафиксироватьТранзакцию( ) ;
КонецПроцедуры
При формировании сторно-записей данные всех измерений и реквизитов записи указаны в строке дополнения. Также в этой строке содержатся данные о периоде регистрации и периоде действия сторно-записи. Ресурсы сторно-записи не заполняются, так как запись будет рассчитана в общем порядке
Категория:
Регистры расчета Формирование записей регистра расчета Для формирования записей регистра расчета используется метод Добавить() объекта
РегистрРасчетаНаборЗаписей
Код 1C v 8.2 УП
Процедура ДобавитьСтрокуОсновныхНачислений(ДанныеСтроки, НаборЗаписей)
Движение = НаборЗаписей. Добавить( ) ;
Движение. ПериодРегистрации = ПериодРегистрации;
Движение. ПериодДействияНачало = ДанныеСтроки. ДатаНачало;
Движение. ПериодДействияКонец = ДанныеСтроки. ДатаКонец;
Движение. ВидРасчета = ДанныеСтроки. ВидРасчета;
Движение. Сторно = ДанныеСтроки. Сторно;
Движение. ФизЛицо = ДанныеСтроки. ФизЛицо; Движение. Организация= Организация;
Движение. Результат = ДанныеСтроки. Результат;
Движение. ГрафикРаботы = ДанныеСтроки. ФизЛицо. ГрафикРаботы;
Движение. Размер = ДанныеСтроки. Размер;
Движение. ВидУчетаВремени = ДанныеСтроки. ВидРасчета. ВидУчетаВремени;
Движение. Подразделение = ДанныеСтроки. Подразделение;
Движение. СтатьяЗатрат = ДанныеСтроки. ВидРасчета. СтатьяЗатрат;
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ)
Движения. ОсновныеНачисленияРегл. Записывать = Истина ; Движения. ДополнительныеНачисленияРегл. Записывать = Истина ;
СформироватьЗапросПоТабличнойЧасти( ЭтотОбъект, "ОсновныеНачисления" ) . Выбрать( ) ;
ДобавитьСтрокуОсновныхНачислений( ВыборкаОсновныеНачисления, Движения. ОсновныеНачисленияРегл) ;
настройка алгоритмов расчета
КонецЦикла ;
ВыборкаДополнительныеНачисления = ОбщегоНазначения.
СформироватьЗапросПоТабличнойЧасти( ЭтотОбъект, "ДополнительныеНачисления" ) . Выбрать( ) ;
Пока ВыборкаДополнительныеНачисления. Следующий( ) Цикл
ДобавитьСтрокуДополнительныхНачислений( ВыборкаДополнительныеНачисления, Движения. ДополнительныеНачисленияРегл) ;
КонецЦикла ;
КонецПроцедуры
Категория:
Регистры расчета Выбрать документы за период, установить значение в реквизит табличной части и провести документ Код 1C v 8.х
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| РасходныйКассовыйОрдер.Ссылка
|ИЗ
| Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
|ГДЕ
| РасходныйКассовыйОрдер.Дата МЕЖДУ &ДатаН И &ДатаК
| И РасходныйКассовыйОрдер.Ответственный = &Ответственный" ;
Запрос. УстановитьПараметр( "ДатаН" , ЭлементыФормы. НачПериода. Значение) ;
Запрос. УстановитьПараметр( "ДатаК" , ЭлементыФормы. КонПериода. Значение) ;
Запрос. УстановитьПараметр( "Ответственный" , Ответственный) ;
Результат = Запрос. Выполнить( ) ;
Выборка = Результат. Выбрать( ) ;
Пока Выборка. Следующий( ) Цикл
Док = Выборка. Ссылка. ПолучитьОбъект( ) ;
Если ПустаяСтрока( Док. РасшифровкаПлатежа[0 ]. СтатьяДвиженияДенежныхСредств) тогда
Док. РасшифровкаПлатежа[0 ]. СтатьяДвиженияДенежныхСредств= СтатьяЗатрат;
Док. Записать( РежимЗаписиДокумента. Проведение) ;
Сообщить( Док) ;
КонецЕсли ;
КонецЦикла ;
Категория:
Документы