Направления деятельности в 1С

Финансовый результат по направлениям деятельности в 1С:ERP

  • Ощепкова Татьяна Специалист проектного отдела

Сегодня я расскажу, как выполнить настройки в ERP для формирования финансового результата по аналогии с УПП по объекту «Номенклатурные группы». Такая задача возникает в случае, если необходимо получать финансовый результат в разрезе, например, видов деятельности, либо заказов клиента, и др.

Рассмотрим на примере получения финансового результата по номерам заказов клиентов «Паспорт заказа». Для этого необходимо скалькулировать себестоимость готовой продукции в разрезе Паспортов заказа. Мы не будем вводить НД по материалам, поскольку учет материалов по НД является достаточно трудоемким и требует корректировок НД.

Данную задачу можно реализовать в ERP, с помощью аналитики «Направления деятельности» (НД). Необходимо включить функциональную опцию, отвечающую за получение финансового результата по направлениям деятельности.

Рис.1 Включение функциональной опции: Финансовый результат по направлениям деятельности

Есть ряд особенностей при получении финансового результата по НД в ERP. Отличительной особенностью использования НД является то, что этот объект является разделителем учета. И поэтому он присутствует не только на счетах учета затрат и счетах финансового результата, но и на счетах учета ТМЦ, а также на счетах учета взаиморасчетов.

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

Рис.2 Включение функциональной опции: Обособление товаров по направлению деятельности при продаже

При оформлении документа «Заказ клиента» в шапке документа необходимо указать НД «Паспорт заказа», по которому будет отгружаться готовая продукция.

Рис.3 Пример Заказа клиента по направлению деятельности

Рис.4 Пример Заказа клиента по направлению деятельности

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

Рис.5 Назначение в справочнике «Назначения» создано автоматически при проведении Заказа клиента

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

Рис.6 Оформление выпуска полуфабрикатов в ERP

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

Рис.7 Особенности выпуска полуфабрикатов в ERP (Назначение материалов)

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

Рис.8 Особенности выпуска полуфабрикатов в ERP (Направление деятельности)

Выполним процедуру «Закрытие месяца».

Рис.9 Закрытие месяца в ERP

Проанализируем отчет «Движение ТМЦ и затрат в производстве» по выпущенным полуфабрикатам. В отчете видно, что затраты по выпущенным полуфабрикатам калькулируется без аналитики по НД, поскольку при выпуске полуфабрикатов мы не указали НД в шапке документа.

Рис.10 Отчет «Движение ТМЦ и затрат в производстве»

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

Рис.11 Отражение себестоимости выпущенных полуфабрикатов в отчете «Движение ТМЦ и затрат в производстве»

Отчет «Анализ себестоимости выпущенной продукции» по выпущенным полуфабрикатам отражает себестоимость полуфабрикатов без учета НД.

Рис.12 Отражение себестоимости в отчете «Анализ себестоимости выпущенной продукции»

Рис.13 Отражение себестоимости в отчете «Анализ себестоимости выпущенной продукции»

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

Рис.14 Оформление выпуска готовой продукции в ERP

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

Рис.15 Особенности оформления выпуска готовой продукции

В шапке документа при выпуске готовой продукции необходимо заполнить НД.

Рис.16 Заполнение поля «Направление деятельности» при оформлении выпуска готовой продукции

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

Рис.17 Анализ отчета «Движение ТМЦ и затрат в производстве» по партиям производства

Себестоимость готовой продукции рассчитывается по НД «Паспорт заказа», поскольку продукция выпускается с обособлением по назначениям, а НД является аналитикой назначения товара.

Рис.18 Отражение себестоимости в отчете «Движение ТМЦ и затрат в производстве»

Оформим отгрузку готовой продукции клиенту. Для этого в «Заказе клиента» необходимо указать действие «Отгрузить обособленно».

Рис.19 Оформление отгрузки готовой продукции в ERP

На основании «Заказа клиента» оформляем документ «Реализация товаров и услуг», при этом в шапке документа заполняется НД из Заказа клиента.

Рис.20 Оформление документа «Реализация товаров и услуг» на основании «Заказа клиента» в ERP

Рис.21 Особенности оформления документа «Реализация товаров и услуг» на основании «Заказа клиента» в ERP

В этом случае движения по счетам учета 90.01 «Выручка» и 90.02 «Себестоимость продаж» будут отражены по аналитике НД «Паспорт заказа».

Рис.22 Отражение движения документа в ERP по аналитике НД «Паспорт заказа»

Проанализируем отчет «Оборотно-сальдовая ведомость» по счету 20 «Основное производство». Затраты сгруппированы по НД и отражают правильную производственную себестоимость.

Рис.23 Анализ отчета «Оборотно-сальдовая ведомость» по счету 20 «Основное производство» в ERP

На счете 43 «Готовая продукция» НД является разделителем учета.

Рис.24 Анализ отчета «Оборотно-сальдовая ведомость» по счету 43 «Готовая продукция» в ERP

На счете 90 «Продажи» получаем финансовый результат в разрезе НД «Паспорт заказа».

Рис.25. Получение финансового результата в разрезе НД «Паспорт заказа» на счете 90 «Продажи» в ERP

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

Рис.26 Анализ отчета «Валовая прибыль» в разрезе «Заказов клиента» в ERP

Таким образом, мы рассмотрели пример формирования финансового результата по направлениям деятельности на примере использования паспортов заказа. Используя аналитику «Направления деятельности» можно организовать учет, аналогичный с учетом по Номенклатурным группам в УПП. Но есть отличительные особенности такого учета, которые состоят в том, что кроме счетов затрат и счетов финансового результата, аналитика по направлениям деятельности будет использоваться на счетах учета ТМЦ, а также на счетах учета взаиморасчетов.

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

Автор статьи: Специалист проектного отдела Ощепкова Татьяна. Дата обновления статьи 12.02.2019 г.

Владимир Ряничев, технический специалист компании «ГЭНДАЛЬФ»

Протестировали для вас компьютеры в разной ценовой категории.

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

Это связано с тем, что пользователи, которые сэкономили на покупке или покупали компьютерное оборудование 3-5 лет назад, сейчас сталкиваются с тем, что «1С» работает крайне медленно и тормозит рабочий процесс.

Принято считать, что в офис для работы с документами и «1С» можно купить самый простой компьютер, т.к. на нем не будут запускать ресурсоемкие игры или программы 3D-моделирования. Но это ошибка! За последние годы учетные программы превратились в мощные инструменты анализа, которые дают специфическую нагрузку и потребляют гораздо больше ресурсов.

Мы провели эксперимент и выяснили, какие параметры системного блока позволят «1С» работать максимально эффективно!

Тестировали с помощью специальной обработки, которая при тестировании, запускает одновременное проведение 150 документов разного вида, но пересекающихся по регистрам (ПКО, РКО и РТУ) в рабочей базе «1С:Бухгалтерия», ред. 3.0 текущего релиза с интерфейсом «Такси». Объем базы 4 Гб.

Тесты проводились на 6 компьютерах разных конфигураций:

  • разные процессоры 4-х и 8-ми ядерные.

  • количество оперативной памяти 4 – 8 GB, с SSD диском Silicon Power SATA-III 60Gb SP060GBSS3S60S25 S60 2.5″ w490Mb/s и без него.

  • программное обеспечение: Windows 10 PRO 64 bit.

Тестовый экземпляр №1

Процессор: AMD FX 4330, (4 ядра, 4 ГГц, 95Вт)

Материнская плата: Asus M5A78L-M LX3 Soc-AM3 AMD760G

Оперативная память: Память DDR3 4Gb 1333MHz Kingston KVR13N9S8/4-SP 2 шт.

Жесткий диск: HDD Toshiba 500 GB HDWD105UZSVA P300
Стоимость: 16 200 р.

Тестовый экземпляр №2

Процессор: AMD FX 8320E, (8 ядер, 3.2 ГГц и 4 ГГц в режиме Turbo)

Материнская плата: Asus M5A78L-M LX3 Soc-AM3 AMD760G

Оперативная память: Память DDR3 4Gb 1333MHz Kingston Kingston KVR13N9S8/4-SP 2 шт

Жесткий диск (HDD): HDD Toshiba 500 GB HDWD105UZSVA P300
Стоимость: 21 900 р.

Тестовый экземпляр №3

Процессор: AMD A4-6300 Richland (FM2, L2 1024Kb)

Материнская плата: Asus A68H

Оперативная память: Память DDR3 4Gb 1333MHz Kingston KVR13N9S8/4-SP

Жесткий диск (HDD): HDD Toshiba 500 GB HDWD105UZSVA P300
Стоимость: 12 500 р.

Тестовый экземпляр №4

Процессор: Intel® Core™ i3-4170 Processor3M Cache, 3.40 GHz

Материнская плата: Asus чипсет H81

Оперативная память: Память DDR3 4Gb 1333MHz Kingston KVR13N9S8/4-SP

Жесткий диск (HDD): HDD Toshiba 500 GB HDWD105UZSVA P300
Стоимость: 22 500 р.

Тестовый экземпляр №5

Процессор: Intel® Celeron® Processor G1840 2M Cache, 2.80 GHz

Материнская плата: Asus чипсет H81

Оперативная память: Память DDR3 4Gb 1333MHz Kingston KVR13N9S8/4-SP

Жесткий диск (HDD): HDD Toshiba 500 GB HDWD105UZSVA P300
Стоимость: 18 000 р.

Тестовый экземпляр №6

Процессор: Intel® Pentium® Processor G3260 3M Cache, 3.30 GHz

Материнская плата: Asus чипсет H81

Оперативная память: Память DDR3 4Gb 1333MHz Kingston KVR13N9S8/4-SP

Жесткий диск (HDD): HDD Toshiba 500 GB HDWD105UZSVA P300
Стоимость: 19 400 р.

После установки и запуска «1С:Бухгалтерии» 3.0 сразу выявились лидеры и аутсайдеры.

Минимальное время загрузки заняло ~45 сек, максимальное ~2 мин. 10 сек. Лучшую скорость работы показал Тестовый экземпляр № 2, а аутсайдером оказался экземпляр №5. Именно в базовой конфигурации экземпляр №2 превысил скорость загрузки трех сеансов «1С» практически в 3 раза, относительно №5.

На втором месте оказался экземпляр № 1. Оставшиеся конфигурации показали примерно одинаковые результаты: ~1 мин 10 сек.

Мощный процессор и большой объем оперативной памяти отлично показали себя при запуске приложения. Скорость запуска измерялась обычным секундомером.

Далее на каждом тестовом экземпляре была запущена обработка для проведения документов.

Ниже приведен сводный график по всем тестируемым компьютерам со средним временем проведения документов.

Оцените сравнительные графики:

Итоги тестирования

Тестирование показало, что SSD диск дает прирост в скорости работы. Но при небольших объемах базы его может заменить мощный процессор с объемом оперативной памяти большим, чем объем базы данных.

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

Самый слабый результат, как в и предполагалось, показал системный блок на базе процессора AMD A4-6300 без SSD диска. Среднее время проводки превышало 300 мс.

Самым сбалансированным по цене и результату получился системный блок на базе процессора: AMD FX 4330 с объёмом памяти в 4GB с SSD диском.

При своей цене в 17 200 р., он дороже системного блока на базе процессора AMD A4-6300 4GB с SSD диском на 11 %, а прирост в мощности получается 29%. Выгода более чем в два раза.

Системный блок AMD A4-6300 4GB без SSD диска, с его невысокой ценой в 12 500 р., будет достаточен для стандартных офисных задач и небольших информационных баз с маленьким количеством операций.

Лучшее Время при проведении документов показал системный блок на базе процессора Intel® Core™ i3-4170. Он подойдет, если вы используете не только офисные программы и «1С», но и другие приложения, т.к. стоимость компьютера Intel® Core™ i3-4170 4 GB с SSD 25 500 р. на 48 % выше AMD FX 4330 4GB с SSD и на 64% AMD A4-6300 4GB с SSD. Прирост производительности в этих случаях – 21% и 44% соответственно.

Что же выбрать?

Ценовая категория до 16 000 рублей

Тестовый экземпляр №1

Стоимость – 14 200 р.

Ценовая категория до 21 000 рублей

Тестовый экземпляр №1 с SSD диском

Стоимость – 17 200 р.

Ценовая категория от 21 000 рублей

Тестовый экземпляр №4

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

Это финальная статья нашего цикла статей «Первые шаги в программировании на 1С”.

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

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

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

Отказ от использования модальных окон в платформе 1С:Предприятие 8.3

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

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

Такое поведение может обеспечить, например, следующий код:

&НаКлиенте
Процедура ЗаполнитьТовары(Команда)

Ответ = Вопрос(«Табличная часть будет очищена. Продолжить?”, РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Да Тогда
//алгоритм заполнения
КонецЕсли;
КонецПроцедуры

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

Также к приостановке выполнения кода и блокировке интерфейса приводит открытие модальных окон при помощи вызова метода ОткрытьМодально().

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

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

В таком случае для работы с конфигурациями 1С:Предприятие 8 через браузер необходимо запретить блокирование всплывающих окон.

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

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

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

Таким образом, всплывающие окна в браузере не открываются и обеспечивается работа через веб-клиент на мобильных устройствах.

У корневого элемента конфигурации существует свойство «Режим использования модальности”, которое определяет, можно ли в конфигурации открывать модальные окна.

Если выбран вариант «Использовать”, то модальные окна можно открывать. Если выбран вариант «Не использовать”, то модальные окна недопустимы. При попытке вызвать метод, открывающий модальное окно, система выводит сообщение об ошибке:

При таком значении свойства «Режим использования модальности” допустимы только блокирующие окна.

Если выбран вариант «Использовать с предупреждениями”, то при открытии модальных окон в окно сообщений выводится текст:

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

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

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

Код нужно разделить на две части:

  • открытие блокирующего окна;
  • обработка выбора пользователя.

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

&НаКлиенте
Процедура ЗаполнитьТовары(Команда)
Оповещение = Новый ОписаниеОповещения(«ЗаполнитьТоварыВопросЗавершение”, ЭтотОбъект);
ТекстВопроса = «Табличная часть будет очищена. Продолжить?”;
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьТоварыВопросЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
//алгоритм заполнения
КонецЕсли;
КонецПроцедуры

После выполнения процедуры ПоказатьВопрос() система не останавливается, ожидая ответ пользователя, исполнение кода продолжается.

Пользователь сможет сделать выбор только после завершения работы всей процедуры. При этом будет вызвана экспортная процедура ЗаполнитьТоварыВопросЗавершение(). Ее название мы передали в конструктор объекта ОписаниеОповещения.

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

В рассмотренном примере вызываемая процедура расположена в модуле управляемой формы, поэтому мы передали в параметр ЭтотОбъект.

Рассмотрим вызов процедуры, расположенной в общем модуле. Для этого добавим новый общий модуль ОбработкаОповещений, установим для него флаг «Клиент (управляемое приложение)”, а признак «Глобальный” не устанавливаем. Расположим в этом модуле процедуру ЗаполнитьТоварыВопросЗавершение().

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

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

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

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

Этот объект (любого типа) будет передан в процедуру, описанную в ОписаниеОповещения, последним параметром.

На примере рассмотренного выше участка кода это можно сделать так:

&НаКлиенте
Процедура ЗаполнитьТовары(Команда)
Параметр1 = 0;
Параметр2 = 0;
СписокПараметров = Новый Структура(«Параметр1, Параметр2″, Параметр1, Параметр2);
Оповещение = Новый ОписаниеОповещения(«ЗаполнитьТоварыВопросЗавершение”, ЭтотОбъект,
СписокПараметров);
ПоказатьВопрос(Оповещение, «Табличная часть будет очищена. Продолжить?”,
РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьТоварыВопросЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
//анализируем ДополнительныеПараметры.Параметр1
//анализируем ДополнительныеПараметры.Параметр2
КонецЕсли;
КонецПроцедуры

Если нужно передать только одно значение, то структуру можно не использовать, а присвоить это значение параметру ДополнительныеПараметры конструктора объекта ОписаниеОповещения.

Рассмотрим несколько примеров работы с блокирующими окнами.

Задача 1. Открытие другой формы

Из формы документа по нажатию на кнопку «Открыть параметры” нужно открыть форму, на которой расположены два флажка Параметр1 и Параметр2, которые должен установить пользователь. После закрытия формы вывести в строку сообщений значения параметров.

Создаем общую форму «ФормаПараметров”, на которой размещаем реквизиты Параметр1 и Параметр2, а также команду ЗакрытьФорму:

Обработчик команды выглядит следующим образом:

Обработчик команды выглядит следующим образом:&НаКлиенте
Процедура ЗакрытьФорму(Команда)
СписокПараметров = Новый Структура(«Параметр1, Параметр2”, Параметр1, Параметр2);
Закрыть(СписокПараметров);КонецПроцедуры

Для формы свойство РежимОткрытияОкна устанавливаем в «Блокировать весь интерфейс”:

На форме документа располагаем команду ОткрытьПараметры, обработчик которой описываем следующим образом:

&НаКлиенте
Процедура ОткрытьПараметры(Команда)
Оповещение = Новый ОписаниеОповещения(«ОткрытьПараметрыЗавершение”, ЭтотОбъект);
ОткрытьФорму(«ОбщаяФорма.ФормаПараметров”, , , , , , Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПараметрыЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ТипЗнч(Результат) = Тип(«Структура”) Тогда
Для каждого КлючЗначение Из Результат Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = «Ключ: «”” + КлючЗначение.Ключ + «””, значение = ”
+ КлючЗначение.Значение;
Сообщение.Сообщить();
КонецЦикла;
КонецЕсли;
КонецПроцедуры

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

Для увеличения нажмите на изображение.

Режим открытия окна можно также указывать в последнем параметре процедуры ОткрытьФорму.

&НаКлиенте
Процедура ОткрытьПараметры(Команда)
Оповещение = Новый ОписаниеОповещения(«ОткрытьПараметрыЗавершение”, ЭтотОбъект);
ОткрытьФорму(«ОбщаяФорма.ФормаПараметров”, , , , , , Оповещение,
РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
КонецПроцедуры

Задача 2. Вопрос при закрытии формы

При закрытии окна обработки задавать пользователю вопрос, действительно ли он хочет закрыть окно.

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

&НаКлиенте
Перем НужноЗакрыватьФорму;
&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
Если НЕ НужноЗакрыватьФорму = Истина Тогда
Отказ = Истина;
Оповещение = Новый ОписаниеОповещения(«ПередЗакрытиемЗавершение”, ЭтотОбъект);
ПоказатьВопрос(Оповещение, «Вы действительно хотите закрыть окно?”,
РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытиемЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
НужноЗакрыватьФорму = Истина;
Закрыть();
Иначе
НужноЗакрыватьФорму = Неопределено;
КонецЕсли;
КонецПроцедуры

В процедуре ПередЗакрытием формы пользователю задается вопрос, флаг Отказ выставляется в Истина, закрытие формы отменяется.

После утвердительного ответа на вопрос переменная НужноЗакрыватьФорму устанавливается в Истина, форма закрывается повторно.

Задача 3. Ввод числового значения

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

Для этого необходимо воспользоваться методом ПоказатьВводЧисла() вместо ВвестиЧисло(), который открывает блокирующее окно вместо модального.

&НаКлиенте
Процедура ВводЧисла(Команда)
Оповещение = Новый ОписаниеОповещения(«ВводЧислаЗавершение”, ЭтотОбъект);
ПоказатьВводЧисла(Оповещение, 0, «Введите количество”, 15, 3);
КонецПроцедуры
&НаКлиенте
Процедура ВводЧислаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если НЕ Результат = Неопределено Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = «Вы ввели количество ” + Результат;
Сообщение.Сообщить();
КонецЕсли;
КонецПроцедуры

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

Задача 4. Выбор цвета

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

Добавим на форму команду ВыборЦвета со следующим обработчиком:

&НаКлиенте
Процедура ВыборЦвета(Команда)
ДиалогВыбораЦвета = Новый ДиалогВыбораЦвета;
Оповещение = Новый ОписаниеОповещения(«ВыборЦветаЗавершение”, ЭтотОбъект);
ДиалогВыбораЦвета.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВыборЦветаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если НЕ Результат = Неопределено Тогда
Элементы.ВыборЦвета.ЦветФона = Результат;
КонецЕсли;
КонецПроцедуры

Для объектов ДиалогВыбораЦвета (а также ДиалогРедактированияСтандартногоПериода, КонструкторФорматнойСтроки, ДиалогРасписанияРегламентногоЗадания, ДиалогВыбораШрифта) метод Показать() открывает блокирующее окно.

После закрытия окна будет вызвана процедура, в первый параметр которой будет передано выбранное значение (цвет, шрифт и т.д.) или значение Неопределено, если пользователь отказался от выбора.

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

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

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

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

Какой практический вывод можно сделать из этой информации? А вывод довольно простой – если по какой-то причине в вашей конфигурации до сих пор существуют модальные вызовы, то в этих местах в в веб-клиенте будет выдаваться окно с сообщением об ошибке. Хочется предостеречь от попыток «нагуглить” какое-то быстрое решение данной проблемы, т.к. основная масса советов сводится к такому рецепту: в конфигураторе на уровне конфигурации в свойстве «Режим использования модальности» поставить значение «Использовать». Естественно, в данный момент, это работать не будет только из-за того, что сами современные браузеры уже не поддерживают модальные вызовы.

И у вас есть всего два пути, каким образом решить описанную выше проблему:

  1. Обновить платформу до релиза 8.3.10+ (8.3.11), установить свойство конфигурации «Режим совместимости» в «Не использовать» и переписать фрагменты кода, использующие модальные методы на асинхронную модель построения бизнес-логики
  2. Рекомендовать вашим клиентам пользоваться устаревшими браузерами, где модальные вызовы еще поддерживались (Mozilla Firefox версии 37 и ниже, Chrоme ниже 37 версии и т.д.).

Кстати, начиная с релиза 8.3.11, больше не поддерживаются веб-браузеры Microsoft Internet Explorer версий 8 и 9.

С веб-браузерами в свете модальности мы разобрались, теперь настала пора прояснить ситуацию и с остальными клиентами.

Начиная с версии 8.3.5 свойство «Режим использования модальности» в тонком и толстом клиентах учитывается, только если указан параметр командной строки /EnableCheckModal. Этот параметр автоматически подставляется в командную строку только при запуске приложения из конфигуратора. Если же этот параметр не указан, то генерация исключений не происходит и соответствующие предупреждения не показываются. Т.е. на практике в случае использования толстого и тонкого клиента никакого кардинального изменения в работе при использовании режима модальности не наблюдается – модальные вызовы будут работать так же, как и работали ранее, при этом не выдавая никаких предупреждений, как в веб-клиенте.

Чтобы расставить все точки над «i”, заметим, что начиная с редакции 8.3.9 в толстом клиенте игнорируется свойство конфигурации «Режим использования синхронных вызовов расширений платформы и внешних компонент», при этом соответствующие синхронные методы работают без генерации исключений и вывода предупреждений. Указанное игнорируемое свойство было добавлено в редакции 8.3.5 с целью поддержки асинхронной работы с внешними компонентами, криптографией и расширениями для работы с файлами в веб-браузере Google Chrome. Понятно, что к толстому клиенту это никакого отношения не имеет, и поэтому «тихое” игнорирование данного свойства просто исключило лишние проверки использования синхронных методов при использовании конфигурации.

Кстати! Из-за того, что платформа уверенно движется в сторону веба, с версии 8.3.8 разработчики ввели определенные ограничения на программный код, который связан с логикой закрытия формы или приложения, исполняемый в толстом и тонком клиентах. Обязательно прочтите нашу статью, подробно освещающую этот нюанс. Кроме того, в курсе «Профессиональная разработка интерфейсов и форм в 1С:Предприятие 8.3», есть глава, посвященная отказу от модальности, и вы можете почерпнуть массу полезной и актуальной информации по этой теме.

Коллеги, существуют две вещи которые можно читать бесконечно: ленту вконтакте и список изменений в очередном релизе платформе, поэтому, давайте подводить окончательные итоги 😉

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

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

Вместо заключения

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

На специализированных интернет-ресурсах часто можно прочесть просьбы от начинающих программистов и их более зрелых коллег посоветовать им материалы, которые помогли бы им разобраться в обширных и порой кажущихся бесконечными, возможностях платформы 1С. Мы, по традиции, рекомендуем обратить ваше внимание на наши курсы по программированию. Это сотни часов видео по самым актуальным темам от признанных гуру-разработки 😉

А как же «не переключайтесь»? Естественно! У нас еще тонны интересного и полезного материала по разработке, оптимизации и еще многому чему. Так что, изучайте, применяйте и да прибудет с вами сила 😉

PDF-версия статьи для участников группы ВКонтакте

Мы ведем группу ВКонтакте – http://vk.com/kursypo1c.

Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.

Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)

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

Добавить комментарий

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