1.
Гость
15.10.18 12:34
Добрый день. В чем может быть ошибка? Помогите решить, пожалуйста
&НаСервере
Процедура СрЦнЗп(СтрокаТабличнойЧасти)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура КАК Номенклатура,
| СУММА(ВЫБОР
| КОГДА (ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток > 0
| ТОГДА (ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток
| ИНАЧЕ -((ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток)
| КОНЕЦ) КАК СредняяЦена
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты КАК ОстаткиНоменклатурыОстаткиИОбороты
|
|СГРУППИРОВАТЬ ПО
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура";
Выборка = Запрос.Выполнить().Выбрать();
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * Выборка.СредняяЦена;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные;
СрЦнЗп(Элемент)
КонецПроцедуры
ПоказатьПрикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
передаете строку с клиента на сервер. Так нельзя.
Ошибка номер 2 - остатки и цены получаете по всей номенклатуре в базе
&НаСервере
Процедура СрЦнЗп(Количество , сумма)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура КАК Номенклатура,
| СУММА(ВЫБОР
| КОГДА (ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток > 0
| ТОГДА (ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток
| ИНАЧЕ -((ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток)
| КОНЕЦ) КАК СредняяЦена
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты КАК ОстаткиНоменклатурыОстаткиИОбороты
|
|СГРУППИРОВАТЬ ПО
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сумма = Количество * Выборка.СредняяЦена;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные;
сумма = 0;
СрЦнЗп(СтрокаТабличнойЧасти.Количество, сумма) ;
СтрокаТабличнойЧасти.Сумма = сумма;
КонецПроцедуры
Показатьпередаете строку с клиента на сервер. Так нельзя.
Ошибка номер 2 - остатки и цены получаете по всей номенклатуре в базе
Это решение
4.
Гость
15.10.18 12:59
""""Ошибка номер 2 - остатки и цены получаете по всей номенклатуре в базе""""
А как по другому, мне нужно знать среднюю цену каждой номенклатуры в базе
А как по другому, мне нужно знать среднюю цену каждой номенклатуры в базе
Это решение
(5)Странный вопрос, условие в запрос добавить,
Во первых на сервер лучше передать идентификатор строки табличной части
Типа того Сумма = СрЦнЗп(Элементы.Товары.ТекущаяСтрока);
На Сервере
В запрос Условие по номенклатуре добавить
Во первых на сервер лучше передать идентификатор строки табличной части
Типа того Сумма = СрЦнЗп(Элементы.Товары.ТекущаяСтрока);
На Сервере
Функция СрЦнЗп(Идентификатор)
ТекСтрока = Товары.НайтиПоИдентификатору(Идентификатор);
В запрос Условие по номенклатуре добавить
.....
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура КАК Номенклатура,
| СУММА(ВЫБОР
| КОГДА (ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток > 0
| ТОГДА (ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток
| ИНАЧЕ -((ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток)
| КОНЕЦ) КАК СредняяЦена
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты(,,Номенклатура = &Номенклатура) КАК ОстаткиНоменклатурыОстаткиИОбороты
|
|СГРУППИРОВАТЬ ПО
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура";
Запрос.УстановитьПараметр("Номенклатура,"ТекСтрока.Номенклатура);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий()
Возврат ТекСтрока.Количество * Выборка.СредняяЦена
КонецЕсли;
Возврат 0
КонецФункции;
Показать
Это решение
7.
Гость
15.10.18 14:44
ТекСтрока = Товары.НайтиПоИдентификатору(Идентификатор);
Эта строчка у меня не срабатывает и не пойму почему
Эта строчка у меня не срабатывает и не пойму почему
Это решение
9.
Гость
15.10.18 15:15
Функция СредняяЦенаЗапасов(Идентификатор)
ТекСтрока = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура КАК Номенклатура,
| СУММА(ВЫБОР
| КОГДА (ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток > 0
| ТОГДА (ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток
| ИНАЧЕ -((ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток)
| КОНЕЦ) КАК СредняяЦена
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты КАК ОстаткиНоменклатурыОстаткиИОбороты
|ГДЕ
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура = &Номенклатура
|
|СГРУППИРОВАТЬ ПО
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", ТекСтрока.Номенклатура);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат ТекСтрока.Количество * Выборка.СредняяЦена
КонецЕсли;
Возврат 0
КонецФункции
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные;
Сумма = 0;
СредняяЦенаЗапасов(Элемент) ;
СтрокаТабличнойЧасти.Сумма = Сумма;
КонецПроцедуры
ПоказатьИ СНОВА ТА ЖЕ ОШИБКА ЧТО НА СКРИНЕ, не судите строго только начинаю с 1С))
Это решение
Зачем столько сообщений ? я аж три ветки насчитал
По сути И запрос не исправляйте специально вам написал что бы не через где а в параметрах виртуальной таблицы номенклатуру указывать !!!!
По сути И запрос не исправляйте специально вам написал что бы не через где а в параметрах виртуальной таблицы номенклатуру указывать !!!!
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
//СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные;
Если НЕ СредняяЦенаЗапасов(Элементы.Товары.ТекущаяСтрока) Тогда
Сообщить("Не найдена средняя цена);
КонецЕсли;
//СтрокаТабличнойЧасти.Сумма = Сумма;
КонецПроцедуры
Функция СредняяЦенаЗапасов(Идентификатор)
ТекСтрока = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура КАК Номенклатура,
| СУММА(ВЫБОР
| КОГДА (ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток > 0
| ТОГДА (ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток
| ИНАЧЕ -((ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток)
| КОНЕЦ) КАК СредняяЦена
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты(,,Номенклатура = &Номенклатура) КАК ОстаткиНоменклатурыОстаткиИОбороты
//|ГДЕ
//| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура = &Номенклатура
|
|СГРУППИРОВАТЬ ПО
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", ТекСтрока.Номенклатура);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ТекСтрока.Количество = ТекСтрока.Количество * Выборка.СредняяЦена
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
Показать
Это решение
11.
Гость
15.10.18 16:16
Запрос.УстановитьПараметр("Номенклатура", ТекСтрока.Номенклатура);
Ругается на отсутствие поле объекта Номенклатура, хотя оно есть
Ругается на отсутствие поле объекта Номенклатура, хотя оно есть
Это решение
Внимание! Не забывайте отмечать решение на ваш вопрос, если оно найдено. Это повысит ваш рейтинг на форуме.
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот