как добавить отбор по Артиклу, в БП3.
нашел тему на ветке
https://forum.infostart.ru/forum9/topic171492/
но решения нет, что может сказать?
нашел тему на ветке
но решения нет, что может сказать?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Если список выводится на УФ, то по событию добавить
Заполняйте и отбирайте.
&НаСервере
Процедура ДобавитьОтборВДинамическийСписок(СписокОтбора,ВидСравнения,ЭлементОтбора,ПолеКомпоновкиДанных)
НовЭлементОтбора = СписокОтбора.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ПолеКомпоновкиДанных); НовЭлементОтбора.ВидСравнения = ВидСравнения;
НовЭлементОтбора.Использование = Истина;
НовЭлементОтбора.ПравоеЗначение = ЭлементОтбора;
КонецПроцедуры
Заполняйте и отбирайте.
(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;
КонецЕсли;
ПроставитьПометкиВверх(Родитель);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДобавитьОтборВДинамическийСписок(СписокОтбора,ВидСравнения,ЭлементОтбора,ПолеКомпоновкиДанных)
НовЭлементОтбора = СписокОтбора.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ПолеКомпоновкиДанных); НовЭлементОтбора.ВидСравнения = ВидСравнения;
НовЭлементОтбора.Использование = Истина;
НовЭлементОтбора.ПравоеЗначение = ЭлементОтбора;
КонецПроцедуры
Показатьдобавил в модуль формы Ваш код, возможность не появилась, может что то ещё надо сделать?
Прикрепленные файлы:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот