Заполнение табличной части документа определенной группой контрагентов
По теме из базы знаний
- Всякие полезности
- Заполнение документа "Формирование книги покупок" по выбранному контрагенту или группе контрагентов
- "Информация по остаткам и ценам номенклатуры". Внешняя обработка для табличной части "Товары" у различных документов.
- Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы
- Заполнение табличной части "Товары" в документе "Поступление товаров и услуг" из Excel в формате УПД для БП 3.0
Найденные решения
В чем собственно трудность? Ниже запрос для получения списка контрагентов в группе. Выполняете запрос, получаете список контрагентов, затем этим списком заполняете таблицу и/или выполняете нужные вам алгоритмы.
ВЫБРАТЬ
Контрагенты.Ссылка КАК Контрагент
Из Справочник.Контрагенты КАК Контрагенты
Где Контрагенты.Ссылка В ИЕРАРХИИ (&ГруппаКонтрагентов)
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
В чем собственно трудность? Ниже запрос для получения списка контрагентов в группе. Выполняете запрос, получаете список контрагентов, затем этим списком заполняете таблицу и/или выполняете нужные вам алгоритмы.
ВЫБРАТЬ
Контрагенты.Ссылка КАК Контрагент
Из Справочник.Контрагенты КАК Контрагенты
Где Контрагенты.Ссылка В ИЕРАРХИИ (&ГруппаКонтрагентов)
(4) SPID,
Есть вот такая процедура, но она заполняет всеми контрагентами, у которых есть удовлетворяющие условия, подскажите, пожалуйста, можно ли с этой процедурой что-то сделать или новую писать придется?
Процедура КоманднаяПанель1ЗаполнитьПоГруппе(Кнопка)
Если Ссылка.Проведен Тогда
Ответ = Вопрос("Табличная часть будет очищена. Продолжить?", РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Нет);
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;
КонецЕсли;
НачисленияЗаОбучениеИОбщежитие.Очистить();
ВыборкаКонтр=Справочники.Контрагенты.Выбрать();
Пока ВыборкаКонтр.Следующий() Цикл
Если (Не ВыборкаКонтр.ЭтоГруппа) И (Не ВыборкаКонтр.ПометкаУдаления) Тогда
Если ЗначениеЗаполнено(ВыборкаКонтр.НачислятьОбучение) или ЗначениеЗаполнено(ВыборкаКонтр.НачислятьОбщежитие) Тогда
СтрокаТабличнойЧасти = НачисленияЗаОбучениеИОбщежитие.Добавить();
СтрокаТабличнойЧасти.Студент = ВыборкаКонтр.Ссылка;
СтрокаТабличнойЧасти.Группа = ВыборкаКонтр.Родитель.Ссылка;
Если ЗначениеЗаполнено(ВыборкаКонтр.НачислятьОбучение) Тогда
ЦенаОбучения = Ценообразование.ПолучитьЦенуНоменклатуры(ВыборкаКонтр.НачислятьОбучение,
ВыборкаКонтр.ТипЦеныСтудента, Дата);
Иначе
ЦенаОбучения =0;
КонецЕсли;
Если ЗначениеЗаполнено(ВыборкаКонтр.НачислятьОбщежитие) Тогда
ЦенаОбщежития = Ценообразование.ПолучитьЦенуНоменклатуры(ВыборкаКонтр.НачислятьОбщежитие,
ВыборкаКонтр.ТипЦеныСтудента, Дата);
Иначе
ЦенаОбщежития =0;
КонецЕсли;
СтрокаТабличнойЧасти.СуммуОбучение = ЦенаОбучения;
СтрокаТабличнойЧасти.СуммаОбщежитие = ЦенаОбщежития;
КонецЕсли;
КонецЕсли;
КонецЦикла ;
КонецПроцедуры
ПоказатьЕсть вот такая процедура, но она заполняет всеми контрагентами, у которых есть удовлетворяющие условия, подскажите, пожалуйста, можно ли с этой процедурой что-то сделать или новую писать придется?
Пытаюсь сделать так, чтобы в документе (скрин выкладываю) происходило такое действие: при нажатии на кнопку "Заполнить по группе" выводилось окно, которое предлагало бы выбрать определенную группу контрагентов, в которой, кстати, нет другой группы, т.е. в папке нет подпапок, и при нажатии на ок в табличную часть документа попадали только контрагенты выбранной группы
Прикрепленные файлы:
Может должно быть что то типа (возможны синтаксические ошибки):
Единственно смущает , если НачислятьОбучение имеет тип булево, то условие некорректное.
Процедура КоманднаяПанель1ЗаполнитьПоГруппе(Кнопка)
Если Ссылка.Проведен Тогда
Ответ = Вопрос("Табличная часть будет очищена. Продолжить?", РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Нет);
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;
КонецЕсли;
НачисленияЗаОбучениеИОбщежитие.Очистить();
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ВыбраннаяГруппа", ВыбраннаяГруппа);
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Ссылка КАК Ссылка,
| Контрагенты.Родитель КАК Родитель,
| Контрагенты.НачислятьОбучение КАК НачислятьОбучение,
| Контрагенты.НачислятьОбщежитие КАК НачислятьОбщежитие,
| Контрагенты.ТипЦеныСтудента КАК ТипЦеныСтудента
|Из Справочник.Контрагенты КАК Контрагенты
|
|Где Контрагенты.Ссылка В ИЕРАРХИИ (&ВыбраннаяГруппа)
| И Не Контрагенты.ПометкаУдаления
| И Не Контрагенты.ЭтоГруппа
| И (Контрагенты.НачислятьОбучение
| ИЛИ Контрагенты.НачислятьОбщежитие)";
ВыборкаКонтр = Запрос.Выполнить().Выбрать();
Пока ВыборкаКонтр.Следующий() Цикл
СтрокаТабличнойЧасти = НачисленияЗаОбучениеИОбщежитие.Добавить();
СтрокаТабличнойЧасти.Студент = ВыборкаКонтр.Ссылка;
СтрокаТабличнойЧасти.Группа = ВыборкаКонтр.Родитель;
Если ЗначениеЗаполнено(ВыборкаКонтр.НачислятьОбучение) Тогда
ЦенаОбучения = Ценообразование.ПолучитьЦенуНоменклатуры(ВыборкаКонтр.НачислятьОбучение,
ВыборкаКонтр.ТипЦеныСтудента, Дата);
Иначе
ЦенаОбучения =0;
КонецЕсли;
Если ЗначениеЗаполнено(ВыборкаКонтр.НачислятьОбщежитие) Тогда
ЦенаОбщежития = Ценообразование.ПолучитьЦенуНоменклатуры(ВыборкаКонтр.НачислятьОбщежитие,
ВыборкаКонтр.ТипЦеныСтудента, Дата);
Иначе
ЦенаОбщежития =0;
КонецЕсли;
СтрокаТабличнойЧасти.СуммуОбучение = ЦенаОбучения;
СтрокаТабличнойЧасти.СуммаОбщежитие = ЦенаОбщежития;
КонецЦикла ;
КонецПроцедуры
ПоказатьЕдинственно смущает
ЗначениеЗаполнено(ВыборкаКонтр.НачислятьОбучение)
В постановке вопроса "...выбранной группой контрагентов". Значит кто-то где-то эту группу уже выбрал. Как варианты: значение группы берется из какого-то реквизита документ; задается вопрос пользователю и открывается форма выбора группы контрагента.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот