- Как создать элемент (группу) справочника?
- Как найти элемент справочника?
- Как удалить элемент справочника?
- Как перебрать элементы справочника?
- Как выбрать все элементы из определенной группы?
- Как перебрать элементы подчиненного справочника с помощью запроса?
- Как перебрать элементы подчиненного справочника с помощью выборки справочника?
- Как открыть форму списка (элемента) справочника?
- Как добавить запись в табличную часть элемента справочника?
- Как удалить строки из табличной части справочника?
- Как перебрать строки табличной части справочника?
- Как создать элемент в нужной группе?
- Как узнать, есть ли у текущего элемента подчиненные?
- Как узнать количество подчиненных элементов у выбранного элемента справочника?
- Как узнать количество подчиненных элементов у выбранного элемента справочника, если подчиненных справочников нексолько?
- Как получить всех родителей выбранного элемента справочника?
- Как получить запросом «полный» код элементов справочника, если тип кода — Строка?
- Как получить все элементы справочника, содержащие в наименовании определенную подстроку, со всей иерархией, в которую они входят?
- Как найти все элементы справочника, в которых не заполнен строковый реквизит?
- Как перенести все элементы справочника «Контрагенты» из одной группы в другую?
- Как организовать программный выбор элемента справочника?
- Как сохранить фотографию сотрудника в справочнике «Сотрудники»?
Как создать элемент (группу) справочника?
НовыйЭлемент = Справочники.ДокументыУдостоверяющиеЛичность.СоздатьЭлемент(); НовыйЭлемент.Наименование = "военный билет"; // Установить другие реквизиты. // ..... НовыйЭлемент.Записать(); НовыйЭлемент = Справочники.Банки.СоздатьЭлемент(); // Получить ссылку на группу, в которой будет находиться новый элемент Родитель = Справочники.Банки.НайтиПоКоду("000000001"); НовыйЭлемент.Наименование = "АКБ"; НовыйЭлемент.Код = "000000011"; НовыйЭлемент.Родитель = Родитель; // Установить другие реквизиты // ..... НовыйЭлемент.Записать(); НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу(); // Получить ссылку на группу, в которой должна находиться создаваемая группа Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Обувь", Истина); НоваяГруппа.Наименование = "Модельная обувь"; НоваяГруппа.Родитель = Родитель; // Установить другие реквизиты // ..... НоваяГруппа.Записать(); // Создать новый элемент в корне справочника НовыйЭлемент = Справочники.Подразделения.СоздатьЭлемент(); НовыйЭлемент.Наименование = "IT отдел"; НовыйЭлемент.Записать(); // Получить ссылку на родителя для добавляемых элементов Родитель = НовыйЭлемент.Ссылка; // Создать дочерний элемент. НовыйЭлемент = Справочники.Подразделения.СоздатьЭлемент(); НовыйЭлемент.Наименование = "Группа разработки"; НовыйЭлемент.Родитель = Родитель; НовыйЭлемент.Записать();
Как найти элемент справочника?
// Поиск по коду РезультатПоиска = Справочники.Номенклатура.НайтиПоКоду("00030"); Если РезультатПоиска.Пустая() Тогда // Выполнить действия, предусмотренные в случае, когда элемент не найден. КонецЕсли; // Поиск по наименованию РезультатПоиска = Справочники.Номенклатура.НайтиПоНаименованию("Кроссовки"); // Поиск по реквизиту РезультатПоиска = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", "К-120002");
Как удалить элемент справочника?
// Найти ссылки на удаляемый элемент. МассивСсылок = Новый Массив; МассивСсылок.Добавить(СсылкаНаУдаляемыйЭлемент); НайденныеСсылки = НайтиПоСсылкам(МассивСсылок); Если НайденныеСсылки.Количество() > 0 Тогда Сообщить("Нельзя удалять элемент, на него имеются ссылки"); Иначе УдаляемыйЭлемент = СсылкаНаУдаляемыйЭлемент.ПолучитьОбъект(); УдаляемыйЭлемент.Удалить(); КонецЕсли; УдаляемыйЭлемент.УстановитьПометкуУдаления(Истина);
Как перебрать элементы справочника?
Выборка = Справочники.Номенклатура.ВыбратьИерархически(); Пока Выборка.Следующий() Цикл Наименование = Выборка.Наименование; // Обращение к другим данным справочника // ..... КонецЦикла; Запрос = Новый Запрос( "ВЫБРАТЬ | Ссылка, | Наименование |ИЗ | Справочник.Номенклатура |АВТОУПОРЯДОЧИВАНИЕ" ); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Наименование = Результат.Наименование; КонецЦикла;
Как выбрать все элементы из определенной группы?
Выборка = Справочники.Номенклатура.Выбрать(ПолеВводаРодитель); Пока Выборка.Следующий() Цикл Наименование = Выборка.Наименование; КонецЦикла; Запрос = Новый Запрос( "ВЫБРАТЬ | Ссылка, | Наименование |ИЗ | Справочник.Номенклатура |ГДЕ | Родитель = &Родитель |АВТОУПОРЯДОЧИВАНИЕ" ); Запрос.УстановитьПараметр("Родитель", ПолеВводаРодитель); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Наименование = Результат.Наименование; КонецЦикла; Выборка=Справочники.Номенклатура.ВыбратьИерархически(ПолеВводаРодитель); Пока Выборка.Следующий() Цикл Наименование = Выборка.Наименование; КонецЦикла; Запрос = Новый Запрос( "ВЫБРАТЬ | Ссылка, | Наименование |ИЗ | Справочник.Номенклатура |ГДЕ | Родитель В ИЕРАРХИИ(&Родитель) |АВТОУПОРЯДОЧИВАНИЕ" ); Запрос.УстановитьПараметр("Родитель", ПолеВводаРодитель); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Наименование = Результат.Наименование; КонецЦикла;
Как перебрать элементы подчиненного справочника с помощью запроса?
Процедура ПереборПодчиненыхЭлементов(Контрагент) Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | КонтактныеЛица.Ссылка |ИЗ | Справочник.КонтактныеЛица КАК КонтактныеЛица |ГДЕ | КонтактныеЛица.Владелец = &Владелец"; Запрос.УстановитьПараметр("Владелец", Контрагент); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл ОчереднойПодчиненый = Выборка.Ссылка; КонецЦикла; КонецПроцедуры
Как перебрать элементы подчиненного справочника с помощью выборки справочника?
Процедура ПереборПодчиненыхЭлементов(Контрагент) // Получить выборку по указанному контрагенту Выборка = Справочники.КонтактныеЛица.Выбрать( , Контрагент); Пока Выборка.Следующий() Цикл ОчереднойПодчиненый = Выборка.Ссылка; КонецЦикла; КонецПроцедуры
Как открыть форму списка (элемента) справочника?
Форма = Справочники.Номенклатура.ПолучитьФормуСписка(); Форма.Открыть(); Элемент = Справочники.Номенклатура.НайтиПоКоду("00070"); Форма = Элемент.ПолучитьФорму(); Форма.Открыть();
Как добавить запись в табличную часть элемента справочника?
ЭлементОбъект = СсылкаКонтрагент.ПолучитьОбъект(); НоваяСтрока = ЭлементОбъект.ВидыДеятельности.Добавить(); // Заполнить реквизиты НоваяСтрока.ВидДеятельности = ПолеВводаВидДеятельности; // ..... ЭлементОбъект.Записать();
Как удалить строки из табличной части справочника?
ЭлементСправочника = Справочники.Контрагенты.НайтиПоКоду("Ю0006"); ОбъектСправочника = ЭлементСправочника.ПолучитьОбъект(); ОбъектСправочника.ВидыДеятельности.Очистить(); ОбъектСправочника.Записать(); ОбъектСправочника = ВыбранныйЭлемент.ПолучитьОбъект(); // Создать структуру для отбора удаляемых строк СтруктураОтбора = Новый Структура("ВидДеятельности", ВыбранныйВидДеятельности); // Получить массив удаляемых строк ПодходящиеСтроки = ОбъектСправочника.ВидыДеятельности.НайтиСтроки(СтруктураОтбора); // Удалить строки Для Каждого ОчереднаяСтрока Из ПодходящиеСтроки Цикл ОбъектСправочника.ВидыДеятельности.Удалить(ОчереднаяСтрока); КонецЦикла; ОбъектСправочника.Записать();
Как перебрать строки табличной части справочника?
ЭлементСправочника = Справочники.Контрагенты.НайтиПоКоду("Ю0006"); Для Каждого ТекущаяСтрока Из ЭлементСправочника.ВидыДеятельности Цикл Сообщить(ТекущаяСтрока.ВидДеятельности); КонецЦикла;
Как создать элемент в нужной группе?
КодГруппы = "330100"; ПоискПоПолномуКоду = Ложь; // значение по умолчанию Группа = Справочники.Номенклатура.НайтиПоКоду(КодГруппы, ПоискПоПолномуКоду); Если Группа.Пустая() Тогда Группа = Справочники.Номенклатура.СоздатьГруппу(); Группа.Код = КодГруппы; Группа.Наименование = "Загруженные"; Группа.Записать(); ИначеЕсли НЕ Группа.ЭтоГруппа Тогда Сообщить("Найден элемент справочника с указанным кодом!"); // Предусмотреть прерывание алгоритма... КонецЕсли; Спр = Справочники.Номенклатура.СоздатьЭлемент(); Спр.Наименование = "Программно созданный"; // Реквизиты заполняются в соответствии с задачей // ..... Спр.Родитель = Группа.Ссылка; Спр.Записать(); Группа = Справочники.Номенклатура.Загруженные; КодЭлемента = "330100"; ПоискПоПолномуКоду = Ложь; // Значение по умолчанию Родитель = Справочники.Номенклатура.НайтиПоКоду(КодЭлемента, ПоискПоПолномуКоду); Если Родитель.Пустая() Тогда Родитель = Справочники.Номенклатура.СоздатьЭлемент(); Родитель.Код = КодЭлемента; Родитель.Наименование = "Загруженные"; Родитель.Записать(); КонецЕсли; Спр = Справочники.Номенклатура.СоздатьЭлемент(); Спр.Наименование = "Программно созданный"; // Реквизиты заполняются в соответствии с задачей // ..... Спр.Родитель = Родитель.Ссылка; Спр.Записать();
Как узнать, есть ли у текущего элемента подчиненные?
Выборка = Справочники.Номенклатура.Выбрать( , Владелец); Если Выборка.Следующий() = Истина Тогда // Есть подчиненные элементы. КонецЕсли; Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | ЕдиницыИзмерения.Ссылка |ИЗ | Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения |ГДЕ | ЕдиницыИзмерения.Владелец = &Владелец"; Запрос.УстановитьПараметр("Владелец", Владелец); Если НЕ Запрос.Выполнить().Пустой() Тогда // Есть подчиненные элементы! КонецЕсли;
Как узнать количество подчиненных элементов у выбранного элемента справочника?
Выборка = Справочники.ЕдиницыИзмерения.Выбрать( , Владелец); КоличествоЭлементов = 0; Пока Выборка.Следующий() Цикл КоличествоЭлементов = КоличествоЭлементов + 1; КонецЦикла; Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | КОЛИЧЕСТВО(*) КАК КоличествоЗаписей |ИЗ | Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения |ГДЕ | ЕдиницыИзмерения.Владелец = &Владелец"; Запрос.УстановитьПараметр("Владелец", Владелец); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда КоличествоЗаписей = Выборка.КоличествоЗаписей; КонецЕсли;
Как узнать количество подчиненных элементов у выбранного элемента справочника, если подчиненных справочников несколько?
ВЫБРАТЬ СУММА(КоличествоПодчиненных) КАК КоличествоПодчиненныхЭлементов ИЗ (ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК КоличествоПодчиненных ИЗ Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения ГДЕ ЕдиницыИзмерения.Владелец = &Владелец ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ КОЛИЧЕСТВО(*) ИЗ Справочник.СерииНоменклатуры КАК СерииНоменклатуры ГДЕ СерииНоменклатуры.Владелец = &Владелец ) КАК ВложенныйЗапрос
Как получить всех родителей выбранного элемента справочника?
МассивРодителей = Новый Массив; Родитель = СсылкаНаЭлемент.Родитель; Пока НЕ Родитель.Пустая() Цикл МассивРодителей.Добавить(Родитель); Родитель = Родитель.Родитель; КонецЦикла; Для Каждого ТекущийРодитель Из МассивРодителей Цикл // Работа с текущим родителем КонецЦикла;
ВЫБРАТЬ Номенклатура.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка = &Ссылка ИТОГИ ПО Ссылка ТОЛЬКО ИЕРАРХИЯ
ТекущийЭлементНоменклатуры = ЭлементНоменклатура; Запрос = Новый Запрос( "ВЫБРАТЬ | Номенклатура.Родитель, | Номенклатура.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка = &ТекущийЭлементНоменклатуры"; Пока Истина Цикл Запрос.УстановитьПараметр("ТекущийЭлементНоменклатуры", ТекущийЭлементНоменклатуры); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Прервать; КонецЕсли; Выборка = Результат.Выбрать(); Выборка.Следующий(); Для НомерКолонки = 0 По Результат.Колонки.Количество() - 1 Цикл ТекущийЭлементНоменклатуры = Выборка[НомерКолонки]; Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда Прервать; Иначе Сообщить(ТекущийЭлементНоменклатуры); КонецЕсли; КонецЦикла; Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда Прервать; КонецЕсли; КонецЦикла;
Как получить запросом «полный» код элементов справочника, если тип кода — Строка?
ВЫБРАТЬ Контрагенты.Ссылка, ВЫБОР КОГДА (Контрагенты.Родитель.Код ЕСТЬ NULL ) ТОГДА Контрагенты.Код КОГДА (Контрагенты.Родитель.Родитель.Код ЕСТЬ NULL ) ТОГДА Контрагенты.Родитель.Код + "/" + Контрагенты.Код ИНАЧЕ Контрагенты.Родитель.Родитель.Код + "/" + Контрагенты.Родитель.Код + "/" + Контрагенты.Код КОНЕЦ КАК ПолныйКод ИЗ Справочник.Контрагенты КАК Контрагенты
Как получить все элементы справочника, содержащие в наименовании определенную подстроку, со всей иерархией, в которую они входят?
Запрос = Новый Запрос( "ВЫБРАТЬ | Контрагенты.Ссылка КАК Ссылка |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | (Контрагенты.Наименование ПОДОБНО &ЧастьНаименования) И (НЕ Контрагенты.ЭтоГруппа) |ИТОГИ ПО | Ссылка ТОЛЬКО ИЕРАРХИЯ" ); Запрос.УстановитьПараметр("ЧастьНаименования", "%" + ПолеВводаПодстрока + "%");
Как найти все элементы справочника, в которых не заполнен строковый реквизит?
ВЫБРАТЬ ФизическиеЛица.Ссылка ИЗ Справочник.ФизическиеЛица КАК ФизическиеЛица ГДЕ (ФизическиеЛица.ИНН = "") ВЫБРАТЬ ФизическиеЛица.Ссылка ИЗ Справочник.ФизическиеЛица КАК ФизическиеЛица ГДЕ (ФизическиеЛица.СтраховойНомерПФР = "") ИЛИ (ФизическиеЛица.СтраховойНомерПФР = " - -")
Как перенести все элементы справочника «Контрагенты» из одной группы в другую?
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Контрагенты.Ссылка |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | Контрагенты.Родитель = &СтарыйРодитель"; Запрос.УстановитьПараметр("СтарыйРодитель", СтарыйРодитель); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Контрагент = Выборка.Ссылка.ПолучитьОбъект(); Контрагент.Родитель = НовыйРодитель; Контрагент.Записать(); КонецЦикла;
Как организовать программный выбор элемента справочника?
// Получить форму выбора справочника как подчиненную форме документа ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора( , ЭтаФорма); // Открыть полученную форму ФормаВыбора.Открыть(); Процедура ОбработкаВыбора(ЗначениеВыбора, Источник) ПолученноеЗначение = ЗначениеВыбора; // Дальнейшая обработка значения... КонецПроцедуры ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора( , ЭтаФорма); Выбрано = ФормаВыбора.ОткрытьМодально(); Процедура ПолеВводаНачалоВыбора(Элемент, СтандартнаяОбработка) // Запретить стандартную обработку. СтандартнаяОбработка = Ложь; // Получить форму выбора справочника как подчиненную полю ввода ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора( , Элемент); // Открыть полученную форму ФормаВыбора.Открыть(); КонецПроцедуры Процедура ПолеВводаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) // Отключить стандартную обработку (при необходимости) СтандартнаяОбработка = Ложь; ПолученноеЗначение = ВыбранноеЗначение; // Дальнейшая обработка значения... КонецПроцедуры
Как сохранить фотографию сотрудника в справочнике «Сотрудники»?
Процедура ЗагрузитьФотографию(Элемент) Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытияФайла.ПолноеИмяФайла = ""; Фильтр = "Текст (*,*)|*.*"; ДиалогОткрытияФайла.Фильтр = Фильтр; ДиалогОткрытияФайла.МножественныйВыбор = Ложь; ДиалогОткрытияФайла.Заголовок = "Выберите картинку"; Если ДиалогОткрытияФайла.Выбрать() Тогда ВыбраннаяКартинка = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла); ЭлементХранилища = Новый ХранилищеЗначения(ВыбраннаяКартинка); Фотография = ЭлементХранилища; КонецЕсли; КонецПроцедуры ВыбФайл = Новый ДвоичныеДанные(ДиалогОткрытияФайла.ПолноеИмяФайла); элХранилища = Новый ХранилищеЗначения(ВыбФайл); Фотография = элХранилища;
- АКТУАЛЬНЫЕ РЕЛИЗЫ 1С
- ПРИМЕРЫ КОДА НА ПЛАТФОРМЕ 1С
Справочники в 1С 8.x
- Как создать элемент (группу) справочника?
- Как найти элемент справочника?
- Как удалить элемент справочника?
- Как перебрать элементы справочника?
- Как выбрать все элементы из определенной группы?
- Как перебрать элементы подчиненного справочника с помощью запроса?
- Как перебрать элементы подчиненного справочника с помощью выборки справочника?
- Как открыть форму списка (элемента) справочника?
- Как добавить запись в табличную часть элемента справочника?
- Как удалить строки из табличной части справочника?
- Как перебрать строки табличной части справочника?
- Как создать элемент в нужной группе?
- Как узнать, есть ли у текущего элемента подчиненные?
- Как узнать количество подчиненных элементов у выбранного элемента справочника?
- Как узнать количество подчиненных элементов у выбранного элемента справочника, если количество подчиненных справочников больше чем один?
- Как получить всех родителей выбранного элемента справочника?
- Как получить запросом «полный» код элементов справочника, если тип кода — Строка?
- Как получить все элементы справочника, содержащие в наименовании определенную подстроку, со всей иерархией, в которую они входят?
- Как найти все элементы справочника, в которых не заполнен строковый реквизит?
- Как перенести все элементы справочника «Контрагенты» из одной группы в другую?
- Как организовать программный выбор элемента справочника?
- Как сохранить фотографию сотрудника в справочнике «Сотрудники»?
Как создать элемент (группу) справочника?
НовыйЭлемент = Справочники.ДокументыУдостоверяющиеЛичность.СоздатьЭлемент();
НовыйЭлемент.Наименование = "военный билет";
// Установить другие реквизиты.
....
НовыйЭлемент.Записать();
НовыйЭлемент = Справочники.Банки.СоздатьЭлемент();
// Получить ссылку на группу, в которой будет находиться новый элемент.
Родитель = Справочники.Банки.НайтиПоКоду("000000001");
НовыйЭлемент.Наименование = "АКБ";
НовыйЭлемент.Код = "000000011";
НовыйЭлемент.Родитель = Родитель;
// Установить другие реквизиты.
....
НовыйЭлемент.Записать();
НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();
// Получить ссылку на группу, в которой должна находиться создаваемая группа.
Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Обувь", Истина);
НоваяГруппа.Наименование = "Модельная обувь";
НоваяГруппа.Родитель = Родитель;
// Установить другие реквизиты.
....
НоваяГруппа.Записать();
// Создать новый элемент в корне справочника.
НовыйЭлемент = Справочники.Подразделения.СоздатьЭлемент();
НовыйЭлемент.Наименование = "IT отдел";
НовыйЭлемент.Записать();
// Получить ссылку на родителя добавляемых элементов.
Родитель = НовыйЭлемент.Ссылка;
// Создать дочерний элемент.
НовыйЭлемент = Справочники.Подразделения.СоздатьЭлемент();
НовыйЭлемент.Наименование = "Группа разработки";
НовыйЭлемент.Родитель = Родитель;
НовыйЭлемент.Записать();
Как найти элемент справочника?
// Найдем по коду
РезультатПоиска = Справочники.Номенклатура.НайтиПоКоду("00030");
Если РезультатПоиска.Пустая() Тогда
// Выполнить действия, предусмотренные в случае, когда элемент не найден.
КонецЕсли;
// Найдем по наименованию
РезультатПоиска = Справочники.Номенклатура.НайтиПоНаименованию("Кроссовки");
// Найдем по реквизиту
РезультатПоиска = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", "К-120002");
Как удалить элемент справочника?
// Найти ссылки на удаляемый элемент.
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(СсылкаНаУдаляемыйЭлемент);
НайденныеСсылки = НайтиПоСсылкам(МассивСсылок);
Если НайденныеСсылки.Количество() > 0 Тогда
Сообщить("Нельзя удалять элемент, на него имеются ссылки");
Иначе
УдаляемыйЭлемент = СсылкаНаУдаляемыйЭлемент.ПолучитьОбъект();
УдаляемыйЭлемент.Удалить();
КонецЕсли;
УдаляемыйЭлемент.УстановитьПометкуУдаления(Истина);
Как перебрать элементы справочника?
Выборка = Справочники.Номенклатура.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
Наименование = Выборка.Наименование;
// Обращение к другим данным справочника.
КонецЦикла;
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Ссылка,
| Наименование
|ИЗ
| Справочник.Номенклатура
|АВТОУПОРЯДОЧИВАНИЕ");
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
Наименование = Результат.Наименование;
КонецЦикла;
Как выбрать все элементы из определенной группы?
Выборка = Справочники.Номенклатура.Выбрать(ПолеВводаРодитель);
Пока Выборка.Следующий() Цикл
Наименование = Выборка.Наименование;
КонецЦикла;
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Ссылка,
| Наименование
|ИЗ
| Справочник.Номенклатура
|ГДЕ
| Родитель = &Родитель
|АВТОУПОРЯДОЧИВАНИЕ");
Запрос.УстановитьПараметр("Родитель", ПолеВводаРодитель);
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
Наименование = Результат.Наименование;
КонецЦикла;
Выборка=Справочники.Номенклатура.ВыбратьИерархически(ПолеВводаРодитель);
Пока Выборка.Следующий() Цикл
Наименование = Выборка.Наименование;
КонецЦикла;
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Ссылка,
| Наименование
|ИЗ
| Справочник.Номенклатура
|ГДЕ
| Родитель В ИЕРАРХИИ(&Родитель)
|АВТОУПОРЯДОЧИВАНИЕ");
Запрос.УстановитьПараметр("Родитель", ПолеВводаРодитель);
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
Наименование = Результат.Наименование;
КонецЦикла;
Как перебрать элементы подчиненного справочника с помощью запроса?
Процедура ПереборПодчиненыхЭлементов(Контрагент)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| КонтактныеЛица.Ссылка
|ИЗ
| Справочник.КонтактныеЛица КАК КонтактныеЛица
|ГДЕ
| КонтактныеЛица.Владелец = &Владелец";
Запрос.УстановитьПараметр("Владелец", Контрагент);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ОчереднойПодчиненый = Выборка.Ссылка;
КонецЦикла;
КонецПроцедуры
Как перебрать элементы подчиненного справочника с помощью выборки справочника?
Процедура ПереборПодчиненыхЭлементов(Контрагент)
// Получить выборку по указанному контрагенту.
Выборка = Справочники.КонтактныеЛица.Выбрать( , Контрагент);
Пока Выборка.Следующий() Цикл
ОчереднойПодчиненый = Выборка.Ссылка;
КонецЦикла;
КонецПроцедуры
Как открыть форму списка (элемента) справочника?
Форма = Справочники.Номенклатура.ПолучитьФормуСписка();
Форма.Открыть();
Элемент = Справочники.Номенклатура.НайтиПоКоду("00070");
Форма = Элемент.ПолучитьФорму();
Форма.Открыть();
Как добавить запись в табличную часть элемента справочника?
ЭлементОбъект = СсылкаКонтрагент.ПолучитьОбъект();
НоваяСтрока = ЭлементОбъект.ВидыДеятельности.Добавить();
// Заполнить реквизиты.
НоваяСтрока.ВидДеятельности = ПолеВводаВидДеятельности;
ЭлементОбъект.Записать();
Как удалить строки из табличной части справочника?
ЭлементСправочника = Справочники.Контрагенты.НайтиПоКоду("Ю0006");
ОбъектСправочника = ЭлементСправочника.ПолучитьОбъект();
ОбъектСправочника.ВидыДеятельности.Очистить();
ОбъектСправочника.Записать();
ОбъектСправочника = ВыбранныйЭлемент.ПолучитьОбъект();
// Создать структуру для отбора удаляемых строк.
СтруктураОтбора = Новый Структура("ВидДеятельности", ВыбранныйВидДеятельности);
// Получить массив удаляемых строк.
ПодходящиеСтроки = ОбъектСправочника.ВидыДеятельности.НайтиСтроки(СтруктураОтбора);
// Удалить строки.
Для Каждого ОчереднаяСтрока Из ПодходящиеСтроки Цикл
ОбъектСправочника.ВидыДеятельности.Удалить(ОчереднаяСтрока);
КонецЦикла;
ОбъектСправочника.Записать();
Как перебрать строки табличной части справочника?
ЭлементСправочника = Справочники.Контрагенты.НайтиПоКоду("Ю0006");
Для Каждого ТекущаяСтрока Из ЭлементСправочника.ВидыДеятельности Цикл
Сообщить(ТекущаяСтрока.ВидДеятельности);
КонецЦикла;
Как создать элемент в нужной группе?
КодГруппы = "330100";
ПоискПоПолномуКоду = Ложь; // значение по умолчанию
Группа = Справочники.Номенклатура.НайтиПоКоду(КодГруппы, ПоискПоПолномуКоду);
Если Группа.Пустая() Тогда
Группа = Справочники.Номенклатура.СоздатьГруппу();
Группа.Код = КодГруппы;
Группа.Наименование = "Загруженные";
Группа.Записать();
ИначеЕсли Не Группа.ЭтоГруппа Тогда
Сообщить("Найден элемент справочника с указанным кодом!");
// Предусмотреть прерывание алгоритма.
КонецЕсли;
Спр = Справочники.Номенклатура.СоздатьЭлемент();
Спр.Наименование = "Программно созданный";
// Реквизиты заполняются в соответствии с задачей.
Спр.Родитель = Группа.Ссылка;
Спр.Записать();
Группа = Справочники.Номенклатура.Загруженные;
КодЭлемента = "330100";
ПоискПоПолномуКоду = Ложь; //Значение по умолчанию
Родитель = Справочники.Номенклатура.НайтиПоКоду(КодЭлемента, ПоискПоПолномуКоду);
Если Родитель.Пустая() Тогда
Родитель = Справочники.Номенклатура.СоздатьЭлемент();
Родитель.Код = КодЭлемента;
Родитель.Наименование = "Загруженные";
Родитель.Записать();
КонецЕсли;
Спр = Справочники.Номенклатура.СоздатьЭлемент();
Спр.Наименование = "Программно созданный";
// Реквизиты заполняются в соотвествии с задачей.
Спр.Родитель = Родитель.Ссылка;
Спр.Записать();
Как узнать, есть ли у текущего элемента подчиненные?
Выборка = Справочники.Номенклатура.Выбрать( , Владелец);
Если Выборка.Следующий() = Истина Тогда
// Есть подчиненные элементы.
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| ЕдиницыИзмерения.Ссылка
|ИЗ
| Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
|ГДЕ
| ЕдиницыИзмерения.Владелец = &Владелец";
Запрос.УстановитьПараметр("Владелец", Владелец);
Если НЕ Запрос.Выполнить().Пустой() Тогда
// Есть подчиненные элементы!
КонецЕсли;
Как узнать количество подчиненных элементов у выбранного элемента справочника?
Выборка = Справочники.ЕдиницыИзмерения.Выбрать( , Владелец);
КоличествоЭлементов = 0;
Пока Выборка.Следующий() Цикл
КоличествоЭлементов = КоличествоЭлементов + 1;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК КоличествоЗаписей
|ИЗ
| Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
|ГДЕ
| ЕдиницыИзмерения.Владелец = &Владелец";
Запрос.УстановитьПараметр("Владелец", Владелец);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
КоличествоЗаписей = Выборка.КоличествоЗаписей;
КонецЕсли;
Как узнать количество подчиненных элементов у выбранного элемента справочника, если количество подчиненных справочников больше чем один?
ВЫБРАТЬ
СУММА(КоличествоПодчиненных) КАК КоличествоПодчиненныхЭлементов
ИЗ
(ВЫБРАТЬ
КОЛИЧЕСТВО(*) КАК КоличествоПодчиненных
ИЗ
Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
ГДЕ ЕдиницыИзмерения.Владелец = &Владелец
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
КОЛИЧЕСТВО(*)
ИЗ
Справочник.СерииНоменклатуры КАК СерииНоменклатуры
ГДЕ СерииНоменклатуры.Владелец = &Владелец ) КАК ВложенныйЗапрос
Как получить всех родителей выбранного элемента справочника?
МассивРодителей = Новый Массив;
Родитель = СсылкаНаЭлемент.Родитель;
Пока Не Родитель.Пустая() Цикл
МассивРодителей.Добавить(Родитель);
Родитель = Родитель.Родитель;
КонецЦикла;
Для Каждого ТекущийРодитель Из МассивРодителей Цикл
// Работа с текущим родителем.
КонецЦикла;
ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Ссылка = &Ссылка
ИТОГИ ПО
Ссылка ТОЛЬКО ИЕРАРХИЯ
ТекущийЭлементНоменклатуры = ЭлементНоменклатура;
Запрос = Новый Запрос("ВЫБРАТЬ
| Номенклатура.Родитель,
| Номенклатура.Родитель.Родитель,
| Номенклатура.Родитель.Родитель.Родитель,
| Номенклатура.Родитель.Родитель.Родитель.Родитель,
| Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка = &ТекущийЭлементНоменклатуры";
Пока Истина Цикл
Запрос.УстановитьПараметр("ТекущийЭлементНоменклатуры", ТекущийЭлементНоменклатуры);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Прервать;
КонецЕсли;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Для НомерКолонки = 0 По Результат.Колонки.Количество() - 1 Цикл
ТекущийЭлементНоменклатуры = Выборка[НомерКолонки];
Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда
Прервать;
Иначе
Сообщить(ТекущийЭлементНоменклатуры);
КонецЕсли;
КонецЦикла;
Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Как получить запросом «полный» код элементов справочника, если тип кода — Строка?
ВЫБРАТЬ
Контрагенты.Ссылка,
ВЫБОР
КОГДА (Контрагенты.Родитель.Код ЕСТЬ NULL ) ТОГДА Контрагенты.Код
КОГДА (Контрагенты.Родитель.Родитель.Код ЕСТЬ NULL ) ТОГДА
Контрагенты.Родитель.Код + "/" + Контрагенты.Код
ИНАЧЕ Контрагенты.Родитель.Родитель.Код + "/" + Контрагенты.Родитель.Код +
"/" + Контрагенты.Код
КОНЕЦ КАК ПолныйКод
ИЗ
Справочник.Контрагенты КАК Контрагенты
Как получить все элементы справочника, содержащие в наименовании определенную подстроку, со всей иерархией, в которую они входят?
Запрос = Новый Запрос("ВЫБРАТЬ
| Контрагенты.Ссылка КАК Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| (Контрагенты.Наименование ПОДОБНО &ЧастьНаименования) И (НЕ Контрагенты.ЭтоГруппа)
|ИТОГИ ПО
| Ссылка ТОЛЬКО ИЕРАРХИЯ");
Запрос.УстановитьПараметр("ЧастьНаименования", "%" + ПолеВводаПодстрока + "%");
Как найти все элементы справочника, в которых не заполнен строковый реквизит?
ВЫБРАТЬ
ФизическиеЛица.Ссылка
ИЗ
Справочник.ФизическиеЛица КАК ФизическиеЛица
ГДЕ
(ФизическиеЛица.ИНН = "")
ВЫБРАТЬ
ФизическиеЛица.Ссылка
ИЗ
Справочник.ФизическиеЛица КАК ФизическиеЛица
ГДЕ
(ФизическиеЛица.СтраховойНомерПФР = "") ИЛИ (ФизическиеЛица.СтраховойНомерПФР = " - -")
Как перенести все элементы справочника «Контрагенты» из одной группы в другую?
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Контрагенты.Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.Родитель = &СтарыйРодитель";
Запрос.УстановитьПараметр("СтарыйРодитель", СтарыйРодитель);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Контрагент = Выборка.Ссылка.ПолучитьОбъект();
Контрагент.Родитель = НовыйРодитель;
Контрагент.Записать();
КонецЦикла;
Как организовать программный выбор элемента справочника?
// Получить форму выбора справочника как подчиненную
// форме документа
ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора( , ЭтаФорма);
// Открыть полученную форму
ФормаВыбора.Открыть();
Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)
ПолученноеЗначение = ЗначениеВыбора;
// Дальнейшая обработка значения.
КонецПроцедуры
ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора( , ЭтаФорма);
Выбрано = ФормаВыбора.ОткрытьМодально();
Процедура ПолеВводаНачалоВыбора(Элемент, СтандартнаяОбработка)
// Запретить стандартную обработку.
СтандартнаяОбработка = Ложь;
// Получить форму выбора справочника как подчиненную полю ввода.
ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора( , Элемент);
// Открыть полученную форму
ФормаВыбора.Открыть();
КонецПроцедуры
Процедура ПолеВводаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
// Отключить стандартную обработку (при необходимости).
СтандартнаяОбработка = Ложь;
ПолученноеЗначение = ВыбранноеЗначение;
// Дальнейшая обработка значения.
КонецПроцедуры
Как сохранить фотографию сотрудника в справочнике «Сотрудники»?
Процедура ЗагрузитьФотографию(Элемент)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
Фильтр = "Текст (*,*)|*.*";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите картинку";
Если ДиалогОткрытияФайла.Выбрать() Тогда
ВыбраннаяКартинка = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла);
ЭлементХранилища = Новый ХранилищеЗначения(ВыбраннаяКартинка);
Фотография = ЭлементХранилища;
КонецЕсли;
КонецПроцедуры
ВыбФайл = Новый ДвоичныеДанные(ДиалогОткрытияФайла.ПолноеИмяФайла);
элХранилища = Новый ХранилищеЗначения(ВыбФайл);
Фотография = элХранилища;
Задайте вопрос программисту 1С
-
Как создать элемент (группу) справочника?
-
Как найти элемент справочника?
-
Как удалить элемент справочника?
-
Как перебрать элементы справочника?
-
Как выбрать все элементы из определенной группы?
-
Как перебрать элементы подчиненного справочника с помощью запроса?
-
Как перебрать элементы подчиненного справочника с помощью выборки справочника?
-
Как открыть форму списка (элемента) справочника?
-
Как добавить запись в табличную часть элемента справочника?
-
Как удалить строки из табличной части справочника?
-
Как перебрать строки табличной части справочника?
-
Как создать элемент в нужной группе?
-
Как узнать, есть ли у текущего элемента подчиненные?
-
Как узнать количество подчиненных элементов у выбранного элемента справочника?
-
Как узнать количество подчиненных элементов у выбранного элемента справочника, если количество подчиненных справочников больше чем один?
-
Как получить всех родителей выбранного элемента справочника?
-
Как получить запросом «полный» код элементов справочника, если тип кода — Строка?
-
Как получить все элементы справочника, содержащие в наименовании определенную подстроку, со всей иерархией, в которую они входят?
-
Как найти все элементы справочника, в которых не заполнен строковый реквизит?
-
Как перенести все элементы справочника «Контрагенты» из одной группы в другую?
-
Как организовать программный выбор элемента справочника?
-
Как сохранить фотографию сотрудника в справочнике «Сотрудники»?
Как создать элемент (группу) справочника?
Как создать элемент (группу) справочника?
НовыйЭлемент = Справочники.ДокументыУдостоверяющиеЛичность.СоздатьЭлемент(); НовыйЭлемент.Наименование = «военный билет»; // Установить другие реквизиты. …. НовыйЭлемент.Записать();
НовыйЭлемент = Справочники.Банки.СоздатьЭлемент(); // Получить ссылку на группу, в которой будет находиться новый элемент. Родитель = Справочники.Банки.НайтиПоКоду(«000000001»); НовыйЭлемент.Наименование = «АКБ»; НовыйЭлемент.Код = «000000011»; НовыйЭлемент.Родитель = Родитель; // Установить другие реквизиты. //…. НовыйЭлемент.Записать(); НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу(); // Получить ссылку на группу, в которой должна находиться создаваемая группа. Родитель = Справочники.Номенклатура.НайтиПоНаименованию(«Обувь», Истина); НоваяГруппа.Наименование = «Модельная обувь»; НоваяГруппа.Родитель = Родитель; // Установить другие реквизиты. //…. НоваяГруппа.Записать(); // Создать новый элемент в корне справочника. НовыйЭлемент = Справочники.Подразделения.СоздатьЭлемент(); НовыйЭлемент.Наименование = «IT отдел»; НовыйЭлемент.Записать(); // Получить ссылку на родителя добавляемых элементов. Родитель = НовыйЭлемент.Ссылка; // Создать дочерний элемент. НовыйЭлемент = Справочники.Подразделения.СоздатьЭлемент(); НовыйЭлемент.Наименование = «Группа разработки»; НовыйЭлемент.Родитель = Родитель; НовыйЭлемент.Записать();
Как найти элемент справочника?
Как найти элемент справочника?
// Найдем по коду РезультатПоиска = Справочники.Номенклатура.НайтиПоКоду(«00030»); Если РезультатПоиска.Пустая() Тогда // Выполнить действия, предусмотренные в случае, когда элемент не найден. КонецЕсли; // Найдем по наименованиию РезультатПоиска = Справочники.Номенклатура.НайтиПоНаименованию(«Кроссовки»); // Найдем по реквизиту РезультатПоиска = Справочники.Номенклатура.НайтиПоРеквизиту(«Артикул», «К-120002»);
Как удалить элемент справочника?
Как удалить элемент справочника?
// Найти ссылки на удаляемый элемент. МассивСсылок = Новый Массив; МассивСсылок.Добавить(СсылкаНаУдаляемыйЭлемент); НайденныеСсылки = НайтиПоСсылкам(МассивСсылок); Если НайденныеСсылки.Количество() > 0 Тогда Сообщить(«Нельзя удалять элемент, на него имеются ссылки»); Иначе УдаляемыйЭлемент = СсылкаНаУдаляемыйЭлемент.ПолучитьОбъект(); УдаляемыйЭлемент.Удалить(); КонецЕсли; УдаляемыйЭлемент.УстановитьПометкуУдаления(Истина);
Как перебрать элементы справочника?
Как перебрать элементы справочника?
Выборка = Справочники.Номенклатура.ВыбратьИерархически(); Пока Выборка.Следующий() Цикл Наименование = Выборка.Наименование; // Обращение к другим данным справочника. КонецЦикла; Запрос = Новый Запрос(» |ВЫБРАТЬ | Ссылка, | Наименование |ИЗ | Справочник.Номенклатура |АВТОУПОРЯДОЧИВАНИЕ»); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Наименование = Результат.Наименование; КонецЦикла;
Как выбрать все элементы из определенной группы?
Как выбрать все элементы из определенной группы?
Выборка = Справочники.Номенклатура.Выбрать(ПолеВводаРодитель); Пока Выборка.Следующий() Цикл Наименование = Выборка.Наименование; КонецЦикла; Запрос = Новый Запрос(» |ВЫБРАТЬ | Ссылка, | Наименование |ИЗ | Справочник.Номенклатура |ГДЕ | Родитель = &Родитель |АВТОУПОРЯДОЧИВАНИЕ»); Запрос.УстановитьПараметр(«Родитель», ПолеВводаРодитель); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Наименование = Результат.Наименование; КонецЦикла; Выборка=Справочники.Номенклатура.ВыбратьИерархически(ПолеВводаРодитель); Пока Выборка.Следующий() Цикл Наименование = Выборка.Наименование; КонецЦикла; Запрос = Новый Запрос(» |ВЫБРАТЬ | Ссылка, | Наименование |ИЗ | Справочник.Номенклатура |ГДЕ | Родитель В ИЕРАРХИИ(&Родитель) |АВТОУПОРЯДОЧИВАНИЕ»); Запрос.УстановитьПараметр(«Родитель», ПолеВводаРодитель); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Наименование = Результат.Наименование; КонецЦикла;
Как перебрать элементы подчиненного справочника с помощью запроса?
Как перебрать элементы подчиненного справочника с помощью запроса?
Процедура ПереборПодчиненыхЭлементов(Контрагент) Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | КонтактныеЛица.Ссылка |ИЗ | Справочник.КонтактныеЛица КАК КонтактныеЛица |ГДЕ | КонтактныеЛица.Владелец = &Владелец»; Запрос.УстановитьПараметр(«Владелец», Контрагент); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл ОчереднойПодчиненый = Выборка.Ссылка; КонецЦикла; КонецПроцедуры
Как перебрать элементы подчиненного справочника с помощью выборки справочника?
Как перебрать элементы подчиненного справочника с помощью выборки справочника?
Процедура ПереборПодчиненыхЭлементов(Контрагент) // Получить выборку по указанному контрагенту. Выборка = Справочники.КонтактныеЛица.Выбрать( , Контрагент); Пока Выборка.Следующий() Цикл ОчереднойПодчиненый = Выборка.Ссылка; КонецЦикла; КонецПроцедуры
Как открыть форму списка (элемента) справочника?
Как открыть форму списка (элемента) справочника?
Форма = Справочники.Номенклатура.ПолучитьФормуСписка(); Форма.Открыть(); Форма = Справочники.ХранилищеДополнительнойИнформации.ПолучитьФорму(«ФормаСпискаФайловИИзображений»); Форма.Открыть(); Элемент = Справочники.Номенклатура.НайтиПоКоду(«00030»); Форма = Элемент.ПолучитьФорму(); Форма.Открыть();
Как добавить запись в табличную часть элемента справочника?
Как добавить запись в табличную часть элемента справочника?
ЭлементОбъект = СсылкаКонтрагент.ПолучитьОбъект(); НоваяСтрока = ЭлементОбъект.ВидыДеятельности.Добавить(); // Заполнить реквизиты. НоваяСтрока.ВидДеятельности = ПолеВводаВидДеятельности; ЭлементОбъект.Записать();
Как удалить строки из табличной части справочника?
Как удалить строки из табличной части справочника?
ЭлементСправочника = Справочники.Контрагенты.НайтиПоКоду(«Ю0006»); ОбъектСправочника = ЭлементСправочника.ПолучитьОбъект(); ОбъектСправочника.ВидыДеятельности.Очистить(); ОбъектСправочника.Записать(); ОбъектСправочника = ВыбранныйЭлемент.ПолучитьОбъект(); // Создать структуру для отбора удаляемых строк. СтруктураОтбора = Новый Структура(«ВидДеятельности», ВыбранныйВидДеятельности); // Получить массив удаляемых строк. ПодходящиеСтроки = ОбъектСправочника.ВидыДеятельности.НайтиСтроки(СтруктураОтбора); // Удалить строки. Для Каждого ОчереднаяСтрока Из ПодходящиеСтроки Цикл ОбъектСправочника.ВидыДеятельности.Удалить(ОчереднаяСтрока); КонецЦикла; ОбъектСправочника.Записать();
Как перебрать строки табличной части справочника?
Как перебрать строки табличной части справочника?
ЭлементСправочника = Справочники.Контрагенты.НайтиПоКоду(«Ю0006»); Для Каждого ТекущаяСтрока Из ЭлементСправочника.ВидыДеятельности Цикл Сообщить(ТекущаяСтрока.ВидДеятельности); КонецЦикла;
Как создать элемент в нужной группе?
Как создать элемент в нужной группе?
КодГруппы = «330100»; ПоискПоПолномуКоду = Ложь; // значение по умолчанию Группа = Справочники.Номенклатура.НайтиПоКоду(КодГруппы, ПоискПоПолномуКоду); Если Группа.Пустая() Тогда Группа = Справочники.Номенклатура.СоздатьГруппу(); Группа.Код = КодГруппы; Группа.Наименование = «Загруженные»; Группа.Записать(); ИначеЕсли Не Группа.ЭтоГруппа Тогда Сообщить(«Найден элемент справочника с указанным кодом!»); // Предусмотреть прерывание алгоритма. КонецЕсли; Спр = Справочники.Номенклатура.СоздатьЭлемент(); Спр.Наименование = «Программно созданный»; // Реквизиты заполняются в соответствии с задачей. Спр.Родитель = Группа.Ссылка; Спр.Записать(); Группа = Справочники.Номенклатура.Загруженные; КодЭлемента = «330100»; ПоискПоПолномуКоду = Ложь; //Значение по умолчанию Родитель = Справочники.Номенклатура.НайтиПоКоду(КодЭлемента, ПоискПоПолномуКоду); Если Родитель.Пустая() Тогда Родитель = Справочники.Номенклатура.СоздатьЭлемент(); Родитель.Код = КодЭлемента; Родитель.Наименование = «Загруженные»; Родитель.Записать(); КонецЕсли; Спр = Справочники.Номенклатура.СоздатьЭлемент(); Спр.Наименование = «Программно созданный»; // Реквизиты заполняются в соотвествии с задачей. Спр.Родитель = Родитель.Ссылка; Спр.Записать();
Как узнать, есть ли у текущего элемента подчиненные?
Как узнать, есть ли у текущего элемента подчиненные?
Выборка = Справочники.Номенклатура.Выбрать( , Владелец); Если Выборка.Следующий() = Истина Тогда // Есть подчиненные элементы. КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ ПЕРВЫЕ 1 | ЕдиницыИзмерения.Ссылка |ИЗ | Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения |ГДЕ | ЕдиницыИзмерения.Владелец = &Владелец»; Запрос.УстановитьПараметр(«Владелец», Владелец); Если НЕ Запрос.Выполнить().Пустой() Тогда // Есть подчиненные элементы! КонецЕсли;
Как узнать количество подчиненных элементов у выбранного элемента справочника?
Как узнать количество подчиненных элементов у выбранного элемента справочника?
Выборка = Справочники.ЕдиницыИзмерения.Выбрать( , Владелец); КоличествоЭлементов = 0; Пока Выборка.Следующий() Цикл КоличествоЭлементов = КоличествоЭлементов + 1; КонецЦикла; Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | КОЛИЧЕСТВО(*) КАК КоличествоЗаписей |ИЗ | Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения |ГДЕ | ЕдиницыИзмерения.Владелец = &Владелец»; Запрос.УстановитьПараметр(«Владелец», Владелец); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда КоличествоЗаписей = Выборка.КоличествоЗаписей; КонецЕсли;
Как узнать количество подчиненных элементов у выбранного элемента справочника, если количество подчиненных справочников больше чем один?
Как узнать количество подчиненных элементов у выбранного элемента справочника, если количество подчиненных справочников больше чем один?
ВЫБРАТЬ СУММА(КоличествоПодчиненных) КАК КоличествоПодчиненныхЭлементов ИЗ (ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК КоличествоПодчиненных ИЗ Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения ГДЕ ЕдиницыИзмерения.Владелец = &Владелец ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ КОЛИЧЕСТВО(*) ИЗ Справочник.СерииНоменклатуры КАК СерииНоменклатуры ГДЕ СерииНоменклатуры.Владелец = &Владелец ) КАК ВложенныйЗапрос
Как получить всех родителей выбранного элемента справочника?
Как получить всех родителей выбранного элемента справочника?
Вариант 1:
МассивРодителей = Новый Массив; Родитель = СсылкаНаЭлемент.Родитель; Пока Не Родитель.Пустая() Цикл МассивРодителей.Добавить(Родитель); Родитель = Родитель.Родитель; КонецЦикла; Для Каждого ТекущийРодитель Из МассивРодителей Цикл // Работа с текущим родителем. КонецЦикла;
Вариант 2:
ВЫБРАТЬ Номенклатура.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка = &Ссылка ИТОГИ ПО Ссылка ТОЛЬКО ИЕРАРХИЯ
Как получить запросом «полный» код элементов справочника, если тип кода — Строка?
Как получить запросом «полный» код элементов справочника, если тип кода — Строка?
ВЫБРАТЬ Контрагенты.Ссылка, ВЫБОР КОГДА (Контрагенты.Родитель.Код ЕСТЬ NULL ) ТОГДА Контрагенты.Код КОГДА (Контрагенты.Родитель.Родитель.Код ЕСТЬ NULL ) ТОГДА Контрагенты.Родитель.Код + «/» + Контрагенты.Код ИНАЧЕ Контрагенты.Родитель.Родитель.Код + «/» + Контрагенты.Родитель.Код + «/» + Контрагенты.Код КОНЕЦ КАК ПолныйКод ИЗ Справочник.Контрагенты КАК Контрагенты
Как получить все элементы справочника, содержащие в наименовании определенную подстроку, со всей иерархией, в которую они входят?
Как получить все элементы справочника, содержащие в наименовании определенную подстроку, со всей иерархией, в которую они входят?
Запрос = Новый Запрос(«ВЫБРАТЬ | Контрагенты.Ссылка КАК Ссылка |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | (Контрагенты.Наименование ПОДОБНО &ЧастьНаименования) И (НЕ Контрагенты.ЭтоГруппа) |ИТОГИ ПО | Ссылка ТОЛЬКО ИЕРАРХИЯ»); Запрос.УстановитьПараметр(«ЧастьНаименования», «%» + ПолеВводаПодстрока + «%»);
Как найти все элементы справочника, в которых не заполнен строковый реквизит?
Как найти все элементы справочника, в которых не заполнен строковый реквизит?
ВЫБРАТЬ ФизическиеЛица.Ссылка ИЗ Справочник.ФизическиеЛица КАК ФизическиеЛица ГДЕ (ФизическиеЛица.ИНН = «») ВЫБРАТЬ ФизическиеЛица.Ссылка ИЗ Справочник.ФизическиеЛица КАК ФизическиеЛица ГДЕ (ФизическиеЛица.СтраховойНомерПФР = «») ИЛИ (ФизическиеЛица.СтраховойНомерПФР = » — -«)
Как перенести все элементы справочника «Контрагенты» из одной группы в другую?
Как перенести все элементы справочника «Контрагенты» из одной группы в другую?
Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | Контрагенты.Ссылка |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | Контрагенты.Родитель = &СтарыйРодитель»; Запрос.УстановитьПараметр(«СтарыйРодитель», СтарыйРодитель); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл Контрагент = Выборка.Ссылка.ПолучитьОбъект(); Контрагент.Родитель = НовыйРодитель; Контрагент.Записать(); КонецЦикла;
Как организовать программный выбор элемента справочника?
Как организовать программный выбор элемента справочника?
// Получить форму выбора справочника как подчиненную // форме документа ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора( , ЭтаФорма); // Открыть полученную форму ФормаВыбора.Открыть(); //******************************************************************************************************************* Процедура ОбработкаВыбора(ЗначениеВыбора, Источник) ПолученноеЗначение = ЗначениеВыбора; // Дальнейшая обработка значения. КонецПроцедуры ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора( , ЭтаФорма); Выбрано = ФормаВыбора.ОткрытьМодально(); //******************************************************************************************************************* Процедура ПолеВводаНачалоВыбора(Элемент, СтандартнаяОбработка) // Запретить стандартную обработку. СтандартнаяОбработка = Ложь; // Получить форму выбора справочника как подчиненную полю ввода. ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора( , Элемент); // Открыть полученную форму ФормаВыбора.Открыть(); КонецПроцедуры //******************************************************************************************************************* Процедура ПолеВводаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) // Отключить стандартную обработку (при необходимости). СтандартнаяОбработка = Ложь; ПолученноеЗначение = ВыбранноеЗначение; // Дальнейшая обработка значения. КонецПроцедуры //*******************************************************************************************************************
Как сохранить фотографию сотрудника в справочнике Сотрудники?
Как сохранить фотографию сотрудника в справочнике Сотрудники?
Процедура ЗагрузитьФотографию(Элемент) Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытияФайла.ПолноеИмяФайла = «»; Фильтр = «Текст (*,*)|*.*»; ДиалогОткрытияФайла.Фильтр = Фильтр; ДиалогОткрытияФайла.МножественныйВыбор = Ложь; ДиалогОткрытияФайла.Заголовок = «Выберите картинку»; Если ДиалогОткрытияФайла.Выбрать() Тогда ВыбраннаяКартинка = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла); ЭлементХранилища = Новый ХранилищеЗначения(ВыбраннаяКартинка); Фотография = ЭлементХранилища; КонецЕсли; КонецПроцедуры ВыбФайл = Новый ДвоичныеДанные(ДиалогОткрытияФайла.ПолноеИмяФайла); элХранилища = Новый ХранилищеЗначения(ВыбФайл); Фотография = элХранилища;
Слушатель курса Разработка и оптимизация запросов в 1С:Предприятие 8.3 столкнулся с трудностями при обращении к конкретному объекту непосредственно в запросе. С аналогичной задачей может столкнуться каждый, поэтому мы решили опубликовать вопрос слушателя и ответ тренера из Мастер-группы курса.
Вопрос
В самом начале курса было показано, как найти объект на встроенном языке, например, НайтиПоНаименованию или НайтиПоКоду и передать его в запрос через параметр. А можно ли обратиться к объекту прямо в запросе, не используя параметр. Например, найти номенклатуру, зная её точное название или артикул?
Ответ тренера
Искать по произвольному реквизиту в запросе тоже можно, сравнивая значение этого реквизита с примитивными типами. Разумеется, значение реквизита так же должно иметь примитивный тип.
Выборка номенклатуры по конкретному значению артикула:
ВЫБРАТЬ Номенклатура.Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Артикул = "Арт1234"
Если значение реквизита не является примитивным типом, требуется через точку перейти на следующий уровень детализации.
То есть, чтобы выбрать номенклатуру с единицей измерения “штука”, нельзя написать
Номенклатура.ЕдиницаИзмерения = "Шт"
Правильным будет следующее условие:
Номенклатура.ЕдиницаИзмерения.Наименование = "Шт".
P.S.
Понимать, как работают запросы и уметь их строить — обязательный навык для всех, кто дорабатывает и внедряет 1С.
После курса Вы сможете:
- Строить сложные запросы с несколькими источниками данных
- Уверенно задействовать вложенные запросы и временные таблицы
- Использовать встроенный язык для обработки результатов запроса
- Учитывать особенности соединений и объединений нескольких таблиц.
- Разрабатывать запросы на уровне задач Аттестации 1С:Специалист по платформе.
Содержание:
При реализации прикладных задач в программе 1С:Предприятие 8 у разработчика может возникнуть потребность использовать прикладные объекты ссылочного типа. У которых есть свойство «Наименование», но нет возможности с помощью встроенного языка 1С Предприятие обратиться «напрямую» к объекту базы данных 1С, как к предопределенному элементу справочника 1С т.к. они были созданы пользователем в информационной базе 1С 8.
Для решения таких задач можно воспользоваться методом «НайтиПоНаименованию», который присутствует у некоторых объектов конфигурации или с помощью объекта встроенного языка «Запрос».
1. Метод «НайтиПоНаименованию» в конфигурации «Справочник»
Иногда в компаниях реквизит «наименование» элемента справочника формируется пользователем в строго установленной последовательности. В наименовании элемента справочника может присутствовать какое-нибудь свойства товара.
У объекта конфигурации Справочник есть метод НайтиПоНаимнованию (Рис. 1).
Рисунок №1.
Наименование – тип Строка. Текст, по которому нужно найти.
Точное соответствие – тип булево. Истина – искать точное соответствие за исключением пробелов в конце наименования. Ложь – искать соответствие по левой части наименования.
Родитель – тип Справочник. В пределах которого нужно найти элемент справочника 1С.
Владелец – тип Справочник. В пределах которого нужно найти элемент справочника 1С.
Рисунок № 2.
Для иллюстрации будет приведен пример в демонстрационной базе 1С Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.112.34).
Запустим информационную базу в режиме Конфигуратор в 1С. Создадим обработку. В форме обработки создадим команду, реквизит формы (Рис. 3) и опишем действие команды (Рис. 4). Сохраним созданную обработку, как внешнюю обработку.
Рисунок №3.
Рисунок № 4.
Теперь можно запустить работу системы 1С: Предприятия 8.3 в пользовательском режиме. Открыть внешнюю обработку ввести текст в реквизит «Текст поиска». Введем текст «Шоколад» и нажмем команду «Найти».
Рисунок № 5.
Система нашла в справочнике «Номенклатура» первый попавшийся элемент. Система искала соответствие по левой части наименования.
2. Объект встроенного языка «Запрос»
Получить объект базы данных 1С также можно с помощью объекта встроенного языка «Запрос». Запустим информационную базу в режиме Конфигуратор в 1С. Изменим код встроенного языка 1С Предприятие в модуле формы внешней обработки (Рис. 6).
Рисунок № 6.
Сохраним изменения и запустим информационную базу в пользовательском режиме 1С.
Рисунок № 7.
Откроем внешнюю обработку, заполним реквизит «Текст поиска» (Рис. 7). Нажимаем команду «Найти». В результате на экран система выведет сообщения с наименованиями из справочника Номенклатура у которых левая часть наименования начинается с текста «Шоколад».
Специалист 1С компании «Кодерлайн»
Быков Владимир