Различия

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

Ссылка на это сравнение

common_all:perehodna30 [2014/09/24 09:12]
common_all:perehodna30 [2014/09/24 09:12] (текущий)
Строка 1: Строка 1:
 +{{ :​common_pics:​1c_128.png?​nolink&​128|}}
 +======Нюансы перехода на бухгалтерию 3.0======
  
 +[[common_all:​managedforms|назад]]
 +
 +----
 +
 +**Конспект статьи "​1С:​Предприятие Бухгалтерия переход с редакции 2.0 на 3.0. Практика перевода информационной базы для работы в управляемом приложении. (Инфостарт,​ пользователь Kosstikk)"​**
 +
 +[[http://​infostart.subsystems.ru/​public/​195409/​|http://​infostart.subsystems.ru/​public/​195409/​]]
 +
 +"​все доработки,​ которые прежде не были адаптированы к "​Управляемому приложению"​ работать не будут. Имеющиеся роли теряют свою актуальность - в 3.0 они разделены на составные роли, из которых в дальнейшем формируются профили групп доступа. Интерфейсы в управляемом приложении не используются. Всвязи с этим основной задачей при переводе типового функционала является сохранность добавленных вами метаданных участвующих в храненнии информации,​ например добавленных объектов,​ реквизитов,​ табличных частей,​ движений документов,​ типов в уже существующих данных,​ возможно предопределенных элементов (их нельзя удалить,​ они станут не предопределенными но остануться в базе).
 +
 +Подсистемы,​ роли, критерии отбора,​ общие формы, формы объектов,​ макеты,​ журналы,​ подписки (всю ветку общие, все формы, макеты документов и справочников,​ все отчеты,​ все обработки) можно помечать на обновление,​ при необходимости эти объекты конфигурации можно будет восстановить из копии конфигурации 2.0."
 +
 +----
 +
 +"​Добавленные документы/​справочники - необходимо адаптировать для работы в управляемом приложении:​ добавить в необходимые подсистемы,​ разработать управляемые формы, добавить необходимые команды,​ включить "​Использовать стандартные команды",​ ознакомится с используемыми общими командами и новыми подписками на события."​
 +
 +----
 +
 +"​При переносе добавленного функционала следует обращать внимание на измененные типовые объекты:​ процедуры функции общих модулей,​ переименованные реквизиты/​объекты (например ФизЛица/​ФизическиеЛица,​ ДолжностиОрганизаций/​Должности),​ принципиальные отличия в хранении информации (теперь контактная информация хранится непосредственно в табличных частях объектов)"​
 +
 +----
 +
 +В условиях достаточной срочности перехода и не принципиальности работы в тонком клиенте для пользователей есть возможность сделать переход более плавным,​ на моем примере повторная реализация порядка 60 отчетов и обработок на управляемых формах заняла бы достаточно долгое время. Есть вариант использования режима запуска "​Толстый клиент (управляемое приложение),​ который настраивается отдельно для отладки и при подключении базы пользователю
 +
 +Такой режим запуска позволит использовать старые отчеты/​обработки добавленные в конфигурацию (внешние запускаться не будут) в управляемом приложении. Потребуется некоторая переработка отчетов/​обработок связанная с п. 5. Так же есть особенности связанные с тем, что вызов из обычных форм серверных процедур/​функций возможен только из общих модулей у которых установлен признак "​Вызов сервера",​ поэтому возможно возникнет необходимость создать свой промежуточный модуль с установленным признаком "​Вызов сервера"​ через который вызывать серверные процедуры и функции,​ например:​
 +
 +<​code>​СчетФактура = РаботаСОбычнымиФормами.НайтиПодчиненныйСчетФактуруВыданныйНаРеализацию(ОбъектДокРеализации.Ссылка);​
 +
 +//​Промежуточный модуль:​
 +Функция НайтиПодчиненныйСчетФактуруВыданныйНаРеализацию(ДокументОснование,​ ИсключаемыйСФ = Неопределено,​ ПометкаУдаления = Ложь, СтруктураОтбора = Неопределено) Экспорт  ​
 + ​Возврат УчетНДСПереопределяемый.НайтиПодчиненныйСчетФактуруВыданныйНаРеализацию(ДокументОснование,​ ИсключаемыйСФ,​ ПометкаУдаления,​ СтруктураОтбора); ​
 +КонецФункции</​code>​
 +
 +Также при работе с обычными формами в упрвляемом приложении следует учитывать возможные подписки на события для типовых объектов,​ обработчики которых могут быть размещены в общих модулях без признака "​Вызов сервера",​ например при создании в обработке объекта документа РеализацияТоваровУслуг появится ошибка "​При подписке АвтономнаяРаботаЗарегистрироватьИзменениеДокумента на событие ПередЗаписью произошла ошибка. Обработчик события не найден."​ это связанно с тем что ваша обработка/​отчет выполняется в контексте толстого клиента и не видит данную подписку в серверном модуле. В таком случае вам необходимо ставить признак "​Вызов сервера"​ у типового модуля,​ подписок может быть очень много, также можно нарваться на передачу мутабельного значения,​ поэтому можно попробовать воспользоваться промежуточным обращением через модуль,​ с установленным признаком "​Вызов сервера",​ например:​
 +
 +<​code>​СчетФактураОбъект = РаботаСОбычнымиФормами.ВыполнитьНаСервере(Истина,​ "​Документы.СчетФактураВыданный.СоздатьДокумент()"​); ​
 +РаботаСОбычнымиФормами.ВыполнитьНаСервере(Ложь,​ "​Параметр1.УстановитьНовыйНомер(Параметр2)",​ СчетФактураОбъект , РеализацияТоваровУслугОбъект.Организация.Префикс); ​
 +
 +// Промежуточный модуль:​
 +Функция ВыполнитьНаСервере(ВернутьРезультат,​ Команда,​ Параметр1 = Неопределено,​ Параметр2 = Неопределено,​ Параметр3 = Неопределено,​ Параметр4 = Неопределено) Экспорт  ​
 + ​Если ВернутьРезультат Тогда ​
 + ​Возврат Вычислить(Команда);​
 + ​Иначе ​
 + ​Выполнить(Команда); ​
 + ​Возврат Неопределено;​
 + ​КонецЕсли;​
 +КонецФункции</​code>​
 +
 +Таже было выявлено,​ что при использовании методов объектов из толстого клиента напрямую,​ не обрабатываются стандартные процедуры из модуля объекта,​ например при использовании метода документа Заполнить() не вызывается процедура ОбработкаЗаполнения(),​ т.е. промежуточный модуль все-таки придется использовать если вы работаете с методами объекта.
 +
 +Для отображения обычных обработок/​отчетов в интерфейсе,​ нужно включить использование стандартных команд для объекта либо создать соответствующие команды в которых вызвать открытие формы обработки/​отчета.
 +
 +<​code>&​НаКлиенте ​
 +Процедура ОбработкаКоманды(ПараметрКоманды,​ ПараметрыВыполненияКоманды) ​
 + //​Вставить содержимое обработчика.
 + ​ПараметрыФормы = Новый Структура("",​);​
 + ​ОткрытьФорму("​Обработка.ГрупповоеФормирование.Форма",​ ПараметрыФормы,​ ПараметрыВыполненияКоманды.Источник,​ ПараметрыВыполненияКоманды.Уникальность,​ ПараметрыВыполненияКоманды.Окно); ​
 +КонецПроцедуры</​code>​
 +
 +Использование обычных форм для управляемого приложения может быть применено и для справочников/​документов,​ но учитывая использование в них стандартных механизмов которые в любом случае необходимо будет адаптировать,​ занятие это бесполезное. В любом случае данная особенность возможности запуска обычных форм не должна использоваться априори,​ а только при необходимости с дальнейшим переходом к управляемым формам.
 +
 +----
 +
 +Во время создания собственных ролей наткнулся на очень неприятный нюанс, когда роли "​зависают"​ и изменения не применяются при перезапусках отладки. Проблема заключалась в том, что в 1С используются механизмы кэширования и сохранения настроек,​ которые просто так не чистятся,​ необходимо использовать обработку из "​инструментов разработчика"​ (есть в шаблоне конфигурации SSL/​Библиотека стандратных подсистем).
 +
 +----
 +
 +"В конфигурации есть команды:​ стандартные,​ которые нужно не забывать включать для объектов ,​устанавливая признак "​использовать стандартные команды",​ к ним относятся команды открытия форм, форм списка,​ выбора,​ добавления изменения и т.д. И есть прочие команды:​ общие команды,​ команды печати,​ добавленные пользователем команды. ​
 +
 +Для того чтобы команда отображалась в интерфейсе она должна быть включена в подсистему,​ для подсистемы должен быть включен признак "​включать в командный интерфейс"​ и для команды в командном интерфейсе подсистемы (масло маслянное)) должна быть установлена видимость. ​
 +
 +Далее накладываются доступность команды по ролям - если у пользователя есть нужная роль на объект/​команду - команда доступна в интерфейсе.
 +
 +Далее накладываются возможные функциональные опции команды.
 +
 +Далее накладываются возможные настройки отображения команды для пользователя.
 +
 +Т.е. все достаточно просто =)) если что-то не отображается,​ а должно,​ скорее всего забыли включить "​использовать стандартные команды"​ или работает какая-либо функциональная опция, которая как правило связана с константой. В 3.0 столкнулся с достаточно большим объемом скрытых настроек."​
 +
 +----
 +
 +"​Есть небольшая особенность,​ о которой многие забывают,​ многое из того что вы используете сейчас в обычном приложении (консоли запросов,​ обработки по поиску дублей и управлению объектами) уже работают под 8.2, не обязательно искать нужную обработку под управляемое приложение если ее использование не имеет постоянного (несколько раз в день) характера. При необходимости вы можете запуститься в толстом клиенте обычном приложении (или запустить соответствующую отладку) и воспользоваться имеющейся обработкой."​
 +
 +----
 +
 +"В целом при переходе на новую редакцию очень порадовало,​ что настройку клиент-банка,​ загрузку данных из ЗУП не нужно было производить повторно (у нас были доработки по правилам обмена,​ поэтому были свои нюансы).
 +
 +Повторно прошлись по настройкам параметра учета и настройкам учетной политики,​ загрузить адресный классификато.
 +
 +В редакции 3.0 очень много плюшечек из библиотеки стандартных подсистем,​ скрытых функциональными опциями,​ к которым не было доступа из интерфейса,​ например уже реализована подсистема "​Присоединенные файлы"​ и есть возможность "​Хранить файлы в томах на диске"​. Мы использовали подсистемы БСП уже достаточно давно и при переходе я был приятно удивлен,​ что теперь сопровождать подсистему нет необходимости =). Скорее всего вопрос возможных настроек программы - это только вопрос времени,​ а возможно просто не хотят перенагружать интерфейс. В моем случае я позаимствовал из БСП общие формы настроек и добавил их в новую подсистему."​
 +
 +----
 +
 +<​code></​code>​
 +----