День добрый! Подскажите, пожалуйста, как правильно сделать?
У меня есть справочник "Процедуры" в нем реквизиты (Количество и Цена. Тип: Число)
Есть документ "Прием" с таб частью. "ПроцедурыПриема" (с реквизитами: цена, количество и т.д.). Также в самом документе есть реквизит "Детский прием" он с галочкой.
При заполнении тч у меня автоматически считается сумма, а мне нужно чтобы при установлении этой галочки сумма изменялась. Как вытащить данные из справочника?
Код вот такой, но естественно не рабочий. Я делаю вообще не так или что-то упустила?
У меня есть справочник "Процедуры" в нем реквизиты (Количество и Цена. Тип: Число)
Есть документ "Прием" с таб частью. "ПроцедурыПриема" (с реквизитами: цена, количество и т.д.). Также в самом документе есть реквизит "Детский прием" он с галочкой.
При заполнении тч у меня автоматически считается сумма, а мне нужно чтобы при установлении этой галочки сумма изменялась. Как вытащить данные из справочника?
Код вот такой, но естественно не рабочий. Я делаю вообще не так или что-то упустила?
&НаКлиенте
Процедура ДетскийПрПриИзменении(Элемент)
Если Объект.ДетскийПр = Истина Тогда
РассчитатьДетскийПр();
ИначеЕсли Объект.ДетскийПр = Ложь Тогда
РассчитатьДетскийПр1();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция РассчитатьДетскийПр()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|Процедуры.Ссылка,
|Процедуры.К_воУЕТДетск,
|Процедуры.ЦенаДетская,
|ПриемСтоматолога.ДетскийПр,
|ПриемСтоматолога.ПроцедурыПриема.(
| Количество,
| Цена
|)
|ИЗ
|Справочник.Процедуры КАК Процедуры,
|Документ.ПриемСтоматолога КАК ПриемСтоматолога";
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ДетскийПр = Выборка.Ссылка;
Количество = Выборка.К_воУЕТДетск;
Цена = Выборка.ЦенаДетская;
ДетскийПр=Выборка.К_воУЕТДетск * Выборка.ЦенаДетская;
КонецЦикла;
КонецФункции
&НаСервере
Функция РассчитатьДетскийПр1()
//Сообщить("дописать");
КонецФункции
ПоказатьПо теме из базы знаний
- Обмен с системой Меркурий (полный цикл) через Ветис.API для 1С 7.7
- Обмен между 1С:Розница и Frontol 6 по организациям (Розница - Фронтол)
- Пакетный ввод документов в "1С:Бухгалтерия 3.0" (счет, реализация, счет-фактура)
- Загрузка (синхронизация) номенклатуры с ЕСКЛП + МДЛП (+Расширение для РМК – переключатель МНН, АТХ, вывод минимальных цен)
- Интеграция 1С с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода - для УНФ, УТ, КА, ERP
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Посоветую небольшой рефакторинг кода
1) Вместо
Можно написать так
2) Функцию РассчитатьДетскийПр вызываете как процедуру (судя по всему это и есть процедура)
3) Если таб.часть будете обрабатывать в этом же документе, то от передачи параметра Объект.ДетскийПр можно избавиться, т.к. вызов все равно получится контекстный, а значит значение реквизита Объект.ДетскийПр будет доступно в процедуре на сервере РассчитатьДетскийПрием
1) Вместо
Процедура ДетскийПрПриИзменении(Элемент)
Если Объект.ДетскийПр = Истина Тогда
РассчитатьДетскийПр();
ИначеЕсли Объект.ДетскийПр = Ложь Тогда
РассчитатьДетскийПр1();
КонецЕсли;
КонецПроцедуры
ПоказатьМожно написать так
Процедура ДетскийПрПриИзменении(Элемент)
РассчитатьДетскийПрием(Объект.ДетскийПр);
КонецПроцедуры
Процедура РассчитатьДетскийПрием(ДетскийПрием)
Если ДетскийПрием Тогда
// тут вероятно разные тексты запроса будут в зависимости от флага
Иначе
КонецЕсли;
КонецПроцедуры
Показать2) Функцию РассчитатьДетскийПр вызываете как процедуру (судя по всему это и есть процедура)
3) Если таб.часть будете обрабатывать в этом же документе, то от передачи параметра Объект.ДетскийПр можно избавиться, т.к. вызов все равно получится контекстный, а значит значение реквизита Объект.ДетскийПр будет доступно в процедуре на сервере РассчитатьДетскийПрием
Как минимум должно выглядеть примерно так:
А что там вам конкретно нужно, это надо разбираться подробнее
&НаКлиенте
Процедура ДетскийПрПриИзменении(Элемент)
Если Объект.ДетскийПр Тогда
РассчитатьДетскийПр();
Иначе
РассчитатьДетскийПр1();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция РассчитатьДетскийПр()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Процедуры.Ссылка,
| Процедуры.К_воУЕТДетск КАК Количество,
| Процедуры.ЦенаДетская КАК Цена,
| Процедуры.К_воУЕТДетск * Процедуры.ЦенаДетская КАК Сумма
|ИЗ
| Справочник.Процедуры КАК Процедуры
|ГДЕ
| Процедуры.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ТутДолжнаБытьСсылкаНаОбъектСправочникаПроцедуры);
Результат = Запрос.Выполнить();
Объект.ПроцедурыПриема.Очистить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.ПроцедурыПриема.Добавить();
НоваяСтрока.Количество = Выборка.Количество;
НоваяСтрока.Цена = Выборка.Цена;
НоваяСтрока.Сумма = Выборка.Сумма;
КонецЦикла;
КонецФункции
ПоказатьА что там вам конкретно нужно, это надо разбираться подробнее
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот