Форум программистов, компьютерный форум, киберфорум
1С: Администрирование и интеграция
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
3 / 3 / 0
Регистрация: 07.09.2021
Сообщений: 76
1

Изменение цены и расчета стоимости при изменении вида цены и валюты

25.09.2022, 04:52. Показов 712. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Помогите пжл решить такую задачу. Есть Обработка с табличной частью. В шапке Покупатель, Склад, Вид цены и валюта. В табличной части ОстаткиТоваров Номенклатура, Количество, Цена и Стоимость. Кнопка Заполнить, позволяющая заполнить табличную часть остатками товаров, кнопка Очистить, позволяющая очистить заполненную табличную часть. Можно сделать так, чтобы уже в заполненной табличной части при изменении пользователем Вида цены и/или Валюты менялось значение Цены и, соответственно, пересчитывалась Стоимость. Привожу код из модуля формы обработки

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
&НаСервере
Функция ПолучитьВыборку ();
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
        |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество,
        |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(КурсыВалютСрезПоследних.Курс, 1) КАК Цена,
        |    ТоварыНаСкладахОстатки.КоличествоОстаток * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(КурсыВалютСрезПоследних.Курс, 1) КАК Стоимость
        |ИЗ
        |    РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
        |        ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(, Валюта = &Валюта) КАК КурсыВалютСрезПоследних
        |        ПО (ИСТИНА)
        |ГДЕ
        |    ТоварыНаСкладахОстатки.КоличествоОстаток > 0";
    
    Запрос.УстановитьПараметр("Склад", Склад);
    Запрос.УстановитьПараметр("ВидЦены", ВидЦены);
    Запрос.УстановитьПараметр("Валюта", Валюта);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Возврат ВыборкаДетальныеЗаписи;
КонецФункции
 
 
&НаСервере
Процедура ЗаполнитьНаСервере()
    ВыборкаДетальныеЗаписи=ПолучитьВыборку ();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        НовСтр = Объект.ОстаткиТоваров.Добавить();
        ЗаполнитьЗначенияСвойств(НовСтр,ВыборкаДетальныеЗаписи);
    КонецЦикла;
КонецПроцедуры
 
 
&НаКлиенте
Процедура ОстаткиТоваровКоличествоЦенаПриИзменении(СтрокаОстаткиТоваров)
    СтрокаОстаткиТоваров = Элементы.ОстаткиТоваров.ТекущиеДанные;
    СтрокаОстаткиТоваров.Стоимость = СтрокаОстаткиТоваров.Количество*СтрокаОстаткиТоваров.Цена;
КонецПроцедуры
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.09.2022, 04:52
Ответы с готовыми решениями:

Изменение цены товара при изменении его количества
Доброго времени суток, ув. Форумчане! Знаю что я не первый кто задаёт такой вопрос, но поиск и...

Динамическое изменение цены при изменении количества товара
Здравствуйте. Нужна помощь. Есть сайт, типа магазин, там 30 товаров, все на одной html странице....

Цены на два вида товаров выросли на р процентов. Вывести старые и новые цены
Здравствуйте, помогите пожалуйста с решением задачи, не знаю даже с чего начать. Буду очень...

Цены на два вида товаров возросли на P процентов . Вывести старые и новые цены
Цены на два вида товаров возросли на P процентов . Вывести старые и новые цены.

Цены на два вида товаров выросли на р процентов. Вывести старые и новые цены
Задача 1 Программирование линейных алгоритмов Цены на два вида товаров выросли на р процентов....

5
1929 / 1164 / 423
Регистрация: 31.05.2012
Сообщений: 4,115
25.09.2022, 09:31 2
добавь обработчик (-ки) изменения вида цены и/или валюты, в котором по одному тебе известному алгоритму поменяй цены, видимо из нужно взять откуду-то на основании вида и валюты. или придумать новые))
0
3 / 3 / 0
Регистрация: 07.09.2021
Сообщений: 76
26.09.2022, 08:40  [ТС] 3
Аватар, Это я понимаю. Вопрос в том какой код прописать в обработчике изменения цены и/или валюты. Единственное откуда можно взять это из функции ПолучитьВыборку (), но я не соображу как
0
3 / 3 / 0
Регистрация: 07.09.2021
Сообщений: 76
27.09.2022, 05:20  [ТС] 4
Сделал вот так, все работает. Не знаю насколько это оптимально, но другого решения пока нет. У кого есть комментарии, пишите пожалуйста. Вот код, добавил новые функцию и процедуру к имеющимся:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
&НаСервере
Функция ПолучениеЦены (Номенклатура, ВидЦены, Валюта)
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    ЦеныНоменклатурыСрезПоследних.Цена / ЕСТЬNULL(КурсыВалютСрезПоследних.Курс, 1) КАК ЦенаПолучаемая
    |ИЗ
    |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
    |            ,
    |            ВидЦены = &ВидЦены
    |                И Номенклатура = &Номенклатура) КАК ЦеныНоменклатурыСрезПоследних
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(, Валюта = &Валюта) КАК КурсыВалютСрезПоследних
    |        ПО (ИСТИНА)";
    
    Запрос.УстановитьПараметр("ВидЦены", ВидЦены);
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
    Запрос.УстановитьПараметр("Валюта", Валюта);
        
    РезультатЗапроса = Запрос.Выполнить();
    Если РезультатЗапроса.Пустой() Тогда
        Цена = 0;
    Иначе    
        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            Цена=ВыборкаДетальныеЗаписи.ЦенаПолучаемая;
        КонецЦикла;
    КонецЕсли;
    Возврат Цена; 
КонецФункции 
 
&НаКлиенте
Процедура ВалютаВидЦеныПриИзменении(Элемент)
    Для каждого СтрокаОстаткиТоваров Из Объект.ОстаткиТоваров Цикл
        СтрокаОстаткиТоваров.Цена = ПолучениеЦены (СтрокаОстаткиТоваров.Номенклатура, ВидЦены, Валюта);
        СтрокаОстаткиТоваров.Стоимость = СтрокаОстаткиТоваров.Количество*СтрокаОстаткиТоваров.Цена;
    КонецЦикла; 
КонецПроцедуры
0
1929 / 1164 / 423
Регистрация: 31.05.2012
Сообщений: 4,115
27.09.2022, 08:42 5
можно же не делать запрос в цикле. например собрать все номенклатуры в список значений или временную табличку и одним запросом один раз получить все цены
0
Yulunga
27.09.2022, 09:29     Изменение цены и расчета стоимости при изменении вида цены и валюты
  #6

Не по теме:

Цитата Сообщение от Аватар Посмотреть сообщение
можно же не делать запрос в цикле
это плюс адин

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2022, 09:29

Подставление вида цены и цены из регистра сведений
Такое дело... Есть док - Продажи. ТЧ - Товары. Нужно, чтобы При Изменении Номенклатуры в ВидЦены...

Вернуть значение цены при изменении скидки
Платформа 8.2 Предприятие Здраствуйте. Помогите пожалуйста с кодом. Задача состоит в следующем:...

Вычисления стоимости покупки при вводе цены и количества товаров
Разработайте программу в borland c++ builder, которая осуществляет вычисления стоимости покупки при...

Скорректировать данные об определенном автомобиле при изменении на него цены
Задача 4. Дан файл, содержащий сведения о поступивших в продажу автомобилях. Записи содержат...

Авторасчет Суммы при изменении Цены и Количества в управляемой форме
Так толком и не разобралась с этими, мать его, управляемыми формами. Вот хочу сделать простую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru