Урок 20. |
В выпуске №19 речь шла о закладках в форме. В тема не сложная и проблем с решением задач быть не должно. Остановиться хотелось бы на одной задаче. Задача 4. В форме добавьте 7 флажков, названных днями недели. Форма должна работать просто: если флажок установлен, появляется соответствующая закладка, если флажок снят - закладка пропадает. Условие: закладки называются как дни недели. При этом они должны быть по порядку: "вторник" не может быть слева от "понедельника" - каждая закладка добавляется на свое место, а не справа. Решений у этой задачи может быть несколько: от простых решений с перебором всех флажков, до "навороченных" процедур самостоятельно определяющих какой флажок установил пользователь. Решение считается правильным если 1. при добавлении новой закладки - не происходит смена текущей выбранной закладки. 2. Находясь в форме, в меню "Действие" Вы можете сделать сохранение текущей расстановки флажков - при открытии они будут установлены автоматически. Ваше решение правильное, если и закладки сами восстановятся. Простые решения рассматривать не интересно. Одно из любопытных решений с комментариями Вы можете посмотреть здесь. Сегодня рассмотрим еще одно применение списка значений. Многие, кто конфигурит 1С - ранее работали с БД в формате БДФ и по этому безмерно его любят и пренебрегают текстовыми файлами из-за неудобства работы. Знаю это на собственном опыте. Но после того, как я обнаружил способ с которым собираюсь Вас познакомить - я НИ РАЗУ после этого не работал с ДБФ, а всегда пользовался текстовыми файлами: и для обмена данными между базами, и для перехода на новый план счетов. С помощью текстовых файлов решается проблема переноса документов, справочников, остатков по счетам с аналитикой и без. У списка значений есть один замечательный метод ВСтрокуСРазделителями(). Если этот метод применить к списку значений, то он вернет строку, содержащую значения из списка в кавычках, разделенные запятыми. Этим методом решается проблема формата текстового файла. Метод ИзСтрокиСРазделителями() действует наоборот - из строки получается готовый список значений. Важно: После того как вы преобразовали список значений в строку - все хранимые значений превратились в их тектовое предстаавление. Это означает, что если у Вас в списке значений был документ, то в результате работы метода ВСтрокуСРазделителями() Вы получите строковое представление этого документа, а не сам документ. Обращаем Ваше внимание на то, что в в строку выгружаются только значения! Все представления теряются. Теперь использую объект "Текст" вы сможете легко сформировать из строк текстовый файл и потом прочитать его. В самом простом примере это выгладит примерно так. Выгрузка данных. Процедура Сформировать() Загрузка данных: Процедура Загрузка() Загрузить несколько сложней, чем выгрузить. Обратите внимание на то, как получаем вид контрагента. Сначала получили строку, а потом соответствующее ему значение перечисления. И это касается всех значений объектов кроме даты, строки и числа. На самом деле выгрузка и загрузка осуществляется не так просто. Если Вы выгружаете многоуровневый справочник, то надо кроме самого элемента выгружать информацию о его родителе (чтобы найти его в конфигурации-приемнике), признак группа/элемент, может быт понадобится номер уровня. Благодаря тому, что каждая новая строка в тексте может быть отлична от предыдущей - Вы сможете выгружать документы с шапками и табличными частями. В ДБФ это было не так легко. Самое трудное - это корректная загрузка информации. По опыту могу сказать, что написание процедуры хорошей загрузки занимает 80% времени от всей процедуры выгрузки/загрузки. Задача для самостоятельной работы: Учитесь
выгружать и загружать данные начиная с простых
случаев и заканчивая сложными |