Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1с8_Задачник.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
25.2 Mб
Скачать

19. Изящное решение задачи «Овощи».

Задача. ОВОЩИ.

1.Создать два справочника «овощи» и области.

2.Создать трехуровневый справочник «План» (область-колхоз-овощ). На уровне овоща задать план производства. На уровне области и овоща обеспечить копирование из соответствующих справочников.

3. создать отчет «Итоги». На форму отчета поместить следующие поля: -область, колхоз ,овощ и сумма планов. Задавая в разных разумных комбинациях входные данные в виде области , колхоза и овоща получать итоговые суммы.(например – задана область и овощ; или задан только овощ и т.д.)

Создадим очевидные справочники «Области», «Овощи» «План» (трехуровневый с копированием области и овоща в поле наименование 0 и 2 уровня). Наименование Колхоза будем набирать руками так как бессмысленно иметь независимый справочник «Колхозы».

Создадим отчет «Итоги». Новшеством при создании отчета является использование табличной части , с помощью которой будем задавать несколько вариантов запроса (одна строка – один запрос) и которые будут отрабатываться одновременно. Для этого в пункте «данные» зададим табличную часть «Овощи».

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

Теперь рассмотрим изящное решение этой задачи. (Позднее посмотрим дубовое решение, для сравнения).

Решение основано на собственной функции пользователя «СравнитьМаску(маска,стр)». Функция возвращает переменную «пер» со значением «Истина» в двух случаях . Или маска=стр , если стр не пустая, либо маска пустая.

В качестве маски берутся значения из перебираемых строк табличной части отчета. В качестве «стр» берутся значения из перебираемых элементов справочника «План». Подумайте! Почему это работает.

Это Справочники.

Ниже пять вариантов запросов и результаты.

Это был изящный вариант. Теперь –обещанный дубовый (хотя он тоже поучительный).

Обычная форма отчета.

В принципе , возможны 8 комбинаций признаков , а значит восемь программ , на каждую из которых нужно выйти , анализируя содержимое призначных полей на «пусто» , с помощью метода «Пустая()»( Например, «Область.Пустая()») или ,если не пусто на соответствие значениям из справочика. Этот путь понятный (8 условий «если» и 8 программ с переходом на них.

Идея , надеюсь понятна , а программирование всех 8 вариантов очевидно. Гоним цикл по перебору элементов справочника «План» , ловим уровень «Овощей» (уровень2) и сравниваем с овощами и родителями. Сравни «Коня» и «Трепетную лань».

20.Еще раз про «Себестоимость»

Усилим ранее сделанную задачу себестоимость в следующих направлениях: а).учтем затраты труда в составе прямых расходов. Для этого создадим справочник.ТОП (технологических операций), подчиненный справочнику детали , который для каждой детали содержит операцию и ее стоимость. Логика учета труда идентична учету расхода материалов.

б) учтем косвенные расходы . Для этого создадим справочник.ВидыРасходов с конкретным перечнем (вода,газ,электроэнергия). Создадим документ.ВР с конкретными данными.

в)Дополним реквизиты табличной части документа Себестоимость следующими очевидными колонками СТтруд,СтПрямЗатрат,доля,стэлектр,стгаз,ствода. Особо по реквизиту «доля» (горемычная). Косвенные расходы распределяются либо пропорционально расходу материалов , либо пропорционально затратам труда основных рабочих. Рассмотрим распределение по материалам. Нужно посчитать сумму расходов материалов по всем деталям , а затем вычислить долю по каждой детали. Само распределение косвенных расходов идет в соответствии с долями . Для этого сделаем двойной цикл , сначала перебираем строки документа Виды расходов, а в рамках каждого расхода цикл по перебору строк документа себестоимость.

г)Обеспечим возможность проведения документа Себестоимость по всем видам расходов. Для этого создадим свой ПланХарактеристик ,свой ПланСчетов , набор проводок и модуль проведения.

д). Создадим отчет , позволяющий пользователю проводить совместный анализ большого количества документов Себестоимость в различных разрезах. Для этого используем технику работы с флагами.

Модуль по кнопке «Рассчитать» в общем должен быть понятен. Немножко набычьтесь или накоровьтесь в зависимости от пола.

Всего одно новщество , связанное с организацией диалога меду программой и пользователем.

Системный Оператор «РежимДиалогаВопрос.ДаНет» организует диалоговое окно с кнопками «ДаНет» и вопросом , который будет задан следующим оператором «Вопрос».

В зависимости от ответа в переменную «КодВозвратаДиалога» попадет то что выбрали и далее анализируем и что-то делаем.

Режим = РежимДиалогаВопрос.ДаНет; //Вопрос - выводить ли макет СводТЗ?

Ответ = Вопрос ("Вывести сводную потребность в материалах на план?", Режим, 0);

если Ответ =КодВозвратаДиалога.Да тогда

Окно имеет вид.

Информация к примеру и результаты.

Отчет (работа с флагами).

Рассматривая вид отчета можно понять , что он может делать.

  1. Выбирать либо документы Себестоимость в интервале времени «Период С.. По» ,если флаг «Все» выключен, либо все вообще документы «Себестоимость» , если флаг «Все» включен.

  2. кнопка «РегистрБухг» выводит проводки для выбранных документов.

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

Результаты работы выводятся в окнах диалога. Выполнение любого режима по кнопке «Сформировать».

Рассмотрим как в конфигураторе создаются флаги , группы флагов и технику работы с ними.

Создадим тренажный отчет.хсг и поместим на него два флага «Сергей» и «Георгий» и объединим их рамкой с именем «Хворенков». Сразу скажем , рамка нужна только для эргономики(для удобства). В программах это имя не используется.

Обратим внимание на то что , флаги имеют тип «булево» со значениями «ложь» или «истина».

Возвращаемся к задаче.

С ней (с диалогом ) связано ужасное количество процедур , часть из которых функциональная(что-то считает) , а часть , вспомогательная и управляет флагами а значит режимами работы функциональных частей.

Процедура КнопкаСформироватьНажатие посильна для понимания без комментариев. Новое в ней –Это реакция на флаги и переход на разные варианты.

Процедура ВыбПериодНажатие

Нижерасположенный чудовищный текст порождает сама система , когда устанавливаем на диалог «выбор периода».

Процедура «приоткрытии» все флаги обнуляет.

Процедура РегистрБухНажатие перебирает в цикле регистр РегБух и выводит на печать проводки.

Следующая процедура выводит список подлежащих анализу документов «Себестоимость» ,либо всех если флаг «Все» включен , либо за период в противном случае.

Процедура ФлажокВключить активизирует все остальные флажки (дает возможность включать и выключать , связанные с ним флаги.

Процедура ТЗ1Выбор для выбранного мышью в ТЗ1(в перечне документов) документа обеспечивает его расшифровку.

Все остальные процедуры каждая , связана с конкретным флагом и отключает другие , дабы не ставить программу в двусмысленное (или даже в многосмысленное положение.

Далее демонстрация реализации.(Он даже к финским скалам бурым обращался с каламбуром).

Проводки должны быть созданы в конфигураторе конструктором движений. Проводки соответствуют всем расходам и прямым и косвенным и собирают на счете 20 все расходы по всем деталям вместе и порознь.

Разумеется должен быть предварительно создан свой «ПланХарактеристик» (в задаче назван «ВидСубконто»).

Должен быть создан план счетов.