Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 01:39

Заполнение табличной части документа при изменении реквизита шапки документа

Автор filomonko, 14 мар 2022, 17:51

0 Пользователей и 1 гость просматривают эту тему.

filomonko

Здравствуйте! Новичок в 1С! Конфигурация самописанная. Управляемое приложение.
Есть документ "Оказание услуг", в нем реквизит в шапке "Категория" (СправочникСсылка.КатегорииНомеров).
В табличной части есть "Услуга" из справочника "Услуги" (Объект.ПереченьУслуг.Услуга).
Необходимо в обработчике события ПриИзменении у элемента "Категория" сделать так, чтобы автоматически добавлялась строка с услугой "Проживание", которая находится в предопределенных элементах справочника "Услуги". Так же необходимо сделать с единицей измерения (Объект.ПереченьУслуг.ЕдиницаИзмерения) "сутки", которая хранится в перечислении "ЕдиницыИзмерения".
Ещё интересует вариант с командой "Добавить" по кнопке.
Запуталась во всём этом   <_<
Буду благодарна любому совету. Спасибо!  :) 

nvj84

Вы хотите при любом изменении реквизита "Категория" добавлять в табличную часть новую строку с услугой Проживание?
НоваяСтрока = Объект.Услуги.Добавить();
НоваяСтрока.Услуга = Справочники.Услуги.Проживание;
НоваяСтрока.Количество = 1;
...
По поводу варианта с командой "Добавить" не понятно чем он вас так заинтересовал. Нужна конкретика что не понятно и что хотите получить по итогу.

filomonko

Должно быть, чтобы при добавлении какой-либо категории добавлялась в новую строку услуга проживания. Если она уже добавлена, больше добавлять нельзя. А вариант действия по команде тоже интересен. Чтобы можно было реализовать добавление цены по той самой категории из регистра сведений "ЦеныКатегорий". И как проще это реализовать?

nvj84

Может вынести в реквизиты все связанное с проживанием (уже на форме есть и дата заселения и выезда). Табличная часть с услугами будет представлять из себя перечень дополнительных услуг. Документ можно назвать не оказание услуг, а например бронирование номера. Лучше больше времени уделить продумыванию что где хранить и в чем. Кроме цен наверное где то нужно хранить забронированные номера (какой и на сколько).
Если все же есть желание не отказываться от хранения проживания в табличной части, тогда нужно гораздо больше кодить. При изменении категории все будет просто.
ПараметрыОтбора = Новый Структура("Услуга",Справочники.Услуги.Проживание);
НайденыеСтроки = Объект.Услуги.НайтиСтроки(ПараметрыОтбора);
Если НайденыеСтроки.Количество() = 0 Тогда
НоваяСтрока = Объект.Услуги.Добавить();
НоваяСтрока.Услуга = Справочники.Услуги.Проживание;
НоваяСтрока.Количество = 1;
КонецЕсли;

filomonko

nvj84, вообще я это делаю для того, чтобы получить общий счет по каждому клиенту
https://disk.yandex.ru/i/yQPszVfinhc20w

nvj84

Как вариант можно вот так (в обработчике ОбработкаВыбора реквизита Услуга табличной части).
&НаКлиенте
Процедура УслугиУслугаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = РазрешитьДобавитьУслугу(ВыбранноеЗначение);
Если СтандартнаяОбработка = Ложь Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "В документе должна быть всего одна услуга Проживание";
Сообщение.Сообщить();
КонецЕсли;
КонецПроцедуры

&НаСервере
Функция РазрешитьДобавитьУслугу(ВыбранноеЗначение)
Результат = Истина;
УслугаПроживание = Справочники.Услуги.Проживание;
Если ВыбранноеЗначение = УслугаПроживание Тогда
ПараметрыОтбора = Новый Структура("Услуга", УслугаПроживание);
НайденныеСтроки = Объект.Услуги.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтроки.Количество() > 0 Тогда
Результат = Ложь;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск