В УТ 10.3
Не могу удалить запись РН остатки. Где ошибка ?
Выдают ошибки как - ошибка при установке значения атрибута контекста (значение) неверный тип значения.
Если написать так -
Тогда выдают токую ошибку - Поле объекта не обнаружено (Продавец)
Не могу удалить запись РН остатки. Где ошибка ?
Процедура ПродавецПриИзменении(Элемент)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| БонусСотрудникаОстатки.Продавец,
| БонусСотрудникаОстатки.СуммаОстаток,
| БонусСотрудникаОстатки.КоличествоОстаток,
| БонусСотрудникаОстатки.СуммаПродажыОстаток
|ИЗ
| РегистрНакопления.БонусСотрудника.Остатки(&КонецПериода, Продавец = &Продавец) КАК БонусСотрудникаОстатки";
Запрос.УстановитьПараметр("КонецПериода", ДокументОбъект.Дата);
Запрос.УстановитьПараметр("Продавец", Продавец);
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса = Неопределено Тогда
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
Стоимость = ВыборкаДетальныеЗаписи.СуммаОстаток;
КонецЕсли;
КонецПроцедуры
Процедура СформироватьНажатие(Элемент)
Набор = РегистрыНакопления.БонусСотрудника.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Значение = ДокументОбъектПродавец;
Набор.Записать();
КонецПроцедуры
ПоказатьВыдают ошибки как - ошибка при установке значения атрибута контекста (значение) неверный тип значения.
Если написать так -
Набор.Отбор.Продавец.Значение = ДокументОбъектПродавец
Тогда выдают токую ошибку - Поле объекта не обнаружено (Продавец)
По теме из базы знаний
- Удаление записей регистров накопления (с условиями отбора)
- Регистры накопления. Структура хранения в базе данных
- Алгоритм для выгрузки регистра накопления (остатки) из 7.7 в 8.x
- Исправление регистра сведений "Распределение запасов" по данным регистра накопления "Товары на складах" после перехода с ред. 2.4 на ред. 2.5 для конфигураций УТ, КА, ЕРП
- Смещаем границы итогов в больших регистрах накопления
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Процедура ПродавецПриИзменении(Элемент)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| БонусСотрудникаОстатки.Продавец,
| БонусСотрудникаОстатки.СуммаОстаток,
| БонусСотрудникаОстатки.КоличествоОстаток,
| БонусСотрудникаОстатки.СуммаПродажыОстаток
|ИЗ
| РегистрНакопления.БонусСотрудника.Остатки(&КонецПериода, Продавец = &Продавец) КАК БонусСотрудникаОстатки";
Запрос.УстановитьПараметр("КонецПериода", ДокументОбъект.Дата);
Запрос.УстановитьПараметр("Продавец", Продавец);
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса = Неопределено Тогда
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
Стоимость = ВыборкаДетальныеЗаписи.СуммаОстаток;
КонецЕсли;
КонецПроцедуры
Процедура СформироватьНажатие(Элемент)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ОтчетОРозничныхПродажах.Ссылка.Ссылка,
| ОтчетОРозничныхПродажах.Продавец,
| СУММА(ОтчетОРозничныхПродажах.Сумма) КАК Сумма
|ИЗ
| Документ.ОтчетОРозничныхПродажах.ДвиженияПродавцам КАК ОтчетОРозничныхПродажах
|ГДЕ
| ОтчетОРозничныхПродажах.Продавец = &Продавец
|
|СГРУППИРОВАТЬ ПО
| ОтчетОРозничныхПродажах.Продавец,
| ОтчетОРозничныхПродажах.Ссылка.Ссылка";
Запрос.УстановитьПараметр("Продавец", ДокументОбъект.Продавец);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Набор = РегистрыНакопления.БонусСотрудника.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Значение = Выборка.Ссылка;
Набор.Записать();
КонецПроцедуры
ПоказатьТак надо?
(3)
В теме поста описана возникшая проблема, но не постановка задачи, поэтому я не могу Вам ответить "как надо".
Касаемо Вашего кода:
Процедура "ПродавецПриИзменении"
1. Переменная РезультатЗапроса в данном случае никогда не будет равна Неопределено, поэтому такого вида условный оператор здесь лишний. Правильно будет
2. Из выборки используете только поле "СуммаОстаток", а в тексте запроса просите систему посчитать ещё и поля "КоличествоОстаток" и "СуммаПродажыОстаток" (почему "Продажы" оканчивается на букву "ы"? :) ).
Процедура "СформироватьНажатие"
1. Запрос нужно строить к регистру (условие: Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах), а не к табличной части документа. В результат Вашего запроса в данном случае также попадут непроведённые документы, у которых нет движений.
2. Не понятно, Вы пытаетесь очистить движения в регистре накопления из формы документа по кнопке "Сформировать"?
Если да, то так не нужно делать. Во-первых, при перепроведении документов "Отчет о розничных продажах" данные в регистре накопления будут сформированы заново. Во-вторых, движения по регистру могут делать не только отчеты о розничных продажах, в результате остатки никуда не денутся (станут, например, отрицательными :)).
Есть два варианта:
а) Делаете Ваш документ регистратором в регистре накопления и в модуле документа в обработчике проведения формируете движения по списанию остатков в регистре (новые движения, а не очистку движений других документов).
б) Делаете обработку, которая получит нужные остатки и заполнит документ "Корректировка записей регистров".
Опустил детали: запись пустого набора, установка блокировок перед чтением остатков, остатки на момент времени и т.п.
В теме поста описана возникшая проблема, но не постановка задачи, поэтому я не могу Вам ответить "как надо".
Касаемо Вашего кода:
Процедура "ПродавецПриИзменении"
1. Переменная РезультатЗапроса в данном случае никогда не будет равна Неопределено, поэтому такого вида условный оператор здесь лишний. Правильно будет
Если Не РезульатаЗапроса.Пустой() Тогда
2. Из выборки используете только поле "СуммаОстаток", а в тексте запроса просите систему посчитать ещё и поля "КоличествоОстаток" и "СуммаПродажыОстаток" (почему "Продажы" оканчивается на букву "ы"? :) ).
Процедура "СформироватьНажатие"
1. Запрос нужно строить к регистру (условие: Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах), а не к табличной части документа. В результат Вашего запроса в данном случае также попадут непроведённые документы, у которых нет движений.
2. Не понятно, Вы пытаетесь очистить движения в регистре накопления из формы документа по кнопке "Сформировать"?
Если да, то так не нужно делать. Во-первых, при перепроведении документов "Отчет о розничных продажах" данные в регистре накопления будут сформированы заново. Во-вторых, движения по регистру могут делать не только отчеты о розничных продажах, в результате остатки никуда не денутся (станут, например, отрицательными :)).
Есть два варианта:
а) Делаете Ваш документ регистратором в регистре накопления и в модуле документа в обработчике проведения формируете движения по списанию остатков в регистре (новые движения, а не очистку движений других документов).
б) Делаете обработку, которая получит нужные остатки и заполнит документ "Корректировка записей регистров".
Опустил детали: запись пустого набора, установка блокировок перед чтением остатков, остатки на момент времени и т.п.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот