Как очистить ХранилищеЗначение в Управляемой форме
&НаСервере Процедура УдалитьДанныеХЗНаСервере() ЭлементСправочника = РеквизитФормыВЗначение("Объект"); ЭлементСправочника.ХранилищеЗначения = Новый ХранилищеЗначения(Неопределено); ЭлементСправочника.Записать(); ЗначениеВРеквизитФормы(ЭлементСправочника, "Объект"); КонецПроцедуры
Категория:
Работа с Хранилищем Значений Фунции отвечающие за обмен данных с формой на сервере. РеквизитФормыВЗначение - Преобразует указанный реквизит формы в объект прикладного типа.
Код 1C v 8.2 УП &НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
ДокументОбъект = РеквизитФормыВЗначение("Объект");
ПеречитатьДанныеПоСертификатам(ДокументОбъект);
КонецПроцедуры
ЗначениеВРеквизитФормы – Преобразует объект прикладного типа в реквизит управляемой формы
Код 1C v 8.2 УП // При изменении реквизитов
&НаСервере
Процедура ПриИзмененииПартнераСервер()
СправочникОбъект = РеквизитФормыВЗначение("Объект");
СправочникОбъект.ЗаполнитьУсловияПродажПоУмолчанию();
ЗначениеВРеквизитФормы(СправочникОбъект, "Объект");
УстановитьВидимостьЭлементовПоРегулярностиСервер();
КонецПроцедуры
ДанныеФормыВЗначение – Преобразует данные формы в объект прикладного типа.
Код 1C v 8.2 УП &НаСервере
Функция НовыйЭлементСправочника()
СправочникОбъект = ДанныеФормыВЗначение(Объект, Тип("СправочникОбъект.Номенклатура"));
СправочникОбъект.Записать();
............................
ЗначениеВДанныеФормы – Преобразует объект прикладного типа в универсальный объект данных.
Код 1C v 8.2 УП &НаСервере
Процедура НовыйЧекНаСервере()
НовыйЧек = Документы.ЧекККМ.СоздатьДокумент();
НовыйЧек.Партнер = Справочники.Партнеры.РозничныйПокупатель;
НовыйЧек.ОбработкаЗаполнения(Новый Структура("КассаККМ", Объект.КассаККМ), Истина);
ЗначениеВДанныеФормы(НовыйЧек, Объект);
Категория:
Управляемое приложение, Тонкий клиент Универсальная функция для чтения данных из Excel в 1С Иногда требуется разобрать данные из Excel в 1С.
Я считаю что легче и быстрей поместить все данные в ТаблицуЗначений и уже там ими манипулировать.
Пример 2-х функций которые я использую:
ИзExcelВТаблицу – Читает Excel в ТаблицуЗначений
ЭлементСправочника – Создает или находит элемент справочника.
Теперь сам код:
Код 1C v 8.х // Загрузка данных из Excel файла в ТаблицуЗначений
// Возвращает ТаблицуЗначений с данными
// ПутьДоExcel - путь до Excel файла
// НомерСтраницы - Номер страницы в Excel
// ПерСтрокаЗаголовок - первая строка Excel содержит имена столбцов
// ФормаИндикатора - Стандартная форма прогресса работы
Функция ИзExcelВТаблицу(ПутьДоExcel, НомерСтраницы = 1, ПерСтрокаЗаголовок = Ложь , ФормаИндикатора = Неопределено)
Попытка
Док = ПолучитьCOMОбъект(ПутьДоExcel);
Исключение
Сообщить("Произошла ошибка при обращение к Excel:" + Символы.ПС + ОписаниеОшибки());
Возврат Неопределено;
КонецПопытки;
ЗакрытьФормуИндиктаора = Ложь;
Если ФормаИндикатора = Неопределено тогда
ЗакрытьФормуИндиктаора = Истина;
ФормаИндикатора = ПолучитьОбщуюФорму("ХодВыполненияОбработкиДанных");
ФормаИндикатора.Открыть();
КонецЕсли;
ФормаИндикатора.КомментарийЗначения = "Загрузка данных из Excel...";
ТЗ = Новый ТаблицаЗначений();
Страница = Док.Sheets(НомерСтраницы);
МакСтрок = Страница.UsedRange.Rows.Count; // макс. колич. строк
МакСтолб = Страница.UsedRange.Columns.Count; // макс. колич. столбцов
Для Столбец = 1 по МакСтолб цикл
ИмяСтолбца = "Столбец_" + Столбец;
Если ПерСтрокаЗаголовок тогда
ИмяСтолбца = Страница.Cells(1,Столбец).Value;
ИмяСтолбца = СокрЛП(ИмяСтолбца);
ИмяСтолбца = СтрЗаменить(ИмяСтолбца," ","_");
КонецЕсли;
ТЗ.Колонки.Добавить(ИмяСтолбца, Новый ОписаниеТипов("Строка"));
КонецЦикла;
НачальнаяСтрока = 1;
Если ПерСтрокаЗаголовок тогда
НачальнаяСтрока = 2;
КонецЕсли;
Для НомСтрока = НачальнаяСтрока по МакСтрок цикл
СтрТЗ = ТЗ.Добавить();
Для НомСтолбец = 1 по МакСтолб цикл
Данные = Страница.Cells(НомСтрока,НомСтолбец).Value;
СтрТЗ[НомСтолбец-1] = Данные;
КонецЦикла;
ФормаИндикатора.ЭлементыФормы.Индикатор.Значение = НомСтрока/МакСтрок * 100;
КонецЦикла;
Если ЗакрытьФормуИндиктаора тогда
ФормаИндикатора.Закрыть();
КонецЕсли;
Возврат ТЗ;
КонецФункции
Пример вызова:
Код 1C v 8.х ФормаИндикатора = ПолучитьОбщуюФорму("ХодВыполненияОбработкиДанных");
ФормаИндикатора.НаименованиеОбработкиДанных = "Загрузка данных...";
ФормаИндикатора.Открыть();
ТЗ = ИзExcelВТаблицу(ФайлExcel,1,Истина,ФормаИндикатора);
Если ТЗ = Неопределено тогда
ФормаИндикатора.Закрыть();
Возврат;
КонецЕсли;
ФормаИндикатора.Закрыть();
или
Код 1C v 8.х ТЗ = ИзExcelВТаблицу(ФайлExcel);
Если ТЗ = Неопределено тогда
Возврат;
КонецЕсли;
Теперь функция которой я использую когда надо создать элемент справочника из полученных данных.
Код 1C v 8.х // Создаем в справочнике "ИмяСправочника" элемент
// ИмяЭлемента - Имя созданного элемента в справочнике "ИмяСправочника"
// ИмяРодителя - Имя родительского элемента (отсутствует если не древовидный).
// Разделитель \\ позволяет писать древовидный путь родителя из нескольких элементов
// Параметры - Соответствие содержащие список параметров для элемента
// СоздатьЕслиНетЭлемента - Создает элемент если нет. Иначе ищет и обновляет
Функция ЭлементСправочника(ИмяСправочника = "",ИмяЭлемента, ИмяРодителя = Неопределено, Параметры = Неопределено, СоздатьЕслиНетЭлемента=Истина)
Если ИмяСправочника = "" тогда
Сообщить("Укажите имя спрачоника - ЭлементСправочника()");
Возврат Неопределено;
КонецЕсли;
Если ПустаяСтрока(ИмяЭлемента) тогда
Возврат Неопределено;
КонецЕсли;
// Создаем или ищем родителя
Родитель = Неопределено;
Если ИмяРодителя <> Неопределено тогда
ОбрабатИмяРодителя = ИмяРодителя;
РодительГруппы = Справочники[ИмяСправочника].ПустаяСсылка();
Пока НЕ ПустаяСтрока(ОбрабатИмяРодителя) цикл
ПозРазделителя = Найти(ОбрабатИмяРодителя,"\\");
Если ПозРазделителя = 0 тогда
ИмяГруппы = ОбрабатИмяРодителя;
ОбрабатИмяРодителя = ""
Иначе
ИмяГруппы = Сред(ОбрабатИмяРодителя,1, ПозРазделителя-1);
ОбрабатИмяРодителя = Сред(ОбрабатИмяРодителя,ПозРазделителя+2);
КонецЕсли;
ТексЗапроса = "ВЫБРАТЬ
| Данные.Ссылка
|ИЗ
| Справочник."+ИмяСправочника+" КАК Данные
|ГДЕ
| Данные.Родитель = &Родитель
| И Данные.Наименование = &Наименование
| И Данные.ЭтоГруппа";
ЗапросРодителя = Новый Запрос(ТексЗапроса);
ЗапросРодителя.УстановитьПараметр("Родитель", РодительГруппы);
ЗапросРодителя.УстановитьПараметр("Наименование", ИмяГруппы);
РезультатРодителя = ЗапросРодителя.Выполнить().Выгрузить();
// Создаем родителя в случае необходимости
Если РезультатРодителя.Количество() <> 0 тогда
РодительГруппы = РезультатРодителя[0].Ссылка
Иначе
ОбъектРодитель = Справочники[ИмяСправочника].СоздатьГруппу();
ОбъектРодитель.Родитель = РодительГруппы;
ОбъектРодитель.Наименование = ИмяГруппы;
ОбъектРодитель.Записать();
РодительГруппы = ОбъектРодитель.Ссылка;
КонецЕсли;
КонецЦикла;
Родитель = РодительГруппы;
КонецЕсли;
// Создаем или ищем элемент
Элемент = Справочники[ИмяСправочника].НайтиПоНаименованию(ИмяЭлемента);
ОбъектЭлемент = Неопределено;
Если Элемент.Пустая() тогда
Если СоздатьЕслиНетЭлемента тогда
ОбъектЭлемент = Справочники[ИмяСправочника].СоздатьЭлемент();
ОбъектЭлемент.Наименование = ИмяЭлемента;
Иначе
Элемент = Неопределено
КонецЕсли;
Иначе
ОбъектЭлемент = Элемент.ПолучитьОбъект();
КонецЕсли;
Если ОбъектЭлемент <> Неопределено тогда
// Устанвалвиаем доп. параметры
Если Параметры <> Неопределено тогда
Для каждого СтрПараметр из Параметры цикл
ОбъектЭлемент[СтрПараметр.Ключ] = СтрПараметр.Значение;
КонецЦикла;
КонецЕсли;
Если Родитель <> Неопределено тогда
ОбъектЭлемент.Родитель = Родитель;
КонецЕсли;
ОбъектЭлемент.Записать();
Элемент = ОбъектЭлемент.Ссылка;
КонецЕсли;
Возврат Элемент;
КонецФункции
Автор:
borismor Категория:
Работа с Microsoft Office и OpenOffice Как Выгрузить файлы и папки из каталога на FTP Код 1C v 8.2 УП
Функция ВыгрузитьФайлыИПапкиНаFTP_Рекурсивно(Соединение, НачальныйКаталогВыгрузкиFTP, НачальнаяПапкаВыгрузкиКомп, ТекущаяПапка=Неопределено)
Рез = Истина;
Если ТекущаяПапка = Неопределено Тогда ТекущаяПапка = НачальнаяПапкаВыгрузкиКомп КонецЕсли;
МассивФайлов = НайтиФайлы(ТекущаяПапка, "*");
ТекКаталог = СтрЗаменить(НачальныйКаталогВыгрузкиFTP + СтрЗаменить(СтрЗаменить(ТекущаяПапка, НачальнаяПапкаВыгрузкиКомп, ""), "\", "/"), "//", "/");
Если Прав(ТекКаталог, 1) <> "/" Тогда
ТекКаталог = ТекКаталог + "/";
КонецЕсли;
Для Каждого НайденныйФайл Из МассивФайлов Цикл
Файл = Новый Файл(НайденныйФайл.ПолноеИмя);
Если Файл.ЭтоКаталог() Тогда
ЕстьТакаяПапка = Соединение.НайтиФайлы(НачальныйКаталогВыгрузкиFTP + СтрЗаменить(СтрЗаменить(НайденныйФайл.Путь, НачальнаяПапкаВыгрузкиКомп + "\", ""), "\", "/"), НайденныйФайл.Имя).Количество() > 0;
Если не ЕстьТакаяПапка Тогда
НомерПопытки = 1;
Успешно = Ложь;
Пока НомерПопытки < 4 и не Успешно Цикл
Попытка
Соединение.УстановитьТекущийКаталог(ТекКаталог);
Успешно = Истина;
Исключение
Сообщить("Попытка №" + НомерПопытки + ", установка каталога " + ТекКаталог + " - " + ОписаниеОшибки());
НомерПопытки = НомерПопытки + 1;
КонецПопытки;
КонецЦикла;
Если Не Успешно Тогда
Возврат Ложь;
КонецЕсли;
НомерПопытки = 1;
Успешно = Ложь;
Пока НомерПопытки < 4 и не Успешно Цикл
Попытка
Соединение.СоздатьКаталог(НайденныйФайл.Имя);
Успешно = Истина;
Исключение
Сообщить("Попытка №" + НомерПопытки + ", каталог " + НайденныйФайл.Имя + " - " + ОписаниеОшибки());
НомерПопытки = НомерПопытки + 1;
КонецПопытки;
КонецЦикла;
Если Не Успешно Тогда
Возврат Ложь;
КонецЕсли;
КонецЕсли;
НомерПопытки = 1;
Успешно = Ложь;
Пока НомерПопытки < 4 и не Успешно Цикл
Попытка
Соединение.УстановитьТекущийКаталог(НачальныйКаталогВыгрузкиFTP + СтрЗаменить(СтрЗаменить(НайденныйФайл.ПолноеИмя, НачальнаяПапкаВыгрузкиКомп + "\", ""), "\", "/") + "/");
Успешно = Истина;
Исключение
Сообщить("Попытка №" + НомерПопытки + ", установка каталога " + ТекКаталог + " - " + ОписаниеОшибки());
НомерПопытки = НомерПопытки + 1;
КонецПопытки;
КонецЦикла;
Если Не Успешно Тогда
Возврат Ложь;
КонецЕсли;
ВыгрузитьФайлыИПапкиНаFTP_Рекурсивно(Соединение, НачальныйКаталогВыгрузкиFTP, НачальнаяПапкаВыгрузкиКомп, НайденныйФайл.ПолноеИмя);
Если не Рез Тогда
Возврат Ложь;
КонецЕсли;
Иначе
НомерПопытки = 1;
Успешно = Ложь;
Пока НомерПопытки < 4 и не Успешно Цикл
Попытка
Соединение.УстановитьТекущийКаталог(ТекКаталог);
Успешно = Истина;
Исключение
Сообщить("Попытка №" + НомерПопытки + ", установка каталога " + ТекКаталог + " - " + ОписаниеОшибки());
НомерПопытки = НомерПопытки + 1;
КонецПопытки;
КонецЦикла;
Если Не Успешно Тогда
Возврат Ложь;
КонецЕсли;
// почему-то иногда при большой выгрузке глюкает ((
// а со второй попытки выкладывается.... странно...
НомерПопытки = 1;
Успешно = Ложь;
Пока НомерПопытки < 4 и не Успешно Цикл
Попытка
Соединение.Записать(НайденныйФайл.ПолноеИмя, НайденныйФайл.Имя);
Успешно = Истина;
Исключение
Сообщить("Попытка №" + НомерПопытки + ", файл " + НайденныйФайл.ПолноеИмя + " - " + ОписаниеОшибки());
НомерПопытки = НомерПопытки + 1;
КонецПопытки;
КонецЦикла;
Если Не Успешно Тогда
Возврат Ложь;
КонецЕсли;
#Если Клиент Тогда
Состояние("Выгрузка файла: " + НайденныйФайл.ПолноеИмя);
#КонецЕсли
КонецЕсли;
КонецЦикла;
Возврат Рез;
КонецФункции
// ПРИМЕР обращения к функции
КаталогиДляПередачиНаFTP = Новый Соответствие;
// цикл и в нем
КаталогиДляПередачиНаFTP.Вставить(СсылкаНаЭлементСправочника);
// Конец цикла
// Теперь Выгрузим все на FTP
Для Каждого Выборка из КаталогиДляПередачиНаFTP Цикл
ВыборкаДетальныеЗаписи = Выборка.Ключ;
Соединение = Новый FTPСоединение(ВыборкаДетальныеЗаписи.FTPСервер,
ВыборкаДетальныеЗаписи.FTPПорт,
ВыборкаДетальныеЗаписи.FTPПользователь,
ВыборкаДетальныеЗаписи.FTPПароль, ,Ложь);
ВыгрузитьФайлыИПапкиНаFTP_Рекурсивно(Соединение, ВыборкаДетальныеЗаписи.FTPКаталогВыгрузки, ВыборкаДетальныеЗаписи.КаталогВыгрузкиДанных);
КонецЦикла;
Как загрузить файлы с FTP Категория:
Работа с Интернет, Почтой (Mail), FTP Фильтрация иерархического справочника по какому-либо условию в форме списка Есть ли в 8.х аналог ИспользоватьСписокЭлементов?
В динамических списках документов, справочников и т.д. может быть программно установлен отбор по полю Ссылка с указанием в качестве вида сравнения вхождения в список значений. Это позволяет отображать в списке только определенные объекты.
Однако эта возможность может иметь только ограниченное применение, так как динамический список имеет достаточно большое количество универсальных возможностей (установка отбора пользователем, переходы по уровням в иерархических списках и т.д.) и совмещение в прикладных решениях этих механизмов с отбором по конкретным значениям ссылок достаточно сложно реализуется.
В большинстве случаев, если необходимо обеспечить отображение в списке специально отобранного перечня объектов, можно рекомендовать использовать другие возможности (например, выборку данных запросом и отображение в форме с помощью таблицы значений или табличного документа). При этом система обеспечивает возможность полноценного взаимодействия с такими формами других системных механизмов.
Код 1C v 8.х Запрос = Новый Запрос();
Запрос.Текст = " ВЫБРАТЬ
| СпецификацииНоменклатуры.Ссылка
|ИЗ
| Справочник.СпецификацииНоменклатуры КАК СпецификацииНоменклатуры
|ГДЕ
| СпецификацииНоменклатуры.Владелец.Ссылка = &НоменклатураСсылка
| И СпецификацииНоменклатуры.Организация В ИЕРАРХИИ (&Организация)";
Запрос.УстановитьПараметр("НоменклатураСсылка", ГотоваяПродукция);
Запрос.УстановитьПараметр("Организация", Организация);
СписокСпецификаций = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
ФормаВыбора = Справочники.СпецификацииНоменклатуры.ПолучитьФормуВыбора(,Элемент,Элемент);
ЭлементОтбора = ФормаВыбора.СправочникСписок.Отбор.Ссылка;
ЭлементОтбора.ВидСравнения = ВидСравнения.ВСписке;
ЭлементОтбора.Значение = СписокСпецификаций;
ЭлементОтбора.Использование = Истина;
ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.Ссылка.Доступность = Ложь;
ФормаВыбора.Открыть();
Код 1C v 8.2 УП &НаКлиенте
Процедура ПоУмолчаниюОпцияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ФормаВыбора = ПолучитьФорму("Справочник.ОпцииАвтомобилей.Форма.ФормаВыбора");
ФормаВыбора.Открыть();
ЭлементОтбора = ФормаВыбора.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ЭлементОтбора.ПравоеЗначение = СписокОпций;
ЭлементОтбора.Использование = Истина;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//считаем данные по опциям доступной для данной модели
СписокОпций.ЗагрузитьЗначения(Объект.Владелец.ОпцииМодели.Выгрузить().ВыгрузитьКолонку("Опция"));
КонецПроцедуры
Для 7.7 используем метод ИспользоватьСписокЭлементов
Автор:
Antoska
Для решения данной задачи я решил воспользоваться методом формы списка "ИспользоватьСписокЭлементов(<СписокЗначений>)", так как использование процедуры "ОбработкаПодбора()" требует наличия реквизита справочника для отбора, а это мне не очень подходит. Вот как я реализовал этот алгоритм (код из модуля формы списка справочника):
Код 1C v 7.x Функция СоответствуетУсловиямФильтра(ЭлементСправочника)
Если ПустоеЗначение(ЭлементСправочника) = 0 Тогда
//Условие фильтра: текущий остаток не равен нулю
Если Регистр.ПартииТоваров.СводныйОстаток("",ЭлементСправочника.ТекущийЭлемент(),,,,,"ОстатокТовара") <> 0 Тогда
Возврат 1;
КонецЕсли;
КонецЕсли;
Возврат 0;
КонецФункции
Процедура УстановитьФильтр(Знач Группа="", Знач Иерархия="")
//Для флажка Фильтр задана формула "УстановитьФильтр()"
Если Фильтр = 1 Тогда
//Определяем параметры процедуры
Группа = ?(Группа="",ТекущийЭлемент().Родитель,Группа);
Иерархия = ?(Иерархия="",ИерархическийСписок(),Иерархия);
СписокФильтра = СоздатьОбъект("СписокЗначений");
Спр = СоздатьОбъект("Справочник.Номенклатура");
//Определяемся с использованием родителя при выборке элементов
Если ПустоеЗначение(Группа) = 0 Тогда
Спр.ИспользоватьРодителя(Группа);
КонецЕсли;
Спр.ВключатьПодчиненные(0);
//Выбираем элементы с учётом иерархии
Спр.ВыбратьЭлементы(Иерархия);
Пока Спр.ПолучитьЭлемент() = 1 Цикл
//Показваем группы, для удобства навигации
Если Спр.ЭтоГруппа() = 1 Тогда
//Добавляем группу в список фильтра
СписокФильтра.ДобавитьЗначение(Спр.ТекущийЭлемент());
Продолжить;
КонецЕсли;
//Проверяем элемент на соответствие условиям фильтра
Если СоответствуетУсловиямФильтра(Спр.ТекущийЭлемент()) = 1 Тогда
//Добавляем элемент в список фильтра
СписокФильтра.ДобавитьЗначение(Спр.ТекущийЭлемент());
КонецЕсли;
КонецЦикла;
//Устанавливаем фильтр
ИспользоватьСписокЭлементов(СписокФильтра);
Иначе
//Снимаем фильтр
ИспользоватьСписокЭлементов();
КонецЕсли;
КонецПроцедуры
Процедура ПриВыбореРодителя(Элемент)
УстановитьФильтр(Элемент)
КонецПроцедуры
Процедура ПриСменеИерархии(Способ)
УстановитьФильтр(,Способ)
КонецПроцедуры
Функцией "СоответствуетУсловиямФильтра(ЭлементСправочника)" можно задавать любые условия фильтрации списка опираясь на передаваемый ей элемент справочника.
Скорость работы приемлема, но можно попробовать реализовать и через запрос...
Категория:
Справочники Как при открытии формы определить что создается НОВЫЙ элемент? Код 1C v 8.х ЭтоНовый()
Понятие
ЭтоНовый() отсутствует в 8.2.
Поэтому при необходимости определить, что создается новый элемент можно использовать следующую особенность управляемой формы.
Как правило, любая управляемая форма содержит в себе реквизит "Объект", поэтому при интерактивном создании нового элемента, Объект.ссылка не заполнено!
Исходя из этой особенности, можем прописать приОткрытии() управляемой формы следующее:
Код 1C v 8.2 УП &НаКлиенте
Процедура ПриОткрытии(Отказ)
Если не ЗначениеЗаполнено(Объект.Ссылка) тогда
Отказ=Истина;
Форма = ПолучитьФорму("Справочник.НашСправочник.Форма.ФормаНовогоЭлемента",,этаформа);
ОткрытьФорму(Форма);
КонецЕсли;
КонецПроцедуры
При использовании параметра Ключ:
Код 1C v 8.2 УП
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Ключ.Пустая() Тогда
Сообщить("Создается новый объект");
КонецЕсли;
КонецПроцедуры
Также Параметр
"Ключ" надо использовать для программного открытия существующей формы. Пример:
Код 1C v 8.2 УП НаКлиенте
Процедура ОткрытьФормуЭлемента(Команда)
СсылкаНаЭлементСправочника = Элементы.Список.ТекущаяСтрока;
ПараметрыФормы = Новый Структура("Ключ", СсылкаНаЭлементСправочника );
ОткрытьФорму("Справочник.Организации.ФормаОбъекта", ПараметрыФормы);
КонецПроцедуры
Категория:
Встроенные Функции Перебрать, выбрать строки табличной части справочника Код 1C v 8.х ЭлементСправочника = Справочники.Контрагенты.НайтиПоКоду("0036");
Для Каждого ТекущаяСтрока Из ЭлементСправочника.Товары Цикл
Сообщить(ТекущаяСтрока.ВидДеятельности);
КонецЦикла;
Категория:
Справочники Удалить строки из табличной части справочника Код 1C v 8.2 УП &НаКлиенте
Процедура ОбработатьВыполнить()
Объект.Обработан=Истина;
БылоСтрок= Объект.Данные.Количество();
Для Счетчик =1 по Объект.Данные.Количество() Цикл
НомерСтроки= БылоСтрок-Счетчик;
лСтр = Объект.Данные[НомерСтроки];
Если лСтр.Группа = Объект.ВозрастнаяГруппа Тогда
// оставляем
Иначе
Объект.Данные.Удалить(НомерСтроки);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Код 1C v 8.х ЭлементСправочника = Справочники.Контрагенты.НайтиПоКоду("Ю0006");
ОбъектСправочника = ЭлементСправочника.ПолучитьОбъект();
ОбъектСправочника.ВидыДеятельности.Очистить();
ОбъектСправочника.Записать();
ОбъектСправочника = ВыбранныйЭлемент.ПолучитьОбъект();
// Создать структуру для отбора удаляемых строк.
СтруктураОтбора = Новый Структура("ВидДеятельности", ВыбранныйВидДеятельности);
// Получить массив удаляемых строк.
ПодходящиеСтроки = ОбъектСправочника.ВидыДеятельности.НайтиСтроки(СтруктураОтбора);
// Удалить строки.
Для Каждого ОчереднаяСтрока Из ПодходящиеСтроки Цикл
ОбъектСправочника.ВидыДеятельности.Удалить(ОчереднаяСтрока);
КонецЦикла;
ОбъектСправочника.Записать();
Категория:
Справочники