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

1. AndrewUs 13 13.10.14 17:40 Сейчас в теме
Здравствуйте, подскажите, пожалуйста, как заполнить табличную часть документа выбранной группой контрагентов? Спасибо.
Конфигурация 1С Бухгалтерия Предприятия, ред 2.0.
Спасибо.
По теме из базы знаний
Найденные решения
4. SPID 13.10.14 18:03 Сейчас в теме
В чем собственно трудность? Ниже запрос для получения списка контрагентов в группе. Выполняете запрос, получаете список контрагентов, затем этим списком заполняете таблицу и/или выполняете нужные вам алгоритмы.

ВЫБРАТЬ
Контрагенты.Ссылка КАК Контрагент
Из Справочник.Контрагенты КАК Контрагенты
Где Контрагенты.Ссылка В ИЕРАРХИИ (&ГруппаКонтрагентов)
AndrewUs; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SPID 13.10.14 17:46 Сейчас в теме
Вопрос о том как программно заполнить? Выбрать запросом контрагентов которые в иерархии выбранной группы и заполнить результатом таблицу.
3. AndrewUs 13 13.10.14 17:51 Сейчас в теме
(2) SPID, Совершенно верно, программно.
4. SPID 13.10.14 18:03 Сейчас в теме
В чем собственно трудность? Ниже запрос для получения списка контрагентов в группе. Выполняете запрос, получаете список контрагентов, затем этим списком заполняете таблицу и/или выполняете нужные вам алгоритмы.

ВЫБРАТЬ
Контрагенты.Ссылка КАК Контрагент
Из Справочник.Контрагенты КАК Контрагенты
Где Контрагенты.Ссылка В ИЕРАРХИИ (&ГруппаКонтрагентов)
AndrewUs; +1 Ответить
5. AndrewUs 13 13.10.14 18:04 Сейчас в теме
(4) SPID, Спасибо, попробую.
6. AndrewUs 13 14.10.14 13:34 Сейчас в теме
(4) SPID,
Процедура КоманднаяПанель1ЗаполнитьПоГруппе(Кнопка)
	Если Ссылка.Проведен Тогда
		Ответ = Вопрос("Табличная часть будет очищена. Продолжить?", РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Нет);
		Если Ответ = КодВозвратаДиалога.Нет Тогда
			Возврат;
		КонецЕсли;
	КонецЕсли;

	НачисленияЗаОбучениеИОбщежитие.Очистить();
	ВыборкаКонтр=Справочники.Контрагенты.Выбрать();
	Пока ВыборкаКонтр.Следующий() Цикл
		Если (Не ВыборкаКонтр.ЭтоГруппа) И (Не ВыборкаКонтр.ПометкаУдаления)  Тогда   
			Если ЗначениеЗаполнено(ВыборкаКонтр.НачислятьОбучение) или ЗначениеЗаполнено(ВыборкаКонтр.НачислятьОбщежитие) Тогда
				
							
			 СтрокаТабличнойЧасти         = НачисленияЗаОбучениеИОбщежитие.Добавить();
		     СтрокаТабличнойЧасти.Студент = ВыборкаКонтр.Ссылка;

			  
               СтрокаТабличнойЧасти.Группа = ВыборкаКонтр.Родитель.Ссылка;

			    Если ЗначениеЗаполнено(ВыборкаКонтр.НачислятьОбучение)  Тогда

			    ЦенаОбучения = Ценообразование.ПолучитьЦенуНоменклатуры(ВыборкаКонтр.НачислятьОбучение,
		                            ВыборкаКонтр.ТипЦеныСтудента, Дата);
				Иначе
				ЦенаОбучения =0;					
			КонецЕсли;
			
			
			      Если ЗначениеЗаполнено(ВыборкаКонтр.НачислятьОбщежитие) Тогда
			      ЦенаОбщежития = Ценообразование.ПолучитьЦенуНоменклатуры(ВыборкаКонтр.НачислятьОбщежитие,
		                            ВыборкаКонтр.ТипЦеныСтудента, Дата);
                  Иначе
				ЦенаОбщежития =0;					
			КонецЕсли;
                 СтрокаТабличнойЧасти.СуммуОбучение = ЦенаОбучения;
			     СтрокаТабличнойЧасти.СуммаОбщежитие = ЦенаОбщежития;
			
			
			КонецЕсли;	
	
		КонецЕсли;
		
	КонецЦикла  ;
