Как программно изменить реквизит ТЧ документа "Коррекировка записей регистров" 8.2

1. yamawa 50 29.12.16 10:48 Сейчас в теме
Как программно прочитать реквизит табличной части документа "Корректировка записей регистров" версия 8.2 и изменить его?
Вознаграждение за ответ
Показать полностью
Найденные решения
7. dmt 66 29.12.16 11:45 Сейчас в теме
Имя регистра проще получить так:

ВЫБРАТЬ
КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Имя
ИЗ
Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровНакопления КАК КорректировкаЗаписейРегистровТаблицаРегистровНакопления
ГДЕ
КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Ссылка = &Ссылка
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. dmt 66 29.12.16 10:54 Сейчас в теме
Как и любой регистр:
 Запрос = Новый Запрос;
	НаборЗаписей = РегистрыСведений.СкидкиНаценкиНоменклатуры.СоздатьНаборЗаписей();
	НаборЗаписей.Отбор.Регистратор.Установить(Док);
	НаборЗаписей.Прочитать();
	Для каждого зап Из НаборЗаписей Цикл
		
		зап.ДатаОкончания = '20151231';     
		
	КонецЦикла;
	НаборЗаписей.Записать();
Показать
3. yamawa 50 29.12.16 11:00 Сейчас в теме
(2) вы обращаешься непосредственно к регистру СкидкиНаценкиНоменклатуры, а в документе "Корректрировка записей регистров" несколько табличных частей и в каждой содержиться несколько регистров, как это реализовать?
4. yamawa 50 29.12.16 11:01 Сейчас в теме
т.е. мы не можем прописать конкретный регистр...
5. dmt 66 29.12.16 11:10 Сейчас в теме
Не сильно понял. Нужно понять какие именно регистры двигает КЗР? И в каком-то изменить движения? А как понять в каком?
6. yamawa 50 29.12.16 11:16 Сейчас в теме
(5)
Процедура УдалитьБитыеСсылки()
	Для Каждого Регистр Из Метаданные.РегистрыНакопления Цикл  				
		УдалитьБитыеСсылкиРН(Регистр.Имя);
	КонецЦикла;
КонецПроцедуры

