Имя: Пароль:
1C
1С v8
Получить значение из регистра накопления
, ,
0 Adgjj
 
15.08.12
11:09
Здравствуйте!
При проведении документа "ТТД" надо в обновленной записи РегистрыНакопления.уатВыработкаПоСтоимости оставлять старое значение поля "Счет". Значение поля счет записывается в регистр не из ТТД, поэтому надо его сохранить. У меня НЗ - пустая таблица получается.

Функция ФормированиеДвижений(Отказ, Заголовок, РежимПроведения)
   
   НЗ = РегистрыНакопления.уатВыработкаПоСтоимости.СоздатьНаборЗаписей();
         НЗ.Отбор.Регистратор.Использование = Истина;
         //для каждого СтрокаУслуги из Услуги Цикл
             НЗ.Отбор.Регистратор.Значение = ЭтотОбъект.Ссылка; //СтрокаУслуги.ДокументОснование;
             НЗ.Прочитать();
             Для Каждого Запись Из НЗ Цикл   //если строк в ТТД несколько, для них в уатВыработкаПоСтоимости поле "Счет" будет одно и тоже
                 //Запись.Счет = ЭтотОбъект.Ссылка;
                 Счет = Запись.Счет;
              КонецЦикла;
             //НЗ.Записать();
         //конеццикла;

   НаборДвижений   = Движения.уатВыработкаПоСтоимости;
   ТаблицаДвижений = НаборДвижений.Выгрузить();
   
   Для Каждого ТекСтрока Из Стоимость Цикл
       НоваяСтрока                    = ТаблицаДвижений.Добавить();
       
       //НоваяСтрока.Счет                = 1;
       НоваяСтрока.Период                = Дата;
       НоваяСтрока.Контрагент            = Контрагент;
1 Adgjj
 
15.08.12
11:12
поле "Счет" регистра заполняется при использовании ТТД в документе "Счет", чтобы в след. раз уже использованные ТТД в других счетах в новый счет не попадали.
2 Adgjj
 
15.08.12
11:13
Изменение связано с тем, что при изменении времени (например) в ТТД поле "Счет" очищается
3 DrShad
 
15.08.12
11:13
(0) что за адский отжиг?
4 ptiz
 
15.08.12
11:15
(0) Странный подход. А если документ сначала распроведут, а потом проведут?
Зачем "СоздатьНаборЗаписей", когда есть свойство Движения?
5 Liova
 
15.08.12
11:15
Нифига не понял, но может сделать поле СуперПуперСчет и его не очищать и из него писать в регистр?
6 Лоботряс
 
15.08.12
11:16
Конечно пустая, если стоит удаление движений "удалять автоматически"
7 Adgjj
 
15.08.12
13:47
Решила не трогать регистр документа "ТТД", создала новый регистр - РегистрыСведений.ВКакомСчетеТТД с режимом записи "Подчинение регистратору", полями Активность,Регистратор(Счет),ТТД. В Процедура ПриЗаписи(Отказ) модуля объекта документа уатСчетНаОплатуПокупателю пишу:

НЗ = РегистрыСведений.ВКакомСчетеТТД.СоздатьНаборЗаписей();
         НЗ.Отбор.Регистратор.Значение      = ЭтотОбъект.Ссылка; //Счет
         НЗ.Отбор.Регистратор.Использование = Истина;
         для каждого СтрокаУслуги из Услуги Цикл
             //НЗ.Отбор.Регистратор.Значение = ЭтотОбъект.Ссылка; //СтрокаУслуги.ДокументОснование;
             НЗ.Прочитать();
             Для Каждого Запись Из НЗ Цикл
                 //Запись.Счет = ЭтотОбъект.Ссылка;
                 Запись.ТТД = СтрокаУслуги.ДокументОснование;
             КонецЦикла;
             НЗ.Записать();
         конеццикла;

НЗ пустая, поэтому записи в регистр не помещаются. Как исправить код?
8 Reset
 
15.08.12
13:49
НЗ = РегистрыСведений.ВКакомСчетеТТД.СоздатьНаборЗаписей();
         НЗ.Отбор.Регистратор.Значение      = ЭтотОбъект.Ссылка; //Счет

         НЗ.Отбор.Регистратор.Использование = Истина;
         для каждого СтрокаУслуги из Услуги Цикл

Запись=НЗ.Добавить();
                 Запись.ТТД = СтрокаУслуги.ДокументОснование;
Запись.Регистратор=Ссылка;
         конеццикла;
             НЗ.Записать();
9 Reset
 
15.08.12
13:53
+В (4) верно сказано
10 Adgjj
 
15.08.12
13:54
Спасибо большое, Reset, получилось
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший