|
v8: не работает программное добавление записи в регистр накопления. | ☑ | ||
---|---|---|---|---|
0
Cerera
07.02.14
✎
15:12
|
При попытке перезаписать данные в регистр накопления через обработку, ошибок в коде не наблюдаю, но записи в регистре не появляются. Что я не так делаю?
фрагмент кода: Пока ВыборкаРегистратор.Следующий() Цикл НаборЗаписей=РегистрыНакопления.ЗаказыПоСкладам.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаРегистратор.Регистратор.Ссылка); НаборЗаписей.Записать(); ВыборкаДетальныеЗаписи = ВыборкаРегистратор.Выбрать(); НаборЗаписей=РегистрыНакопления.ЗаказыПоСкладам.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаРегистратор.Регистратор.Ссылка); Таблица.Очистить(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл НоваяЗапись=Таблица.Добавить(); ЗаполнитьЗначенияСвойств(НоваяЗапись,ВыборкаДетальныеЗаписи); НоваяЗапись.Период = ВыборкаРегистратор.Регистратор.Дата; НоваяЗапись.Активность = Истина; КонецЦикла; НаборЗаписей.мПериод=ВыборкаРегистратор.Регистратор.Ссылка.Дата; НаборЗаписей.мТаблицаДвижений=Таблица; НаборЗаписей.Записать(); КонецЦикла; |
|||
1
shuhard
07.02.14
✎
15:13
|
||||
2
Cerera
07.02.14
✎
15:15
|
(1)что за оффтоп? ты всем чтоли на форуме будешь рекомендовать пройти курсы?
|
|||
3
Torquader
07.02.14
✎
15:17
|
А таблица - это кто ?
|
|||
4
GANR
07.02.14
✎
15:18
|
(0) >Что я не так делаю?
ВСЕ!!! Мелких ошибок не вижу - весь код одна большая ошибка. )))) Вы знаете, зачем в наборах записей нужна эта переменная мТаблицаДвижений? Посмотрите в типовых конфигурациях модули набора записей. Регистратор.Ссылка.Дата - каждая точка на уровне языка запросов - это еще одно левое соединение, что приводит к замедлению и отъеданию ресурсов. Таблица - что за переменная? |
|||
5
Cerera
07.02.14
✎
15:18
|
(3)ну таблица - это временная ТЗ. в нее заношу данные каждой строчки выборки. И когда просматриваю в отладчике "НаборЗаписей", то там все поля заполнены. в том числе и мТаблицаДвижений
|
|||
6
Torquader
07.02.14
✎
15:19
|
(1) Пытаешься подменить телепат-бота, пока он в отпуске.
|
|||
7
Cerera
07.02.14
✎
15:19
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | ВложенныйЗапрос.Регистратор КАК Регистратор, | ВложенныйЗапрос.ЗаказПокупателя, | ВложенныйЗапрос.Номенклатура, | ВложенныйЗапрос.ХарактеристикаНоменклатуры, | СУММА(ВложенныйЗапрос.Количество) КАК Количество, | ВложенныйЗапрос.Размещение, | ВложенныйЗапрос.ЕдиницаИзмерения |ИЗ | (ВЫБРАТЬ | ЗаказПокупателяТовары.Номенклатура КАК Номенклатура, | ЗаказПокупателяТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ЗаказПокупателяТовары.Количество КАК Количество, | ЗаказПокупателяТовары.Размещение КАК Размещение, | ЗаказПокупателяТовары.Ссылка КАК ЗаказПокупателя, | ЗаказПокупателяТовары.Ссылка КАК Регистратор, | ЗаказПокупателяТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения | ИЗ | Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары | ГДЕ Истина"; Если Не ЗначениеЗаполнено(Регистратор) Тогда Запрос.Текст = Запрос.Текст +" | И ЗаказПокупателяТовары.Ссылка.Дата МЕЖДУ &ВыбНачПериода И &ВыбКонПериода"; КонецЕсли; Запрос.Текст = Запрос.Текст +" | И ЗаказПокупателяТовары.Ссылка.Проведен = ИСТИНА | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | КорректировкаЗаказаПокупателяТовары.Номенклатура, | КорректировкаЗаказаПокупателяТовары.ХарактеристикаНоменклатуры, | КорректировкаЗаказаПокупателяТовары.Количество, | КорректировкаЗаказаПокупателяТовары.Размещение, | КорректировкаЗаказаПокупателяТовары.Ссылка.ЗаказПокупателя, | КорректировкаЗаказаПокупателяТовары.Ссылка, | КорректировкаЗаказаПокупателяТовары.ЕдиницаИзмерения | ИЗ | Документ.КорректировкаЗаказаПокупателя.Товары КАК КорректировкаЗаказаПокупателяТовары | ГДЕ Истина"; Если Не ЗначениеЗаполнено(Регистратор) Тогда Запрос.Текст = Запрос.Текст +" | И КорректировкаЗаказаПокупателяТовары.Ссылка.Дата МЕЖДУ &ВыбНачПериода И &ВыбКонПериода"; КонецЕсли; Запрос.Текст=Запрос.Текст+" | И КорректировкаЗаказаПокупателяТовары.Ссылка.Проведен = ИСТИНА) КАК ВложенныйЗапрос"; Если ЗначениеЗаполнено(Регистратор) Тогда Запрос.Текст = Запрос.Текст + " |ГДЕ | ВложенныйЗапрос.Регистратор = &Регистратор"; Запрос.УстановитьПараметр("Регистратор", Регистратор); КонецЕсли; Запрос.Текст=Запрос.Текст+" | |СГРУППИРОВАТЬ ПО | ВложенныйЗапрос.Регистратор, | ВложенныйЗапрос.ЗаказПокупателя, | ВложенныйЗапрос.Номенклатура, | ВложенныйЗапрос.ХарактеристикаНоменклатуры, | ВложенныйЗапрос.Размещение, | ВложенныйЗапрос.ЕдиницаИзмерения |ИТОГИ ПО | Регистратор"; Если Не ЗначениеЗаполнено(Регистратор) Тогда Запрос.УстановитьПараметр("ВыбКонПериода", КонецДня(ВыбКонПериода)); Запрос.УстановитьПараметр("ВыбНачПериода", ВыбНачПериода); КонецЕсли; Результат = Запрос.Выполнить(); ВыборкаРегистратор = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Таблица = Новый ТаблицаЗначений; Таблица.Колонки.Добавить("Регистратор"); Таблица.Колонки.Добавить("ЗаказПокупателя"); Таблица.Колонки.Добавить("Номенклатура"); Таблица.Колонки.Добавить("ХарактеристикаНоменклатуры"); Таблица.Колонки.Добавить("Количество"); Таблица.Колонки.Добавить("ЕдиницаИзмерения"); Таблица.Колонки.Добавить("Активность"); Таблица.Колонки.Добавить("Период"); Пока ВыборкаРегистратор.Следующий() Цикл НаборЗаписей=РегистрыНакопления.ЗаказыПоСкладам.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаРегистратор.Регистратор.Ссылка); НаборЗаписей.Записать(); ВыборкаДетальныеЗаписи = ВыборкаРегистратор.Выбрать(); //НаборЗаписей=РегистрыНакопления.ЗаказыПоСкладам.СоздатьНаборЗаписей(); //НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаРегистратор.Регистратор.Ссылка); Таблица.Очистить(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл НоваяЗапись=Таблица.Добавить(); ЗаполнитьЗначенияСвойств(НоваяЗапись,ВыборкаДетальныеЗаписи); НоваяЗапись.Период = ВыборкаРегистратор.Регистратор.Дата; НоваяЗапись.Активность = Истина; КонецЦикла; НаборЗаписей.мПериод=ВыборкаРегистратор.Регистратор.Ссылка.Дата; НаборЗаписей.мТаблицаДвижений=Таблица; НаборЗаписей.Записать(); КонецЦикла; |
|||
8
Torquader
07.02.14
✎
15:20
|
Что-то я отстал от моды - как в регистр можно писать таблицу значений ?
|
|||
9
GANR
07.02.14
✎
15:21
|
(8) Для этого кое-что должно быть подкручено в модуле набора записей регистра
|
|||
10
hhhh
07.02.14
✎
15:21
|
(8) НаборЗаписей.Загрузить(ТЗ);
|
|||
11
shuhard
07.02.14
✎
15:22
|
(2) ржал
от души ТС не узнал собственную ветку |
|||
12
Torquader
07.02.14
✎
15:25
|
(9) А оно точно подкручено ?
|
|||
13
Avganec
07.02.14
✎
15:25
|
(0) жесть код. а сформировать в запросе таблицу и ее загрузить не вариант?
|
|||
14
Рэйв
07.02.14
✎
15:26
|
(11)Чукча не читатель.Чукча писатель:-)
|
|||
15
Cerera
07.02.14
✎
15:27
|
(11)почему не узнал то? узнал. просто при чем тут она...
(13)я её и сформировал. Только отдельно для каждого регистратора. потому что в дальнейшем подразумевается в цикле ещё обработка результатов, которые уже из запроса не получишь. |
|||
16
Cerera
07.02.14
✎
15:28
|
хорошо. вот так исправил:
Пока ВыборкаРегистратор.Следующий() Цикл НаборЗаписей=РегистрыНакопления.ЗаказыПоСкладам.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаРегистратор.Регистратор.Ссылка); НаборЗаписей.Записать(); ВыборкаДетальныеЗаписи = ВыборкаРегистратор.Выбрать(); НаборЗаписей=РегистрыНакопления.ЗаказыПоСкладам.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаРегистратор.Регистратор.Ссылка); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл НоваяЗапись=НаборЗаписей.Добавить(); НоваяЗапись.Номенклатура=ВыборкаДетальныеЗаписи.Номенклатура; НоваяЗапись.ХарактеристикаНоменклатуры=ВыборкаДетальныеЗаписи.ХарактеристикаНоменклатуры; НоваяЗапись.ЗаказПокупателя=ВыборкаДетальныеЗаписи.ЗаказПокупателя; НоваяЗапись.Количество=ВыборкаДетальныеЗаписи.Количество; НоваяЗапись.Размещение=ВыборкаДетальныеЗаписи.Размещение; НоваяЗапись.Период = ВыборкаРегистратор.Регистратор.Дата; НоваяЗапись.Активность = Истина; КонецЦикла; НаборЗаписей.Записать(); КонецЦикла; выдается ошибка: {Форма.Форма.Форма(95)}: Ошибка при вызове метода контекста (Записать) НаборЗаписей.Записать(); по причине: Ошибка обращения к серверу 1С:Предприятия. по причине: Сеанс работы завершен администратором. по причине: Соединение с сервером баз данных разорвано администратором Microsoft SQL Server Native Client 10.0: Communication link failure HRESULT=80004005, HRESULT=80004005, |
|||
17
Torquader
07.02.14
✎
15:31
|
(16) В ошибке сказано, что кто-то убит сеанс - с чего бы это ?
|
|||
18
Cerera
07.02.14
✎
15:33
|
(17)вот я и не могу понять. что убивает сеанс. Я ведь только в набор записей пытался записать изменения.
|
|||
19
hhhh
07.02.14
✎
15:34
|
(18) а регистратор пустой оставляешь?
|
|||
20
Torquader
07.02.14
✎
15:34
|
(18) Возможно, что твой запрос сожрал слишком много памяти и превзошёл ограничения сервера.
|
|||
21
hhhh
07.02.14
✎
15:36
|
(18) да, может у тебя там миллион строчек в регистре?
|
|||
22
Cerera
07.02.14
✎
15:38
|
(21)не знаю. Но ведь это недавно созданный регистр. что я не так делаю?
|
|||
23
Cerera
07.02.14
✎
15:39
|
||||
24
zak555
07.02.14
✎
15:41
|
(8) зачем ты обращаешься к документам, если есть для этого регистры ?
|
|||
25
zak555
07.02.14
✎
15:43
|
(16) > {Форма.Форма.Форма(95)}: Ошибка при вызове метода контекста (Записать)
зачем писать регистры в форме ? |
|||
26
Avganec
07.02.14
✎
15:43
|
(15) посмотри код, как в УТ 11 сделано проведение
|
|||
27
Cerera
07.02.14
✎
15:46
|
Вопрос снят. всё заработало. Поменял код на:
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл НоваяЗапись=НаборЗаписей.Добавить(); НоваяЗапись.Номенклатура=ВыборкаДетальныеЗаписи.Номенклатура; НоваяЗапись.ХарактеристикаНоменклатуры=ВыборкаДетальныеЗаписи.ХарактеристикаНоменклатуры; НоваяЗапись.ЗаказПокупателя=ВыборкаДетальныеЗаписи.ЗаказПокупателя; НоваяЗапись.Количество=ВыборкаДетальныеЗаписи.Количество; НоваяЗапись.Размещение=ВыборкаДетальныеЗаписи.Размещение; НоваяЗапись.Период = ВыборкаРегистратор.Регистратор.Дата; НоваяЗапись.Активность = Истина; НоваяЗапись.Регистратор = ВыборкаРегистратор.Регистратор.Ссылка; КонецЦикла; НаборЗаписей.Записать(); |
|||
28
zak555
07.02.14
✎
15:47
|
(27) лучше так
ВыборкаРегистратор.Регистратор.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка |
|||
29
Cerera
07.02.14
✎
15:51
|
(28)я всё понимаю. просто та обработка наскоряк сделана для разового перезаполнения регистров. а тут подстава такая. не работала.
|
|||
30
Avganec
07.02.14
✎
15:56
|
(29) ничто так не постоянно как временное
|
|||
31
zak555
07.02.14
✎
15:57
|
(29) ты на 24 не ответил
|
|||
32
Cerera
07.02.14
✎
16:05
|
(31)в чем именно? Регистр вновь созданный. Перепроводить документы не хочется. Я делаю запрос к документам за период и перезаполняю эти документы. Или как ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |