История установки и запуска 1С:УНФ. В трёх частях с прологом и эпилогом.
Пролог
Трудно сказать, какая именно последовательность событий, решений и жизненных развилок привели меня к этому жизненному моменту, может быть кризис среднего возраста, может взимное расположение небесных светил, есть еще зыбкое подозрение, что захотелось навести порядок в учёте, но уже это совсем маловероятная гипотеза. В конечном итоге в конторе завелась 1С:УНФ, и не просто завелась, а еще и была приобретена лицензионная версия, лицензионная, Карл!
|
По давно заведенной традиции, я бы даже сказал привычке, имеющей силу закона, была взята моя любимая настольная книга (см. правее) и работа по внедрению системы закипела. Поскольку УНФ позиционируется для субъектов МСБ, которые по определению должны экономить на всём, включая ИТ специалистов и сисадминов, предполагалось, что один айтишник, один вечер и 1000 мл. солодово-хмельного напитка это вполне достаточные ресурсы для внедрения и начального запуска системы, тем более, что ранее опыт общения с данной конфигурацией, правда рождённой в недрах другого разработчика уже был. Но вот тут проверенный годами метод (см. правее), к всеобщему удивлению дал сбой, и мне пришлось принять за клавиатурой позу бурундучка с обложки неоднократно упомянутой здесь книги и засесть за обработку напильником готового изделия до получения искомой формы самолета. |
![]() |
Дальнейшее повествование пойдет хронологически-хаотичном порядке, продиктованном душевным волнением и не до конца сформировавшейся психикой начинающего программиста-дебагера.
Глава «Мелкие неприятности»
Данная глава повествует о мелких неприятностях, встреченных на поросшем терновником пути внедрения, решаемых без применения популярных ныне технологий "аджайл девелопмента" и "дип машин лёрнинга", но тем не менее замеченных и временами поставивших в глубокий тупик.
Мелкая неприятность №1: "Префиксация"
После начального заполнения базовых сведений о компании настал счастливый миг создания первого документа и номером уникальным наречён он был, а вот префикс НФНФ вызвал стойкие ассоциации с тремя героями детского поросячье-строительного боевика. Ну да не беда, префиксы то поправить всегда можно, но не тут то было, перерыв все настройки префикс организации, так и не был обнаружен, но здравый смысл настойчиво убеждал, что где-то он должен быть, и как выяснилось, это поле в карточке организации было просто скрыто по умолчанию.
Префикс базы данных хоть и не был так коварно спрятан, но продираться к нему пришлось через дебри настроек в раздел «Интеграция».
Ввиду вышеизложенного было бы неплохо задавать префиксы в момент начальной настройки, а не искать их потом по всей системе.
Мелкая неприятность №2: "ЭСФ"
Каково же было моё удивление, когда я, перекопав все настройки, не обнаружил опции включения ЭСФ. Ну как же так? Ведь не может быть чтобы в версии 1.5. было, а в 1.6 выпили? И хотя конфигуратор утверждал, что всё на месте и ничего не отрезали, хитрый разработчик упорно намекал нам «А нетю! Покупайте БП или КА». Но нас то, бывалых людей, переживших 90-е, не обманешь, и легким движением манипулятора "мышь" через "Все фукнции" в константы, активируем там ЭСФ, и вуаля, всё на месте. Не отобрать у нас священного права на электронификацию документооборота! Даёшь ЭСФ в каждый офис!
Мелкая неприятность №3: "Валютная"
После выполнения ранее описанных квестов, настало время создать серьёзный документ. Расходная накладная и не меньше! Прошло всё достаточно гладко, но к удивлению собравшейся публики, движений по денежным регистрам документ не породил, также как и не породили их созданные затем Приходная накладная, Акт выполненных работ, Заказ-наряд и ряд других документов. Загадка бы могла существенно замедлить героический внедренческий поход, если бы не совет добрых людей о том, что несмотря на нашу исключительную привязанность к национальной валюте и презрение ко всяким долларам, евро и прочим атрибутам загнивающего капиталистического запада, нужно было включить поддержку нескольких валют, и сообщить УНФ, что 1 тенге = 1 тенге. Вот кто бы мог подумать, 1 тенге=1 тенге, невероятно, но факт! Вот так вот высшая математика победила эту мелкую неприятность.
Мелкая неприятность №4: "Биллинговая"
Наличие модуля биллинга для нас, как для сервисной компании, явилось одним из решающих факторов в пользу УНФ, но и тут нас поджидали грабли, неожиданные, как лосось, притаившийся в кустах черники. Нет, биллинг работает, он всё считает, выставляет расчетные документы, и к нему то как-раз пока претензий и нет, но заказ-наряды, которые являются основанием для биллинга формируют задолженность контрагента, и после выставления актов по данным заказ-нарядам задолженность никуда не девается, а просто удваивается, и после выставления актов, клиент должен денег и по заказам и по актам. Нет, я, как владелец бизнеса, совершенно не против такого порядка вещей, даже очень за, но тогда остро нужен мануал "Как убедить клиента заплатить два раза за одни и те же работы", в противном случае нужно сторнировать суммы заказ-нарядов, по которым уже выставлены акты выполненных работ.
Прочие мелкие неприятности
Здесь кратко пробегусь по мелким неприятностям, которые не заслужили отдельного номера, но тем не менее заслуживают, чтобы быть исправленными.
В форме карточки контрагента нет реквизита Кбе. ХЗ, может оно и заполняется автоматически от типа контрагента, но разум требовал ясности, потому поле было вынесено на экранную форму.
В карточке контрагента при быстром заполнении дополнительных адресов (через выпадающий список уже заполненных) заполнение происходит по свободной форме адреса, даже если изначальный адрес заполнен по полям. Если не читать этот креативный материал дальше, то и чёрт бы с ним, но в последующих главах будут высказаны мысли, для которых данное обстоятельство может оказаться весьма неудобным.
В расходной накладной в разделе «Реквизиты печати»-«Перевозка», поле Грузоотправитель заполняется из справочника «Контрагенты», а должно заполняться из справочника «Организации». Каюсь, забил я на сию неприятность, ибо в накладной мне это поле не сильно нужно, а в счете-фактуре сия беда отсутствует, ибо поле Грузоотправитель заполняется Организацией документа. Но в целом непорядок, и хорошо бы пофиксить.
Вне зависимости от включения или выключения параметра ГТД и контроль остатков по ГТД, счета-фактуры не формируют движений по регистрам, связанным с ГТД, и при включенном контроле остатков провести исходящий счет-фактуру невозможно, т.к. остаток товаров по ГТД всегда нулевой. Лечить на сию напасть, руки не дошли, да и нужды острой в том не было, ибо полез туда в надежде переточить модуль ГТД под учет источников происхождения, который был отсечен политической цензурой, но и тут меня ждал облом. Быть может позже.
Глава «Беды и печали, а также пути их лечения»
В этой главе будут описаны препятствия, которые потребовали все-таки залезть в исходный код, и тем самым вывели задачу внедрения УНФ из раздела "Далее-Далее-Готово" в достаточно комплексное мероприятие.
Беда/печаль №1:
Печатная форма документа «Счет на оплату с факсимиле» выдает ошибку «Поле объекта не обнаружено (ИНН)»
Лечение:
В Функции ПечатьСчетНаОплатуСФаксимильнойПодписью Модуля менеджера документа СчетНаОплату в строке 901 заменить код:
ОбластьМакета.Параметры.ИНН = СведенияОбОрганизации.ИНН;
ОбластьМакета.Параметры.КПП = СведенияОбОрганизации.КПП;
На:
ОбластьМакета.Параметры.ИдентификационныйНомер = СведенияОбОрганизации.ИдентификационныйНомер;
Беда/печаль №2:
При добавлении Контакту контрагента типа контактной информации Skype происходит ошибка:
{ОбщийМодуль.УправлениеКонтактнойИнформациейСлужебный.Модуль(1622)}: Ошибка при вызове метода контекста (Создать) Результат.Состав = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИмен, "Skype")); по причине: Несоответствие типов (параметр номер '1')
Лечение:
Разбираться в фабриках XDTO и прочих эзотерических методах, на которых в УНФ (и полагаю не только) реализована работа с контактной информацией оказалось выше моих моральных сил, поэтому поиск лечения был доверен разработчикам или отложен до лучших времен.
Беда/печаль №3:
Невозможно заполнить поле «Адрес по прописке» в карточке сотрудника т.к. на поле «Город» всегда выдается ошибка «Не указана область».
Лечение:
Искать глубинные причины данного поведения было лень, тем более, что адресного классификатора для Алматы и Астаны так до сих пор для УНФ нет, поэтому был просто закомментирован кусок кода Модуля УправлениеКонтактнойИнформациейСлужебный в Функции ОбщиеГруппыОшибокЗаполненияАдреса:
Если ПустаяСтрока(Область) Тогда
ДобавитьОшибкуЗаполненияАдреса(НеЗаполненыОбязательныеПоля, "Область",
НСтр("ru = 'Не указана область.'"), "Область");
КонецЕсли;
Заодно еще был выпилен кусок кода, который проверяет, чтобы в индексе было только 6 цифр и никак иначе, а зачем это было сделано мы расскажем в следующей главе.
Беда/печаль №4:
При создании ЭСФ не заполняются поля доверенности и договора поставки
Лечение:
В обработке ОбменЭСФ в Функции НовыеРезультатыЗапросовПоРеквизитам в SQL запрос в строке 2588 добавить поля:
| СчетФактураВыданный.Договор КАК ДоговорПоставки,
| СчетФактураВыданный.ДоверенностьНомер КАК ДоверенностьНаПоставкуНомер,
| СчетФактураВыданный.ДоверенностьДата КАК ДоверенностьНаПоставкуДата,
И в SQL запрос в строке 2721 добавить поля:
| ДанныеСчетовФактур.ДоговорПоставки,
| ДанныеСчетовФактур.ДоверенностьНаПоставкуНомер,
| ДанныеСчетовФактур.ДоверенностьНаПоставкуДата,
Беда/печаль №5:
При выгрузке ЭСФ не выгружается дата и номер документа, подтверждающего поставку
Лечение:
В обработке ОбменЭСФ в Процедуре ЗаполнитьInvoice после строки 290 вставить код:
Если НЕ ПустаяСтрока(ПоставщикиСтрока.ДокументПодтверждающийПоставкуНомер) Тогда
seller.deliveryDocNum = ПоставщикиСтрока.ДокументПодтверждающийПоставкуНомер;
КонецЕсли;
Если НЕ ПустаяСтрока(ПоставщикиСтрока.ДокументПодтверждающийПоставкуДата) Тогда
seller.deliveryDocDate = Формат(ПоставщикиСтрока.ДокументПодтверждающийПоставкуДата, "ДФ=dd.MM.yyyy; ДП=01.01.0001");
КонецЕсли;
Врожденное чутьё подсказывает мне, что описанные случаи это далеко не последний раз, когда мне придется нырнуть в конфигуратор и погрузиться в волшебный мир объектно-ориентированного программирования, да еще и на родном языке, но пока на начальном этапе, это все грабли, которые препятствовали запуску УНФ в тестовую эксплуатацию, но мы то знаем, что нет предела совершенству, о чем и повествует последующая глава.
Глава «А давайте запилим что-нибудь еще»
Данная предзаключительная глава повествует о попавшихся на глаза неудобствах интерфейса или юзабилити, доработка которых могла бы сделать УНФ немного удобнее.
Что-нибудь №1:
Добавить справочник «Организационно-правовая форма», в котором будет храниться полное и сокращенное наименование ОПФ (ТОО, АО, ИП и т.д.) и формировать полное и сокращенное наименование контрагента согласно данному справочнику по настраиваемому шаблону: например {ОПФ.Полное}” {Наименование}”. Это позволит очень сильно упростить заполнение карточки контрагента, т.к. писать руками каждый раз «Товарищество с ограниченной ответственностью» просто невыносимо.
Что-нибудь №2:
В документе «Расходная накладная» закладку «Доверенность» лучше вынести в общие закладки документа. Заполняются эти поля постоянно, и неудобно залезать в дебри через реквизиты печати, да и неподготоволенному пользователю догадаться искать поля реквизитов доверенности в разделе "Реквизиты печати" задача не из тривиальных.
Что-нибудь №3:
В расходной накладной в разделе «Реквизиты печати»-«Перевозка», было бы удобнее, чтобы реквизиты «Грузоотправитель», «Грузополучатель» и «Адрес доставки» при создании документа заполнялись значениями по умолчанию «Организация документа», «Контрагент документа», «Адрес доставки контрагента», потому, что каждый раз залезать в дебри неудобно, а поля необязательные и потом эти поля уходят в счет-фактуру и счет-фактура получается недозаполненным, а в 90% случаев поля заполняются именно значениями по умолчанию.
Что-нибудь №4:
При создании счета-фактуры поля Пункт назначения и способ отправления было бы удобнее заполнять значениями по умолчанию «Адрес доставки» из накладной, и строкой «Самовывоз», если не заполнены параметры перевозчика, или «Транспортная компания» если параметры перевозчика заполнены.
Что-нибудь №5:
Переработать обработку «Банк-Клиент», чтобы можно было настраивать шаблоны соответствия или замены полей для Выгрузки/Загрузки различных банков, т.к. наименование и состав реквизитов в разных банках отличается, например Казком выгружает реквизит «ПолучательБик», а Халык и Форте «ПолучательБанкБИК», также например Фортебанк выгружает ряд дополнительных реквизитов, которые по идее просто должны игнорироваться при загрузке, однако в текущей версии приводят к ошибке, например реквизиты «Руководитель», «ГлавныйБухгалтер», «КодНазначениеПлатежа». Таким образом, если для каждого типа банк-клиента просто задавать соответствие наименований обязательных реквизитов, а прочие передаваемые реквизиты просто игнорировать при загрузке, и тогда настройка под любой банк-клиент могла производиться самим пользователем.
Что-нибудь №6:
Изменить формат поля индекса в адресной форме на произвольные 7 буквоцифр, т.к. казахстанский индекс уже пару лет как не 6-значный цифровой, а 7-значный буквенно-цифровой.
А вот тут будет небольшое лирическое отступление.
Не думал, что скажу такое, но я восхищен нашей Казпочтой, они назначили индекс каждому зданию в Казахстане, и не просто назначили, а еще и запили нормальную систему поиска индексов и адресов и открытый API. Как сказал один очень креативный человек, когда я рассказал ему про новые индексы: "Вау! Это же ИИН здания! Круто, теперь можно просто набить две татухи со штрих-кодами, одну с ИИНом, а вторую с индексом, и тогда любой кто найдет мычачее/уже_немычачее тело, сможет легко определить во-первых как тело называется, а во-вторых куда это тело желательно доставить."
Ну, а что касательно УНФ, то можно запилить небольшую обработку, чтобы вытаскивать полный адрес по индексу, а еще можно запилить создание готовой наклейки на конверт для отправки документов по почте прямо из 1С, с регистрацией трекингового номера в онлайне на сайте Казпочты, но это уже наверное мечты.
Эпилог
Ну вот и настал этот торжественный момент.
- Ключ на старт!
- Центр! Центр! Какой ключ на старт??? Тут же нихрена не работает! У вас там что у всех крыши...



Комментарии
Новый комментарий