По теме из базы знаний
- Новое отображение ошибок в 1С
- Ошибка формата потока. ЗУП 3.1.16.77 и немного о себе
- Исправление Неисправимой ошибки или Integrity check, появившейся 06.04.2021 (замена компоненты формирования штрихкодов)
- Ошибка загрузки большого архива 1Cv8.dt в PostgresSQL на платформе 1С 8.3.19
- Неправильный расчет НДФЛ с авансов в 2023 году в 1С: ЗУП 3.1.24.408 (со всеми исправлениями на дату публикации)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
5.
Гость
15.10.18 15:46
уже пробовал, не получается(
а вот код
&НаСервере
Функция СредняяЦенаЗапасов(Идентификатор)
ТекСтрока = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура КАК Номенклатура,
| СУММА(ВЫБОР
| КОГДА (ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток > 0
| ТОГДА (ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток
| ИНАЧЕ -((ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток)
| КОНЕЦ) КАК СредняяЦена
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты КАК ОстаткиНоменклатурыОстаткиИОбороты
|ГДЕ
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура = &Номенклатура
|
|СГРУППИРОВАТЬ ПО
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", ТекСтрока.Номенклатура);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат ТекСтрока.Количество * Выборка.СредняяЦена
КонецЕсли;
Возврат 0
КонецФункции
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
ТекСтрока = Элементы.Товары.ТекущиеДанные;
Сумма = 0;
СредняяЦенаЗапасов(Элемент) ;
ТекСтрока.Сумма = Сумма;
КонецПроцедуры
а вот код
&НаСервере
Функция СредняяЦенаЗапасов(Идентификатор)
ТекСтрока = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура КАК Номенклатура,
| СУММА(ВЫБОР
| КОГДА (ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток > 0
| ТОГДА (ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток
| ИНАЧЕ -((ОстаткиНоменклатурыОстаткиИОбороты.СуммаРасход - ОстаткиНоменклатурыОстаткиИОбороты.СуммаПриход) / ОстаткиНоменклатурыОстаткиИОбороты.КоличествоВБазовыхЕдиницахКонечныйОстаток)
| КОНЕЦ) КАК СредняяЦена
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты КАК ОстаткиНоменклатурыОстаткиИОбороты
|ГДЕ
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура = &Номенклатура
|
|СГРУППИРОВАТЬ ПО
| ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", ТекСтрока.Номенклатура);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат ТекСтрока.Количество * Выборка.СредняяЦена
КонецЕсли;
Возврат 0
КонецФункции
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
ТекСтрока = Элементы.Товары.ТекущиеДанные;
Сумма = 0;
СредняяЦенаЗапасов(Элемент) ;
ТекСтрока.Сумма = Сумма;
КонецПроцедуры
(7) Вам вообще нужны же только номенклатура и количество. Загоните их в структуру и передавайте.
ТекСтрока = Элементы.Товары.ТекущиеДанные;
МояСтруктура = Новый Структура("Номенклатура, Количество", ТекСтрока.Номенклатура, ТекСтрока.Количество);
Сумма = СредняяЦенаЗапасов(МояСтруктура ) ;
ТекСтрока.Сумма = Сумма;
ТекСтрока = Элементы.Товары.ТекущиеДанные;
МояСтруктура = Новый Структура("Номенклатура, Количество", ТекСтрока.Номенклатура, ТекСтрока.Количество);
Сумма = СредняяЦенаЗапасов(МояСтруктура ) ;
ТекСтрока.Сумма = Сумма;
(17) Да, я заметил и хотел там вам ответить. У него это функция и надо перед вызовом переменную использовать)
В таком случае, более правильнее будет вот так:
UPD. Есть еще и ТРЕТЬЯ тема ->https://forum.infostart.ru/forum9/topic201802/
В таком случае, более правильнее будет вот так:
Сумма = СредняяЦенаЗапасов(Элементы.Товары.ТекущаяСтрока);
UPD. Есть еще и ТРЕТЬЯ тема ->
(19) Напишите конкретно, что за ошибка. Может быть ошиблись в одной букве, может быть вы указываете заголовок колонки, а сам реквизит называется несколько иначе.
Можно также скриншоты прислать вашего конструктора формы (взглянуть на вашу таблицу, ее имя и имена колонок).
Можно также скриншоты прислать вашего конструктора формы (взглянуть на вашу таблицу, ее имя и имена колонок).
26.
Гость
15.10.18 17:40
(24)и снова все та же проблема с ТИПом(((
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
Если Объект.Вид = ПредопределенноеЗначение("Перечисление.ВидыНоменклатуры.Услуга") Тогда
НайденныйРеквизит = ПроверяемыеРеквизиты.Найти("БазоваяЕдиница");
Если НайденныйРеквизит <> Неопределено Тогда
ПроверяемыеРеквизиты.Удалить(НайденныйРеквизит);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВидПриИзменении(Элемент)
ОбработкаПроверкиЗаполненияНаСервере(Элемент,);
КонецПроцедуры
Показать
(26)
На сервере не нужно ПредопределенноеЗначение. Просто Перечисление.ВидыНоменклатуры.Услуга.
Процедуру ОбработкаПроверкиЗаполненияНаСервере не надо вызывать. Она вызывается сама либо автоматически либо при вызове метода ПроверитьЗаполнение (почитайте синтакс-помощник уже наконец!)
И почитайте про параметры процедур и функций, книжку по программированию хоть какую-нибудь.
На сервере не нужно ПредопределенноеЗначение. Просто Перечисление.ВидыНоменклатуры.Услуга.
Процедуру ОбработкаПроверкиЗаполненияНаСервере не надо вызывать. Она вызывается сама либо автоматически либо при вызове метода ПроверитьЗаполнение (почитайте синтакс-помощник уже наконец!)
И почитайте про параметры процедур и функций, книжку по программированию хоть какую-нибудь.
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат ТекСтрока.Количество * Выборка.СредняяЦена
КонецЕсли;
Возврат 0
КонецФункции
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
ТекСтрока = Элементы.Товары.ТекущиеДанные;
Сумма = 0;
СредняяЦенаЗапасов(Элемент) ;
Показатьругается на элемент по сути, тип какой передаешь?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот