23.11.2016

1С свернуть массив

Как же свернуть массив по различным значениям? А никак, только перебором. Можно конечно запариться перегнать массив в таблицу свернуть таблицу и выгрузить колонку, но зачем? Надо бы конечно провести эксперимент, какой способ быстрее, но крайне лень.
Поэтому вот проверенный вариант в лоб:

Функция СвернутьМассив(ИсхМассив) 
НовМассив = новый Массив;
Для Каждого ТекЭлемент из ИсхМассив Цикл
Если НовМассив.найти(ТекЭлемент) = Неопределено Тогда
НовМассив.добавить(ТекЭлемент);   
КонецЕсли;
КонецЦикла;   
Возврат НовМассив;
КонецФункции

Суть в том, что берем массив с дублями, делаем пустой массив и добавляем в новый массив элементы, которые еще не успели перенести. Все!

1С проверить поле в структуре

Здравствуйте, задача тривиальная, порой бывает удобно воспользоваться структурой. И порой в связи с этим всплывают какие-нибудь неожиданные косяки, связанные с неудачным заполнением. Чтобы исключить неудачное заполнение можно пользоваться терпением при заполнении. Или можно при обращении к полям структуры устроить проверку на наличие этих полей. Сделать это можно с помощью метода структуры Свойство.

10.11.2016

1с Отбор по периоду в списке управляемых форм

Для динамического списка в управляемых формах есть, конечно, специально Отбор через точку, примерно ДинамическийСписок1.Отбор, в котором можно установить все необходимые параметры, включая период. Но, при редактировании на форме, у нас будут две кнопки:
Отбор, который доступен через ДинамическийСписок1.Отбор, будет при ручном редактировании отображаться при нажатии "Настроить список", но в установке периода, этого отбора видно не будет. Катострофа! Ведь пользователь, если ему вдруг не понравиться период, установленный автоматом, полезет же в "Установить период" и запутается окончательно, ничего там не найдя.
Однако ж, есть решение. И довольно простое. В процедуру формы списка ПриОткрытии вставляем следующий код:
лНовыйПериод = Новый СтандартныйПериод(НачалоДня(ТекущаяДата()), КонецДня(ТекущаяДата()+24*60*60));
ЗаполнитьЗначенияСвойств(Элементы.Список.Период, лНовыйПериод);
Элементы.Список.Обновить();
Здесь мы через элементы формы обращаемся к установке периода, для примера период ставится текущая и завтрашняя даты. И все. Выбранный период будет виден через кнопку "Установить период".