Ответы к главе 9

§ 9.1. Форма элемента: одна запись справочника

К вопросу 1. Ответ. Форма объекта, форма группы, форма списка, форма для выбора и форма для выбора группы.

К вопросу 2. Ответ. Платформа строит форму сама — открывается автоформа нужного вида.

К вопросу 3. Ответ. Потому что в самой форме такой пометки нет. Видом её делает строка у объекта, в которую её поставили: одна и та же форма может стоять в двух ролях.

К вопросу 4. Ответ. Дополнительная форма — запасной случай: её вызывают, если основная не задана или не может быть использована.

К вопросу 5. Ответ. Основной реквизит типа объекта справочника, стандартные команды записи и закрытия, поля с путями к реквизитам записи.

К вопросу 6. Ответ. Это стандартные реквизиты справочника: их задаёт вид объекта, а не разработчик.

К вопросу 7. Указание. Одна форма — пять ролей.

Полное решение. Собранная форма могла быть не назначена ни в одну строку, и тогда платформа строит автоформу. Или назначена не в ту роль: карточка стоит в форме объекта, а пользователь открыл группу, для которой строка пуста.

К упражнению «По образцу». Ответ. У «Контрагентов» своих форм нет — все строки пусты. При выборе контрагента в документе откроется автоформа выбора.

К упражнению «Своё: раздайте роли». Ответ. Складов немного, реквизитов у них мало — автоформы хватает и для карточки, и для списка. Свою форму заводят, когда нужны свои поля, свой порядок или свои команды.

К упражнению «Ловушка: „сделал форму — она и откроется"». Ответ. Пользователь увидит автоформу: платформа зовёт ту форму, что назначена в строке основных форм, а не ту, что просто существует в дереве.

К упражнению «Обратный ход». Ответ. Одна и та же форма назначена в две роли — например, и формой объекта, и формой группы. Так делают, когда состав полей для обоих случаев подходит.

К упражнению «На чтение». Ответ. Код не вывели на форму: стандартный реквизит существует и хранится, но показывать его необязательно. Так делают, когда код нумеруется автоматически и человеку не нужен.

§ 9.2. Форма списка: разговор о многих записях

К вопросу 1. Ответ. В карточке предмет разговора — одна запись, её правят и записывают. В списке предмет — набор записей: записывать нечего, есть текущая строка, и заканчивается разговор обычно переходом к одной записи.

К вопросу 2. Ответ. Потому что строки принадлежат базе, а не форме: в основном реквизите лежит динамический список, а не запись.

К вопросу 3. Ответ. Форма объекта, форма списка и форма для выбора. Групп у документов не бывает, поэтому нет и форм группы.

К вопросу 4. Ответ. Форма записи. По смыслу это та же роль, что форма объекта у справочника: работа с одной единицей хранения.

К вопросу 5. Ответ. К текущей строке — той, на которой стоит курсор. Исключение — создание: оно заводит новую запись и ни к какой строке не относится.

К вопросу 6. Ответ. Из команды раздела, с начальной страницы, из служебного перечня объектов. При выборе значения для поля откроется не он, а форма выбора.

К вопросу 7. Ответ. Что по списку работают, не открывая карточек: человеку нужны данные прямо в строках, а не переход к записи.

К упражнению «По образцу». Ответ. У контрагентов список короткий: наименование, ИНН. У реализаций — номер, дата, контрагент, сумма и команда проведения. Ролей у справочника пять, у документа три.

К упражнению «Своё: спроектируйте список». Ответ. Дата, номер, контрагент, склад, сумма. Дата и контрагент — чтобы найти нужное поступление; сумма — чтобы не открывать карточку ради проверки.

К упражнению «Ловушка: „удалил строку — удалил запись"». Ответ. Пометка на удаление — это признак у записи, а не удаление. Запись на месте, показывать её список может по-прежнему; удаляют помеченное отдельной служебной операцией.

К упражнению «Обратный ход». Ответ. Автоформу документа: своей формы объекта нет, и платформа строит её сама по реквизитам документа.

К упражнению «На чтение». Ответ. Это список, с которым работают прямо в нём: записи не создают вручную (они приходят иначе), а наводят порядок — ищут и объединяют дубли. Карточка здесь нужна для просмотра, а не для ввода.

§ 9.3. Форма выбора: вернуть одно значение в поле

К вопросу 1. Ответ. В роли формы для выбора: её строка есть у объекта рядом с формами объекта и списка. Для выбора папки есть отдельная роль — форма для выбора группы.

К вопросу 2. Ответ. Если своей формы выбора нет, платформа строит автоформу по тем же правилам, что и для списка, только в режиме выбора.

К вопросу 3. Ответ. Двойной щелчок не открывает карточку, а подставляет значение в поле и закрывает окно. Форма заканчивается возвратом значения тому, кто её позвал.

К вопросу 4. Ответ. Платформа. Режим выбора у таблицы на клиенте доступен только для чтения: его выставляет сама платформа, открывая форму для выбора.

К вопросу 5. Ответ. Решает, закроется ли окно после выбора. По умолчанию включено. Выключают его, чтобы форма работала подбором: значение уходит в документ, а окно остаётся.

К вопросу 6. Ответ. Когда у справочника задан быстрый выбор — значения выпадают списком прямо в поле. И когда человек набирает значение прямо в поле: работает ввод по строке.

К вопросу 7. Указание. Кто её позвал?

Полное решение. В поле, из которого форму вызвали: там задан отбор. Форма выбора получает ограничения вместе с просьбой выбрать, поэтому в ней самой причины нет.

К упражнению «По образцу». Ответ. Автоформа выбора складов: своей формы выбора у справочника нет, строка пуста, и платформа строит форму сама.

К упражнению «Своё: кому быстрый выбор». Ответ. «Единицам измерения» — да, их пять. «Складам» — можно, их немного. «Товарам» и «Контрагентам» — нет: записей много, нужен поиск и отбор в форме.

К упражнению «Ловушка: „выбрал товар — окно закрылось, а надо десять"». Ответ. Выключить у формы выбора свойство «закрывать при выборе»: окно останется открытым, и товары можно набирать один за другим. Это и есть подбор.

К упражнению «Обратный ход». Ответ. В свойствах поля «Контрагент» задан отбор — например, по признаку покупателя. Сама форма выбора тут ни при чём: она показывает то, что ей разрешили показать.

К упражнению «На чтение». Ответ. Это форма подбора, выросшая в рабочее место: человек видит остатки и набирает товары, не выходя из окна. Сделали её такой, чтобы весь выбор шёл в одном месте — с остатками перед глазами.

§ 9.4. Документ и справочник: одна запись, разные правила

К вопросу 1. Ответ. Обе — разговор об одной записи: объект в основном реквизите, данные приходят копией и уходят при записи, форма собрана из тех же видов элементов, а без своей формы работает автоформа.

К вопросу 2. Ответ. Справочник — «что у нас есть», документ — «что произошло».

К вопросу 3. Ответ. Вещь узнают по названию, а событие — по времени: события выстраиваются в порядке, поэтому документу нужны номер и дата.

К вопросу 4. Ответ. Проведение записывает движения — записи в регистрах: приход, расход, новая цена. Куда именно писать, задано у документа списком регистров.

К вопросу 5. Ответ. Оперативное — это проведение «сейчас», текущей датой. Разрешено оно или нет, задано свойством документа; если дата документа меньше текущей, проведение уже не оперативное — отсюда предупреждения в форме.

К вопросу 6. Указание. Что даёт кнопка, а что — реквизиты?

Полное решение. Есть «Провести» — документ с разрешённым проведением. Нет — либо справочник, либо документ, которому проведение запретили. Надёжнее всего смотреть на реквизиты: номер и дата есть только у документа, код и наименование — у справочника.

К вопросу 7. Ответ. Номер и дата — когда; шапка — кто и где; табличная часть — что и сколько; итоги и проведение — что из этого следует для учёта.

К упражнению «По образцу». Ответ. У реализации номер, дата, контрагент, склад, товары, кнопки записи и проведения. У контрагента — код, наименование, ИНН, кнопки записи и закрытия. Реализация отмечает событие и пишет движения, контрагент просто хранится.

К упражнению «Своё: придумайте документ». Ответ. Например, «Списание товаров»: что списали и в каком количестве; движение — расход со склада, остаток уменьшается. Или «Инвентаризация»: движений может не делать вовсе, только фиксировать расхождения.

К упражнению «Ловушка: „записал — значит, учтено"». Ответ. Запись сохраняет документ, но движений не делает: остатки меняет проведение. Пока документ не проведён, для учёта события не было.

К упражнению «Обратный ход». Ответ. Либо проведение у документа запрещено — он только фиксирует событие, не затрагивая регистры; либо у пользователя нет права проводить; либо кнопку убрали из формы, а команда осталась.

К упражнению «На чтение». Ответ. Табличная часть у справочника — дело обычное. А вот «Провести» у справочника быть не может: скорее всего, это форма документа, а не справочника, либо кнопка связана со своей командой формы, которая лишь называется похоже. Проверяют по типу основного реквизита.

§ 9.5. Форма отчёта: вопрос сверху, ответ снизу

К вопросу 1. Ответ. Настройки — их заполняет пользователь; результат — его собирает платформа, когда нажали «Сформировать».

К вопросу 2. Ответ. Пока вопрос не задан, отвечать нечего: результат появляется только после формирования.

К вопросу 3. Ответ. Записывать нечего: у отчёта нет записи. Результат — данные формы, он исчезает вместе с окном.

К вопросу 4. Ответ. Элемент формы — поле вида «поле табличного документа», и путь его ведёт к реквизиту формы.

К вопросу 5. Ответ. Основная форма, форма настроек и форма варианта. Форма настроек нужна, когда настроек много: главные остаются в форме, остальные уходят в отдельное окно.

К вопросу 6. Указание. Где у отчёта лежит описание того, что он считает?

Полное решение. В схеме компоновки данных — она лежит у отчёта макетом. По ней платформа и показывает настройки: поля, отборы, группировки. Если настроек в форме нет, а на экране они есть, искать надо в схеме.

К вопросу 7. Ответ. Что людям нужны разные вопросы к одним данным. Иногда это знак, что настройки непонятны и каждый сохранил себе рабочий набор.

К упражнению «По образцу». Ответ. Разные периоды или отборы дают разные наборы строк: тот же отчёт отвечает на другой вопрос. Данные в базе при этом не менялись.

К упражнению «Своё: задайте вопрос». Ответ. Например: сколько товара осталось на складе (настройки — склад, дата); на какую сумму приняли товар за месяц (период, контрагент); какие товары не продавались (период, товар).

К упражнению «Ловушка: „сформировал — значит, сохранил"». Ответ. Результат нигде не хранится: он собрался в форме и исчез с окном. Чтобы остался, его сохраняют файлом или печатают; а чтобы повторить — сохраняют вариант отчёта с теми же настройками.

К упражнению «Обратный ход». Ответ. Открывать отчёт будет автоформа, а настройки — своя форма настроек. Так делают, когда настроек много и важна именно их раскладка, а результат устраивает стандартный.

К упражнению «На чтение». Ответ. Это уже не чистая форма отчёта: кроме вопроса и ответа в ней есть список документов — значит, из неё что-то делают, а не только смотрят. Спросить стоит, какую задачу человек решает в этом окне целиком: возможно, перед вами рабочее место.

§ 9.6. Формы без предмета: когда главное — задача

К вопросу 1. Ответ. Там, где у формы нет предмета разговора: человек открывает окно не ради записи, а ради дела — подобрать, разослать, свести расхождения.

К вопросу 2. Ответ. От обработки — объекта без хранения — и от общей формы, которая не принадлежит ни одному объекту.

К вопросу 3. Ответ. Обработка — объект, у которого есть реквизиты, формы, макеты и модуль, но нет записей в базе. Ролей для форм у неё меньше: основная и дополнительная; формы списка нет, потому что списка обработок у пользователя не бывает.

К вопросу 4. Ответ. Форма, не привязанная к объекту метаданных: по документации она доступна из любого модуля конфигурации, а открывают её командой или кодом.

К вопросу 5. Ответ. В карточке они были дополнением к записи, здесь несут всё: параметры задачи и промежуточные данные. В базе эти данные не лежат — они живут, пока открыто окно.

К вопросу 6. Указание. Идите по пути самой задачи.

Полное решение. Вход — реквизиты-параметры и поля для них. Середина — таблицы промежуточных данных и команды, которые их наполняют. Выход — куда уходит результат: в документ, в регистр, в файл, на печать. След — остаётся ли что-нибудь после закрытия окна.

К вопросу 7. Ответ. Что в нём смешали несколько дел. Та же проверка, что для группы элементов: не укладывается в одну фразу — значит, назначение не продумывали.

К упражнению «По образцу». Ответ. Вход — склад и, возможно, период. Середина — таблица подобранных строк и команды подбора. Выход — перенос строк в документ. След — после закрытия без переноса не остаётся ничего.

К упражнению «Своё: придумайте задачу». Ответ. Например, «Переоценка»: на входе склад и процент, в середине таблица товаров с новыми ценами, на выходе приказ об изменении цен. Или «Сверка остатков»: на входе склад, в середине расхождения, на выходе документ списания.

К упражнению «Ловушка: „набрал товары — значит, они в документе"». Ответ. Набранное лежало в данных формы и исчезло с окном. Строки попадают в документ только командой переноса; если такой команды нет, подбор — заготовка.

К упражнению «Обратный ход». Ответ. Форма о задаче — общая форма или форма обработки. Начинать разбор надо с реквизитов формы: разделить их на параметры и промежуточные данные, а потом прочитать команды.

К упражнению «На чтение». Ответ. По команде и по следу. У отчёта кнопка собирает результат для чтения и ничего не меняет; «Выполнить» в форме о задаче что-то делает с данными базы. Проверяют по тому, остаётся ли след после закрытия окна.

§ 9.7. Чужая форма: полная карта

К вопросу 1. Ответ. Пять рабочих слоёв — роль, данные, показ, композиция, действия — и шестой проверочный: след. Над картой стоит шапка: задача формы в одной фразе.

К вопросу 2. Ответ. Потому что каждый слой снимает вопросы следующего. Начав с кнопок, к каждой придётся искать, к чему она относится, а ответы лежат в непрочитанных слоях.

К вопросу 3. Ответ. Он проверяет остальные: что останется в базе, когда окно закроют. Не выходит ответить — какой-то слой прочитан не до конца.

К вопросу 4. Ответ. Видно, чего на экране нет: реквизит есть, а поля для него не вывели.

К вопросу 5. Ответ. В данных — реквизит без поля; в действиях — команда без кнопки или с пустой процедурой.

К вопросу 6. Ответ. Что делает код, кому форма доступна и почему автор сделал именно так. Первое — язык 1С, второе — права и функциональные опции, третье — разговор с автором.

К вопросу 7. Указание. Два объяснения, и оба стоит проверить.

Полное решение. Либо это форма для просмотра — отчёт или рабочее окно, которое ничего не меняет. Либо заготовка: действия задуманы, а шага, переносящего результат в базу, нет. Проверяют по командам: есть ли среди них та, что пишет в базу, и не пуста ли её процедура.

К упражнению «По образцу». Ответ. Роль — форма объекта документа. Данные — основной реквизит «Объект» с табличной частью. Показ — поля шапки и таблица товаров. Композиция — две закладки. Действия — стандартные команды записи и проведения. След — записанный и проведённый документ, движения в регистрах. Шапка карты: «оформить приём товара от поставщика».

К упражнению «Своё: карта своей формы». Ответ. Находки будут: в карточке товара есть группа «Учёт» с декорацией-пояснением, а команда «Обновить цены» — со пустой процедурой. Последнее и есть честная находка слоя действий.

К упражнению «Ловушка: „начну с кнопок"». Ответ. Посоветовать начать с роли и данных: тогда к третьей кнопке будет ясно, к какой записи она относится и что сделает. Разбор от кнопок требует держать в голове то, чего ещё не прочитал.

К упражнению «Обратный ход». Ответ. Правдоподобно так: группа с тремя полями параметров сверху, под ней таблица, в командной панели формы одна кнопка «Выполнить». Основного реквизита-объекта нет.

К упражнению «На чтение». Ответ. Либо форма ничего не записывает и действия только показывают — тогда «след» пуст по праву. Либо команды пишут в базу, а вы этого не увидели: проверьте, куда уходят их результаты, и загляните в процедуры.