Задачи по 1С

Белозерских Евгений

Первая задача раздела «Оперативный учет»
Для начала, давайте выделим основные моменты из условий задачи:

  • Используется 2 документа (Приходная накладная, Расходная накладная)
  • Компания продает И товары И услуги. И товар и услуга находятся в одной табличной части
  • Аналитика по складам не требуется
  • Необходим контроль количества при продаже товаров
  • Применяется партионный учет (ФИФО или ЛИФО)
  • Учетная политики действует в пределах ГОДА
  • Плюс необходимо реализовать два отчета (Продажи, Остатки товаров)

Содержание

Готовый пример решения

Файл выгрузки (*.DT) с решением этой задачи можно

Справочник «Номенклатура»

Т.к. компания продает товары, и может оказывать услуги, то для разделения товаров и услуг, добавим реквизит с наименование «Услуга» тип «Булево» (в рамках задачи, этого будет вполне достаточно)

Учетная политика

В задаче ПОДЧЕРКИВАЕТСЯ! Учетная политика действует в пределах года. Значит нам нужен регистр сведений, с периодичностью «В пределах года». Структура регистра довольно простая, это один ресурс «МетодСписания» с типом «ПеречислениеСсылка.УчетнаяПолитика»

Регистр накопления «ОстаткиНоменклатуры»

В задаче говорится, что возможен метод списания себестоимости ФИФО или ЛИФО, а значит эту себестоимость надо хранить. И так же себестоимость ведется в разрезе партий (т.е. документов «Приходная накладная»). Из выше сказанного, видно, что структуру регистра надо подправить:

  • Добавить ресурс «Стоимость»
  • Добавить измерение «Партия»

Документ «Приходная накладная»

Т.к. учет в разрезе складов не ведется, то и в документе нет необходимости добавлять реквизит склад (тем более что справочника такого в каркасной конфигурации нет). Раз не требуется, то и не делаем. Вообще на экзамене лучше не отклоняться от условий задачи, и не делать свыше того что указано в задаче.
Таким образом, все что от нас требуется сделать в этом документе, это описать обработчик проведения (процедура в модуле объекта «ОбработкаПроведения»).
Воспользуемся конструктором движений
Вот так выглядит результат работы конструктора движений Процедура ОбработкаПроведения(Отказ, РежимПроведения) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! // регистр ОстаткиНоменклатуры Приход Движения.ОстаткиНоменклатуры.Записывать = Истина; Для Каждого ТекСтрокаСписокНоменклатуры Из СписокНоменклатуры Цикл Движение = Движения.ОстаткиНоменклатуры.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаСписокНоменклатуры.Номенклатура; Движение.Количество = ТекСтрокаСписокНоменклатуры.Количество; КонецЦикла; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры Но можно (так будет лучше, выше производительность) сделать по-другому. Получить все поля в запросе, и загрузить готовый результат в движения. Например вот так: Процедура ОбработкаПроведения(Отказ, РежимПроведения) Движения.ОстаткиНоменклатуры.Записывать = Истина; ЗапросДанных = Новый Запрос(«ВЫБРАТЬ | _Товары.Номенклатура, | _Товары.Количество, | _Товары.Сумма КАК Стоимость, | _Товары.Ссылка КАК Партия, | _Товары.Ссылка.Дата КАК Период, | ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения |ИЗ | Документ.ПриходнаяНакладная.СписокНоменклатуры КАК _Товары |ГДЕ | _Товары.Ссылка = &Ссылка»); ЗапросДанных.УстановитьПараметр(«Ссылка», Ссылка); Движения.ОстаткиНоменклатуры.Загрузить(ЗапросДанных.Выполнить().Выгрузить()); КонецПроцедуры И последний штрих! Будем заполнять реквизит «СуммаПоДокументу» перед записью. Для этого в модуле объекта используем процедуру «ПередЗаписью» Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) СуммаПоДокументу = СписокНоменклатуры.Итог(«Сумма»); КонецПроцедуры

Документ «Расходная накладная»

Теперь самое интересное! Читаем задачу 1.1, и отмечаем основные моменты которые необходимо учитывать при проведении документа «Расходная накладная»:

  • Учитывать порядок списания себестоимости товаров, указанный в учетной политике (ФИФО или ЛИФО)
  • При проведении расходной накладной, необходимо контролировать остатки товаров
  • В случае нехватки товаров, выводить предупреждение, и не проводить документ
  • В табличной части могут быть как товары так И услуги, но нас интересуют только ТОВАРЫ и остатки по ним

Теперь давайте по-порядку! Открываем модуль объекта документа «Расходная накладная», и работаем с процедурой «ОбработкаПроведения».
Первое что определим, это порядок списания себестоимости! ЗапросДанных = Новый Запрос(«ВЫБРАТЬ | ВЫБОР | КОГДА УчетнаяПолитика.МетодСписания = ЗНАЧЕНИЕ(Перечисление.УчетнаяПолитика.ЛИФО) | ТОГДА «»УБЫВ»» | КОГДА УчетнаяПолитика.МетодСписания = ЗНАЧЕНИЕ(Перечисление.УчетнаяПолитика.ФИФО) | ТОГДА «»ВОЗР»» | КОНЕЦ КАК МетодСписания |ИЗ | РегистрСведений.УчетнаяПолитика.СрезПоследних(&Период, ) КАК УчетнаяПолитика»); ЗапросДанных.УстановитьПараметр(«Период», Дата); Результат = ЗапросДанных.Выполнить(); Если Результат.Пустой() Тогда Отказ = Истина; Сообщить(«Не указан метод списания в учетной политике!!!»); Возврат; КонецЕсли; Выборка = Результат.Выбрать(); Выборка.Следующий(); МетодСписания = Выборка.МетодСписания; Далее напишем запрос для получения товаров из табличной части, и остатков по партиям товаров ЗапросДанных.Текст = «ВЫБРАТЬ | _Товары.Номенклатура, | СУММА(_Товары.Количество) КАК Количество, | _Товары.Ссылка.Дата КАК Период |ПОМЕСТИТЬ Товары |ИЗ | Документ.РасходнаяНакладная.СписокНоменклатуры КАК _Товары |ГДЕ | НЕ _Товары.Номенклатура.Услуга | И _Товары.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | _Товары.Номенклатура, | _Товары.Ссылка.Дата |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Товары.Номенклатура КАК Номенклатура, | Товары.Количество КАК Количество, | ОстаткиНоменклатурыОстатки.Партия, | ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК Остаток, | ОстаткиНоменклатурыОстатки.СтоимостьОстаток КАК Себестоимость, | ОстаткиНоменклатурыОстатки.Партия.Дата КАК ДатаПартии, | Товары.Период |ИЗ | Товары КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки( | &Период, | Номенклатура В | (ВЫБРАТЬ | ВТ.Номенклатура | ИЗ | Товары КАК ВТ)) КАК ОстаткиНоменклатурыОстатки | ПО Товары.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура | |УПОРЯДОЧИТЬ ПО | ДатаПартии » + МетодСписания + » |ИТОГИ | МАКСИМУМ(Количество), | СУММА(Остаток) |ПО | Номенклатура»; Немного поясним что здесь происходит. Итак:

  1. Первое что нужно сделать, это поместить выборку товаров из табличной части во временную таблицу. Это нужно для того чтобы во-первых оставить там только товары, во-вторых получить общее количество по каждому товару (т.к. один и тот же товар может быть в двух и более строках табличной части, тогда при левом соединении с таблицей остатков мы получим ошибочные данные по остаткам
  2. К выборке товаров, получаем остатки из виртуальной таблицы «Остатки» регистра накопления «ОстаткиНоменклатуры»
  3. В параметрах виртуальной таблицы указываем период, а также ограничиваем номенклатуру по которой нужно остатки получить
  4. Упорядочиваем выборку по дате партии
  5. И делаем итоги по номенклатуре. Т.е. при обходе сразу будет видно, достаточное ли количество на остатках

Теперь делаем обход результата выборки, и формируем движения по регистру, либо не формируем и ставим флаг отказа Движения.ОстаткиНоменклатуры.Записывать = Истина; Выборка = ЗапросДанных.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка.Следующий() Цикл Если Выборка.Количество > Выборка.Остаток Тогда Отказ = Истина; Сообщить(«Остатка для товара «»» + Выборка.Номенклатура + «»» не хватает.» + » Требуется: » + Выборка.Количество + » Остаток: » + Выборка.Остаток); Продолжить; КонецЕсли; КРаспределениюПоПартиям = Выборка.Количество; Обход = Выборка.Выбрать(); Пока Обход.Следующий() И НЕ КРаспределениюПоПартиям = 0 Цикл Запись = Движения.ОстаткиНоменклатуры.Добавить(); ЗаполнитьЗначенияСвойств(Запись, Обход); Запись.ВидДвижения = ВидДвиженияНакопления.Расход; Если КРаспределениюПоПартиям >= Обход.Остаток Тогда Запись.Количество = Обход.Остаток; Запись.Стоимость = Обход.Себестоимость; КРаспределениюПоПартиям = КРаспределениюПоПартиям — Обход.Остаток; Иначе Запись.Количество = КРаспределениюПоПартиям; Запись.Стоимость = Обход.Себестоимость / Обход.Остаток * КРаспределениюПоПартиям; КРаспределениюПоПартиям = 0; КонецЕсли; КонецЦикла; КонецЦикла;
Запустив конфигурацию в режиме «Предприятие», и создав документ «Расходная накладная» с необходимым количеством, можно убедиться что написанный алгоритм работает


Так же, рекомендуем посмотреть решение задачи 5.1 (Просмотр движений документа «Расходная накладная», для контроля правильности)

О чем эта статья

В статье рассматривается новый механизм прикладного решения «Управление торговлей, ред.11», предназначенный для облегчения работы пользователя – заметки и напоминания:

  • Как настроить программу для использования механизма заметок и напоминаний?
  • Как добавить напоминание?
  • Что представляет собой список напоминаний?
  • Где еще можно увидеть список напоминаний?
  • Как настраивать права доступа к напоминаниям?
  • Как создать новую заметку?
  • Что представляет собой список заметок?
  • Где можно увидеть список всех заметок?
  • Как настраивать права доступа к заметкам?
  • Где можно увидеть список текущих дел пользователя?

Применимость

Статья написана для редакции УТ 11.1. Если вы используете эту редакцию, отлично — прочтите статью и внедряйте рассмотренный функционал.
Если Вы работаете со старшими версиями УТ 11, то данный функционал является актуальным. Наиболее заметным отличием УТ 11.3/11.4 от редакции 11.1 является интерфейс Такси. Поэтому, чтобы освоить материал статьи — воспроизведите представленный пример на своей базе УТ 11. Таким образом Вы закрепите материал практикой 🙂

Использование заметок и напоминаний

Так… Главное – ничего не забыть. В 10 надо позвонить клиенту, обсудить с ним состав заказа, поговорить про возможные скидки. А еще договора вчерашние у юриста получить назад. А в 11 поставка придет, надо документы забрать не забыть. Черт, а еще же надо отправить отчет о сделках руководству, срок как обычно – вчера. А где этот номер телефон, я же его куда-то записывал, тут должен быть где-то в этой стопке, а, нет, я стикер на монитор прилепил, желтый вроде, нет, это не тот… Да где же он?

Подобные мысли часто пробегают в голове у многих сотрудников разных предприятий от рядового менеджера до руководителя. Давайте разберемся подробнее, как «1С:Управление торговлей 11» может помочь не забыть о важных делах.

Настройки программы

Включить использование заметок и напоминаний в конфигурации можно в разделе Администрирование – Органайзер, установив соответствующие галочки.

Добавление напоминаний

Чтобы добавить напоминание об определенном документе или справочнике в форме этого объекта необходимо выполнить команду Органайзер – Напомнить.

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

Существует несколько вариантов задания времени появления напоминания. Напоминание может появиться однократно в день и время, непосредственно указанные пользователем. Можно выбрать из списка интервал, через который напоминание активизируется, например, через 5 или 10 минут от текущей даты. Также возможно сделать напоминание периодическим, чтобы оно появлялось по заданному пользователем расписанию.

По одному и тому же справочнику или документу возможно установить только одно напоминание. Чтобы исправить ранее введенное напоминание следует воспользоваться той же командой Органайзер – Напомнить и отредактировать его.

Список напоминаний

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

После нажатия на кнопку Прекратить выбранные напоминания больше не будут показываться пользователю.

При помощи кнопки Отложить все можно приостановить появление напоминаний на определенный период времени.

Мои напоминания

Все напоминания, введенные в систему, можно увидеть в списке Мои напоминания. Открыть его можно в разделе Органайзер при помощи команды Мои напоминания.

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

Права доступа к напоминаниям

Для работы с напоминаниями у пользователя информационной базы должна быть установлена роль «Использование напоминаний».

Создание заметок

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

Чтобы создать заметку об определенном документе или справочнике в форме этого объекта необходимо выполнить команду Органайзер – Создать заметку.

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

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

Мои заметки

Все заметки по данному документу или справочнику можно увидеть, нажав Мои заметки в панели навигации этого объекта.

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

Список заметок можно отобразить на рабочем столе. Здесь выводятся не помеченные на удаление заметки, у которых установлена галочка Отображать на рабочем столе.

Также с рабочего стола можно ввести новую заметку. Такая заметка не будет связана с каким-либо документом или справочником, составление ее не отличается от рассмотренного выше создания заметки для документа.

Все заметки

Для просмотра всех заметок, введенных в систему, необходимо выполнить команду Органайзер – Все заметки. Заметки выводятся по группам.

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

Права доступа к заметкам

Для работы с заметками у пользователя информационной базы должна быть установлена роль «Использование заметок».

Текущие дела

Также на рабочий стол может быть выведена форма Текущие дела.

На ней отображаются задачи, находящиеся в работе. Задачи группируются следующим образом:

  1. Внутренние потребления товаров
    1. Распоряжения на оформление документов в работе
    2. Распоряжения на оформление документов на сегодня
    3. Документы к отгрузке
  2. Доверенности на получение товаров
    1. Распоряжения на оформление
    2. Выданные доверенности
    3. Доверенности, истекающие сегодня
    4. Просроченные доверенности
  3. Договоры с клиентами
    1. Договоры на согласовании
    2. Просроченные договоры
  4. Договоры с поставщиками
    1. Договоры на согласовании
    2. Просроченные договоры
  5. Документы cборки (разборки)
    1. Распоряжения на оформление документов в работе
    2. Распоряжения на оформление документов на сегодня
    3. Документы к сборке (разборке)
  6. Документы поступления товаров и услуг
    1. Распоряжения на оформление в работе
  7. Документы реализации товаров и услуг
    1. Распоряжения на оформление в работе
    2. Распоряжения на оформление на сегодня
    3. Документы к отгрузке
    4. Документы к предоплате
  8. Задания торговым представителям
    1. Задания к подготовке
    2. Задания к оформлению заказов
    3. Просроченные задания
  9. Задачи
    1. Задачи к выполнению
  10. Заказы клиентов
    1. Всего заказов в работе
    2. На сегодня
    3. Просрочена оплата по заказам
    4. Просрочено исполнение заказов
  11. Заказы поставщикам
    1. Всего заказов в работе
    2. На сегодня
    3. Просрочено исполнение нами
    4. Просрочено исполнение поставщиком
  12. Заявки на возврат товаров от клиентов
    1. Всего заявок в работе
    2. На сегодня
    3. Просрочена оплата по заявкам
    4. Просрочено исполнение заявок
  13. Заявки на оплату
    1. Заявки к утверждению
    2. Утверждение просрочено
  14. Инвентаризации товаров
    1. Распоряжения к выполнению
  15. Индивидуальные соглашения с клиентами
    1. Соглашения на согласовании
    2. Просроченные соглашения
  16. Коммерческие предложения клиентам
    1. Всего предложений в работе
    2. Просроченные предложения
  17. Отчеты комиссионеров
    1. Требуется оформить
  18. Отчеты комитентам
    1. Требуется оформить
  19. Оформление складских актов
    1. Основания к оформлению
  20. Перемещения товаров
    1. Распоряжения на оформление в работе
    2. Документы к отгрузке
  21. Распоряжения на отгрузку
    1. Распоряжения к исполнению
  22. Распоряжения на поступление
    1. Распоряжения к исполнению
  23. Сделки с клиентами
    1. Всего сделок в работе
  24. Соглашения с поставщиками
    1. Соглашения на согласовании
    2. Просроченные соглашения
  25. Типовые соглашения с клиентами
    1. Соглашения на согласовании
    2. Просроченные соглашения
  26. Электронные документы
    1. Документы на подпись

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

Итак, в этой статье мы рассмотрели инструменты конфигурации «1С:Управление торговлей 11», предназначенные для повышения эффективности работы пользователей при помощи ведения списка заметок и напоминаний.

Автор статьи, Василий Ханевич.

г. Калининград, 2013 г.

Учебный курс: Подготовка на 1С:Специалист по платформе 1С:Предприятие 8.3

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

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

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

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

Рассмотрим подробнее, как выполнить эти требования.

Как отобразить на форме список задач

Создадим форму списка задачи:

Рисунок 1 – Создание формы списка задачи

Основной реквизит в созданной форме – динамический список:

Рисунок 2 – Реквизит формы типа ДинамическийСписок

Подробно динамические списки управляемых форм рассматриваются в курсе «Профессиональная разработка интерфейсов и форм в 1С:Предприятие 8.3″ (см. Занятие 19), а также в курсе»1С:Программист – Быстрый старт в профессию» (см. Модуль 4, Глава 8).

Обратимся к свойствам динамического списка, в качестве свойства ОсновнаяТаблица укажем ЗадачиИсполнителям.ЗадачиПоИсполнителю:

Рисунок 3 – Настройка основной таблицы динамического списка

Это виртуальная таблица для объекта метаданных Задача, которая возвращает список задач, назначенных конкретному пользователю.

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

Рисунок 4 – Свойство «Текущий исполнитель» объекта метаданных «Задача»

В этом свойстве нужно указать параметр сеанса, где хранится текущий исполнитель, для которого нужно получить список задач.

Создадим новый параметр сеанса, назовем его ТекущийПользователь (тип – СправочникСсылка.ФизическиеЛица):

Рисунок 5 – Параметр сеанса «Текущий пользователь»

На закладке Адресация для объекта метаданных ЗадачиИсполнителям (объект типа Задача) укажем в качестве свойства Текущий исполнитель созданный параметр сеанса:

Рисунок 6 – Указание для Задачи значения свойства «Текущий исполнитель»

Рассмотрим кратко, как работает виртуальная таблица ЗадачиПоИсполнителю.

Система получает значение параметра сеанса, указанного в свойстве Текущий исполнитель. Все задачи, у которых Основной реквизит адресации (Исполнитель) равен значению параметра сеанса ТекущийПользователь, попадают в результат виртуальной таблицы.

Затем система ищет задачи, у которых не указан основной реквизит адресации (Исполнитель), но значения остальных реквизитов адресации точно совпадают со значениями измерений регистра адресации.

Для лучшего понимания работы виртуальной таблицы рассмотрим отвлеченный конкретный пример. В регистр адресации внесены следующие записи:

Рисунок 7 – Заполнение регистра адресации

Существуют следующие задачи исполнителей:

Рисунок 8 – Перечень задач

Пусть текущим пользователем является Иванов, тогда в виртуальную таблицу ЗадачиПоИсполнителю попадут следующие задачи:

Рисунок 9 – Задачи пользователя Иванов

Если текущим пользователем является Петров, в виртуальную таблицу ЗадачиПоИсполнителю попадут следующие задачи:

Рисунок 10 – Задачи пользователя Петров

Таким образом, в виртуальную таблицу ЗадачиПоИсполнителю попадут те задачи, у которых или явно указан требуемый исполнитель, или его можно определить косвенно по записям регистра адресации. При получении данных учитываются настройки объекта конфигурации типа Задача и те записи, которые были внесены в регистр сведений РегистрАдресации.

Важно, что виртуальная таблица не фильтрует задачи по их выполненности. Она возвращает как выполненные, так и невыполненные задачи. Чтобы отображались только невыполненные задачи, нужно установить отбор. Для этого обратимся к настройкам динамического списка на форме:

Рисунок 11 – Реквизит формы «Список» типа «ДинамическийСписок»

Рисунок 12 – Настройка динамического списка

В настройках установим отбор по значению поля Выполнена равному Ложь:

Рисунок 13 – Настройка отбора записей динамического списка

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

Рассмотрим два варианта установки значения параметра сеанса ТекущийПользователь для решения поставленной задачи.

Как вручную установить значение параметра сеанса

Первый вариант установки значения параметра сеанса – это указывать текущего пользователя вручную. Данный вариант самый простой и быстрый. В этом случае не потребуется организовывать связь пользователей информационной базы со справочником физических лиц, элементы которого в нашем случае являются Исполнителями. Можно будет вообще не заводить пользователей информационной базы (списка справочника ФизическиеЛица).

Создадим форму списка справочника ФизическиеЛица. Создадим команду формы: УстановитьТекущегоПользователя:

Рисунок 14 – Создание команды формы списка справочника «Физические лица»

Вынесем добавленную команду на форму:

Рисунок 15 – Размещение созданной команды на форме

В обработчике команды УстановитьТекущегоПользователя выполним установку значения параметра сеанса:

&НаКлиенте Процедура УстановитьТекущегоПользователя(Команда) УстановитьТекущегоПользователяНаСервере(Элементы.Список.ТекущаяСтрока); КонецПроцедуры &НаСервереБезКонтекста Процедура УстановитьТекущегоПользователяНаСервере(Исполнитель) ПараметрыСеанса.ТекущийПользователь = Исполнитель; КонецПроцедуры

В пользовательском режиме назначим Иванова текущим пользователем:

Рисунок 16 – Установка текущего пользователя

В форме списка «Задачи исполнителям» будут отображаться задачи для выбранного текущего исполнителя Иванова:

Рисунок 17 – Задачи исполнителя (текущего пользователя)

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

Рисунок 18 – Ошибка, возникающая при неустановленном значении параметра сеанса

Дело в том, что виртуальная таблица ЗадачиПоИсполнителю при получении данных использует значение параметра сеанса ТекущийПользователь. Если это значение не было установлено, возникает ошибка.

Чтобы такая ошибка не возникала, можно в модуле сеанса инициализировать параметр сеанса при помощи пустой ссылки на справочник Физические лица:

Процедура УстановкаПараметровСеанса(ТребуемыеПараметры) ПараметрыСеанса.ТекущийПользователь = Справочники.ФизическиеЛица.ПустаяСсылка(); КонецПроцедуры

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

Рисунок 19 – Список задач, для которых исполнитель не определен

Таким образом, текущего пользователя можно назначать вручную. При этом в списке задач отображаются только задачи, касающиеся текущего пользователя.

Как автоматически установить значение параметра сеанса по данным информационной базы

Второй вариант установки значения параметра сеанса более сложный. Необходимо связать пользователей информационной базы со справочником физических лиц. Тогда устанавливать значение параметра сеанса можно будет автоматически.

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

Рисунок 20 – Создание роли ПолныеПрава

В Конфигураторе создадим двух пользователей (Иванов и Петров) и назначим им роль ПолныеПрава:

Рисунок 21 – Создание пользователей информационной базы

При запуске конфигурации в пользовательском режиме нужно выполнить проверку, не является ли имя текущего пользователя пустым. Если имя текущего пользователя заполнено, то находим в справочнике ФизическиеЛица элемент, Код которого совпадает с именем текущего пользователя.

Параметру сеанса ТекущийПользователь присваиваем найденное значение (ссылку на элемент справочника ФизическиеЛица). Если такого элемента в справочнике нет, то нужно его создать, а ссылку на созданный элемент присвоить параметру сеанса.

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

Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса) ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь(); Имя = ТекущийПользователь.Имя; Если Имя = «» Тогда ПараметрыСеанса.ТекущийПользователь = Справочники.ФизическиеЛица.ПустаяСсылка(); Иначе СсылкаНаФизическоеЛицо = Справочники.ФизическиеЛица.НайтиПоКоду(Имя); Если СсылкаНаФизическоеЛицо = Справочники.ФизическиеЛица.ПустаяСсылка() Тогда НовоеФизическоеЛицо = Справочники.ФизическиеЛица.СоздатьЭлемент(); НовоеФизическоеЛицо.Код = ТекущийПользователь.Имя; НовоеФизическоеЛицо.Наименование = ТекущийПользователь.Имя; НовоеФизическоеЛицо.Записать(); ПараметрыСеанса.ТекущийПользователь = НовоеФизическоеЛицо.Ссылка; Иначе ПараметрыСеанса.ТекущийПользователь = СсылкаНаФизическоеЛицо; КонецЕсли; КонецЕсли; КонецПроцедуры

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

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

Как разместить список задач на рабочем столе

Общие принципы настройки рабочего стола (начальной страницы) рассматриваются в курсах: «1С:Программист – Быстрый старт в профессию» (см. Модуль 4, Глава 1), «Профессиональная разработка интерфейсов и форм в 1С:Предприятие 8.3» (см. Занятие 20), бесплатный курс «Программирование в 1С – за 21 день!» (Модуль 1, День 5).

К решению аттестационной задачи предъявляются следующие требования:

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

Сначала разместим созданную форму списка объекта конфигурации ЗадачиИсполнителям на рабочем столе. Для этого из контекстного меню корневого элемента конфигурации выберем пункт Открыть рабочую область начальной страницы:

Рисунок 22 – Выбор команды «Открыть рабочую область начальной страницы»

В открывшемся окне выберем форму списка задачи:

Рисунок 23 – Выбор формы списка объекта «ЗадачиИсполнителям» в рабочей области начальной страницы

Запустим приложение в пользовательском режиме. На начальной странице отобразятся невыполненные задачи текущего пользователя:

Рисунок 24 – Невыполненные задачи пользователя Иванова

Однако кроме списка задач по исполнителю необходимо вывести полный список задач. Поэтому в окне настроек объекта конфигурации ЗадачиИсполнителям очистим поле для формы списка задачи:

Рисунок 25 – Очистка поля для формы списка задачи в окне настроек

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

Рисунок 26 – Общий список задач

Таким образом, необходимые формы отображаются – поставленная задача решена.

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

Перейти к следующей теме:
«Как на форме бизнес-процесса вывести его карту маршрута” (№ 4)

Для более глубокого изучения 1С скачайте книгу «Разработка оперативного учёта в 1С 8.3»

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

Могу сказать, что задания на биржах размещаются разного уровня сложности и знания. В большинстве случаев эти задания типовые, т.е. привязанные к ограниченному кругу интерфейсов и задач. Типовые задачи, к примеру, могут быть такими: настройка правил обмена, интеграция 1С с сайтом, консультация по настройке системы, удалённое исправление ошибок, доработка печатных форм, загрузка/выгрузка из файла и т.п.

Чтобы лучше понимать какие задания дают заказчики, приведу здесь пример полного текста задания, взятый с сайта www.1clancer.ru.

Задание: «Управление торговлей 10.3 базовая, простые доработки» (стоимость 5000 руб.)

Примеры файлов MS Excel находятся на файлообменнике.

Задача такая:

1) Выгрузка/загрузка данных между одинаковыми конфигурациями. Написать инструкцию со скриншотами: как выгрузить конфигурацию из текущей базы, создать новую базу, загрузить в неё конфигурацию, и из одной базы с помощью обработки «Выгрузка загрузка данных XML» перенести, например, справочник номенклатуры.

2) Создать загрузку прайса из MS Excel.

  • Выбираем файл Excel — Прайс, файл «Прайс» в приложении;
  • Выбираем тип цены который будем загружать;
  • Должна быть галка создавать номенклатуру, которая не найдена (стоит — создавать, не стоит — не создавать);
  • Пример прайса в приложении. Колонки будут оставаться неизменными;
  • Обработка при необходимости создаёт номенклатуру и всегда создаёт документ «Установка цен номенклатуры».

3) Разобраться с печатными формами.

3.1 «Торг 12» из документа «Реализация ТУ» — сделать, чтобы заполнялись поля «Вид упаковки», «В одном месте», «Мест штук». Если можно, сделать заполнение через типовую печатную форму — написать инструкцию, как это сделать, какие поля надо заполнить. Если нет, то сделать внешнюю печатную форму такую же как типовая, но чтобы заполнялись эти поля — брались из номенклатуры.

3.2 «Счёт фактура» из документа «Реализация ТУ» — аналогично с пунктом 3.1, только соответственно поля «Страна» и «Краткое наименование страны».

3.3 Сделать внешнюю печатную форму документа «Спецификация» — один в один как в файле Excel (можно скачать по ссылке).

4) Загрузка данных в документы 1С.

  • Загружать данные из файла Excel в приложении «Счёт»;
  • Товар идентифицировать по артикулу, который находится в наименовании между символами «/»;
  • Создавать 1 из 3-х документов по выбору пользователя «Реализация ТУ», «Поступление ТУ», «Заказ клиента»;
  • В обработке должно быть поле «Начинать со строки» — пользователь вводит число и с этого номера строки надо загружать товар;
  • Пропускать строки, в которых в наименовании меньше 10 символов;
  • Если идут 4 строки подряд, в которых меньше 10 символов, то заканчивать загрузку.

Работу надо будет сдавать в готовом виде, так что сразу делайте правильно и тестируйте как надо!

Как на этом можно заработать?

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

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

Список бирж фриланса по 1С, на которых можно брать задания, следующий:

Add a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *