|
|
|
1c8 не пишет в регистр накопления | ☑ | ||
|---|---|---|---|---|
|
0
Fr1eNd
22.11.10
✎
15:35
|
Столкнулся со странной проблемой, дописывая простой управленческий учёт, не пишет регистр накопления (обороты)
причём в одной конфигурации работает как часы, а в другой всё тоже самое не хочет, ниже код НовЗапись = РегистрыНакопления.ууДоходыРасходы.СоздатьНаборЗаписей(); НовЗапись.Отбор.Регистратор.Установить(ЭтотОбъект.Ссылка); Движение = НовЗапись.Добавить(); Движение.Период = ЭтотОбъект.Ссылка.Дата; Движение.СтатьяДоходовРасходовУУ = ЭтотОбъект.Ссылка.ууСтатьяДоходовРасходов; Движение.Сумма = ЭтотОбъект.Ссылка.СуммаДокумента; НовЗапись.Записать(); причём никаких ошибок не выдаёт, в отладчики всё заполняет ни на что не ругается, конфигурация БП 2.0, вчём может быть затык? |
|||
|
1
Живой Ископаемый
22.11.10
✎
15:36
|
как понял что не пишет? :)
|
|||
|
2
Fr1eNd
22.11.10
✎
15:36
|
нет записей в регистре, отчёты не формируются))
|
|||
|
3
КМ155
22.11.10
✎
15:39
|
(0) писать то пишет, но без активности
|
|||
|
4
НЕА123
22.11.10
✎
15:41
|
(0)
подчиненных спроси. ЗЫ. это я в личку глянул. |
|||
|
5
denis_jj
22.11.10
✎
15:45
|
1. А что у вас с режимом совместимости 8.1 и 8.2 ?
2. В какой процедуре этот код? 3. Откуда происходит проведение (из формы документа, из формы списка, програмно или ещё как)? |
|||
|
6
Шапокляк
22.11.10
✎
15:47
|
(0) Может какой добрый человек отключил использование итогов, а потом забыл включить?
|
|||
|
7
Живой Ископаемый
22.11.10
✎
15:48
|
2(6) это не должно мешать записи записей РН.
|
|||
|
8
Defender aka LINN
22.11.10
✎
15:49
|
(0) Пипец. И где вас так учили движения документа делать?
|
|||
|
9
DrShad
22.11.10
✎
15:53
|
(0) вот же сволочь какая! это ж надо
|
|||
|
10
Широкий
22.11.10
✎
15:59
|
(0) Это в обработке проведения что ли?
|
|||
|
11
Шапокляк
22.11.10
✎
16:00
|
(7) см (3)
|
|||
|
12
Maxus43
22.11.10
✎
16:01
|
Активность по умолчанию истина, не?
|
|||
|
13
Живой Ископаемый
22.11.10
✎
16:01
|
2(11) см. (2) - говорит нет записей в регистре... Правда может он не так смотрит как я бы смотрел...
|
|||
|
14
redbull
22.11.10
✎
16:02
|
Движение.Регистратор = Ссылка?
|
|||
|
15
Шапокляк
22.11.10
✎
16:04
|
(13) да... наверно КМ155 его подчиненный? Сложно у них все в этом отделе продаж.
|
|||
|
16
redbull
22.11.10
✎
16:05
|
ты не делаешь запись документа?
Потому, что у документа есть Движения и при записи он затирает все записи в БД тем что у него в свойстве Движения |
|||
|
17
Maxus43
22.11.10
✎
16:05
|
(14) +1
|
|||
|
18
DrShad
22.11.10
✎
16:08
|
(14) садись два
|
|||
|
19
Serginio1
22.11.10
✎
16:14
|
Мне нужно было перепроводить только по одному регистру, поэтому должна была отдельно работатьУ меня так работает
Процедура УстановитьДопЗначенияРегистров(Тз,Регистратор,ВидДвижения="") Экспорт Тз.ЗаполнитьЗначения(Регистратор.Дата,"Период"); Тз.ЗаполнитьЗначения(Регистратор,"Регистратор"); Тз.ЗаполнитьЗначения(1,"Активность"); Если ВидДвижения="" Тогда Тз.ЗаполнитьЗначения(ВидДвиженияНакопления.Расход,"ВидДвижения"); Иначе Тз.ЗаполнитьЗначения(ВидДвижения,"ВидДвижения"); КонецЕсли; Тз.ЗаполнитьЗначения(Регистратор.МоментВремени(),"МоментВремени"); КонецПроцедуры УстановитьДопЗначенияРегистров(Тз,ДокСсылка); НаборЗаписей=РегистрыНакопления.акПродажи.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.регистратор.Установить(ДокСсылка); НаборЗаписей.Загрузить(Тз); НаборЗаписей.Записать(); |
|||
|
20
redbull
22.11.10
✎
16:17
|
(18) два-то за что?
|
|||
|
21
Fr1eNd
22.11.10
✎
16:20
|
(8) про свойство движения знаю, вызов происходит из обработки проведения, в другой базе код нормально отрабатывает и всё пишет
(12) Активность по умолчанию истина (14)садись 2 (16) Движения здесь не при чём |
|||
|
22
Fr1eNd
22.11.10
✎
16:22
|
(19) ты тоже самое делаешь только из таблице значений
|
|||
|
23
Fr1eNd
22.11.10
✎
16:24
|
(13) и как бы ты смотрел запросом к базе
|
|||
|
24
Maxus43
22.11.10
✎
16:36
|
Резюмируем - Чудес не бывает (с)
|
|||
|
25
luckyluke
22.11.10
✎
16:37
|
(21) вопрос в другом, нахрена ты делаешь НаборЗаписей, если можно юзать движения.
(21) отладчик то запускал? У тебя этот код хоть выполняется? (0) почему десь "Движение.Сумма = ЭтотОбъект.Ссылка.СуммаДокумента;" надо обращаться через ссылку к реквизиту объекта? Почему нельзя у объекта его взять? |
|||
|
26
Maxus43
22.11.10
✎
16:38
|
(25) Хоть и криво, но работать то должно
|
|||
|
27
Живой Ископаемый
22.11.10
✎
16:39
|
2(23) не смотрел бы запросом к базе.. смотрел бы через списко РН с отбором.
|
|||
|
28
luckyluke
22.11.10
✎
16:44
|
(26) поэтому и спрашиваю, выполняется ли у него этот код, мог выдрать код и сюда скопипастить, а перед кодом условие не выполняется...
а по поводу обращения через ссылку ради праздного любопытства. |
|||
|
29
Serginio1
22.11.10
✎
16:47
|
(22) не совсем смотри УстановитьДопЗначенияРегистров
|
|||
|
30
Fr1eNd
22.11.10
✎
16:50
|
Ещё раз повторяю в другой базе с аналогичной конфигурацией всё работает
(27) и так конечно тоже смотрел этот код отладочный просто что бы проверить идёт ли запись в регистр потом код использовался бы в Подписки на событие там как раз и нужно и Набор записей и ссылка на объект (28) если бы код был просто выдран отладчик бы не пускал бы в него при не выполенние условия + условий никаких нет код просто добавлен в конце обработки проведения |
|||
|
31
Fr1eNd
22.11.10
✎
16:51
|
(29) щас гляну не заметил(
|
|||
|
32
Maxus43
22.11.10
✎
16:52
|
(30) регистр подчинён этому регистратору?
Прочитать() после отбора ещё на всякий |
|||
|
33
Живой Ископаемый
22.11.10
✎
16:54
|
2(32) да ну, зачем? Он просто устанавливает отбор чтобы движения привязывались к регистратору. Читать он не хочет
|
|||
|
34
Живой Ископаемый
22.11.10
✎
16:54
|
а вот если он регистр "не подчинен" то да, может иметь значение
|
|||
|
35
Maxus43
22.11.10
✎
16:55
|
(33) Лучше перебдеть чем недобдеть)
|
|||
|
36
luckyluke
22.11.10
✎
16:56
|
(30) запусти в режиме отладки, поставь точку останова и проверь проходит ли код эти строки или нет.
|
|||
|
37
Serginio1
22.11.10
✎
17:04
|
(31) Для оборотов немного другой набор дополнительных полей. Смотри какие в Тз есть поля. Обычно
РегистрыНакопления.ууДоходыРасходы.СоздатьНаборЗаписей().СкопироватьКолонки() |
|||
|
38
denis_jj
22.11.10
✎
17:11
|
Думаю дело в следующем:
Если этот код в ОбработкаПроведения() то набор создается и записывается верно, но при выходе из процедуры происходит неявная запись набора из коллекции Движения документа. А в этом наборе пусто, поэтому то, что было записано кодом просто затирается пустым набором. |
|||
|
39
Fr1eNd
22.11.10
✎
17:16
|
(32)(37)(38) Благодарю, попробую.
Живой Ископаемый скорей Живой ископаемый жирный тролль) |
|||
|
40
luckyluke
22.11.10
✎
17:17
|
(38) ну да, скорей всего так и есть...
|
|||
|
41
Fr1eNd
22.11.10
✎
17:32
|
Движение = Движения.ууДоходыРасходы.Добавить(); Движение.Регистратор = ЭтотОбъект.Ссылка;
Движение.Период = ЭтотОбъект.Ссылка.Дата; Движение.СтатьяДоходовРасходовУУ = ЭтотОбъект.Ссылка.ууСтатьяДоходовРасходов; Движение.Сумма = ЭтотОбъект.Ссылка.СуммаДокумента; Движения.Записать(); вот так проканало, теперь другой вопрос, как сделать это же в подписки на событие |
|||
|
42
Живой Ископаемый
22.11.10
✎
17:34
|
на какое событие будешь вешать?
Если на проведение, то почти также: Движение = Источник.Движения.ууДоходыРасходы.Добавить(); Движение.Регистратор = Источник.Ссылка; |
|||
|
43
denis_jj
22.11.10
✎
17:36
|
получить у объекта набор через Движения, заполнить и всё...
|
|||
|
44
Fr1eNd
22.11.10
✎
17:37
|
(42) уже так и сделал
СсылкаНаОбъект = Источник.Ссылка; Если СсылкаНаОбъект.УУ = Истина Тогда Если НЕ ПустаяСтрока(СсылкаНаОбъект.ууСтатьяДоходовРасходов.Ссылка) = Истина Тогда //НовЗапись = РегистрыНакопления.ууДоходыРасходы.СоздатьНаборЗаписей(); //НовЗапись.Отбор.Регистратор.Установить(СсылкаНаОбъект); //Движение = НовЗапись.Добавить(); //Движение.Период = СсылкаНаОбъект.Дата; //Движение.СтатьяДоходовРасходовУУ = СсылкаНаОбъект.ууСтатьяДоходовРасходов; //Движение.Сумма = СсылкаНаОбъект.СуммаДокумента; //НовЗапись.Записать(); Движение = Источник.Движения.ууДоходыРасходы.Добавить(); Движение.Регистратор = СсылкаНаОбъект.Ссылка; Движение.Период = СсылкаНаОбъект.Ссылка.Дата; Движение.СтатьяДоходовРасходовУУ = СсылкаНаОбъект.Ссылка.ууСтатьяДоходовРасходов; Движение.Сумма = СсылкаНаОбъект.Ссылка.СуммаДокумента; Источник.Движения.Записать(); Иначе Предупреждение("Не заполнена статья Управленческого Учёта, заполните статью или отключите проведение по Управленческому Учёту!",,"Ошибка"); Отказ = Истина; Возврат; КонецЕсли; Иначе Возврат; КонецЕсли; |
|||
|
45
Fr1eNd
22.11.10
✎
17:39
|
хотя в другой базе набор записей работает, странно, что сдесь не проканало))))
Всем спасибо за помощь p.s Живой Ископаемый Не Троль)))) |
|||
|
46
denis_jj
22.11.10
✎
17:43
|
алгоритм записи наборов может меняться в зависимости от режима совместимости 81/82, настроек документа и пр. я у вас спрашивал в (5). Если ответите, смогу подробнее объяснить особенности.
|
|||
|
47
Fr1eNd
22.11.10
✎
17:52
|
(46) отвечаю типовая БП 2.0
1. режим совместимости не используется; 2. Код в обработке проведения или в подписки на событие Обработкапроведения) 3. Обработка проведения - модуль объекта Если можете пояснить особенности очень пригодиться в дальнейшей работе, вероятно не только мне. |
|||
|
48
denis_jj
22.11.10
✎
21:47
|
Особенности 8.2 в следующем:
1. У наборов записей появилось свойство Записывать. Если набор после выхода из процедуры проведения необходимо записать, это свойство должно быть установлено в Истина. 2. Записи в наборах нужно очищать принудительно, используя метод Очистить(). Связано это с тем, что при проведении из формы толстого клиента Объект создается при открытии формы и набор движений будет накапливать те записи, которые в контексте формы будут созданы. Т.е. если несколько раз перепровести документ в форме и не очистить набор - записи задублируются. Если же перепроводить из формы тонкого клиента или из формы списка, то набор будет очищаться атоматически, т.к. при таких режимах проведения Объект и его коллекция движений создается неявно в момент проведения. 3. Запросы в контексте процедуры проведения учитывают записи, которые записаны в в этой процедуре. Другими словами, если вы использовали метод Записать для набора из коллекции Движения, а потом получаете данные запросом, то то что вы записали уже есть в базе данных и вы будете получать это вашим запросом. После записи набора флаг Записывать автоматически сбрасывается и если вы вносите изменения, которые должны быть записаны, то следует снова установить этот флаг в Истина. 4. При получении данных для контроля остатков запросами необходимо явно накладывать блокировки на те ресурсы, чьи остатки вы контролируете и будете изменять в процессе проведения. Связано это с тем, что в некоторых ситуациях при параллельной работе можно получить не верные данные. Вот вроде как-то так. Может что-то забыл. |
|||
|
49
Fr1eNd
22.11.10
✎
22:05
|
спасибо, знал только про флаг Записывать
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |