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