Нюансы перехода на бухгалтерию 3.0

назад


Конспект статьи «1С:Предприятие Бухгалтерия переход с редакции 2.0 на 3.0. Практика перевода информационной базы для работы в управляемом приложении. (Инфостарт, пользователь Kosstikk)«

http://infostart.subsystems.ru/public/195409/

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

Подсистемы, роли, критерии отбора, общие формы, формы объектов, макеты, журналы, подписки (всю ветку общие, все формы, макеты документов и справочников, все отчеты, все обработки) можно помечать на обновление, при необходимости эти объекты конфигурации можно будет восстановить из копии конфигурации 2.0.»


«Добавленные документы/справочники - необходимо адаптировать для работы в управляемом приложении: добавить в необходимые подсистемы, разработать управляемые формы, добавить необходимые команды, включить «Использовать стандартные команды», ознакомится с используемыми общими командами и новыми подписками на события.»


«При переносе добавленного функционала следует обращать внимание на измененные типовые объекты: процедуры функции общих модулей, переименованные реквизиты/объекты (например ФизЛица/ФизическиеЛица, ДолжностиОрганизаций/Должности), принципиальные отличия в хранении информации (теперь контактная информация хранится непосредственно в табличных частях объектов)»


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

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

СчетФактура = РаботаСОбычнымиФормами.НайтиПодчиненныйСчетФактуруВыданныйНаРеализацию(ОбъектДокРеализации.Ссылка);

//Промежуточный модуль:
Функция НайтиПодчиненныйСчетФактуруВыданныйНаРеализацию(ДокументОснование, ИсключаемыйСФ = Неопределено, ПометкаУдаления = Ложь, СтруктураОтбора = Неопределено) Экспорт  
 Возврат УчетНДСПереопределяемый.НайтиПодчиненныйСчетФактуруВыданныйНаРеализацию(ДокументОснование, ИсключаемыйСФ, ПометкаУдаления, СтруктураОтбора); 
КонецФункции

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

СчетФактураОбъект = РаботаСОбычнымиФормами.ВыполнитьНаСервере(Истина, "Документы.СчетФактураВыданный.СоздатьДокумент()"); 
РаботаСОбычнымиФормами.ВыполнитьНаСервере(Ложь, "Параметр1.УстановитьНовыйНомер(Параметр2)", СчетФактураОбъект , РеализацияТоваровУслугОбъект.Организация.Префикс); 

// Промежуточный модуль:
Функция ВыполнитьНаСервере(ВернутьРезультат, Команда, Параметр1 = Неопределено, Параметр2 = Неопределено, Параметр3 = Неопределено, Параметр4 = Неопределено) Экспорт  
 Если ВернутьРезультат Тогда 
 Возврат Вычислить(Команда);
 Иначе 
 Выполнить(Команда); 
 Возврат Неопределено;
 КонецЕсли;
КонецФункции

Таже было выявлено, что при использовании методов объектов из толстого клиента напрямую, не обрабатываются стандартные процедуры из модуля объекта, например при использовании метода документа Заполнить() не вызывается процедура ОбработкаЗаполнения(), т.е. промежуточный модуль все-таки придется использовать если вы работаете с методами объекта.

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

&НаКлиенте 
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) 
 //Вставить содержимое обработчика.
 ПараметрыФормы = Новый Структура("",);
 ОткрытьФорму("Обработка.ГрупповоеФормирование.Форма", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); 
КонецПроцедуры

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


Во время создания собственных ролей наткнулся на очень неприятный нюанс, когда роли «зависают» и изменения не применяются при перезапусках отладки. Проблема заключалась в том, что в 1С используются механизмы кэширования и сохранения настроек, которые просто так не чистятся, необходимо использовать обработку из «инструментов разработчика» (есть в шаблоне конфигурации SSL/Библиотека стандратных подсистем).


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

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

Далее накладываются доступность команды по ролям - если у пользователя есть нужная роль на объект/команду - команда доступна в интерфейсе.

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

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

Т.е. все достаточно просто =)) если что-то не отображается, а должно, скорее всего забыли включить «использовать стандартные команды» или работает какая-либо функциональная опция, которая как правило связана с константой. В 3.0 столкнулся с достаточно большим объемом скрытых настроек.»


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


«В целом при переходе на новую редакцию очень порадовало, что настройку клиент-банка, загрузку данных из ЗУП не нужно было производить повторно (у нас были доработки по правилам обмена, поэтому были свои нюансы).

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

В редакции 3.0 очень много плюшечек из библиотеки стандартных подсистем, скрытых функциональными опциями, к которым не было доступа из интерфейса, например уже реализована подсистема «Присоединенные файлы» и есть возможность «Хранить файлы в томах на диске». Мы использовали подсистемы БСП уже достаточно давно и при переходе я был приятно удивлен, что теперь сопровождать подсистему нет необходимости =). Скорее всего вопрос возможных настроек программы - это только вопрос времени, а возможно просто не хотят перенагружать интерфейс. В моем случае я позаимствовал из БСП общие формы настроек и добавил их в новую подсистему.»