|
Программное добавление данных в регистр сведений | ☑ | ||
---|---|---|---|---|
0
mishgun1990
26.03.15
✎
12:39
|
Добрый день. Возникла такая проблема, при отрабатывании этого когда, он заносит в регистр кучу информации, как будто память от старых данных не очищаются и они каждый раз добавляются.
Что в нем не так? Заранее спасибо!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТоваровУслуг.Дата КАК Дата, | ПоступлениеТоваровУслугТовары.Номенклатура КАК Наименование, | ПоступлениеТоваровУслугТовары.Цена КАК Стоимость, | ВложенныйЗапрос.Регистратор КАК РегистраторПоступления, | ПоступлениеТоваровУслуг.Ссылка КАК Объект |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары, | Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг, | (ВЫБРАТЬ | ЦеныНоменклатуры.Регистратор КАК Регистратор | ИЗ | РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры) КАК ВложенныйЗапрос |ГДЕ | ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаДетальныеЗаписи.РегистраторПоступления); НаборЗаписей.Прочитать(); НовЗапись = НаборЗаписей.Добавить(); НовЗапись.Период = ВыборкаДетальныеЗаписи.Дата; НовЗапись.Номенклатура = ВыборкаДетальныеЗаписи.Наименование; НовЗапись.Цена = ВыборкаДетальныеЗаписи.Стоимость; НовЗапись.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Розничная"); НовЗапись.Валюта = Справочники.Валюты.НайтиПоНаименованию("RUB"); НаборЗаписей.Записать(ЛОЖЬ); КонецЦикла; ВыборкаДетальныеЗаписи = ""; |
|||
1
Остап Сулейманович
26.03.15
✎
12:41
|
(0) "как будто память от старых данных не очищаются и они каждый раз добавляются."
А как они должны себя вести при вот этом : НаборЗаписей.Записать(ЛОЖЬ);? |
|||
2
rphosts
26.03.15
✎
12:51
|
если тебе старые записи мешают - между
НаборЗаписей.Прочитать(); и НовЗапись = НаборЗаписей.Добавить(); нужно вставить НаборЗаписей.Очистить(); |
|||
3
mishgun1990
26.03.15
✎
12:54
|
Остап Сулейманович
Я наверное не совсем корректно выразился, он данные запроса не очищает, а постоянно гоняет их при каждом вызове и добавляет в регистр. |
|||
4
Остап Сулейманович
26.03.15
✎
12:58
|
(3) Так он и не должен очищать. Вот здесь :
НаборЗаписей.Записать(ЛОЖЬ); параметр метода "ЛОЖЬ" означает не замещать существующие записи. Поставь ИСТИНА. Йес? |
|||
5
mishgun1990
26.03.15
✎
13:05
|
Не так. Если я беру один документ, выполняю запрос и он берет из него данные.
Беру второй, совершенно другой, и тоже выполняю запрос. Так вот он этим запросом данные и из первого документа берет тоже, хотя мне нужно чтобы данные брались только из текущего. А код вообще верный? Можете строчку отбор пояснить? Заранее спасибо!!! |
|||
6
Остап Сулейманович
26.03.15
✎
13:12
|
(5) Ну вы блин умеете объяснить...
У тебя набор создается/читается/заполняется для каждой записи одного документа. То есть сколько строк - столько наборов. Создание набора вынеси перед циклом Примерно так : РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей(); //НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаДетальныеЗаписи.РегистраторПоступления); //Отбирать записи у которых регистратор - текущий документ НаборЗаписей.Отбор.Регистратор.Установить(Объект.Ссылка); НаборЗаписей.Прочитать(); //Почистить старые записи НаборЗаписей.Очистить(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл НовЗапись = НаборЗаписей.Добавить(); .... КонецЦикла; НаборЗаписей.Записать(Истина); //Ну что б уже наверняка |
|||
7
mishgun1990
26.03.15
✎
13:35
|
Невосстановимая ошибка
Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm: по причине: Ошибка SDBL: Таблица или поле Fld1044INTO не содержится в разделе FROM Вот такая ошибка появилась |
|||
8
D_E_S_131
26.03.15
✎
13:39
|
Запрос у ТС полнейшее %авно. Собственно, саму запись в РС не имеет смысл проверять.
Выбираются данные из 3-х таблиц, но условие накладывается только на одну из них. Никаких соединений в запросе нет вообще. Как "такое" может давать вообще результат? |
|||
9
D_E_S_131
26.03.15
✎
13:40
|
mishgun1990, ты бы хоть в консоли запросов для начала посмотрел на свой результат.
|
|||
10
mishgun1990
26.03.15
✎
13:58
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТоваровУслуг.Дата КАК Дата, | ПоступлениеТоваровУслугТовары.Номенклатура КАК Наименование, | ПоступлениеТоваровУслугТовары.Цена КАК Стоимость |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг | ПО ПоступлениеТоваровУслугТовары.Ссылка = ПоступлениеТоваровУслуг.Ссылка |ГДЕ | ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(Объект.Ссылка); НаборЗаписей.Прочитать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл НовЗапись = НаборЗаписей.Добавить(); НовЗапись.Период = ВыборкаДетальныеЗаписи.Дата; НовЗапись.Номенклатура = ВыборкаДетальныеЗаписи.Наименование; НовЗапись.Цена = ВыборкаДетальныеЗаписи.Стоимость; НовЗапись.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Розничная"); НовЗапись.Валюта = Справочники.Валюты.НайтиПоНаименованию("RUB"); НаборЗаписей.Записать(ЛОЖЬ); КонецЦикла; ВыборкаДетальныеЗаписи = ""; Ошибка та же, дело в чем то в другом |
|||
11
mishgun1990
26.03.15
✎
14:17
|
Вопрос снят, во всём разобрался, всем спасибо за участие и помощь.
Форум класс)))!!! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |