Продвинутый курс. Финальное задание

Финальное задание участников 4-го потока продвинутого курса по программированию.

Текст задания находится по ссылке.

Задание нужно выполнить до 16 октября включительно.

комментария 44 на “Продвинутый курс. Финальное задание”

  1. Кудрявцев Олег 08.12.2011 в 00:30

    А решение финального домашнего задания будет?

  2. Вопрос: если не нашла себя в списках финалистов, то получается финалистом не стала?

    • Это ошибка, Вы финалист :)
      По регламенту нужно было отчитаться на сайте, а выгрузку ИБ выслать по почте.
      Вы весь отчет выслали по почте.
      Поэтому еще раз повторю просьбу – “текстовую часть ответа опубликуйте на сайте”.

      • Извините, врожденная наверное уже невнимательность.
        Шаг1:
        Намного уверенней программирую под тонкого, пришло понимание что и когда, и что более приятно уже не задумываешься над простыми вещами как сделать. По ходу дела применяла знания: программировала блок Путевых листов под УПП – управляемые блокировки, для отчетов на СКД делала свои формы и под толстого и под тонкого на будущее.
        Конечно наиболее незнакомыми были механизмы под тонкого клиента. Не знала про диаграмму Ганта, например. Мне полезно оказались расчеты. Я не зарплатчик и в основном с ними не сталкиваюсь, но понимать надо.Очень важны детали в уроках, так иногда просто не подозреваешь что значит та или иная галочка объекта, а именно про эти детали почему то пишется в книгах вскользь или только упоминается.

        Шаг 2:
        Высылаю финальное задание.

        Шаг 3:
        Помимо всего что перечислено, наверное надо приложить еще и вспомогательные обработки. У каждого программиста они есть в том или ином варианте, но есть стандартные, без которых иногда и трудновато приходится: Консоль запросов, Консоль заданий, Замена значений… 
        И можно дополнить уж: неплохо было бы форум организовать уже с закончившими продвинутый курс. Все мы работаем, сталкиваемся с проблемами, могли бы помогать друг другу, обсуждать что-то новое.

        • Теперь финальное задание принято в полном объеме.

          Поздравляю с успешным финалом курса!!

  3. 1) Новым было практически все, я раньше работатала консультантом и не программировала, хотя и знаю типовые конфигурации. Почти всегда работала с файловыми базами. Но тут меня отправили на маштабный проект, где только бухгалтеров более 70 человек. На прошлой неделе полетел сервер с SQL, сисадмин 1с не знает,  и благодаря урокам, я сумела настроить  SQL , сделала план обслуживания и развернуть все клиент-серверные базы на новом сервере.
    2) Базу отправила, хотя не все ДЗ доделала. Доделаю.
    3) Чаще всего использую копирование и Ctrl+Q и Ctrl+ пробел.

    • Мария, финальное задание принято.

      Для финала курса нужно выполнить оставшиеся домашние задания и отчитаться по ним.

  4. Обратная связь

    Из продвинутого курса узнал много нового. Например, RLS, работа с управляемыми формами, методы оптимизации производительности при работе с БД, работа с технологическим журналом, агрегаты, управляемые блокировки, РАУЗ и многое другое.
    Наверное, заблуждений как таковых не было, скорее были белые пятна и черные дыры :)
    На практике я активно работаю с платформой 8.1. Знания, полученные в продвинутом курсе, позволили оптимизировать написанный ранее код (в частности запросы), более широко использовать пакетные запросы, более полно использовать возможности работы в конфигураторе

    2. Решение практической задачи выслал на e-mail.
    3. Пожалуй, можно еще упомянуть глобальный поиск и замену, фильтр объектов конфигурации по подсистемам, фильтр захваченных в хранилище объектов конфигурации по пользователю.

    Огромное спасибо за курс! 

    • Финальное задание – зачет.

      Задания курса успешно выполнены.

      Поздравляю с финалом продвинутого курса по программированию!!

  5. Юрий Торговцев 16.10.2011 в 08:28

    1 Вопросы по курсу
    Много нового узнал из глав по оптимизации:
    – производительности прикладных решений;
    – производительности базы данных;
    – управляемых форм.
    Интересна информация по оптимизации работы базы данных с помощью агрегатов.

    Избавился от некоторых заблуждений отностительно использования языка запросов (практические задачи главы 7). Заинтересовали методы декларативного программирования.
    Настройка управляемых блокировок оказалась достаточно тривиальной и простой задачей особенно в тандеме с запросом.

    Я уже привык к работе с запросами в СКД. Но RLS, динамические списки явились для меня довольно неожиданными о показали некоторые новые возможности.

    2. Конфигурация прикреплена к отчету.

    3. 3. Помощь новичкам
    Для себя обнаружил и стараюсь избегать объявлять переменные начинающиеся с: Вариант, Вид, Использование, Отображение, Положение, Получить, Расположение, Режим, Тип, Установить
    в связи с тем что список уже присутствующих в конфигураторе методов, свойств, полей, типов и параметров форм начинающихся с этих слов превышает один экран подсказки.
    При написании кода вместо того чтобы быстро воспользоваться автоподстановкой, отвлекаешься и переходишь в режим поиска необходимой переменной.

    P.S. Спасибо за курс. За эти семь месяцев я приобрел знания и практические навыки которые не приобрел бы и за семь лет.

    • Финальное задание – зачет.

      Задания курса успешно выполнены.

      Юрий, поздравляю с финалом курса!!

  6. 1. Обратная связь по пройденному курсу.
    1.1. Очень много всего выяснил, практически все главы в материалах курса открывали что-то новое.

    1.2. Заблуждений было очень много, я всего не упомню. Как пример, думал, что в СКД использовать макеты нельзя… :)

    1.3. Я уже писал, что пройдя Базовый курс обучения сменил работу, сейчас, пройдя Продвинутый курс, буду использовать изученные мной “фишки” на практике.

    1.4. Типовые решения 1С внедрял, но не разбирал подробно алгоритмы расчета себестоимости товаров и принципы закрытия счетов. Спасибо за ценный материал!

    2. Базу выслал на почту

    3.  Список очень полный сложно что-либо добавить… 
    Если только (я использую): Cntrl+(Shift)+/  – установка/снятие комментариев  

    П.с. Я вообще, спасибо большое за столь ценный материал! Я был на курсах ЦСО по программированию, это не то… Буду всем советовать spec8.ru! Сейчас важна практика!

    • Финальное задание принято!

      Задания курса тоже осилены.

      Поздравляю – Вы финалист продвинутого курса!!

      • О КАК! =)) Оперативно! Да-Да, задания именно “осилены”…) Спасибо Евгений! ХА! Мы мужики! :))
        Всех поздравляю с окончанием! Кто дошел до конца молодцы! А Те кто дошел ещё и с базового курса ещё круче! :D  
        Как же я буду скучать по Вашему голосу Евгений… 7 месяцев слушал… Столько всего было.. Стал папкой, сменил работу, командировки, б/л были и все равно учил. Жена в конце даже ревновать к курсам стала….
        Вы хоть выкладывайте чего-нибудь для прошедших курс слушателей, чтобы они настальгировали! :)) 

        • Спасибо ))
          Да, что-нибудь будем выкладывать периодически.

  7. Хотел бы узнать дошла ли база?

  8. Отправила базу почтой. Хотелось бы знать что все в порядке.
    Тут по ходу дела возник вопрос: сначала я базу некорректно скачала – она открылась, я ничего не подозревая начала в ней работать, но когда дело дошло до использования итогов возникла ошибка. Дословно уже не скажу, но ругалось на отсутствие таблицы настроек итогов AccumRegOp. Я просмотрела структуру – ее просто не было. По инету не нашла способа лечения. Что же делать в этих случаях? можно как то восстановить структуру? Или это уже 100 % крах базы.

    • База не дошла, продублируйте на почту.

      Исправить ошибку можно так – создать РБД, создать второй узел, полный обмен. Выполнить обмен всеми данными.
      Далее вторую базу отключить от РБД, в итоге получилась рабочая база.

      • Отправила

      • Майор 15.10.2011 в 22:17

        Тоже на эти грабли наступил…. Ошибка при скачивании может была…
        Закачал по новой, потом из наработанной базы выгрузил конфигурацию в файл и в новой базе загрузил….

        • Думаю дело было в релизах.
          Изначально выгрузка была под 14 релиз, чуть позже я указал режим совместимости и загрузил новую выгрузку.

      • Андрей Кусанов 16.10.2011 в 11:53

        ))

  9. Отчет по финальному заданию.
    1)      До изучения курса  работать  с  платформой  8.2   не приходилось.  Предыдущий переход  с 7.7 на 8.1 прошел практически безболезненно,  предполагал, что и  на управляемые формы будет перейти также просто. Но новый подход  с использованием контекста клиента и сервера практически полностью ломает подход к программированию, к оптимизации кода.
    2)      Задание выслал по почте
    3)      Было бы полезным:
    Список всех горячих клавиш
    Наиболее часто употребляемый код  добавить в шаблоны
    Советы:

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

    • Финальное задание принято, обратную связь отправил почтой.

      Задания курса принимаю.

      Поздравляю, Вы в числе финалистов продвинутого курса!!

  10. Прошу прощения, видимо, отправил свое сообщение не в ту ветку, поэтому дублирую здесь.
    Обратная связь.
    1)RLS, динамические списки, новые возможности платформы 8.2.14, бизнес – процессы.
    Участвовал в нескольких проектах, наиболее интересный (с моей точки зрения)
    заключался в следующем.
    Нужно было создать электронную карту города и обеспечить формирование
    аналитических отчетов.
    Геопространственные данные хранятся в СУБД Postgresql + Postgis,
    клиентская часть – Quantum GIS с набором плагинов на языке Python.
    Для станистической обработки геопространственных данных используется
    язык R в связке с Postgis.
    Необходимые для отчетов пространственные данные формируются в СУБД через
    представления (view), которые являются внешними источниками данных
    для платформы 1С:Предприятие 8.2.14.
    Далее с помощью мощного механизма СКД формируются требуемые отчеты.
    Типичные отчеты:
    – Получить распределение остановок общественного транспорта по улицам;
    -Вычислить места наиболее частых автомобильных аварий.
    -Определить достаточность медицинских учреждения с учетом пространственного
    распределения населения и т.п.
    2) Практическое задание выслано на почту. Для минимизации серверных вызовов
    при подборе основные данные формируются в динамическом списке,
    цены вычисляются в форме документа, поскольку при подборе тип цены не меняется.
    3)Во вложении файл с описанием горячих клавиш платформы, надеюсь, окажется полезным.
    Спасибо за учебу!!! 

    • Финальное задание – отлично.

      Задания курса успешно выполнены.

      Поздравляю! Вы пополнили число финалистов продвинутого курса!

  11. Кудрявцев Олег 12.10.2011 в 23:28

    Выгрузку базы отправил на почту.
    Опыт работы с 1С у меня также не очень большой.
    Узнал много – функциональные опции, СКД (очень подробно всё рассказано), управляемые блокировки (очень важно), запросы (про пакетные запросы фактически ничего не знал).
    Расчетные задачи много нового (хотя на специалисте по платформе 8.1 решал такие задачи, но осталось непонимание что и как).
    По 3 пункту – кажется всё что можно уже написано.

    Спасибо

    • Почему-то база не пришла, попробуйте продублировать.

      • Кудрявцев Олег 13.10.2011 в 08:38

        Отправил.

        • Финальное задание принято.

          Задания курса выполнены.

          Олег, поздравляю с успешным и долгожданным финалом!!

  12. Майор 12.10.2011 в 21:19

    Всем доброго времени суток.
     
    Представляю отчёт по финальному заданию.
     
    Полученную конфигурацию отправил.
     
    Обратная связь:
    1) Из безусловно нового – Бизнес-процессы + Задачи, использование временных таблиц в запросах, блокировка данных, СКД, агрегаты, групповая разработка конфигурации и логирование/технологический журнал.
    2) Избавился от одного сильного заблуждения – что программировать в 1с очень сложно.
    3) Постоянно консультирую своих бухгалтеров по работе в “БухГосУч”, многих вопросов – которые теперь выглядят элементарными они не знают.
    4) Не работаю пока, но это временно ))))
     
    Из всего финального задания третья часть – самая-самая трудная! Если честно признаться – я и сам не все приведённые в списке пункты досконально знаю/применяю на практике. Поэтому даже не представляю – чем бы я мог дополнить этот список.

    • Добрый день, Денис!

      Финальное задание принимаю, обратную связь выслал почтой.

      Решения задания в ходе курса – 5 баллов!

      Поздравляю с успешным финалом продвинутого курса! :)

      • Майор 13.10.2011 в 10:34

        Спасибо )))

      • Майор 17.10.2011 в 20:54

        Евгений, заключительный вопрос: финалистам не планируются рекомендательные письма, как после базового курса?

        • Нет, в будущем планируем повесить финалистов на доску почета на сайте.

  13. Отчет по финальному заданию.

    Вопросы 1,3

    Достаточно продуктивный курс.
    Опыт работы с платформой 8.Х совсем небольшой. Первый серьезный опыт – Базовый курс (поэтому что-либо добавить в ответ на 3 вопрос мне сейчас тяжело – сам узнал о некоторых приемах из перечисленного списка). Долгие годы работал с платформой 7.7 (в том числе с прямыми запросами SQL).
     Из нового:
    –         работа с функциональными опциями (экономит силы, чтобы сосредоточиться на основном);
    –         RLS (гибкий подход к установке прав – но можно «переборщить», что негативно скажется на производительности);
    –         «секреты» работы с управляемыми формами (набираюсь опыта – главное оптимально “перемещать” данные от клиента к серверу и обратно);
    –         использование временных таблиц и пакетных запросов (несмотря на  известный материал, очень понравилась глава Запросы);
    –         СКД (удивлен – даже без комментариев);
    –         управляемые блокировки (наконец-то доверяешь своей логике….);
    –         анализ и прогнозирование данных («она даже такое умеет!»).
    Среди интересных материалов также хочу отметить главы по «Оптимизации производительности …»,  Кейсы (то, что так напрашивалось в Базовом курсе…), вопросы внутренней структуры прикладных объектов (облегчающее понимание работы виртуальных таблиц).

    Не могу сказать, что полностью избавился от заблуждения «1С – не для больших организаций» (опыт покажет), но изучая новые возможности платформы очень порадовался за нее: очень широкий функционал, в т.ч. для клиент-серверного варианта.
     
    Среди неожиданного я бы выделил управляемые блокировки и RLS.
     Немного по формату ведения… Мне показалось, что порции материала «распределились» неравномерно. Концовка была намного легче, чем середина (может быть так и задумано).
    Но 3 часа в день – это действительно тот ежедневный МИНИМУМ для новичков в платформе 8.Х, чтобы осознанно воспринимать материал. Просмотр с конспектированием увеличивает время в 2 раза. Я исписал весь  раздаточный материал. Учусь с апреля (подряд базовый и продвинутые курсы) – напрочь забыл, что такое отдых …. :) . Считаю не напрасно.
     Спасибо! Все было на достойном уровне.
    Вопрос 2

    Выслал задание на почту.

    • По финальному заданию – отлично!
      Спасибо за обратную связь.

      Теперь можно немного выдохнуть и расслабиться ))

      Задания курса выполнены.

      Поздравляю с успешным финалом курса!!

  14. Андрей Кусанов 11.10.2011 в 00:28

    !Вот и настал момент отчитаться по финальному ДЗ!

    1)Вопросы по курсу.
    Что узнал нового? Не буду перечислять главы и уроки курса. Нового море. Главным считаю то, что останется после полугода-года 
    по окончании курса. По аналогии с иностранным языком – я перешел на следующий уровень владения средствами платформы 1С 8.
    В ближайших планах – сертификация по платформе. До курса лучше владел оперативным учетом. Бухгалтерия – получил очень много
    нового. Расчет – практически с нуля.
    От каких избавился заблуждений? Что 8.2 мало отличается от предыдущих версий. Что платформа 1С известна мне более чем на 50%.
    Что я пишу достаточно красиво. Что я оптимально использую возможности платформы. Что нет таких курсов, где бы и зайца научили
    разрабатывать на 1С).
    Новые навыки применяю на практике. Пишется заметно легче. Повысили на 10% зарплату, косвенно связываю с курсом.

    2)Практическое задание.
    а)Создал периодический РС “ОтветственныеЗаЦены” с измерением “Пользователь” и булевским ресурсом “ОтветственныйЗаЦены”.

    Добавил функциональную опцию “МенятьТипЦен” с хранением в “РегистрСведений.ОтветственныеЗаЦены.Ресурс.ОтветственныйЗаЦены”
    и составом: “ТипЦены” – реквизит шапки документа; “ТипыЦен” – справочник. При этом в палитре документа “Дополнительно”, убрал
    из данной ФО сам документ, оставив только реквизит.
    Добавил параметр функциональных опций “Пользователь”, использование “РегистрСведений.ОтветственныеЗаЦены.Измерение.Пользователь”. 

    В модуле управляемого приложения вызываю функцию, возвращающую структуру параметров ФО:
    <code>
    Процедура ПриНачалеРаботыСистемы()
    ПараметрыФО = ОбщегоНазначенияСервер.СинхронизацияПользователей();
    УстановитьПараметрыФункциональныхОпцийИнтерфейса(ПараметрыФО);
    КонецПроцедуры
    <code>

    В форме документов с типом цен:
    <code>
    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
    ОбновитьФорму();
    КонецПроцедуры

    &НаКлиенте
    Процедура ДатаПриИзменении(Элемент)
    ОбновитьФорму();
    КонецПроцедуры

    &НаСервере
    Процедура ОбновитьФорму()
    ПараметрыФО = ПолучитьПараметрыФункциональныхОпцийФормы();
    ПараметрыФО.Период = НачалоДня(Объект.Дата);
    УстановитьПараметрыФункциональныхОпцийФормы(ПараметрыФО);
    КонецПроцедуры
    </code>

    Для обновления интерфейса в части скрытия/отображения справочника “ТипыЦен” в форме записи регистра сведений “ОтветственныеЗаЦены”:
    <code>
    &НаКлиенте
    Процедура ПослеЗаписи(ПараметрыЗаписи)
    ОбновитьИнтерфейс();
    КонецПроцедуры
    </code>

    Для ограничения прав доступа к изменению регистра “ОтветственныеЗаЦены” настроил роль “Пользователь”.
    В документе реализации, при создании формы на сервере, вызывается ф-я общего модуля и возврацает тип цен:
    <code>
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Объект.ТипЦены.Пустая() Тогда
    РеквизитТипЦены = ОбщегоНазначенияСервер.ТипЦен(Объект.Дата, ПараметрыСеанса.ТекПользователь);
    Если НЕ РеквизитТипЦены.Пустая() Тогда
    Объект.ТипЦены = РеквизитТипЦены;
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
    </code>

    Сама функция:
    <code>
    Функция ТипЦен(Дата, Пользователь) Экспорт
    ТипЦен = Справочники.ТипыЦен.ПустаяСсылка();
    Запрос = Новый Запрос;
    Запрос.Текст =
    “ВЫБРАТЬ
    | Пользователи.ТипЦен,
    | Пользователи.Представление КАК ПользовательПредставление,
    | ОтветственныеЗаЦеныСрезПоследних.ОтветственныйЗаЦены
    |ИЗ
    | Справочник.Пользователи КАК Пользователи
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОтветственныеЗаЦены.СрезПоследних(&Период, Пользователь = &Пользователь) КАК ОтветственныеЗаЦеныСрезПоследних
    | ПО (ОтветственныеЗаЦеныСрезПоследних.Пользователь = Пользователи.Ссылка)
    |ГДЕ
    | Пользователи.Ссылка = &Пользователь”;

    Запрос.УстановитьПараметр(“Период”, Дата);
    Запрос.УстановитьПараметр(“Пользователь”, ПараметрыСеанса.ТекПользователь);

    Результат = Запрос.Выполнить();

    Если НЕ Результат.Пустой() Тогда
    Выборка = Результат.Выбрать();
    Выборка.Следующий();
    ТипЦен = Выборка.ТипЦен;
    Если ТипЦен.Пустая() И НЕ Выборка.ОтветственныйЗаЦены Тогда
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = “У пользователя “+Выборка.ПользовательПредставление+” не назначен тип цен!”;
    Сообщение.Сообщить();
    КонецЕсли;
    КонецЕсли;
    Возврат ТипЦен;
    КонецФункции
    </code>

    б)Добавил реквизит “Цена” в таб. часть документа. Реквизит “ТипЦены” – обязательный.
    В обработчике команды “Подбор” вызываем независимую форму справочника “Номенклатура”? передавая параметры.
    В свойствах форм подбора устанавливаем в “Истина” свойство “Блокировать окно владельца”:
    <code>
    &НаКлиенте
    Процедура Подбор(Команда)
    ТипЦены = Объект.ТипЦены;
    Если ТипЦены.Пустая() Тогда
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = “Не указан тип цены!”;
    Сообщение.Поле = “Объект.ТипЦены”;
    Сообщение.УстановитьДанные(Объект);
    Сообщение.Сообщить();
    Возврат;
    КонецЕсли;
    ПараметрыПодбора = Новый Структура;
    ПараметрыПодбора.Вставить(“ДатаОст”, Объект.Дата);
    ПараметрыПодбора.Вставить(“ТипЦены”, ТипЦены);
    ОткрытьФорму(“Справочник.Номенклатура.Форма.ФормаПодбора”, ПараметрыПодбора, ЭтаФорма);
    КонецПроцедуры
    </code>

    В форме подбора создал основной реквизит “ДанныеДляПодбора” – “ДинамическийСписок”. Источник – произвольный запрос, основная таблица “Справочник.Номенклатура”.
    Динаимческое считывание данных. Так добился отображения иерархии и возможности изменения. Текст запроса – только с остатками и группы:
    “ВЫБРАТЬ
    ОстаткиНоменклатурыОстатки.КоличествоОстаток,
    СпрНоменклатура.Ссылка КАК Номенклатура
    ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(&ДатаОст, ) КАК ОстаткиНоменклатурыОстатки
    ПО (ОстаткиНоменклатурыОстатки.Номенклатура = СпрНоменклатура.Ссылка)
    ГДЕ
    (ОстаткиНоменклатурыОстатки.КоличествоОстаток > 0
    ИЛИ СпрНоменклатура.ЭтоГруппа)”.

    При двойном щелчке по номенклатуре открывается другая независимая форма номенклатуры “ФормаОстатков”
    с остатками по выбранной номенклатуре до серий:
    <code>
    &НаКлиенте
    Процедура ДанныеДляПодбораВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    Если ВыбраннаяСтрока = Неопределено Тогда
    Возврат;
    КонецЕсли;

    ПараметрыПодбора = Новый Структура;
    ПараметрыПодбора.Вставить(“ДатаОст”, ДатаОст);
    ПараметрыПодбора.Вставить(“ТипЦены”, ТипЦены);
    ПараметрыПодбора.Вставить(“Номенклатура”, ВыбраннаяСтрока);
    ПараметрыПодбора.Вставить(“ЗакрыватьПриВыборе”, Ложь);

    ОткрытьФорму(“Справочник.Номенклатура.Форма.ФормаОстатков”, ПараметрыПодбора, ЭтаФорма);

    КонецПроцедуры
    </code>

    По требованиям задачи нужно дать пользователю возможность редактировать таблицу с остатками, поэтому отказался от динамического списка
    в пользу таблицы значений на форме. Все колонки, кроме количества для списания, только просмотр:
    <code>
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    ДанныеОстатков.Загрузить(ЗаполнитьДанныеОстатков(Параметры));

    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ЗаполнитьДанныеОстатков(Параметры)

    Запрос = Новый Запрос;
    Запрос.Текст =
    “ВЫБРАТЬ
    | ОстаткиНоменклатурыОстатки.Серия,
    | ОстаткиНоменклатурыОстатки.КоличествоОстаток,
    | ЦеныНоменклатурыСрезПоследних.Цена,
    | ОстаткиНоменклатурыОстатки.Номенклатура
    |ИЗ
    | РегистрНакопления.ОстаткиНоменклатуры.Остатки(&ДатаОст, Номенклатура = &Номенклатура) КАК ОстаткиНоменклатурыОстатки
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаОст, ТипЦены = &ТипЦены) КАК ЦеныНоменклатурыСрезПоследних
    | ПО ОстаткиНоменклатурыОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура”;

    Запрос.УстановитьПараметр(“ДатаОст”, Параметры.ДатаОст);
    Запрос.УстановитьПараметр(“Номенклатура”, Параметры.Номенклатура);
    Запрос.УстановитьПараметр(“ТипЦены”, Параметры.ТипЦены);

    Возврат Запрос.Выполнить().Выгрузить();

    КонецФункции

    &НаКлиенте
    Процедура ОК(Команда)
    ОповеститьОВыборе(ДанныеОстатков);
    Закрыть();
    КонецПроцедуры
    </code>

    При нажатии “ОК”, данные переносятся в форму-владельца “ФормаПодбора”, где дозаполняется нижняя таблица значений “ТаблицаДанных”
    Если товар и серия уже есть – количество добавляется.
    <code>
    &НаКлиенте
    Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
    ДобавитьДанныеВТаблицу(ВыбранноеЗначение);
    КонецПроцедуры

    &НаКлиенте
    Процедура ТаблицаДанныхПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
    Отказ = Истина;
    КонецПроцедуры

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

    Строки = ТаблицаДанных.НайтиСтроки(СтруктураПоиска);
    Если Строки.Количество()>0 Тогда
    Строка = Строки[0];
    Иначе
    Строка = ТаблицаДанных.Добавить();
    Строка.Номенклатура = Значение.Номенклатура;
    Строка.Серия = Значение.Серия;
    Строка.Цена = Значение.Цена;
    КонецЕсли;
    Строка.Количество = Строка.Количество + Значение.КоличествоДляСписания;
    КонецЦикла;
    КонецПроцедуры
    </code>

    Пользователь может редактировать нижнюю таблицу формы подбора. При нажатии конпки перенести в документ оповещается форма-владелец –
    форма документа. Передается параметр:
    <code>
    &НаКлиенте
    Процедура ПеренестиВДокумент(Команда)
    ОповеститьОВыборе(ТаблицаДанных);
    КонецПроцедуры
    </code>

    В форме документа:
    <code>
    &НаКлиенте
    Процедура ОбработкаВыбора(Значение, ИсточникВыбора)
    Для каждого Элемент Из Значение Цикл
    СтруктураПоиска = Новый Структура(“Номенклатура, Серия, Цена”, Элемент.Номенклатура, Элемент.Серия, Элемент.Цена);
    Товары = Объект.Товары;
    Строки = Товары.НайтиСтроки(СтруктураПоиска);
    Если Строки.Количество()>0 Тогда
    Строка = Строки[0];
    Иначе
    Строка = Объект.Товары.Добавить();
    Строка.Номенклатура = Элемент.Номенклатура;
    Строка.Серия = Элемент.Серия;
    Строка.Цена = Элемент.Цена;
    КонецЕсли;

    Строка.Количество = Строка.Количество + Элемент.Количество;
    Строка.Сумма = Строка.Количество * Строка.Цена;
    КонецЦикла;
    КонецПроцедуры
    </code>

    По заданию понял, что реализовывать рюши с пересчетом и множественный выбор не нужно. Можно было бы на первом этапе передавать для запроса по
    остаткам и ценам массив номенклатуры, но для пользователей хватит одной позиции с кучей серий.

    3)Помощь новичкам.

    Из того, что я часто применяю и что считаб наиболее полезным:
    – отменить/вернуть Ctrl+Z, Ctrl+Y
    – вернуться к конфигурации БД
    – замена, глобальная замена
    – закладки
    – сравнение файлов
    – настройка окон
    – выгрузка/загрузка файлов конфигурации, работа с текстами модулей в файлах, в.ч. программная обработка.
    – отбор по подсистемам, сортировка дерева метаданных
    – настройки размеров управляемых форм и элементов
    – для создания копии базы, частично заполненной данными источника, можно использовать план обмена и РБД.
    Создав начальный образ подчиненного узла, его можно отцепить от главного обработкой.
    Иногда помогает восстановить битую базу. Планом обмена настраивается состав переносимых данных.
    – редактирование текстов интерфейса
    – разделение окон
    – сохранение конфигурации в файл, открытие двух и более окон конфигурации в пределах общего окна конфигуратора
    – копирование текста запроса в отладчике по точке останова, отладка консоли.
    – проверка имен переменных и реквизитов путем поиска в тексте модулей, с целью избежать переопределения уже
    существующих
    – с той же целью: Вы придумали имя переменной, чтобы убедиться, что слово не занято, стираем последнюю букву и
    нажимаем Ctrl+spase. Контекстная подсказка часто помогает – дописывает слово. Не всегда работает, сочетать с поиском и синтакс-контролем.
    – список точек останова
    – стек вызовов
    – конструктор строк на разных языках
    – добавить/удалить перенос строки или комментарий
    – текст – установить пароль на модуль.

    Не вижу смысла все перечислять. Из моего личного опыта выделю:
    – делать копии баз, конфигураций, обработок и отчетов (копипаст файла или элемента дерева метаданных).
    – проводить версионирование разработок
    – личные метки-комменты в шаблонах текста
    – писать комменты к коду
    – не копипастить почем зря, особенно касается закладки “соединения” в конструкторе запросов
    – читать текст запроса, вышедшего из конструктора
    – при отладке уделять больше времени на создание и ввод тестовых пользовательских данных. Часто ошибка не в коде.
    – разрабатывать, ставя себя на место заказчика
    – понимать “сверхзадачу” – цель доработки, цели автоматизируемого предприятия
    – изучать предметку, быть не только кодером
    – читать справку и постоянно учиться на spec8.ru)))

    • Добрый день, Андрей!

      Спасибо за обратную связь!
      Финальное задание принято, отлично!

      Задания курса выполнены.

      Поздравляю, Вы в числе финалистов!

  15. Шаг 1.
    Нового узнал много, особенно хочется выделить СКД,  Запросы, все главы по автоматизации механизмов расчета. Расчетные задачи – целиком новая для меня тема, не сказать, что разобрался окончательно, но база для дальнейшего развития заложена. Также исключительно интерсны главы по управляемым формам.
    Работаю с платформой, к сожалению,  в основной поддерживаемой конфигурации только обычный интерфейс, так что управляемые формы на практике пока не применял. Из изученного материала использовал: запросы (срез последних на каждую дату и многое другое), СКД (расшифровка), построитель отчета (запроса). Кстати,  в построителе теперь можно использовать временные таблицы, в материалах курса указано, что нет.
    Шаг 2.
    Выгрузку ИБ с решением отправил на mg.spec8ru@gmail.com.
    Шаг 3.
    По-моему, приведенный в задании список трудно дополнить, разве что:
    – Глобальный поиск и замена.
    – Сравнить, объединить с внешней обработкой, отчетом.
    – Открытие конфигурации для просмотра через «Файл» – «Открыть»

    • Добрый день, Михаил!

      Финальное задание принято.

      Задания курса успешно сделаны.

      Поздравляю, Вы первый финалист 4-го потока курса!!