Обнаружено логическое завершение исходного текста модуля

Обнаружено логическое завершение исходного текста модуля

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

Пример кода, вызывающего ошибку:

Процедура ПроверитьТэгиИПоставщиков() Для каждого СтрокаТ из тПоставщиков Цикл Если ПустаяСтрока(СтрокаТ.TAG) или ЗначениеЗаполнено(СтрокаТ.Поставщик) = Ложь Тогда СтрокаТ.Создавать = Ложь; Сообщить(«Не заполнены данные по поставщику «+СтрокаТ.TAG+»!»); КонецЕсли; КонецЦикла; КонецПроцедуры; Процедура ИмяЛокальногоОтветаОткрытие(Элемент, СтандартнаяОбработка) Текст = Новый ТекстовыйДокумент; Текст.Прочитать(ИмяЛокальногоОтвета); Текст.Показать(«Файл ответа»); КонецПроцедуры

Разбор полётов

Сообщение ошибке «Обнаружено логическое завершение исходного текста модуля» возникает, когда вы добавляете функцию/процедуру после «;» даже, если она создается автоматически через конструкторы событий

Ошибка в этой строке:

КонецПроцедуры;

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

1С считает эту «;» частью кода тела модуля, а процедуры/функции в нем недопустимы

Решение простое:

Найти и убрать точку с запятой (необязательно что это будет последняя функция или процедура)

Переопределение процедур и функций в расширении конфигурации

Основная информация о механизме расширений описана в статье Расширения конфигураций 1С для платформы 8.3.6.

Переопределение процедур и функций (событий)

При переопределении событий, имя процедуры состоит из:
Расш1_ (Наименование расширения)
ПриОткрытии (Наименование переопределяемого события)
Перед, После, Вместо (Порядок выполнения)
&НаКлиенте
Процедура Расш1_ПриОткрытииПеред(Отказ)
//Программный код
//Программный код
//Программный код
КонецПроцедуры
&НаКлиенте
Процедура Расш1_ПриОткрытииПосле(Отказ)
//Программный код
//Программный код
//Программный код
КонецПроцедуры
&НаКлиенте
Процедура Расш1_ПриОткрытииВместо(Отказ)
//Программный код
//Программный код
//Программный код
КонецПроцедуры

Переопределение процедур и функций (не событий)

Начиная с версии платформы 8.3.9 в расширениях модулей стало доступно переопределение процедур и функций. Для переопределения существуют специальные конструкции (Аннотации) встроенного языка, которые задают порядок вызова методов.
Метод расширения ПродолжитьВызов() — вызывает процедуру или функцию основной конфигурации, которая в данный момент переопределяется и может принимать на вход параметры и возвращать значение переопределяемой процедуры или функции.
&Перед — означает что процедура «РассчитатьОстаткиСвоя» будет выполнена перед вызовом «РассчитатьОстатки».
&Перед(«РассчитатьОстатки»)

Процедура РассчитатьОстаткиСвоя()
//Программный код
//Программный код
//Программный код
КонецПроцедуры
&После — означает что процедура «РассчитатьОстаткиСвоя» будет выполнена после вызова «РассчитатьОстатки».
&После(«РассчитатьОстатки»)
Процедура РассчитатьОстаткиСвоя()
//Программный код
//Программный код
//Программный код
КонецПроцедуры
&Вместо — означает что процедура «РассчитатьОстаткиСвоя» будет выполнена вместо «РассчитатьОстатки».
&Вместо(«РассчитатьОстатки»)
Процедура РассчитатьОстаткиСвоя()
//Программный код
//Программный код
//Программный код
КонецПроцедуры
Функции отличаются от процедур тем свойством, что могут возвращать значение. Поэтому для функций может
использоваться только анотация &Вместо и метод ПродолжитьВызов().
&Вместо(«РассчитатьОстатки»)
Функция РассчитатьОстаткиСвоя(Параметр)
Значение = ПродолжитьВызов(Параметр)
//Программный код
//Программный код
//Программный код
Возврат Значение;
КонецФункции

Иерархия библиотек. Автоматическое обновление или как отказаться от переопределяемых модулей

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

…трудоемкость последующих обновлений переопределяемых модулей в конфигурации-потребителе…

а также

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

А почему бы нам не сделать то, что кажется невозможным? Попробуем это на простом примере.

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

Сумма = Количество * Цена

Этот расчет – функционал базовой библиотеки, которая будет лежать в основе остальных библиотек.

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

Сумма = Сумма * (100 + Ставка) / 100

Аналогичным образом формализуем учет скидок:

Сумма = Сумма * (100 — Скидка) / 100

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

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

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

Несколько слов по поводу выполнения этих методов. Самый простой вариант – создание некоего «менеджера», который будет последовательно вызывать каждую процедуру. Но я решил остановиться на другом способе – вызывать самую последнюю процедуру из списка и передавать ей управление. Решение о вызове предыдущего метода полностью возлагается на эту процедуру. Такой вариант более гибок – предыдущий метод может быть вызван в любом месте, а может и быть просто проигнорирован, если в нем нет нужды. Порядок методов в списке определяется порядком расположения подсистем библиотек внутри «ПереопределяемыеОбъектыБиблиотек».

Как это выглядит на практике:

В документе «Продажа» реализована команда:

&НаСервере Процедура РассчитатьНаСервере(ИД) ПараметрыРасчета = Объект.Товары.НайтиПоИдентификатору(ИД); Последовательность = УправлениеБиблиотекамиКлиентСервер.ПоследовательностьМодулейПроцедур(«РасчетСумм»); УправлениеБиблиотеками.ВыполнитьПредыдущуюПроцедуруНаСервере(ПараметрыРасчета, Последовательность); КонецПроцедуры &НаКлиенте Процедура Рассчитать(Команда) ТекущиеДанные = Элементы.Товары.ТекущиеДанные; Если ТекущиеДанные <> Неопределено Тогда РассчитатьНаСервере(ТекущиеДанные.ПолучитьИдентификатор()); КонецЕсли; КонецПроцедуры

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

Процедура РасчетСумм(Параметр,Последовательность)Экспорт УправлениеБиблиотеками.ВыполнитьПредыдущуюПроцедуруНаСервере(Параметр, Последовательность); Скидка = РегистрыСведений.СкидкиНоменклатуры.Получить(новый Структура(«Номенклатура»,Параметр.Номенклатура)).Скидка; Параметр.Сумма = Параметр.Сумма * (100 — Скидка) / 100; КонецПроцедуры

В процессе расчета мы сначала выполняем предыдущий метод РасчетСуммСНалогом.РасчетСумм, а затем производим обработку скидки.

Перед налоговым расчетом мы так же вызываем предыдущий метод РасчетСуммБазовый.РасчетСумм:

Процедура РасчетСумм(Параметр,Последовательность)Экспорт УправлениеБиблиотеками.ВыполнитьПредыдущуюПроцедуруНаСервере(Параметр, Последовательность); Параметр.Сумма = Параметр.Сумма * (100 + Константы.СтавкаНалога.Получить()) / 100; КонецПроцедуры

В котором выполняем самый первый расчет.

Процедура РасчетСумм(Параметр,Последовательность)Экспорт УправлениеБиблиотеками.ВыполнитьПредыдущуюПроцедуруНаСервере(Параметр, Последовательность); Параметр.Сумма = Параметр.Количество * Параметр.Цена; КонецПроцедуры

в последнем случае метод УправлениеБиблиотеками.ВыполнитьПредыдущуюПроцедуруНаСервере не выполнит ничего, так как предыдущих процедур не осталось.

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

В обработке «Инфо» создается общий табличный документ:

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОписанияМакетов = УправлениеБиблиотекамиВызовСервера.ДопОбъектыПоВиду(«Инфо»); Для каждого ОписаниеМакета Из ОписанияМакетов Цикл Таблица.Вывести(ПолучитьОбщийМакет(ОписаниеМакета.ИмяОбъекта)); КонецЦикла; КонецПроцедуры

Как внедрять или обновлять получившиеся библиотеки.

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

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

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

1cv8.exe DESIGNER /F»c:\bases\prod\» /MergeCfg»c:\bases\lib2.cf» -Settings»c:\bases\UpdLib2Settings.xml»

Файл настроек нужен для того, чтобы указать платформе, какие объекты следует объединить и правила такого объединения. Описание формата файла: https://its.1c.ru/db/v8314doc#bookmark:adm:TI000000713 . Пример файла:

<?xml version=»1.0″ encoding=»UTF-8″?> <Settings xmlns:xs=»http://www.w3.org/2001/XMLSchema» xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» xmlns=»http://v8.1c.ru/8.3/config/merge/settings» version=»1.1″> <Parameters> <AllowMainConfigurationObjectDeletion>true</AllowMainConfigurationObjectDeletion> </Parameters> <Objects> <Configuration> <MergeRule>DoNotMerge</MergeRule> </Configuration> <Object fullNameInSecondConfiguration=»Подсистема.Скидки»> <MergeRule>GetFromSecondConfiguration</MergeRule> <Subsystem configuration=»Second» includeObjectsFromSubordinateSubsystems=»true»> <MergeRule>GetFromSecondConfiguration</MergeRule> </Subsystem> </Object> <Object fullName=»Подсистема.Скидки»> <MergeRule>GetFromSecondConfiguration</MergeRule> <Subsystem configuration=»Main» includeObjectsFromSubordinateSubsystems=»true»> <MergeRule>GetFromSecondConfiguration</MergeRule> </Subsystem> </Object> <Object fullNameInSecondConfiguration=»Подсистема.ПереопределяемыеОбъектыБиблиотек.Подсистема.Скидки»> <MergeRule>GetFromSecondConfiguration</MergeRule> <Subsystem configuration=»Second» includeObjectsFromSubordinateSubsystems=»true»> <MergeRule>GetFromSecondConfiguration</MergeRule> </Subsystem> </Object> <Object fullName=»Подсистема.ПереопределяемыеОбъектыБиблиотек.Подсистема.Скидки»> <MergeRule>GetFromSecondConfiguration</MergeRule> <Subsystem configuration=»Main» includeObjectsFromSubordinateSubsystems=»true»> <MergeRule>GetFromSecondConfiguration</MergeRule> </Subsystem> </Object> </Objects> </Settings>

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

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

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

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

Рассмотренный пример вы можете увидеть в приложенном к статье файле. Это архив, содержащий в себе:

  • Папка base – базовая библиотека
  • Папки lib1, lib2 – 2 библиотеки
  • Папка prod – итоговая конфигурация
  • 1_CreateBase.bat – пакетный файл для создания итоговой конфигурации на основе базовой библиотеки
  • 2_AddLib1.bat, 3_AddLib2.bat – пакетные файлы для первоначального внедрения в итоговую конфигурацию библиотек lib1, lib2
  • 4_UpdLib1.bat, 5_UpdLib2.bat – пакетные файлы для обновления в итоговой конфигурации библиотек lib1, lib2
  • *Settings.xml – файлы с настройками объединения

Желательно чтобы все эти папки и файлы находились в каталоге c:\bases, так как в пакетных файлах используются абсолютные пути. Также надо указать путь к файлу 1cv8.exe в зависимости от версии платформы.

Тема: Ошибка в выражении в базе 1С

Быстрый переход 1C Вверх

  • Навигация
  • Кабинет
  • Личные сообщения
  • Подписки
  • Кто на сайте
  • Поиск по форуму
  • Главная страница форума
  • Форум
  • Бухгалтерия
    1. Общая бухгалтерия
      1. Бухучет и Налогообложение
      2. Оплата труда и кадровый учет
      3. Документация и отчетность
      4. Учет ценных бумаг и валютных операций
      5. Внешнеэкономическая деятельность
      6. Внешнеэкономическая деятельность. Таможенный союз
      7. Алкоголь: лицензирование и декларирование
      8. Онлайн-ККТ, БСО, эквайринг и кассовые операции
    2. Отрасли и спецрежимы
      1. Индивидуальные предприниматели. Спецрежимы (ЕНВД, УСН, ПСН, ЕСХН)
      2. Учет в НКО и жилищном хозяйстве
      3. Бухгалтерский учет в строительстве
      4. Бухгалтерский учет в туризме
    3. Бюджетные, автономные и казенные учреждения
      1. Бюджетный учет
      2. Программы для бюджетного учета
    4. Банки
    5. МСФО, GAAP, управленческий учет
  • Юридический отдел
    1. Правовая помощь
    2. Регистрация
    3. Опыт проверок
  • Управление предприятием
    1. Администрирование и управление на предприятии
    2. Аутсорсинг
  • Автоматизация предприятия
    1. Программы для ведения бухгалтерского и налогового учета
      1. Инфо-Бухгалтер
      2. Другие программы
    2. 1C
    3. Электронный документооборот и электронная отчетность
    4. Прочие средства автоматизации труда бухгалтеров
  • Гильдия клерков
    1. Взаимоотношения на работе
    2. Бухгалтерский бизнес
    3. Обучение
    4. Биржа труда
      1. Ищу работу
      2. Предлагаю работу
  • Клуб Клерк.Ру
    1. Пятница
    2. Частные инвестиции
    3. Политика
    4. Спорт. Туризм
    5. Встречи и поздравления
    6. Авторские форумы
      1. Интервью
      2. Простое, как мычание
      3. Авторский форум Goblin_Gaga
        1. Бухгалтера можно…
        2. опусник Гаги
  • Интернет-конференции
    1. Кому я должен — всем прощайте: все о банкротстве физлиц
    2. Архив Интернет-конференций
      1. Интернет-конференции
        1. Обмен электронными документами и сюрпризы от ФНС
        2. Нарушение прав граждан при трудоустройстве и увольнении
        3. Новый порядок сдачи отчетности по НДС в электронном формате
        4. Подготовка годовой финансовой/бухгалтерской отчетности за 2014 год
        5. Все, что вы хотели спросить у оператора обмена электронными документами
        6. Как финансовый кризис превратить в окно возможностей?
        7. НДС: изменения в нормативном регулировании и их реализация в программе «1С:Бухгалтерия 8»
        8. Обеспечение достоверности результатов инвентаризационных мероприятий
        9. Защита персональных данных. Применение ЗПК «1С:Предприятие 8.2z»
        10. Формирование учетной политики компании: возможности сближения с МСФО
        11. Электронный документооборот на службе бухгалтера
        12. Учет времени при различных системах оплаты труда в программе «1С:Зарплата и управление персоналом 8»
        13. Полугодовой отчет по налогу на прибыль: раскроем все секреты
        14. Межличностные отношения на рабочем месте
        15. Облачная бухгалтерия 1С. Стоит ли уходить в облако?
        16. Банковские депозиты: как не потерять и выиграть
        17. Больничные листы и другие пособия за счет ФСС. Порядок расчета и начисления
        18. Клерк.Ру: задайте любой вопрос руководству сайта
        19. Правила расчёта НДС при осуществлении экспортно-импортных операций
        20. Как сдать отчетность в Пенсионный фонд за 3 квартал 2012 года
        21. Отчетность в ФСС за 9 месяцев 2012 года
        22. Подготовка отчетности в ПФР за 2 квартал. Сложные вопросы
        23. Запуск электронных счетов-фактур в России
        24. Как снизить затраты на ИТ-оборудование, ПО и ИТ-персонал с использованием облачных мощностей
        25. Отчетность в ПФР за 1 квартал 2012. Основные изменения
        26. Налог на прибыль: нюансы заполнения декларации за 2011 год
        27. Годовая отчетность в ПФР. Актуальные вопросы
        28. Новое в бухгалтерской отчетности за 2011 год
        29. Отчетность в ФСС в вопросах и ответах
        30. Полугодовая отчетность в ПФР в вопросах и ответах
        31. Расчет пособий по временной нетрудоспособности в 2011 году
        32. Электронные счета-фактуры и электронные первичные документы
        33. Формирование бухгалтерской отчетности за 2010 год
        34. Расчет больничных в 2011 году. Декретные и пособия в переходный период
        35. Новое в законодательстве о налогах и страховых взносах в 2011 году
        36. Изменения в финансовой отчетности в 2011 году
        37. DDoS атаки в России как способ нечестной конкурентной борьбы.
        38. Банковские продукты для физлиц: кредитование, депозиты, спецпредложения
        39. Документ в электронной форме — эффективное решение актуальных проблем
        40. Как найти работу с помощью Клерк.Ру
        41. Предоставление сведений перс. учета за первое полугодие 2010 года
        42. Налоговая ответственность: кто и за что отвечает?
        43. Проверки, взыскание, возврат/зачет налогов и др.вопросы ч.1 НК РФ
        44. Расчет больн. листов и страховых взносов в свете квартальной отчетности
        45. Замена ЕСН страховыми взносами и другие нововведения 2010 года
        46. Ликвидация коммерческих и некоммерческих организаций
        47. Бухгалтерский и налоговый учет товарно-материальных ценностей
        48. Обязательная перерегистрация фирм в соответствии с Законом №312-ФЗ
        49. PR и маркетинг в сфере профессиональных услуг своими силами
        50. Клерк.Ру: смена дизайна
        51. Построение личного финансового плана: мечты и реальность
        52. Подготовка бух. отчетности. Изменения в рос. стандартах учета в 2009 году
        53. Откаты в сфере продаж: за и против
        54. Потеря работы в период кризиса. Что делать?
        55. Все, что вы хотели знать о Клерк.Ру, но стеснялись спросить
        56. Кредит в кризис: условия и возможности
        57. Сохранение капитала во время кризиса: стратегии для частных инвесторов
        58. НДС: вычеты по авансам. Вопросы с ответами и без
        59. Пресс-конференция Деда Мороза
        60. Изменения в Налоговый кодекс, вступающие в силу с 2009 года
        61. Налог на прибыль с учетом последних изменений и разъяснений Минфина
        62. Российский кризис: угрозы и возможности
        63. Сетевой бизнес: качественные товары или развод на деньги?
        64. КАСКО: страховка без секретов
        65. Выплаты физическим лицам
        66. Рейдерство. Как защитить собственный бизнес?
        67. Актуальные вопросы исчисления и возмещения НДС
        68. Спецрежимы: ЕНВД и УСН. Особенности и сложные вопросы
        69. Налог на прибыль. Расчет, особенности исчисления, спорные моменты
        70. Учетная политика для целей бухучета
        71. Налоговые проверки. Практика применения новых правил
        72. НДС: порядок расчета
      2. Аутсорсинг в вопросах и ответах
      3. Как бухгалтеру выполнить требования Закона «О персональных данных»
      4. Идеальный архив бухгалтерских документов
  • Служебные форумы
    1. Архив
      1. FAQ (Часто задаваемые вопросы)
        1. FAQ: Часто задаваемые вопросы по бухучету и налогам
      2. Игры и тренинги
        1. Тренинг по воспитанию самоуверенности
        2. ВЭД в условиях суровой действительности
    2. Книга жалоб и предложений
      1. Дневники

Ошибка библиотеки в 1С

Ошибка библиотеки 1С может возникнуть еще на стадии ее загрузки. Главное — необходимо быстро разобраться с ее решением, чтобы не задерживать рабочий процесс. Это можно сделать самостоятельно или же с помощью специалистов.
Ошибка инициализации библиотеки модулей 1С
При выполнении регламентных заданий может возникнуть ошибка инициализации библиотеки модулей. Нередко это связано с недоработками одного из них. Использование отладчика обычно помогает в таких ситуациях, но и это не гарантирует успеха.
Ошибка инициализации библиотеки модулей 1С 8 может быть исправлена и при помощи обновления платформы. Часто это связано с пользовательскими процедурами в более старых версиях. Также ошибка выдается из-за выставленного возврата значений.
Кроме того, при выполнении регламентного задания в 1С, ошибка инициализации библиотеки появляется из-за незнакомых программе символов. В такой ситуации решение следующее:
• проверка базы на целостность;
• ее тестирование и исправление (используется конфигуратор);
• подключение базы;
• проверка операции.
Исправление ошибок специалистами производится в краткие сроки
Ошибка загрузки внешней библиотеки в 1С или любого другого элемента программы — не проблема для компании «Сетби». Наши специалисты в любое время суток производят наладку компонентов и функций. В качестве можно не сомневаться: мы даем гарантию по договору, а значит, работа будет выполнена на высшем уровне.