Процедура УдалитьБитыеСсылкиРН(ИмяРегистра)
	Запрос = Новый Запрос(
	"ВЫБРАТЬ
	| Регистр.Регистратор
	|ИЗ
	| РегистрНакопления." + ИмяРегистра + " КАК Регистр
	|ГДЕ
	| Регистр.Регистратор = &ДокументКорректировки
	|
	|СГРУППИРОВАТЬ ПО
	| Регистр.Регистратор");
	
	Запрос.УстановитьПараметр("ДокументКоррекировки", ДокументКорректировки);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		НЗ = РегистрыНакопления[ИмяРегистра].СоздатьНаборЗаписей();
		НЗ.Отбор.Регистратор.Установить(Выборка.Регистратор);
		НЗ.Прочитать(); 		
		НЗ.Период=Дата("01.01.16");				
	КонецЦикла;
НЗ.Записать();
ДокументКорректировки.Записать();
КонецПроцедуры
Показать

Посмотрите так?
7. dmt 66 29.12.16 11:45 Сейчас в теме
Имя регистра проще получить так:

ВЫБРАТЬ
КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Имя
ИЗ
Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровНакопления КАК КорректировкаЗаписейРегистровТаблицаРегистровНакопления
ГДЕ
КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Ссылка = &Ссылка
8. yamawa 50 29.12.16 12:01 Сейчас в теме
спасибо,
у меня есть сомнение также по этому блоку модуля: в нем очевидно нет состыковки меджу записью полученной в запросе
Выборка.Следующий()
и записью полученной через метод
РегистрыНакопления[ИмяРегистра].СоздатьНаборЗаписей();
как в этом случае быть?
Пока Выборка.Следующий() Цикл
        НЗ = РегистрыНакопления[ИмяРегистра].СоздатьНаборЗаписей();
        НЗ.Отбор.Регистратор.Установить(Выборка.Регистратор);
        НЗ.Прочитать();         
        НЗ.Период=Дата("01.01.16");                
    КонецЦикла;
11. dmt 66 29.12.16 12:37 Сейчас в теме
(8) Как-то так:
Пока Выборка.Следующий() Цикл
        НЗ = РегистрыНакопления[Выборка.Имя].СоздатьНаборЗаписей();
        НЗ.Отбор.Регистратор.Установить(ДокументКорректировки);
        НЗ.Прочитать();         
        НЗ.Период=Дата("01.01.16");                
 КонецЦикла;


В выборке запрос из (7)
9. smirnova_a 29.12.16 12:09 Сейчас в теме
Сч01_01 = ПланыСчетов.Хозрасчетный.ОСвОрганизации;
Сч02_01 = ПланыСчетов.Хозрасчетный.АмортизацияОС_01;
Сч83_01 = ПланыСчетов.Хозрасчетный.ПриростСтоимостиИмуществаПоПереоценке;
ДБФ = Новый XBase;
ДБФ.ОткрытьФайл(ИмяФайла);
Если ДБФ.Открыта() Тогда
    Попытка
        НачатьТранзакцию();
        
  ДокКорректировка = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
        ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ДокКорректировка.ЭтотОбъект, ПараметрыСеанса.ТекущийПользователь);
        ДокКорректировка.Дата = Период;            

  НоваяСтрокаРегБух = ДокКорректировка.ТаблицаРегистровБухгалтерии.Добавить();
        НоваяСтрокаРегБух.Имя = "Хозрасчетный";
        НоваяСтрокаРегБух.Представление = "Журнал проводок (бухгалтерский учет)";
        
        ДокКорректировка.Записать();
        ДокКорректировкаСсылка = ДокКорректировка.Ссылка;
  
        НЗХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
        НЗХозрасчетный.Отбор.Регистратор.Значение = ДокКорректировкаСсылка;
  
        ДБФ.Первая();
        Пока Не ДБФ.ВКонце() Цикл
            ОсновноеСредство = Справочники.ОсновныеСредства.НайтиПоКоду(СокрЛП(ДБФ.OS));
            Если ОсновноеСредство.Пустая() Тогда
                Сообщить("Не найдено ОС с кодом " + ДБФ.OS + "!", СтатусСообщения.Важное);
                Продолжить;
            КонецЕсли;

            ЗХозрасчетный = НЗХозрасчетный.Добавить();
            ЗХозрасчетный.Период = Период;
            ЗХозрасчетный.Регистратор = ДокКорректировкаСсылка;
            ЗХозрасчетный.Организация = Организация;
            ЗХозрасчетный.Содержание  = "Увеличение первоначальной стоимости ОС";
            ЗХозрасчетный.СчетДт = Сч01_01;
            ЗХозрасчетный.СчетКт = Сч83_01;     
            БухгалтерскийУчет.УстановитьСубконто(ЗХозрасчетный.СчетДт, ЗХозрасчетный.СубконтоДт, "ОсновныеСредства", ОсновноеСредство);
            БухгалтерскийУчет.УстановитьСубконто(ЗХозрасчетный.СчетКт, ЗХозрасчетный.СубконтоКт, "ОсновныеСредства", ОсновноеСредство);
            ЗХозрасчетный.Сумма = ДБФ.SumB;

            ЗХозрасчетный = НЗХозрасчетный.Добавить();
            ЗХозрасчетный.Период = Период;
            ЗХозрасчетный.Регистратор = ДокКорректировкаСсылка;
            ЗХозрасчетный.Организация = Организация;
            ЗХозрасчетный.Содержание  = "Увеличение накопленной амортизации ОС";
            ЗХозрасчетный.СчетДт = Сч83_01;
            ЗХозрасчетный.СчетКт = Сч02_01;     
            БухгалтерскийУчет.УстановитьСубконто(ЗХозрасчетный.СчетДт, ЗХозрасчетный.СубконтоДт, "ОсновныеСредства", ОсновноеСредство);
            БухгалтерскийУчет.УстановитьСубконто(ЗХозрасчетный.СчетКт, ЗХозрасчетный.СубконтоКт, "ОсновныеСредства", ОсновноеСредство);
            ЗХозрасчетный.Сумма = ДБФ.AmortB;

            ДБФ.Следующая();
        КонецЦикла;
        ДБФ.ЗакрытьФайл();
        НЗХозрасчетный.Записать();

        ЗафиксироватьТранзакцию();
    Исключение
        Сообщить(ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
        ОтменитьТранзакцию();
    КонецПопытки;
КонецЕсли;   
Показать
10. yamawa 50 29.12.16 12:12 Сейчас в теме
(9) у вас создать документ, а мне нужно уже готовый прочитать и изменить реквизит
12. yamawa 50 29.12.16 12:40 Сейчас в теме
Процедура УдалитьБитыеСсылки()
	
		Запрос = Новый Запрос(
		"ВЫБРАТЬ
		|	КорректировкаЗаписейРегистровТаблицаРегистровСведений.Имя КАК Имя
		|ИЗ
		|	Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровСведений КАК КорректировкаЗаписейРегистровТаблицаРегистровСведений
		|ГДЕ
		|	КорректировкаЗаписейРегистровТаблицаРегистровСведений.Ссылка = &ДокументКорректировки");
		Запрос.УстановитьПараметр("ДокументКорректировки",ДокументКорректировки);
		Выборка = Запрос.Выполнить().Выбрать();
		Пока Выборка.Следующий() Цикл
			НЗ = РегистрыСведений[Выборка.Имя].СоздатьНаборЗаписей();
			НЗ.Отбор.Регистратор.Установить(ДокументКорректировки);
			Нз.Прочитать();
			Для Каждого СтрокаРС Из НЗ Цикл
			СтрокаРС.Период = ДатаКоррекировки;
			КонецЦикла;
		КонецЦикла;
		НЗ.Записать();   
		ДокументКорректировки.ПолучитьОбъект().Записать();
////////////////////////////////////////////////////////////­///////////////////		
		Запрос = Новый Запрос(
		"ВЫБРАТЬ
		|	КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Имя КАК Имя
		|ИЗ
		|	Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровНакопления КАК КорректировкаЗаписейРегистровТаблицаРегистровНакопления
		|ГДЕ
		|	КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Ссылка = &ДокументКорректировки");
		Запрос.УстановитьПараметр("ДокументКорректировки",ДокументКорректировки);
		Выборка = Запрос.Выполнить().Выбрать();
		Пока Выборка.Следующий() Цикл
			НЗ = РегистрыНакопления[Выборка.Имя].СоздатьНаборЗаписей();
			НЗ.Отбор.Регистратор.Установить(ДокументКорректировки);
			Нз.Прочитать();
			Для Каждого СтрокаРС Из НЗ Цикл
			СтрокаРС.Период = ДатаКоррекировки;
			КонецЦикла;
		КонецЦикла;
		НЗ.Записать();   
		ДокументКорректировки.ПолучитьОбъект().Записать();    		
		
КонецПроцедуры
Показать

Изменили текст модуля как вы сказали, теперь работает
13. yamawa 50 29.12.16 14:09 Сейчас в теме
большое вам спасибо! вознаграждение вам перечислили
14. zoomzd1234 22.01.17 19:07 Сейчас в теме
Можно на примере запроса как я делал..

Функция ПолучитьСтатусОборудования(Оборудование)
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                    |   ДвижениеОборудованияСрезПоследних.Статус
                    |ИЗ
                    |   РегистрСведений.ДвижениеОборудования.СрезПоследних(, ШтрихКод = &ШтрихКод) КАК ДвижениеОборудованияСрезПоследних"
                    ;
    Запрос.УстановитьПараметр("ШтрихКод",Оборудование);
    Результат = Запрос.Выполнить();
    Если Результат.Пустой() Тогда 
        //возврат статуса для оборудования, у которого нет еще данных о статусе
        //в регистре сведений
        возврат <<Перечисления.СтатусыОборудования.???>>
        //или
        возврат Неопределено;
    КонецЕсли; 
    
    СтатусОборудованияВыборка = Результат.Выбрать();
    СтатусОборудованияВыборка.Следующий();
    Возврат СтатусОборудованияВыборка.Статус;
    
КонецФункции
Показать
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)