КонецПроцедуры
Показать


Есть вот такая процедура, но она заполняет всеми контрагентами, у которых есть удовлетворяющие условия, подскажите, пожалуйста, можно ли с этой процедурой что-то сделать или новую писать придется?
7. Salavat 14 14.10.14 14:08 Сейчас в теме
(6) AndrewUs, да выложите уж саму обработку (или заготовку - что есть) - кому нелень - сделают.
вобще уже сказали ведь - (4) SPID
8. AndrewUs 13 14.10.14 14:24 Сейчас в теме
(7) Salavat, если бы это была обработка, выложил бы, но это документ, добавленный в конфигурацию ... не всю же базу выкладывать?
9. Salavat 14 14.10.14 14:37 Сейчас в теме
(8) AndrewUs, вобщем посмотрел - (6) AndrewUs - вроде как в строке
ВыборкаКонтр=Справочники.Контрагенты.Выбрать();
достаточно указать типа -
ВыборкаКонтр=Справочники.Контрагенты.Выбрать(&ГруппаИзКоторойОтбиратьНадо);
10. Alexey_ 27 14.10.14 14:48 Сейчас в теме
(9) Salavat, не сработает для нескольких уровней вложенности
11. Salavat 14 14.10.14 14:57 Сейчас в теме
21. Alexey_ 27 14.10.14 15:45 Сейчас в теме
(11) Salavat,
ВыборкаКонтр=Справочники.Контрагенты.Выбрать(ГруппаИзКоторойОтбиратьНадо);

первый параметр это родитель, т.е., если в этой папке будут подпапки, то контрагенты из этих подпапок не попадут в выборку, т.к. родитель у них будет другой
22. Salavat 14 14.10.14 15:55 Сейчас в теме
(21) Alexey_, да теперь понял - простите - нужно написать -
ВыборкаКонтр=Справочники.Контрагенты.ВыбратьИерархически(ГруппаИзКоторойОтбиратьНадо);
12. AndrewUs 13 14.10.14 15:06 Сейчас в теме
Пытаюсь сделать так, чтобы в документе (скрин выкладываю) происходило такое действие: при нажатии на кнопку "Заполнить по группе" выводилось окно, которое предлагало бы выбрать определенную группу контрагентов, в которой, кстати, нет другой группы, т.е. в папке нет подпапок, и при нажатии на ок в табличную часть документа попадали только контрагенты выбранной группы
Прикрепленные файлы:
13. SPID 14.10.14 15:12 Сейчас в теме
Может должно быть что то типа (возможны синтаксические ошибки):

Процедура КоманднаяПанель1ЗаполнитьПоГруппе(Кнопка)
    Если Ссылка.Проведен Тогда
        Ответ = Вопрос("Табличная часть будет очищена. Продолжить?", РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Нет);
        Если Ответ = КодВозвратаДиалога.Нет Тогда
            Возврат;
        КонецЕсли;
    КонецЕсли;

    НачисленияЗаОбучениеИОбщежитие.Очистить();
  
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ВыбраннаяГруппа", ВыбраннаяГруппа);

    Запрос.Текст = 
     "ВЫБРАТЬ
      | Контрагенты.Ссылка КАК Ссылка,
      | Контрагенты.Родитель КАК Родитель,
      | Контрагенты.НачислятьОбучение КАК НачислятьОбучение,
      | Контрагенты.НачислятьОбщежитие КАК НачислятьОбщежитие,
      | Контрагенты.ТипЦеныСтудента КАК ТипЦеныСтудента
      |Из Справочник.Контрагенты КАК Контрагенты
	  |
      |Где Контрагенты.Ссылка В ИЕРАРХИИ (&ВыбраннаяГруппа)
      | И Не Контрагенты.ПометкаУдаления
      | И Не Контрагенты.ЭтоГруппа
      | И (Контрагенты.НачислятьОбучение
      | ИЛИ Контрагенты.НачислятьОбщежитие)";

    ВыборкаКонтр = Запрос.Выполнить().Выбрать();

	Пока ВыборкаКонтр.Следующий() Цикл
					
			СтрокаТабличнойЧасти         = НачисленияЗаОбучениеИОбщежитие.Добавить();
			СтрокаТабличнойЧасти.Студент = ВыборкаКонтр.Ссылка;
			
			СтрокаТабличнойЧасти.Группа = ВыборкаКонтр.Родитель;
			
			Если ЗначениеЗаполнено(ВыборкаКонтр.НачислятьОбучение)  Тогда
				
				ЦенаОбучения = Ценообразование.ПолучитьЦенуНоменклатуры(ВыборкаКонтр.НачислятьОбучение,
				ВыборкаКонтр.ТипЦеныСтудента, Дата);
				
			Иначе
				ЦенаОбучения =0;                    
			КонецЕсли;
			
			Если ЗначениеЗаполнено(ВыборкаКонтр.НачислятьОбщежитие) Тогда
				ЦенаОбщежития = Ценообразование.ПолучитьЦенуНоменклатуры(ВыборкаКонтр.НачислятьОбщежитие,
				ВыборкаКонтр.ТипЦеныСтудента, Дата);
			Иначе
				ЦенаОбщежития =0;                    
			КонецЕсли;
			
			СтрокаТабличнойЧасти.СуммуОбучение = ЦенаОбучения;
			СтрокаТабличнойЧасти.СуммаОбщежитие = ЦенаОбщежития;
								
	КонецЦикла ;
	
КонецПроцедуры
Показать


Единственно смущает
ЗначениеЗаполнено(ВыборкаКонтр.НачислятьОбучение)
, если НачислятьОбучение имеет тип булево, то условие некорректное.
14. SPID 14.10.14 15:14 Сейчас в теме
И еще ВыбраннаяГруппа как то значение надо получить - как вы указываете группу контрагентов которой нужно заполнить ТЧ?
15. AndrewUs 13 14.10.14 15:16 Сейчас в теме
(14) SPID, Пока никак не указываю.
16. SPID 14.10.14 15:19 Сейчас в теме
Так надо указать или как то определить значение ВыбраннаяГруппа
17. Salavat 14 14.10.14 15:23 Сейчас в теме
(16) SPID, человек не знает - как/где/... надо указать ему.
за этим (в т.ч.) он и обратился.
18. SPID 14.10.14 15:30 Сейчас в теме
В постановке вопроса "...выбранной группой контрагентов". Значит кто-то где-то эту группу уже выбрал. Как варианты: значение группы берется из какого-то реквизита документ; задается вопрос пользователю и открывается форма выбора группы контрагента.
19. AndrewUs 13 14.10.14 15:33 Сейчас в теме
(18) SPID, Простите, я изначально Вас запутал ... эта группа даже еще не выбрана. В данном случае Вы правы, что должен задаваться вопрос пользователю для выбора группы контрагентов.
20. Salavat 14 14.10.14 15:39 Сейчас в теме
(19) AndrewUs, тогда - выбрать группу -
ФормаВыбораГруппы = Справочники.Контрагенты.ПолучитьФормуВыбораГруппы("ФормаВыбораГруппы");
ВыбраннаяГруппа = ФормаВыбораГруппы.ОткрытьМодально();

примерно так.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот