как добавить отбор по "Артиклу"

1. Ranel 10.08.20 22:24 Сейчас в теме
как добавить отбор по Артиклу, в БП3.
нашел тему на ветке
https://forum.infostart.ru/forum9/topic171492/

но решения нет, что может сказать?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Krasnyj 1282 11.08.20 01:54 Сейчас в теме
(1) А куда именно добавить?
3. dj_tol 103 11.08.20 02:11 Сейчас в теме
Если список выводится на УФ, то по событию добавить

&НаСервере
Процедура ДобавитьОтборВДинамическийСписок(СписокОтбора,ВидСравнения,ЭлементОтбора,ПолеКомпоновкиДанных)
		НовЭлементОтбора = СписокОтбора.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		НовЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ПолеКомпоновкиДанных); НовЭлементОтбора.ВидСравнения = ВидСравнения;
		НовЭлементОтбора.Использование = Истина;
		НовЭлементОтбора.ПравоеЗначение = ЭлементОтбора;  
КонецПроцедуры


Заполняйте и отбирайте.
4. Ranel 14.08.20 16:12 Сейчас в теме
(3)
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьТекстЗаголовка(Форма)
	
	Отчет = Форма.Отчет;
	ЗаголовокОтчета = "Карточки учета материалов (М-17)" + БухгалтерскиеОтчетыКлиентСервер.ПолучитьПредставлениеПериода(Форма.НачалоПериода, Форма.КонецПериода);
	Форма.Заголовок = ЗаголовокОтчета;

КонецПроцедуры

////////////////////////////////////////////////////////////­////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ГРУППЫ ПЕРИОД

&НаКлиенте
Процедура ВыбратьПериод(Команда)
	
	ПараметрыВыбора = Новый Структура("НачалоПериода,КонецПериода", ЭтаФорма.НачалоПериода, ЭтаФорма.КонецПериода);
	ОписаниеОповещения = Новый ОписаниеОповещения("ВыбратьПериодЗавершение", ЭтотОбъект);
	ОткрытьФорму("ОбщаяФорма.ВыборСтандартногоПериода", ПараметрыВыбора, Элементы.ВыбратьПериод, , , , ОписаниеОповещения);
	
КонецПроцедуры

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

&НаКлиенте
Процедура НачалоПериодаПриИзменении(Элемент)
	ОбновитьТекстЗаголовка(ЭтаФорма);
	ОчиститьТаблицу();
КонецПроцедуры

&НаКлиенте
Процедура КонецПериодаПриИзменении(Элемент)
	ОбновитьТекстЗаголовка(ЭтаФорма);
	ОчиститьТаблицу();
КонецПроцедуры


&НаСервере
Процедура ЗаполнитьСписокСчетовСервер()
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	0 КАК Флажок,
		|	Хозрасчетный.Ссылка КАК Счет,
		|	Хозрасчетный.ЗапретитьИспользоватьВПроводках КАК ЭтоГруппа,
		|	ВЫБОР
		|		КОГДА Хозрасчетный.ЗапретитьИспользоватьВПроводках
		|			ТОГДА 0
		|		ИНАЧЕ 1
		|	КОНЕЦ КАК ИндексКартинки,
		|	Хозрасчетный.Код КАК Код
		|ИЗ
		|	ПланСчетов.Хозрасчетный КАК Хозрасчетный
		|ГДЕ
		|	(ПОДСТРОКА(Хозрасчетный.Код, 1, 2) = ""10""
		|			ИЛИ ПОДСТРОКА(Хозрасчетный.Код, 1, 3) = ""002""
		|			ИЛИ ПОДСТРОКА(Хозрасчетный.Код, 1, 3) = ""003"")
		|
		|УПОРЯДОЧИТЬ ПО
		|	Хозрасчетный.Ссылка ИЕРАРХИЯ
		|АВТОУПОРЯДОЧИВАНИЕ";
		
	ЗначениеВРеквизитФормы(Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией), "ТабСписокСчетов");
	
	УстановитьУсловноеОформление();	
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьСписокСчетов()
	
	ЗаполнитьСписокСчетовСервер();

КонецПроцедуры

//------------------------------------------------------------
//&НаСервере
//Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//	
//	//Если Организация.Пустая() Тогда
//	//	Организация = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация");
//	//КонецЕсли;
//	//р(что бы склад по умолчанию не был предопределённым)(
//	//Если Склад.Пустая() Тогда
//	//	Склад = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнойСклад");
//	//КонецЕсли;
//	//)р
//	
//КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	//р(	
	ЭтаФорма.НачалоПериода = НачалоДня(ТекущаяДата());
	ЭтаФорма.КонецПериода  = ТекущаяДата();
	//)р
	ОбновитьТекстЗаголовка(ЭтаФорма);
	
	УправлениеПолямиИнтервала();
	
	ЗаполнитьСписокСчетов();
	
	КонецПроцедуры

&НаСервере
Процедура УстановитьУсловноеОформление()
	
	УсловноеОформление.Элементы.Очистить();
	
	Элемент = УсловноеОформление.Элементы.Добавить();
	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона",WebЦвета.Бежевый);
	ЭУ = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭУ.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("ТабСписокСчетов.ЭтоГруппа");
	ЭУ.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
	ЭУ.ПравоеЗначение = Истина;
	ОП = Элемент.Поля.Элементы.Добавить();
	ОП.Поле = Новый ПолеКомпоновкиДанных("ТабСписокСчетовСчет");

КонецПроцедуры

//------------------------------------------------------------

&НаСервере
Функция ПолучитьСпискиСчетов()
	
	ПараметрСписок_Счет = Новый СписокЗначений;
	
	ТекущиеДанные = ЭтаФорма.ТабСписокСчетов.ПолучитьЭлементы();
	Для Каждого СтрокаДерева Из ТекущиеДанные Цикл
		Если СтрокаДерева.Флажок И НЕ СтрокаДерева.ЭтоГруппа Тогда
			ПараметрСписок_Счет.Добавить(СтрокаДерева.Счет);
		КонецЕсли;
		
		ПолучитьПодчиненныеСчета(СтрокаДерева, ПараметрСписок_Счет);
	КонецЦикла;
	
	СпискиСчетов = Новый Структура("Список10, Список107_00302, Список002, Список00301");
	Список10        = Новый СписокЗначений;
	Список107_00302 = Новый СписокЗначений;
	Список002       = Новый СписокЗначений;
	Список00301     = Новый СписокЗначений;
	
	Для Каждого СпСчет Из ПараметрСписок_Счет Цикл
		
		//10.7 или 003.02
		Если СпСчет.Значение = ПланыСчетов.Хозрасчетный.МатериалыПереданныеВПереработку
			ИЛИ СпСчет.Значение = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработкуВПроизводстве Тогда
			
			Список107_00302.Добавить(СпСчет.Значение);
			
		//003.01	
		ИначеЕсли СпСчет.Значение = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку Тогда
			
			Список00301.Добавить(СпСчет.Значение);
			
		//002	
		ИначеЕсли СпСчет.Значение = ПланыСчетов.Хозрасчетный.ТМЦпринятыеНаОтветственноеХранение Тогда
		
			Список002.Добавить(СпСчет.Значение);
			
		Иначе	//10.x (кроме 10.7)
			
			Список10.Добавить(СпСчет.Значение);
			
		КонецЕсли;
		
	КонецЦикла;
	
	СпискиСчетов.Вставить("Список10",       Список10);
	СпискиСчетов.Вставить("Список107_00302",Список107_00302);
	СпискиСчетов.Вставить("Список002",      Список002);
	СпискиСчетов.Вставить("Список00301",    Список00301);
	
	Возврат СпискиСчетов;
	
КонецФункции

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

&НаСервере
Функция ПолучитьСписок( п_ТолькоДвижения )

	ТекстЗапроса = "ВЫБРАТЬ
	               |	ХозрасчетныйОстаткиИОбороты10.Субконто1 КАК Номенклатура,
	               |	ХозрасчетныйОстаткиИОбороты10.КоличествоОборотДт КАК КоличествоПриход,
	               |	ХозрасчетныйОстаткиИОбороты10.КоличествоОборотКт КАК КоличествоРасход";
	
	Если НЕ п_ТолькоДвижения Тогда
		ТекстЗапроса = ТекстЗапроса +",
	               |	ХозрасчетныйОстаткиИОбороты10.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
	               |	ХозрасчетныйОстаткиИОбороты10.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток";
	КонецЕсли;
	
	ТекстЗапроса = ТекстЗапроса + "
	               |ПОМЕСТИТЬ ОстаткиИОбороты10
	               |ИЗ
	               |	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
	               |			&НачалоПериода,
	               |			&ОкончаниеПериода,
	               |			Авто,
	               |			,
	               |			Счет В (&Счет10),
	               |			&Субконто10,
	               |			Организация = &Организация
	               |				И Субконто2 = &Склад) КАК ХозрасчетныйОстаткиИОбороты10
	               |;
	               |
	               |////////////////////////////////////////////////////////////­////////////////////
	               |ВЫБРАТЬ
	               |	ХозрасчетныйОстаткиИОбороты00301.Субконто1 КАК Номенклатура,
	               |	ХозрасчетныйОстаткиИОбороты00301.КоличествоОборотДт КАК КоличествоПриход,
	               |	ХозрасчетныйОстаткиИОбороты00301.КоличествоОборотКт КАК КоличествоРасход";
	
	Если НЕ п_ТолькоДвижения Тогда
		ТекстЗапроса = ТекстЗапроса +",
	               |	ХозрасчетныйОстаткиИОбороты00301.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
	               |	ХозрасчетныйОстаткиИОбороты00301.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток";
	КонецЕсли;
	
	ТекстЗапроса = ТекстЗапроса + "
	               |ПОМЕСТИТЬ ОстаткиИОбороты00301
	               |ИЗ
	               |	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
	               |			&НачалоПериода,
	               |			&ОкончаниеПериода,
	               |			Авто,
	               |			,
	               |			Счет В (&Счет00301),
	               |			&Субконто00301,
	               |			Организация = &Организация
	               |				И Субконто2 = &Склад) КАК ХозрасчетныйОстаткиИОбороты00301
	               |;
	               |
	               |////////////////////////////////////////////////////////////­////////////////////
	               |ВЫБРАТЬ
	               |	ХозрасчетныйОстаткиИОбороты107_00302.Субконто1 КАК Номенклатура,
	               |	ХозрасчетныйОстаткиИОбороты107_00302.КоличествоОборотДт КАК КоличествоПриход,
	               |	ХозрасчетныйОстаткиИОбороты107_00302.КоличествоОборотКт КАК КоличествоРасход";
	
	Если НЕ п_ТолькоДвижения Тогда
		ТекстЗапроса = ТекстЗапроса +",
	               |	ХозрасчетныйОстаткиИОбороты107_00302.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
	               |	ХозрасчетныйОстаткиИОбороты107_00302.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток";
	КонецЕсли;
	
	ТекстЗапроса = ТекстЗапроса + "
	               |ПОМЕСТИТЬ ОстаткиИОбороты107_00302
	               |ИЗ
	               |	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &ОкончаниеПериода, Авто, , Счет В (&Счет107_00302), &Субконто107_00302, Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты107_00302
	               |;
	               |
				   |////////////////////////////////////////////////////////////­////////////////////
				   |ВЫБРАТЬ
				   |	ХозрасчетныйОстаткиИОбороты002.Субконто1 КАК Номенклатура,
				   |	ХозрасчетныйОстаткиИОбороты002.КоличествоОборотДт КАК КоличествоПриход,
				   |	ХозрасчетныйОстаткиИОбороты002.КоличествоОборотКт КАК КоличествоРасход";
	
	Если НЕ п_ТолькоДвижения Тогда
		ТекстЗапроса = ТекстЗапроса +",
				   |	ХозрасчетныйОстаткиИОбороты002.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
				   |	ХозрасчетныйОстаткиИОбороты002.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток";
	КонецЕсли;
	
	ТекстЗапроса = ТекстЗапроса + "
				   |ПОМЕСТИТЬ ОстаткиИОбороты002
				   |ИЗ
				   |	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &ОкончаниеПериода, Авто, , Счет В (&Счет002), &Субконто002, Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты002
				   |;
	               |
	               |////////////////////////////////////////////////////////////­////////////////////
	               |ВЫБРАТЬ
	               |	ОстаткиИОбороты10.Номенклатура КАК Номенклатура
	               |ИЗ
	               |	ОстаткиИОбороты10 КАК ОстаткиИОбороты10
	               |
	               |ОБЪЕДИНИТЬ
	               |
	               |ВЫБРАТЬ
	               |	ОстаткиИОбороты00301.Номенклатура
	               |ИЗ
	               |	ОстаткиИОбороты00301 КАК ОстаткиИОбороты00301
	               |
	               |ОБЪЕДИНИТЬ
	               |
	               |ВЫБРАТЬ
	               |	ОстаткиИОбороты107_00302.Номенклатура
	               |ИЗ
	               |	ОстаткиИОбороты107_00302 КАК ОстаткиИОбороты107_00302
	               |
				   |ОБЪЕДИНИТЬ
				   |
				   |ВЫБРАТЬ
				   |	ОстаткиИОбороты002.Номенклатура
				   |ИЗ
				   |	ОстаткиИОбороты002 КАК ОстаткиИОбороты002
	               |
	               |УПОРЯДОЧИТЬ ПО
	               |	Номенклатура";	
				   
	Запрос = Новый Запрос( ТекстЗапроса );
	
	СпискиСчетов = ПолучитьСпискиСчетов();
	
	Запрос.УстановитьПараметр("НачалоПериода",   НачалоДня(НачалоПериода));
	Запрос.УстановитьПараметр("ОкончаниеПериода",КонецДня(КонецПериода));
	Запрос.УстановитьПараметр("Организация",     Организация);
	Запрос.УстановитьПараметр("Склад",           Склад);
	//р(
	//Запрос.УстановитьПараметр("Подразделения",           РГПодразделения);
	//)р
	
    Субконто10 = Новый СписокЗначений; 
    Субконто10.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
    Субконто10.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);
    
    Субконто00301 = Новый СписокЗначений; 
    Субконто00301.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
    Субконто00301.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);
	
    Субконто107_00302 = Новый СписокЗначений; 
    Субконто107_00302.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
	
    Субконто002 = Новый СписокЗначений; 
    Субконто002.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
	
	Запрос.УстановитьПараметр("Субконто10",       Субконто10);	
	Запрос.УстановитьПараметр("Субконто00301",    Субконто00301);	
	Запрос.УстановитьПараметр("Субконто107_00302",Субконто107_00302);	
	Запрос.УстановитьПараметр("Субконто002",      Субконто002);	
	
	Запрос.УстановитьПараметр("Счет10",       СпискиСчетов.Список10);
	Запрос.УстановитьПараметр("Счет00301",    СпискиСчетов.Список00301);
	Запрос.УстановитьПараметр("Счет107_00302",СпискиСчетов.Список107_00302);
	Запрос.УстановитьПараметр("Счет002",      СпискиСчетов.Список002);
	
	Результат = Запрос.Выполнить();
	
	Возврат Результат;
	
КонецФункции

&НаСервере
Процедура ЗаполнитьТаблицуНаСервере( п_ТолькоДвижения )
	
	СписокНоменклатуры = ПолучитьСписок( п_ТолькоДвижения );
	
	ТабНоменклатура.Очистить();
	
	НомерПП = 1;
	
	Выборка = СписокНоменклатуры.Выбрать();
	Пока Выборка.Следующий() Цикл
		НоваяСтрока = ТабНоменклатура.Добавить();
		НоваяСтрока.Флажок       = Истина;
		НоваяСтрока.Номенклатура = Выборка.Номенклатура;
		НоваяСтрока.НомерПП      = НомерПП;
		
		НомерПП = НомерПП + 1;
	КонецЦикла;	
	
КонецПроцедуры	

&НаКлиенте
Процедура ЗаполнитьТаблицу(п_ТолькоДвижения)
	
	Если Организация.Пустая() Тогда
		ТекстСообщения = НСтр("ru='Не выбрана организация!'");
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,,"Организация");
		Возврат;
	КонецЕсли;	
	//р(
	//Если Склад.Пустая() Тогда
	//	ТекстСообщения = НСтр("ru='Не выбран склад!'");
	//	ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,,"Склад");
	//	Возврат;
	//КонецЕсли;	
	//)р
	ЗаполнитьТаблицуНаСервере(п_ТолькоДвижения);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьОстаткиИДвижения(Команда)
	ЗаполнитьТаблицу(Ложь);
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьТолькоДвижения(Команда)
	ЗаполнитьТаблицу(Истина);
КонецПроцедуры

//------------------------------------------------------------
&НаКлиенте
Процедура ТабНоменклатураПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
	Если НоваяСтрока Тогда
		
		СтрокаТабНом = Элементы.ТабНоменклатура.ТекущиеДанные;
		
		СтрокаТабНом.НомерПП = ТабНоменклатура.Количество();
		СтрокаТабНом.Флажок  = Истина;
		
	КонецЕсли;	
КонецПроцедуры

&НаКлиенте
Процедура ТабНоменклатураПослеУдаления(Элемент)
	НомерПП = 1;
	Для каждого ТабСтр из ТабНоменклатура Цикл
		ТабСтр.НомерПП = НомерПП;
		НомерПП = НомерПП + 1;
	КонецЦикла;	
КонецПроцедуры

//------------------------------------------------------------
&НаСервере
Функция ПолучитьПредставлениеДвижения( п_Движение )
	
	Регистратор = п_Движение.Регистратор;
	Если Регистратор = Неопределено или Регистратор.Пустая() Тогда
		Возврат "";
	КонецЕсли;
	
	Если ТипЗнч( Регистратор ) = Тип( "ДокументСсылка.ОтчетПроизводстваЗаСмену" ) Тогда
		Если п_Движение.КоличествоПриход > 0 Тогда
			Текст = "Накладная на передачу готовой продукции на склад №";
		Иначе
			Текст = "Требование накладная №"
		КонецЕсли;	
		Текст = Текст + СокрЛП(Регистратор.Номер)+" от "+Формат(Регистратор.Дата, "ДФ=dd.MM.yyyy");
	ИначеЕсли ТипЗнч( Регистратор ) = Тип( "ДокументСсылка.ПоступлениеТоваровУслуг" ) Тогда
		Текст = "Накладная №"+СокрЛП(Регистратор.НомерВходящегоДокумента)+" от "+Формат(Регистратор.ДатаВходящегоДокумента, "ДФ=dd.MM.yyyy")+Символы.ВК+СокрЛП(Регистратор.Контрагент);
	ИначеЕсли ТипЗнч( Регистратор ) = Тип( "ДокументСсылка.РеализацияТоваровУслуг" ) Тогда
		Текст = "Накладная №"+СокрЛП(Регистратор.Номер)+" от "+Формат(Регистратор.Дата, "ДФ=dd.MM.yyyy")+Символы.ВК+СокрЛП(Регистратор.Контрагент);
	ИначеЕсли ТипЗнч( Регистратор ) = Тип( "ДокументСсылка.ТребованиеНакладная" ) Тогда
		Текст = "Требование накладная №"+СокрЛП(Регистратор.Номер)+" от "+Формат(Регистратор.Дата, "ДФ=dd.MM.yyyy");
	Иначе
		Текст = Регистратор.Метаданные().Синоним + " №"+СокрЛП(Регистратор.Номер)+" от "+Формат(Регистратор.Дата, "ДФ=dd.MM.yyyy");
	КонецЕсли;	
	
	Возврат Текст;
	
КонецФункции	

&НаСервере
Функция ПолучитьСписокНоменклатуры()
	
	СписокНоменклатуры = Новый СписокЗначений;
	
	Если ИнтервалКарточек Тогда
		Если НомерПервойКарточки = 0 ИЛИ НомерПервойКарточки > НомерПоследнейКарточки Тогда
			ТекстСообщения = НСтр("ru='Неверно задан интервал карточек!'");
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,,"НомерПервойКарточки");
			Возврат СписокНоменклатуры;
		КонецЕсли;
		
		Если НомерПервойКарточки > ТабНоменклатура.Количество() Тогда
			ТекстСообщения = НСтр("ru='Номер первой карточки больше количества в таблице номенклатуры!'");
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,,"НомерПервойКарточки");
			Возврат СписокНоменклатуры;
		КонецЕсли;
		
		Если НомерПоследнейКарточки > ТабНоменклатура.Количество() Тогда
			ТекстСообщения = НСтр("ru='Номер последней карточки больше количества в таблице номенклатуры!'");
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,,"НомерПоследнейКарточки");
			Возврат СписокНоменклатуры;
		КонецЕсли;
	КонецЕсли;	
	
	Если ИнтервалКарточек Тогда
		
		Для НомерТекСтроки = НомерПервойКарточки По НомерПоследнейКарточки Цикл
			
			Если ТабНоменклатура[НомерТекСтроки-1].Флажок Тогда
				СписокНоменклатуры.Добавить(ТабНоменклатура[НомерТекСтроки-1].Номенклатура);
			КонецЕсли;
			
		КонецЦикла;
		
	Иначе
		Для каждого ТабСтр из ТабНоменклатура Цикл
			Если ТабСтр.Флажок Тогда
				СписокНоменклатуры.Добавить(ТабСтр.Номенклатура);
			КонецЕсли;	
		КонецЦикла;	
	КонецЕсли;
	
	Возврат СписокНоменклатуры;
	
КонецФункции	

&НаСервере
Функция ПолучитьДанные( п_КоличествоПозиций )
	
	ТекстЗапроса = "ВЫБРАТЬ
	               |	ХозрасчетныйОстаткиИОбороты10.Субконто1 КАК Субконто1,
	               |	ХозрасчетныйОстаткиИОбороты10.КоличествоОборотДт КАК КоличествоПриход,
	               |	ХозрасчетныйОстаткиИОбороты10.КоличествоОборотКт КАК КоличествоРасход,
	               |	ХозрасчетныйОстаткиИОбороты10.Регистратор КАК Регистратор,
	               |	ХозрасчетныйОстаткиИОбороты10.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
	               |	ХозрасчетныйОстаткиИОбороты10.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
	               |ПОМЕСТИТЬ ОстаткиИОбороты10
	               |ИЗ
	               |	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
	               |			&НачалоПериода,
	               |			&ОкончаниеПериода,
	               |			Регистратор,
	               |			,
	               |			Счет В (&Счет10),
	               |			&Субконто10,
	               |			Организация = &Организация
	               |				И Субконто2 = &Склад
	               |				И Субконто1 В (&Список)) КАК ХозрасчетныйОстаткиИОбороты10
	               |;
	               |
	               |////////////////////////////////////////////////////////////­////////////////////
	               |ВЫБРАТЬ
	               |	ХозрасчетныйОстаткиИОбороты00301.Субконто1 КАК Субконто1,
	               |	ХозрасчетныйОстаткиИОбороты00301.КоличествоОборотДт КАК КоличествоПриход,
	               |	ХозрасчетныйОстаткиИОбороты00301.КоличествоОборотКт КАК КоличествоРасход,
	               |	ХозрасчетныйОстаткиИОбороты00301.Регистратор КАК Регистратор,
	               |	ХозрасчетныйОстаткиИОбороты00301.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
	               |	ХозрасчетныйОстаткиИОбороты00301.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
	               |ПОМЕСТИТЬ ОстаткиИОбороты00301
	               |ИЗ
	               |	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
	               |			&НачалоПериода,
	               |			&ОкончаниеПериода,
	               |			Регистратор,
	               |			,
	               |			Счет В (&Счет00301),
	               |			&Субконто00301,
	               |			Организация = &Организация
	               |				И Субконто2 = &Склад
	               |				И Субконто1 В (&Список)) КАК ХозрасчетныйОстаткиИОбороты00301
	               |;
	               |
	               |////////////////////////////////////////////////////////////­////////////////////
	               |ВЫБРАТЬ
	               |	ХозрасчетныйОстаткиИОбороты107_00302.Субконто1 КАК Субконто1,
	               |	ХозрасчетныйОстаткиИОбороты107_00302.КоличествоОборотДт КАК КоличествоПриход,
	               |	ХозрасчетныйОстаткиИОбороты107_00302.КоличествоОборотКт КАК КоличествоРасход,
	               |	ХозрасчетныйОстаткиИОбороты107_00302.Регистратор КАК Регистратор,
	               |	ХозрасчетныйОстаткиИОбороты107_00302.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
	               |	ХозрасчетныйОстаткиИОбороты107_00302.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
	               |ПОМЕСТИТЬ ОстаткиИОбороты107_00302
	               |ИЗ
	               |	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
	               |			&НачалоПериода,
	               |			&ОкончаниеПериода,
	               |			Регистратор,
	               |			,
	               |			Счет В (&Счет107_00302),
	               |			&Субконто107_00302,
	               |			Организация = &Организация
	               |				И Субконто1 В (&Список)) КАК ХозрасчетныйОстаткиИОбороты107_00302
	               |;
	               |
	               |////////////////////////////////////////////////////////////­////////////////////
	               |ВЫБРАТЬ
	               |	ХозрасчетныйОстаткиИОбороты002.Субконто1 КАК Субконто1,
	               |	ХозрасчетныйОстаткиИОбороты002.КоличествоОборотДт КАК КоличествоПриход,
	               |	ХозрасчетныйОстаткиИОбороты002.КоличествоОборотКт КАК КоличествоРасход,
	               |	ХозрасчетныйОстаткиИОбороты002.Регистратор КАК Регистратор,
	               |	ХозрасчетныйОстаткиИОбороты002.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
	               |	ХозрасчетныйОстаткиИОбороты002.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
	               |ПОМЕСТИТЬ ОстаткиИОбороты002
	               |ИЗ
	               |	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
	               |			&НачалоПериода,
	               |			&ОкончаниеПериода,
	               |			Регистратор,
	               |			,
	               |			Счет В (&Счет002),
	               |			&Субконто002,
	               |			Организация = &Организация
	               |				И Субконто1 В (&Список)) КАК ХозрасчетныйОстаткиИОбороты002
	               |;
	               |
	               |////////////////////////////////////////////////////////////­////////////////////
	               |ВЫБРАТЬ
	               |	ОстаткиИОборотыОбщий.Субконто1 КАК Номенклатура,
	               |	ОстаткиИОборотыОбщий.КоличествоПриход КАК КоличествоПриход,
	               |	ОстаткиИОборотыОбщий.КоличествоРасход КАК КоличествоРасход,
	               |	ОстаткиИОборотыОбщий.Регистратор КАК Регистратор,
	               |	ОстаткиИОборотыОбщий.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
	               |	ОстаткиИОборотыОбщий.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
	               |ИЗ
	               |	(ВЫБРАТЬ
	               |		ОстаткиИОбороты10.Субконто1 КАК Субконто1,
	               |		ОстаткиИОбороты10.КоличествоПриход КАК КоличествоПриход,
	               |		ОстаткиИОбороты10.КоличествоРасход КАК КоличествоРасход,
	               |		ОстаткиИОбороты10.Регистратор КАК Регистратор,
	               |		ОстаткиИОбороты10.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
	               |		ОстаткиИОбороты10.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
	               |	ИЗ
	               |		ОстаткиИОбороты10 КАК ОстаткиИОбороты10
	               |	
	               |	ОБЪЕДИНИТЬ ВСЕ
	               |	
	               |	ВЫБРАТЬ
	               |		ОстаткиИОбороты00301.Субконто1,
	               |		ОстаткиИОбороты00301.КоличествоПриход,
	               |		ОстаткиИОбороты00301.КоличествоРасход,
	               |		ОстаткиИОбороты00301.Регистратор,
	               |		ОстаткиИОбороты00301.КоличествоНачальныйОстаток,
	               |		ОстаткиИОбороты00301.КоличествоКонечныйОстаток
	               |	ИЗ
	               |		ОстаткиИОбороты00301 КАК ОстаткиИОбороты00301
	               |	
	               |	ОБЪЕДИНИТЬ ВСЕ
	               |	
	               |	ВЫБРАТЬ
	               |		ОстаткиИОбороты107_00302.Субконто1,
	               |		ОстаткиИОбороты107_00302.КоличествоПриход,
	               |		ОстаткиИОбороты107_00302.КоличествоРасход,
	               |		ОстаткиИОбороты107_00302.Регистратор,
	               |		ОстаткиИОбороты107_00302.КоличествоНачальныйОстаток,
	               |		ОстаткиИОбороты107_00302.КоличествоКонечныйОстаток
	               |	ИЗ
	               |		ОстаткиИОбороты107_00302 КАК ОстаткиИОбороты107_00302
	               |	
	               |	ОБЪЕДИНИТЬ ВСЕ
	               |	
	               |	ВЫБРАТЬ
	               |		ОстаткиИОбороты002.Субконто1,
	               |		ОстаткиИОбороты002.КоличествоПриход,
	               |		ОстаткиИОбороты002.КоличествоРасход,
	               |		ОстаткиИОбороты002.Регистратор,
	               |		ОстаткиИОбороты002.КоличествоНачальныйОстаток,
	               |		ОстаткиИОбороты002.КоличествоКонечныйОстаток
	               |	ИЗ
	               |		ОстаткиИОбороты002 КАК ОстаткиИОбороты002) КАК ОстаткиИОборотыОбщий
	               |
	               |УПОРЯДОЧИТЬ ПО
	               |	ОстаткиИОборотыОбщий.Субконто1.Наименование,
	               |	ОстаткиИОборотыОбщий.Регистратор.Дата
	               |ИТОГИ
	               |	СУММА(КоличествоПриход),
	               |	СУММА(КоличествоРасход),
	               |	СУММА(КоличествоНачальныйОстаток),
	               |	СУММА(КоличествоКонечныйОстаток)
	               |ПО
	               |	Номенклатура,
	               |	Регистратор";
				   
	Запрос = Новый Запрос( ТекстЗапроса );
	
	СпискиСчетов = ПолучитьСпискиСчетов();
	
	Запрос.УстановитьПараметр("НачалоПериода",   НачалоДня(НачалоПериода));
	Запрос.УстановитьПараметр("ОкончаниеПериода",КонецДня(КонецПериода));
	Запрос.УстановитьПараметр("Организация",     Организация);
	Запрос.УстановитьПараметр("Склад",           Склад);
	
    Субконто10 = Новый СписокЗначений; 
    Субконто10.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
    Субконто10.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);
    
    Субконто00301 = Новый СписокЗначений; 
    Субконто00301.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
    Субконто00301.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);
	
    Субконто107_00302 = Новый СписокЗначений; 
    Субконто107_00302.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
	
    Субконто002 = Новый СписокЗначений; 
    Субконто002.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
	
	СписокНоменклатуры = ПолучитьСписокНоменклатуры();
	Запрос.УстановитьПараметр("Список",СписокНоменклатуры);
	п_КоличествоПозиций = СокрЛП(СписокНоменклатуры.Количество());
	
	Запрос.УстановитьПараметр("Субконто10",       Субконто10);	
	Запрос.УстановитьПараметр("Субконто00301",    Субконто00301);	
	Запрос.УстановитьПараметр("Субконто107_00302",Субконто107_00302);	
	Запрос.УстановитьПараметр("Субконто002",      Субконто002);	
	
	Запрос.УстановитьПараметр("Счет10",       СпискиСчетов.Список10);
	Запрос.УстановитьПараметр("Счет00301",    СпискиСчетов.Список00301);
	Запрос.УстановитьПараметр("Счет107_00302",СпискиСчетов.Список107_00302);
	Запрос.УстановитьПараметр("Счет002",      СпискиСчетов.Список002);

	Результат = Запрос.Выполнить();
	
	Возврат Результат;
	
КонецФункции

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

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

	Данные = ПолучитьДанные( КоличествоПозиций );
	Выборка = Данные.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	Если Выборка.Количество() = 0 Тогда 
		Возврат Неопределено;
	КонецЕсли;
		
	Пока Выборка.Следующий() Цикл
		
		//Сообщить( "Сформировано " + СокрЛП( ТекущаяПозиция ) + " из "+КоличествоПозиций );
		
		НомерКарточки = "______";
		Отбор = Новый Структура();
		Отбор.Вставить("Номенклатура", Выборка.Номенклатура);
		
		Строки = ТабНоменклатура.НайтиСтроки(Отбор);
		Если Строки.Количество() > 0 Тогда
			Если СокрЛП(Строки[0].НомерКарточки) <> "" Тогда
				НомерКарточки = Строки[0].НомерКарточки;
			КонецЕсли;
		КонецЕсли;
		
		Номенклатура = Выборка.Номенклатура;
		НоменклатураЕдИзм = Номенклатура.ЕдиницаИзмерения;
		ОбластьЗаголовка.Параметры.Дата         = КонецПериода;
		ОбластьЗаголовка.Параметры.КодОКПО      = Организация.КодПоОКПО;
		ОбластьЗаголовка.Параметры.Номер        = НомерКарточки;
		ОбластьЗаголовка.Параметры.Организация  = Организация;
		ОбластьЗаголовка.Параметры.Склад        = Склад;
		//р(для выводы был указан код "Номенклатура.Код", мне нужен артикул поэтому поменял 
		ОбластьЗаголовка.Параметры.Код          = Номенклатура.Артикул;
		//)р
		ОбластьЗаголовка.Параметры.Номенклатура = Номенклатура.НаименованиеПолное;
		ОбластьЗаголовка.Параметры.НомСсылка    = Номенклатура;
		ОбластьЗаголовка.Параметры.ЕдИзмКод     = НоменклатураЕдИзм.Код;
		ОбластьЗаголовка.Параметры.ЕдИзм        = НоменклатураЕдИзм.Наименование;
		ОбластьЗаголовка.Параметры.КодОКВЭД     = Организация.КодОКВЭД;
		ТабДок.Вывести(ОбластьЗаголовка);
		
		ТабДок.Вывести(ОбластьШапка);
		
		Остаток = Выборка.КоличествоНачальныйОстаток;
		ОбластьОстаток.Параметры.Дата    = НачалоПериода;
		ОбластьОстаток.Параметры.Остаток = Остаток;
		ТабДок.Вывести(ОбластьОстаток);
		
		НомерПП = 1;
		Движения = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		КоличествоСтрокДвижений = Движения.Количество()-1;
		Пока Движения.Следующий() Цикл
			Если Движения.Регистратор = Неопределено ИЛИ Движения.Регистратор = Null Тогда
				Продолжить;
			КонецЕсли;
			ОбластьСтрока.Параметры.Дата        = Движения.Регистратор.Дата;
			ОбластьСтрока.Параметры.НомерДок    = Движения.Регистратор.Номер;
			ОбластьСтрока.Параметры.НомерПП     = НомерПП;
			ОбластьСтрока.Параметры.Движение    = ПолучитьПредставлениеДвижения(Движения);
			ОбластьСтрока.Параметры.Регистратор = Движения.Регистратор;
			ОбластьСтрока.Параметры.ЕдИзм       = НоменклатураЕдИзм.Наименование;
			ОбластьСтрока.Параметры.Приход      = Движения.КоличествоПриход;
			ОбластьСтрока.Параметры.Расход      = Движения.КоличествоРасход;
			Остаток = Остаток + Движения.КоличествоПриход - Движения.КоличествоРасход;
			//Остаток = Движения.КоличествоКонечныйОстаток;	//в пределах одного дня дает неправильный порядок документов
			ОбластьСтрока.Параметры.Остаток = Остаток;
			
			Если НомерПП = КоличествоСтрокДвижений Тогда
				ПоследняяСтрокаСПодвалом = Новый Массив;
				ПоследняяСтрокаСПодвалом.Добавить( ОбластьСтрока );
				ПоследняяСтрокаСПодвалом.Добавить( ОбластьПодвал );
				Если не ТабДок.ПроверитьВывод(ПоследняяСтрокаСПодвалом) Тогда
					ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
					ОбластьОборотнаяСторона.Параметры.Номенклатура = Номенклатура;
					ТабДок.Вывести(ОбластьОборотнаяСторона);
					ТабДок.Вывести(ОбластьПовтор);
				КонецЕсли;	
			ИначеЕсли не ТабДок.ПроверитьВывод(ОбластьСтрока) Тогда
				ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
				ОбластьОборотнаяСторона.Параметры.Номенклатура = Номенклатура;
				ТабДок.Вывести(ОбластьОборотнаяСторона);
				ТабДок.Вывести(ОбластьПовтор);
			КонецЕсли;	

			ТабДок.Вывести(ОбластьСтрока);
			
			НомерПП = НомерПП + 1;
		КонецЦикла;	
		
		ОбластьПодвал.Параметры.Должность     = Должность;
		ОбластьПодвал.Параметры.Ответственный = Ответственный;
		ТабДок.Вывести(ОбластьПодвал);
		
		ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
		
		ТекущаяПозиция = ТекущаяПозиция + 1;
	КонецЦикла;
	
	Возврат ТабДок;
	
КонецФункции

&НаКлиенте
Процедура Сформировать(Команда)
	
	Если ТабНоменклатура.Количество() = 0 Тогда
		ТекстСообщения = НСтр("ru='Не заполнена табличная часть!'");
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,,"ТабНоменклатура");
		Возврат;
	КонецЕсли;	
	
	ТабДок = СформироватьМ();
	
	Если ТабДок <> Неопределено Тогда
		ТабДок.Показать( "Карточки учета материалов (М-17)" );
	Иначе
		ТекстСообщения = НСтр("ru='Нет данных по выбранным позициям.'");
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,,"ТабНоменклатура");
	КонецЕсли;
	
КонецПроцедуры

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

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

КонецПроцедуры

&НаКлиенте
Процедура СкладПриИзменении(Элемент)
	ОчиститьТаблицу();
КонецПроцедуры

&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
	ОчиститьТаблицу();
КонецПроцедуры

&НаКлиенте
Процедура РГПодразделенияПриИзменении(Элемент)
	ОчиститьТаблицу();
КонецПроцедуры

//р(
&НаКлиенте
Процедура АртикулРГПриИзменении(Элемент)
	ОчиститьТаблицу();
КонецПроцедуры
//)р


&НаКлиенте
Процедура Очистить(Команда)
	ОчиститьТаблицу();
КонецПроцедуры

&НаКлиенте
Процедура УправлениеПолямиИнтервала()
	
	ИнтервалПоВсем = ЭтаФорма.ИнтервалКарточек;
	
	ЭтаФорма.Элементы.НомерПервойКарточки.Доступность = ИнтервалПоВсем;
	ЭтаФорма.Элементы.НомерПоследнейКарточки.Доступность = ИнтервалПоВсем;
	
КонецПроцедуры	

&НаКлиенте
Процедура ИнтервалКарточекПриИзменении(Элемент)
	УправлениеПолямиИнтервала();
КонецПроцедуры

&НаКлиенте
Процедура УстановитьОтметкуСтрокТаблицы(п_ЗначениеФлажка)
	
	Для каждого ТабСтр из ТабНоменклатура Цикл
		ТабСтр.Флажок = п_ЗначениеФлажка;
	КонецЦикла;	

КонецПроцедуры

&НаКлиенте
Процедура Отметить(Команда)
	УстановитьОтметкуСтрокТаблицы(Истина);
КонецПроцедуры

&НаКлиенте
Процедура СнятьОтметку(Команда)
	УстановитьОтметкуСтрокТаблицы(Ложь);
КонецПроцедуры

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

&НаКлиенте
Процедура ПроставитьВсеОтметкиВниз(ТекущиеДанные, ЗначениеФлажка)
	
	Потомки = ТекущиеДанные.ПолучитьЭлементы();
	Для каждого Потомок из Потомки Цикл
		Потомок.Флажок = ЗначениеФлажка;
		ПроставитьВсеОтметкиВниз(Потомок, ЗначениеФлажка);
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура ОтметитьВСпискеСчетов(Команда)
	УстановитьОтметкуСтрокТаблицыСпискаСчетов(1);
КонецПроцедуры

&НаКлиенте
Процедура СнятьОтметкуВСпискеСчетов(Команда)
	УстановитьОтметкуСтрокТаблицыСпискаСчетов(0);
КонецПроцедуры

//-----------------------------------------------
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, ИмяТаблицы)
	
	ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресПодобраннойНоменклатурыВХранилище);
	
	Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
		НоваяСтрока = ЭтотОбъект[ИмяТаблицы].Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТовара);
		
		НоваяСтрока.НомерПП = ТабНоменклатура.Количество();
		НоваяСтрока.Флажок  = Истина;
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)	
	
	Если ИсточникВыбора.ИмяФормы = "Обработка.ПодборНоменклатуры.Форма.Форма" Тогда
		ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, ИсточникВыбора.ИмяТаблицы);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подбор()
	
	СписокВидовПодбора = Новый СписокЗначений();
	СписокВидовПодбора.Добавить(,"По справочнику");
	
	СтруктураПараметровПодбора = Новый Структура();
	СтруктураПараметровПодбора.Вставить("Команда"            , "ПодборКарточек");
	СтруктураПараметровПодбора.Вставить("СписокВидовПодбора" , СписокВидовПодбора);

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

	Если СтруктураПараметровПодбора <> Неопределено Тогда
		ОткрытьФорму("Обработка.ПодборНоменклатуры.Форма.Форма", СтруктураПараметровПодбора,
			ЭтаФорма, УникальныйИдентификатор);
	КонецЕсли;
	
КонецПроцедуры	

&НаКлиенте
Процедура Подобрать(Команда)
	Подбор();
КонецПроцедуры

&НаКлиенте
Процедура ТабСписокСчетовФлажокПриИзменении(Элемент)
	ТекущиеДанные = Элементы.ТабСписокСчетов.ТекущиеДанные;
	ТекущиеДанные.Флажок = ТекущиеДанные.Флажок % 2;
	ПроставитьПометкиВниз(ТекущиеДанные);
	ПроставитьПометкиВверх(ТекущиеДанные);
КонецПроцедуры

&НаКлиенте
Процедура ПроставитьПометкиВниз(ТекущиеДанные)
	Потомки = ТекущиеДанные.ПолучитьЭлементы();
	Значение = ТекущиеДанные.Флажок;
	Для каждого Потомок из Потомки Цикл
		Потомок.Флажок = Значение;
		ПроставитьПометкиВниз(Потомок);
	КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура ПроставитьПометкиВверх(ТекущиеДанные)
	Родитель = ТекущиеДанные.ПолучитьРодителя();
	Если Родитель <> Неопределено Тогда
		ВсеИстина = Истина;
		НеВсеЛожь = Ложь;
		Потомки = Родитель.ПолучитьЭлементы();
		Для каждого Потомок из Потомки Цикл
			ВсеИстина = ВсеИстина И (Потомок.Флажок = 1);
			НеВсеЛожь = НеВсеЛожь ИЛИ Булево(Потомок.Флажок);
		КонецЦикла;
		Если ВсеИстина Тогда
			Родитель.Флажок = 1;
		ИначеЕсли НеВсеЛожь Тогда
			Родитель.Флажок = 2;
		Иначе
			Родитель.Флажок = 0;
		КонецЕсли;
		ПроставитьПометкиВверх(Родитель);
	КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ДобавитьОтборВДинамическийСписок(СписокОтбора,ВидСравнения,ЭлементОтбора,ПолеКомпоновкиДанных)
        НовЭлементОтбора = СписокОтбора.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        НовЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ПолеКомпоновкиДанных); НовЭлементОтбора.ВидСравнения = ВидСравнения;
        НовЭлементОтбора.Использование = Истина;
        НовЭлементОтбора.ПравоеЗначение = ЭлементОтбора;  
КонецПроцедуры
Показать


добавил в модуль формы Ваш код, возможность не появилась, может что то ещё надо сделать?
Прикрепленные файлы:
5. dj_tol 103 17.08.20 02:03 Сейчас в теме
Я бы добавил отбор в процедуру ПриСозданииНаСервере и по событию (на пример нажали галочку). Зачем вы весь свой код выкладываете? тогда уж всю обработку выкладывайте.
Оставьте свое сообщение

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