Примеры и советы по программированию в системе
1С:Предприятие 8.1
  1. Как создать структуру
  2. Как добавить элементы в структуру
  3. Как обратиться к элементу структуры
  4. Как перебрать элементы структуры
  5. Как удалить элемент структуры
  6. Как в структуре установить значение для элемента с определенным ключом
  7. Как получить в структуру многомерные данные? Как собрать информацию по установленным в форме журнала отборам
  8. Как определить, есть ли в структуре элемент с ключом "Контрагент", и если есть, но содержит пустое значение справочника или Неопределено - удалить этот элемент
  9. Как из табличной части "Товары" документа получить все строки, где значение реквизита "Цена" равно нулю, а значение реквизита "СтавкаНДС" равно значению "НДС18" перечисления "СтавкиНДС"
  10. Как получить данные о текущей учетной политике бухгалтерского учета организации из периодического регистра сведений на заданную дату
  11. Как получить данные о текущей учетной политике бухгалтерского учета организации из периодического регистра сведений на заданную дату
  12. Как сформировать структуру названий реквизитов табличной части произвольного документа

Как создать структуру?

СозданнаяСтруктура = Новый Структура;     
Оппонент = Новый Структура ("Фамилия, Имя, Отчество, Возраст", "Иванов", "Иван", "Иванович", 7);

Как добавить элементы в структуру?

Оппонент = Новый Структура ("Фамилия, Имя, Отчество, Возраст", "Иванов", "Иван", "Иванович", 7); 
Оппонент.Вставить("Обращение", "Господин");   
Оппонент.Вставить("Возраст", 25); 

Как обратиться к элементу структуры?

ТекущийВозраст = Оппонет.Возраст;

КлючСтруктуры = "Возраст";
ТекущийВозраст = Оппонет[КлючСтруктуры];

ТекущийВозраст = Неопределено;
Оппонет.Свойство("Возраст", ТекущийВозраст);

Оппонет.Возраст = 32;

Оппонет["Возраст"] = 32;

Оппонент.Вставить("Возраст", 32); 

Как перебрать элементы структуры?

Для Каждого Элемент из СтруктураПараметров Цикл
         Сообщить(Элемент.Ключ + ": " + Элемент.Значение);
КонецЦикла;

Как удалить элемент структуры?

СтруктураПараметров.Удалить("Номенклатура");

СтруктураПараметров. Очистить(); 

Как в структуре установить значение для элемента с определенным ключом?

Структура = Новый Структура;
// Добавить новый элемент.
Структура.Вставить("Цвет", WebЦвета.Белый);
// Установить значение для элемента с ключом "Цвет".
Структура.Вставить("Цвет", WebЦвета.Синий);

Как получить в структуру многомерные данные? Как собрать информацию по установленным в форме журнала отборам?

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

Как определить, есть ли в структуре элемент с ключом "Контрагент", и если есть, но содержит пустое значение справочника или Неопределено - удалить этот элемент?

Если Структура.Свойство("Контрагент", ЗначениеЭлемента) Тогда
          Если ЗначениеЭлемента = Неопределено ИЛИ ЗначениеЭлемента.Пустая() Тогда
                   Структура.Удалить("Контрагент");
          КонецЕсли;
КонецЕсли;

Структура.Контрагент

Структура["Контрагент"] 

Как из табличной части "Товары" документа получить все строки, где значение реквизита "Цена" равно нулю, а значение реквизита "СтавкаНДС" равно значению "НДС18" перечисления "СтавкиНДС"?

СтруктураДляПоиска = Новый Структура("Цена, СтавкаНДС", 0, Перечисления.СтавкиНДС.НДС18);
МассивСтрок = Товары.НайтиСтроки(СтруктураДляПоиска);

Как получить данные о текущей учетной политике бухгалтерского учета организации из периодического регистра сведений на заданную дату?

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

Как сформировать структуру названий реквизитов табличной части произвольного документа?

Функция СформироватьСтруктуруТабличнойЧастиДокумента(Документ, ИмяТабличнойЧасти)
           СтруктураТабличнойЧастиДокумента = Новый Структура;
           Для Каждого Реквизит из Документ.Метаданные().ТабличныеЧасти[ИмяТабличнойЧасти].Реквизиты Цикл
                    СтруктураТабличнойЧастиДокумента.Вставить(Реквизит.Имя, Реквизит.Имя);
           КонецЦикла;
           Возврат СтруктураТабличнойЧастиДокумента;
КонецФункции