Как программно изменить реквизит ТЧ документа "Коррекировка записей регистров" 8.2
Найденные решения
Имя регистра проще получить так:
ВЫБРАТЬ
КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Имя
ИЗ
Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровНакопления КАК КорректировкаЗаписейРегистровТаблицаРегистровНакопления
ГДЕ
КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Ссылка = &Ссылка
ВЫБРАТЬ
КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Имя
ИЗ
Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровНакопления КАК КорректировкаЗаписейРегистровТаблицаРегистровНакопления
ГДЕ
КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Ссылка = &Ссылка
Остальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Как и любой регистр:
Запрос = Новый Запрос;
НаборЗаписей = РегистрыСведений.СкидкиНаценкиНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Док);
НаборЗаписей.Прочитать();
Для каждого зап Из НаборЗаписей Цикл
зап.ДатаОкончания = '20151231';
КонецЦикла;
НаборЗаписей.Записать();
Показать
(5)
Посмотрите так?
Процедура УдалитьБитыеСсылки()
Для Каждого Регистр Из Метаданные.РегистрыНакопления Цикл
УдалитьБитыеСсылкиРН(Регистр.Имя);
КонецЦикла;
КонецПроцедуры
Процедура УдалитьБитыеСсылкиРН(ИмяРегистра)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Регистр.Регистратор
|ИЗ
| РегистрНакопления." + ИмяРегистра + " КАК Регистр
|ГДЕ
| Регистр.Регистратор = &ДокументКорректировки
|
|СГРУППИРОВАТЬ ПО
| Регистр.Регистратор");
Запрос.УстановитьПараметр("ДокументКоррекировки", ДокументКорректировки);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НЗ = РегистрыНакопления[ИмяРегистра].СоздатьНаборЗаписей();
НЗ.Отбор.Регистратор.Установить(Выборка.Регистратор);
НЗ.Прочитать();
НЗ.Период=Дата("01.01.16");
КонецЦикла;
НЗ.Записать();
ДокументКорректировки.Записать();
КонецПроцедуры
ПоказатьПосмотрите так?
Имя регистра проще получить так:
ВЫБРАТЬ
КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Имя
ИЗ
Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровНакопления КАК КорректировкаЗаписейРегистровТаблицаРегистровНакопления
ГДЕ
КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Ссылка = &Ссылка
ВЫБРАТЬ
КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Имя
ИЗ
Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровНакопления КАК КорректировкаЗаписейРегистровТаблицаРегистровНакопления
ГДЕ
КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Ссылка = &Ссылка
спасибо,
у меня есть сомнение также по этому блоку модуля: в нем очевидно нет состыковки меджу записью полученной в запросе и записью полученной через метод как в этом случае быть?
у меня есть сомнение также по этому блоку модуля: в нем очевидно нет состыковки меджу записью полученной в запросе
Выборка.Следующий()
РегистрыНакопления[ИмяРегистра].СоздатьНаборЗаписей();
Пока Выборка.Следующий() Цикл
НЗ = РегистрыНакопления[ИмяРегистра].СоздатьНаборЗаписей();
НЗ.Отбор.Регистратор.Установить(Выборка.Регистратор);
НЗ.Прочитать();
НЗ.Период=Дата("01.01.16");
КонецЦикла;
Сч01_01 = ПланыСчетов.Хозрасчетный.ОСвОрганизации;
Сч02_01 = ПланыСчетов.Хозрасчетный.АмортизацияОС_01;
Сч83_01 = ПланыСчетов.Хозрасчетный.ПриростСтоимостиИмуществаПоПереоценке;
ДБФ = Новый XBase;
ДБФ.ОткрытьФайл(ИмяФайла);
Если ДБФ.Открыта() Тогда
Попытка
НачатьТранзакцию();
ДокКорректировка = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ДокКорректировка.ЭтотОбъект, ПараметрыСеанса.ТекущийПользователь);
ДокКорректировка.Дата = Период;
НоваяСтрокаРегБух = ДокКорректировка.ТаблицаРегистровБухгалтерии.Добавить();
НоваяСтрокаРегБух.Имя = "Хозрасчетный";
НоваяСтрокаРегБух.Представление = "Журнал проводок (бухгалтерский учет)";
ДокКорректировка.Записать();
ДокКорректировкаСсылка = ДокКорректировка.Ссылка;
НЗХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НЗХозрасчетный.Отбор.Регистратор.Значение = ДокКорректировкаСсылка;
ДБФ.Первая();
Пока Не ДБФ.ВКонце() Цикл
ОсновноеСредство = Справочники.ОсновныеСредства.НайтиПоКоду(СокрЛП(ДБФ.OS));
Если ОсновноеСредство.Пустая() Тогда
Сообщить("Не найдено ОС с кодом " + ДБФ.OS + "!", СтатусСообщения.Важное);
Продолжить;
КонецЕсли;
ЗХозрасчетный = НЗХозрасчетный.Добавить();
ЗХозрасчетный.Период = Период;
ЗХозрасчетный.Регистратор = ДокКорректировкаСсылка;
ЗХозрасчетный.Организация = Организация;
ЗХозрасчетный.Содержание = "Увеличение первоначальной стоимости ОС";
ЗХозрасчетный.СчетДт = Сч01_01;
ЗХозрасчетный.СчетКт = Сч83_01;
БухгалтерскийУчет.УстановитьСубконто(ЗХозрасчетный.СчетДт, ЗХозрасчетный.СубконтоДт, "ОсновныеСредства", ОсновноеСредство);
БухгалтерскийУчет.УстановитьСубконто(ЗХозрасчетный.СчетКт, ЗХозрасчетный.СубконтоКт, "ОсновныеСредства", ОсновноеСредство);
ЗХозрасчетный.Сумма = ДБФ.SumB;
ЗХозрасчетный = НЗХозрасчетный.Добавить();
ЗХозрасчетный.Период = Период;
ЗХозрасчетный.Регистратор = ДокКорректировкаСсылка;
ЗХозрасчетный.Организация = Организация;
ЗХозрасчетный.Содержание = "Увеличение накопленной амортизации ОС";
ЗХозрасчетный.СчетДт = Сч83_01;
ЗХозрасчетный.СчетКт = Сч02_01;
БухгалтерскийУчет.УстановитьСубконто(ЗХозрасчетный.СчетДт, ЗХозрасчетный.СубконтоДт, "ОсновныеСредства", ОсновноеСредство);
БухгалтерскийУчет.УстановитьСубконто(ЗХозрасчетный.СчетКт, ЗХозрасчетный.СубконтоКт, "ОсновныеСредства", ОсновноеСредство);
ЗХозрасчетный.Сумма = ДБФ.AmortB;
ДБФ.Следующая();
КонецЦикла;
ДБФ.ЗакрытьФайл();
НЗХозрасчетный.Записать();
ЗафиксироватьТранзакцию();
Исключение
Сообщить(ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
ОтменитьТранзакцию();
КонецПопытки;
КонецЕсли;
Показать
Процедура УдалитьБитыеСсылки()
Запрос = Новый Запрос(
"ВЫБРАТЬ
| КорректировкаЗаписейРегистровТаблицаРегистровСведений.Имя КАК Имя
|ИЗ
| Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровСведений КАК КорректировкаЗаписейРегистровТаблицаРегистровСведений
|ГДЕ
| КорректировкаЗаписейРегистровТаблицаРегистровСведений.Ссылка = &ДокументКорректировки");
Запрос.УстановитьПараметр("ДокументКорректировки",ДокументКорректировки);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НЗ = РегистрыСведений[Выборка.Имя].СоздатьНаборЗаписей();
НЗ.Отбор.Регистратор.Установить(ДокументКорректировки);
Нз.Прочитать();
Для Каждого СтрокаРС Из НЗ Цикл
СтрокаРС.Период = ДатаКоррекировки;
КонецЦикла;
КонецЦикла;
НЗ.Записать();
ДокументКорректировки.ПолучитьОбъект().Записать();
//////////////////////////////////////////////////////////// ///////////////////
Запрос = Новый Запрос(
"ВЫБРАТЬ
| КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Имя КАК Имя
|ИЗ
| Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровНакопления КАК КорректировкаЗаписейРегистровТаблицаРегистровНакопления
|ГДЕ
| КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Ссылка = &ДокументКорректировки");
Запрос.УстановитьПараметр("ДокументКорректировки",ДокументКорректировки);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НЗ = РегистрыНакопления[Выборка.Имя].СоздатьНаборЗаписей();
НЗ.Отбор.Регистратор.Установить(ДокументКорректировки);
Нз.Прочитать();
Для Каждого СтрокаРС Из НЗ Цикл
СтрокаРС.Период = ДатаКоррекировки;
КонецЦикла;
КонецЦикла;
НЗ.Записать();
ДокументКорректировки.ПолучитьОбъект().Записать();
КонецПроцедуры
ПоказатьИзменили текст модуля как вы сказали, теперь работает
Можно на примере запроса как я делал..
Функция ПолучитьСтатусОборудования(Оборудование)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ДвижениеОборудованияСрезПоследних.Статус
|ИЗ
| РегистрСведений.ДвижениеОборудования.СрезПоследних(, ШтрихКод = &ШтрихКод) КАК ДвижениеОборудованияСрезПоследних"
;
Запрос.УстановитьПараметр("ШтрихКод",Оборудование);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
//возврат статуса для оборудования, у которого нет еще данных о статусе
//в регистре сведений
возврат <<Перечисления.СтатусыОборудования.???>>
//или
возврат Неопределено;
КонецЕсли;
СтатусОборудованияВыборка = Результат.Выбрать();
СтатусОборудованияВыборка.Следующий();
Возврат СтатусОборудованияВыборка.Статус;
КонецФункции
Показать