Ответы в темах
-
АвторЗаписи
-
15 октября 2026 в 13:01 в ответ на: Как составить письмо о расторжении договора оказания услуг? #38851
Ниже готовый образец письма о расторжении договора оказания услуг. Формулировки можно использовать как для расторжения по соглашению сторон, так и для одностороннего отказа, если это предусмотрено договором или законом.
—
## Письмо о расторжении договора оказания услуг
Кому:
[Наименование организации или Ф. И. О. исполнителя]
[Адрес]
[ИНН/КПП, если организация]От кого:
[Наименование организации или Ф. И. О. заказчика]
[Адрес]
[ИНН/КПП, если организация]Исх. № [номер]
от «[число]» [месяц] 20[год] г.### Уведомление о расторжении договора оказания услуг
Между [наименование заказчика] и [наименование исполнителя] был заключен договор оказания услуг № [номер договора] от «[дата]» 20[год] г.
В соответствии с условиями указанного договора и [при необходимости: пунктом [номер] договора] уведомляем вас о расторжении договора оказания услуг № [номер] от «[дата]» 20[год] г. с «[дата расторжения]» 20[год] г.
Просим:
1. Прекратить оказание услуг по договору с указанной даты.
2. Предоставить акт оказанных услуг за фактически выполненные услуги.
3. Произвести окончательные взаиморасчеты по договору до «[дата]» 20[год] г.
4. Вернуть неиспользованный аванс в размере [сумма] руб. [если применимо].
5. Передать документы, материалы и иные результаты, связанные с исполнением договора [если применимо].При отсутствии возражений просим направить подписанное подтверждение расторжения договора и акт сверки взаимных расчетов.
Настоящее уведомление направляется в порядке и сроки, предусмотренные договором.
Приложение:
1. Копия договора оказания услуг № [номер] от «[дата]» 20[год] г. на [количество] л.
2. Акт сверки взаимных расчетов на [количество] л. [при наличии].С уважением,
[Должность] __________________ / [Ф. И. О.] /
М. П.
Телефон: [номер]
Электронная почта: [адрес]—
## Если расторжение производится по соглашению сторон
В этом случае лучше использовать не уведомление, а предложение заключить соглашение:
> Предлагаем расторгнуть договор оказания услуг № [номер] от «[дата]» 20[год] г. по соглашению сторон с «[дата]» 20[год] г.
> Просим согласовать дату прекращения договора, порядок передачи результатов оказанных услуг и окончательного расчета между сторонами.
> Проект соглашения о расторжении договора прилагается.В соглашении желательно указать:
— дату прекращения договора;
— какие услуги оказаны на момент расторжения;
— сумму, подлежащую оплате;
— сумму возврата аванса, если он имеется;
— отсутствие или наличие взаимных претензий;
— порядок передачи документов и результатов работ;
— дату, с которой договор считается расторгнутым.## Если заказчик отказывается от услуг в одностороннем порядке
Можно использовать следующую формулировку:
> На основании пункта [номер] договора и статьи 782 Гражданского кодекса Российской Федерации уведомляем об одностороннем отказе от исполнения договора оказания услуг № [номер] от «[дата]» 20[год] г.
> Договор считается прекращенным с «[дата]» 20[год] г., с учетом срока уведомления, установленного договором.
> Заказчик готов оплатить фактически оказанные услуги и документально подтвержденные расходы исполнителя, понесенные до даты прекращения договора.Для исполнителя формулировка может быть следующей:
> На основании пункта [номер] договора и статьи 782 Гражданского кодекса Российской Федерации уведомляем об одностороннем отказе от исполнения договора оказания услуг № [номер] от «[дата]» 20[год] г. Договор прекращает действие с «[дата]» 20[год] г. при условии возмещения заказчику убытков, если такое возмещение предусмотрено законодательством и условиями договора.
Письмо лучше направить способом, указанным в договоре: через электронный документооборот, заказным письмом с уведомлением, курьером под подпись или на официальную электронную почту, если такой способ предусмотрен договором.
15 октября 2026 в 12:27 в ответ на: Как устранить ошибку «Отсутствует Microsoft SQL Server Native Client» в 1С? #38849Ошибка означает, что на сервере 1С не установлен драйвер Microsoft SQL Server Native Client, необходимый для подключения к SQL Server.
Чаще всего ошибка появляется в схеме:
— сервер 1С находится на одном компьютере;
— Microsoft SQL Server находится на другом компьютере;
— новую информационную базу создают через консоль администрирования 1С.## Что сделать
### 1. Определите компьютер, куда устанавливать Native Client
Устанавливать компонент нужно на сервер 1С, а не только на сервер SQL Server.
Если используется кластер 1С из нескольких рабочих серверов, Native Client нужно установить на каждый сервер, который может обращаться к SQL-базе.
Проверить сервер 1С можно в свойствах информационной базы или в консоли администрирования:
1С (Код)12Сервер 1С: Предприятия: имя_сервера_1ССервер базы данных: имя_сервера_SQLУстановка только на компьютер пользователя, где запущена консоль, обычно проблему не решает.
—
### 2. Установите Microsoft SQL Server Native Client
Обычно нужен файл:
1С (Код)1sqlncli.msiОн может находиться:
— в установочном дистрибутиве Microsoft SQL Server;
— в каталоге установочного носителя SQL Server;
— в пакете дополнительных компонентов SQL Server;
— в ранее скачанном дистрибутиве SQL Server.Для старых версий платформы 1С чаще всего устанавливают:
1С (Код)1Microsoft SQL Server Native Client 11.0При установке желательно выбрать не только основные компоненты, но и пакет SDK, если он присутствует в установщике.
После установки в списке установленных программ должна появиться запись примерно такого вида:
1С (Код)1Microsoft SQL Server Native Client 11.0—
### 3. Учитывайте разрядность
Проверьте разрядность сервера 1С:
— для 64-разрядного сервера 1С установите 64-разрядный Native Client;
— для 32-разрядного сервера 1С установите 32-разрядный Native Client;
— в некоторых конфигурациях безопаснее установить оба варианта, если они доступны.Особенно это важно, если сервер 1С работает как 32-разрядное приложение на 64-разрядной Windows.
—
### 4. Перезапустите службы 1С
После установки драйвера перезапустите службу сервера 1С:
1. Откройте
services.msc.
2. Найдите службу вида:1С (Код)1Агент сервера 1С:Предприятия 8.x3. Перезапустите службу.
Если используется кластер серверов 1С, перезапустите службы на всех серверах кластера.
После этого снова выполните создание или подключение информационной базы.
—
## Что проверить, если ошибка осталась
### Доступность SQL Server
На сервере 1С проверьте:
— доступен ли SQL Server по имени;
— разрешено ли удаленное подключение;
— запущена ли служба SQL Server;
— открыт ли порт SQL Server, обычно TCP 1433;
— запущена ли служба SQL Server Browser, если используется именованный экземпляр;
— разрешен ли трафик в Windows Firewall.Например, если используется экземпляр:
1С (Код)1SQLSERVERSQLEXPRESSлибо:
1С (Код)1SERVERNAMEMSSQLSERVER2019нужно убедиться, что именно этот экземпляр доступен с сервера 1С.
—
### Учетная запись службы 1С
Служба сервера 1С должна иметь возможность подключаться к SQL Server.
Если используется Windows-аутентификация, учетной записи службы 1С необходимо выдать права на SQL Server и на нужную базу.
Если используется SQL-аутентификация, проверьте:
— имя пользователя;
— пароль;
— разрешен ли режим SQL Server и Windows-аутентификации;
— не заблокирован ли SQL-пользователь;
— существуют ли права на создание базы или подключение к ней.—
### Версию платформы 1С
В старых версиях 1С ошибка напрямую связана с отсутствием именно SQL Server Native Client.
В новых версиях SQL Server Native Client считается устаревшим компонентом. Если используется современная платформа 1С, рекомендуется:
— обновить платформу 1С до актуального релиза, совместимого с конфигурацией;
— использовать рекомендованный для этой версии 1С драйвер подключения;
— не устанавливать случайные версии Native Client без проверки совместимости.Но если конкретная версия 1С явно выдает сообщение про:
1С (Код)1Microsoft SQL Server Native Clientпервым практическим действием остается установка соответствующего Native Client на сервер 1С.
—
## Важный момент
Не путайте два разных случая:
### Ошибка при создании информационной базы
Тогда обычно достаточно:
1. установить
sqlncli.msiна сервер 1С;
2. перезапустить службы 1С;
3. повторить создание базы.### Ошибка при выполнении отчета или запроса
Если в тексте есть дополнительно:
1С (Код)1Добавление значения в столбец datetime привело к переполнениюили:
1С (Код)1Переполнение поля DATEDIFFто проблема уже может быть не в отсутствии драйвера, а в операциях над датами, например вычитании секунд из минимальной даты. В таком случае нужно отдельно проверять запрос, СКД и значения дат.
Рекомендую посмотреть здесь:
Ошибка отсутствие установленного MS SQL server Native Client
## Как создать первую управляемую форму в 1С
Ниже самый простой вариант: создадим справочник Товары и его управляемую форму элемента.
### 1. Включите управляемое приложение
В конфигураторе откройте:
Конфигурация → Открыть конфигурацию
Затем выберите корень конфигурации и проверьте свойство:
Основной режим запуска → Управляемое приложение
Если планируется запускать конфигурацию только в управляемом режиме, можно включить:
— Использовать управляемые формы
— при необходимости отключить использование обычных формТочный набор свойств зависит от версии платформы 1С.
—
## 2. Создайте справочник
В дереве конфигурации:
1. Нажмите правой кнопкой на ветке Справочники.
2. Выберите Добавить.
3. Назовите справочник:1С (Код)1Товары4. Откройте свойства справочника.
5. Перейдите на вкладку Данные.
6. Добавьте реквизиты:| Имя | Тип |
|—|—|
| Артикул | Строка, например 20 символов |
| Цена | Число, например 15.2 |
| Описание | Строка неограниченной длины |В справочнике автоматически есть стандартный реквизит Наименование.
—
## 3. Создайте управляемую форму элемента
В свойствах справочника Товары перейдите на вкладку Формы.
Нажмите кнопку добавления формы или кнопку с изображением лупы.
В конструкторе выберите:
1С (Код)1Основная форма элементаОбычно 1С предложит создать форму автоматически. Согласитесь с настройками и нажмите Готово.
В редакторе формы будут созданы:
— реквизит формы
Объект;
— элементы формы;
— поля дляНаименование,Артикул,Цена,Описание;
— стандартные команды записи и закрытия.Нажмите Записать и закрыть.
Управляемая форма элемента справочника создана.
—
## 4. Создайте форму списка
Теперь создадим форму, в которой будут отображаться все товары.
В свойствах справочника Товары снова откройте вкладку Формы.
Создайте:
1С (Код)1Основная форма спискаВ большинстве случаев конструктор автоматически создаст:
— реквизит
Списоктипа Динамический список;
— табличное полеСписок;
— стандартные команды добавления, изменения и удаления элементов.После создания откройте форму списка в редакторе.
Слева находится дерево элементов формы, справа доступны:
— реквизиты формы;
— команды;
— параметры;
— свойства выбранного элемента.Выделите табличное поле
Списоки проверьте свойство:1С (Код)1ПутьКДаннымОно должно ссылаться на реквизит формы:
1С (Код)1СписокЕсли список создан конструктором, это уже будет настроено автоматически.
—
## 5. Добавьте справочник в подсистему
Чтобы форма появилась в пользовательском интерфейсе:
1. Создайте подсистему, например:
1С (Код)1Продажи2. Откройте состав подсистемы.
3. Добавьте в нее справочник Товары.
4. В свойствах подсистемы включите:1С (Код)1Включать в командный интерфейс5. Откройте командный интерфейс подсистемы.
6. Найдите команду открытия справочника Товары.
7. Убедитесь, что для нее включена видимость в панели навигации.После этого справочник будет доступен пользователю через раздел Продажи.
—
## 6. Обновите конфигурацию базы данных
В конфигураторе нажмите:
1С (Код)1Конфигурация → Обновить конфигурацию базы данныхМожно использовать клавишу F7.
Затем запустите 1С в режиме предприятия:
1С (Код)1Отладка → Начать отладкуили клавишу F5.
Откройте раздел Продажи, затем справочник Товары.
Нажмите Создать. Откроется созданная управляемая форма элемента.
—
# Как устроена управляемая форма
Управляемая форма состоит из нескольких частей.
## Реквизиты формы
Реквизит формы хранит данные, с которыми работает форма.
Например:
1С (Код)1ОбъектДля формы элемента это обычно объект справочника:
1С (Код)1СправочникОбъект.ТоварыДля формы списка это обычно:
1С (Код)1ДинамическийСписок## Элементы формы
Элементы отображаются пользователю:
— поле ввода;
— поле даты;
— флажок;
— таблица;
— кнопка;
— группа;
— декорация;
— поле картинки.Например, реквизит
Ценасам по себе на форме не отображается. Для него должен быть создан элемент формы, связанный с этим реквизитом.У элемента формы свойство ПутьКДанным должно иметь значение:
1С (Код)1Объект.ЦенаДля наименования:
1С (Код)1Объект.НаименованиеДля артикула:
1С (Код)1Объект.Артикул—
# Как добавить поле вручную
Допустим, поле
Ценане появилось на форме.1. Откройте форму элемента справочника.
2. В дереве элементов выберите группу, куда нужно добавить поле.
3. Нажмите Добавить.
4. Выберите тип элемента:1С (Код)1Поле формы5. В свойстве ПутьКДанным укажите:
1С (Код)1Объект.Цена6. В свойстве Вид можно выбрать:
1С (Код)1Поле ввода7. В свойстве Заголовок укажите:
1С (Код)1ЦенаАналогично можно добавить поле для артикула:
1С (Код)1Объект.Артикул—
# Как добавить кнопку
Например, добавим кнопку, которая будет выводить сообщение.
## 1. Создайте команду
Откройте форму элемента справочника.
В правой части редактора перейдите на вкладку Команды.
Добавьте команду:
1С (Код)1ПоказатьСообщениеУкажите заголовок:
1С (Код)1Показать сообщениеПосле создания команды перетащите ее в дерево элементов формы, например в командную панель.
## 2. Создайте обработчик команды
У команды вызовите создание обработчика события Действие или Обработка команды.
Платформа создаст процедуру примерно такого вида:
1С (Код)123456&НаКлиентеПроцедура ПоказатьСообщение(Команда)Сообщить("Открыта форма товара");КонецПроцедурыВ управляемом приложении код формы обычно выполняется на клиенте или сервере. Для простой команды сообщение можно вывести на клиенте.
—
# Пример проверки цены
Можно добавить проверку, чтобы цена не была отрицательной.
У поля
Ценасоздайте обработчик события ОкончаниеВводаТекста или проверку перед записью объекта.Для проверки перед записью формы можно использовать обработчик
ПередЗаписьюНаСервере:1С (Код)123456789&НаСервереПроцедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)Если ТекущийОбъект.Цена < 0 ТогдаСообщить("Цена не может быть отрицательной");Отказ = Истина;КонецЕсли;КонецПроцедурыВ некоторых версиях платформы и типах форм имя параметров обработчика может отличаться. Лучше создавать обработчик через палитру свойств формы, тогда 1С сама подставит правильную сигнатуру.
Более простой вариант для проверки непосредственно в обработчике изменения поля:
1С (Код)123456789&НаКлиентеПроцедура ЦенаИзменение(Элемент)Если Объект.Цена < 0 ТогдаОбъект.Цена = 0;Сообщить("Цена не может быть отрицательной");КонецЕсли;КонецПроцедурыОбработчик создается так:
1. Выберите поле
Ценав дереве формы.
2. Откройте палитру свойств.
3. Найдите событие Изменение.
4. Нажмите кнопку создания обработчика.—
# Как сделать форму документа с табличной частью
Для первого знакомства со справочником достаточно формы элемента. Но форма документа создается похожим образом.
Например, создайте документ ЗаказПокупателя.
У документа добавьте табличную часть:
1С (Код)1ТоварыВ табличной части создайте реквизиты:
| Имя | Тип |
|—|—|
| Номенклатура | СправочникСсылка.Товары |
| Количество | Число 10.3 |
| Цена | Число 15.2 |
| Сумма | Число 15.2 |Затем:
1. Откройте вкладку Формы документа.
2. Создайте Основную форму документа.
3. Конструктор добавит:
— поля реквизитов документа;
— таблицу табличной части;
— команды записи и проведения.
4. В форме появится табличное поле, связанное примерно с путем:1С (Код)1Объект.ТоварыЕсли табличная часть не добавилась автоматически:
1. Добавьте в форму элемент Таблица формы.
2. Укажите путь к данным:1С (Код)1Объект.Товары3. Согласитесь на автоматическое добавление полей табличной части.
—
# Главное отличие управляемой формы от обычной
В обычной форме разработчик работает непосредственно с элементами диалога.
В управляемой форме есть разделение:
— реквизиты формы хранят данные;
— элементы формы отображают данные;
— команды формы выполняют действия;
— код выполняется на клиенте или сервере;
— доступность, видимость и заголовки элементов можно изменять программно.Например, сделать поле цены недоступным:
1С (Код)123456&НаКлиентеПроцедура ПриОткрытии(Отказ)Элементы.Цена.Доступность = Ложь;КонецПроцедурыСкрыть поле:
1С (Код)123456&НаКлиентеПроцедура ПриОткрытии(Отказ)Элементы.Цена.Видимость = Ложь;КонецПроцедурыИзменить заголовок:
1С (Код)123456&НаКлиентеПроцедура ПриОткрытии(Отказ)Элементы.Цена.Заголовок = "Розничная цена";КонецПроцедурыВ новых версиях платформы событие открытия формы чаще создается с параметром
Отказ:1С (Код)1234&НаКлиентеПроцедура ПриОткрытии(Отказ)КонецПроцедуры—
# Минимальный порядок действий
Для первой формы достаточно выполнить следующие действия:
1. Создать справочник.
2. Добавить его реквизиты.
3. Создать основную форму элемента.
4. Создать основную форму списка.
5. Добавить справочник в подсистему.
6. Обновить конфигурацию базы данных.
7. Запустить 1С в режиме предприятия.
8. Открыть форму и создать первый элемент.Самый важный момент: для отображения реквизита на управляемой форме должен существовать элемент формы с правильно установленным свойством ПутьКДанным, например:
1С (Код)1Объект.Наименованиеили:
1С (Код)1Объект.Цена14 октября 2026 в 14:57 в ответ на: Как улучшить производительность при проверке наличия изображений в 1С? #38845Да, скорость можно увеличить в разы. Сейчас основная проблема в том, что для каждой из примерно 9000 номенклатур вы вызываете:
1С (Код)1УправлениеВложениямиКлиент.ПолучитьОсновноеИзображение(Номенклатура)А эта функция не просто проверяет наличие картинки. Она:
1. Получает значение константы.
2. Обращается к реквизитуОсновноеИзображение.
3. Вызывает.Получить(), то есть загружает двоичные данные картинки.
4. Проверяет размер двоичных данных.
5. При хранении во внешнем каталоге проверяет файл.
6. При наличии файла загружает его черезНовый ДвоичныеДанные(...).Для фильтрации вам сама картинка не нужна. Нужен только признак:
1С (Код)1Истина / Ложь## 1. Исправьте общий модуль
Создайте отдельную функцию, которая проверяет только наличие изображения и не загружает его содержимое.
Например, в общем модуле
УправлениеВложениямиСерверс флажком «Вызов сервера»:1С (Код)1234567891011121314151617181920212223242526272829Функция ЕстьОсновноеИзображение(СсылкаНаОбъект) ЭкспортЕсли Не ЗначениеЗаполнено(СсылкаНаОбъект) ТогдаВозврат Ложь;КонецЕсли;КаталогВложений = Константы.КаталогВложений.Получить();Если ПустаяСтрока(КаталогВложений) Тогда// Вложения хранятся в информационной базе.// Важно: не вызываем Получить().ХранилищеИзображения = СсылкаНаОбъект.ОсновноеИзображение;Возврат ЗначениеЗаполнено(ХранилищеИзображения);Иначе// Вложения хранятся во внешнем каталоге.ПолноеИмяФайла = КаталогВложений+ ""+ СсылкаНаОбъект.УникальныйИдентификатор()+ "main_image";Возврат Новый Файл(ПолноеИмяФайла).Существует();КонецЕсли;КонецФункцииКлючевые отличия:
1С (Код)1СсылкаНаОбъект.ОсновноеИзображениевместо:
1С (Код)1СсылкаНаОбъект.ОсновноеИзображение.Получить()И для внешнего хранения не выполняется:
1С (Код)1Новый ДвоичныеДанные(ПолноеИмяФайла)Это уже существенно ускорит проверку.
Но если вызвать эту функцию из клиентского кода 9000 раз, всё равно получится до 9000 серверных вызовов. Поэтому лучше выполнять проверку пакетно.
—
# 2. Пакетная проверка картинок
В том же серверном общем модуле создайте функцию, которая принимает массив номенклатуры и возвращает таблицу с признаками наличия.
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243Функция ПроверитьНаличиеИзображений(МассивНоменклатуры) ЭкспортРезультат = Новый ТаблицаЗначений;Результат.Колонки.Добавить("Номенклатура");Результат.Колонки.Добавить("ЕстьИзображение");КаталогВложений = Константы.КаталогВложений.Получить();Для Каждого Номенклатура Из МассивНоменклатуры ЦиклЕсли Не ЗначениеЗаполнено(Номенклатура) ТогдаПродолжить;КонецЕсли;ЕстьИзображение = Ложь;Если ПустаяСтрока(КаталогВложений) Тогда// Не загружаем двоичные данные.ЕстьИзображение = ЗначениеЗаполнено(Номенклатура.ОсновноеИзображение);ИначеПолноеИмяФайла = КаталогВложений+ ""+ Номенклатура.УникальныйИдентификатор()+ "main_image";ЕстьИзображение = Новый Файл(ПолноеИмяФайла).Существует();КонецЕсли;СтрокаРезультата = Результат.Добавить();СтрокаРезультата.Номенклатура = Номенклатура;СтрокаРезультата.ЕстьИзображение = ЕстьИзображение;КонецЦикла;Возврат Результат;КонецФункцииТеперь вместо 9000 обращений к серверу будет один вызов.
—
# 3. Как вызвать пакетную проверку в вашем коде
После заполнения
ТабЗначенийсформируйте массив ссылок:1С (Код)12345678910МассивНоменклатуры = Новый Массив;Для Каждого СтрокаТаблицы Из ТабЗначений ЦиклМассивНоменклатуры.Добавить(СтрокаТаблицы.Номенклатура);КонецЦикла;ТаблицаНаличияИзображений =УправлениеВложениямиСервер.ПроверитьНаличиеИзображений(МассивНоменклатуры);Затем создайте соответствие для быстрого поиска признака:
1С (Код)12345678СоответствиеКартинок = Новый Соответствие;Для Каждого СтрокаНаличия Из ТаблицаНаличияИзображений ЦиклСоответствиеКартинок.Вставить(СтрокаНаличия.Номенклатура,СтрокаНаличия.ЕстьИзображение);КонецЦикла;После этого фильтруйте таблицу без обращения к картинке:
1С (Код)123456789101112131415161718192021222324252627282930313233343536ТЗнач = Новый ТаблицаЗначений;ТЗнач.Колонки.Добавить("Номенклатура");ТЗнач.Колонки.Добавить("Артикул");ТЗнач.Колонки.Добавить("МинимальныйОстаток");ТЗнач.Колонки.Добавить("Потребность");ТЗнач.Колонки.Добавить("Резерв");ТЗнач.Колонки.Добавить("Приобрели");ТЗнач.Колонки.Добавить("Продали");ТЗнач.Колонки.Добавить("НачальныйОтстаток");ТЗнач.Колонки.Добавить("КонечныйОстаток");Для Каждого СтрокаТаблицы Из ТабЗначений ЦиклЕстьИзображение = Ложь;СоответствиеКартинок.Свойство(СтрокаТаблицы.Номенклатура,ЕстьИзображение);// ПолеВыбораФото = 2 - только с картинкамиЕсли ПолеВыбораФото = 2 И Не ЕстьИзображение ТогдаПродолжить;КонецЕсли;// ПолеВыбораФото = 3 - только без картинокЕсли ПолеВыбораФото = 3 И ЕстьИзображение ТогдаПродолжить;КонецЕсли;НоваяСтрока = ТЗнач.Добавить();ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТаблицы);КонецЦикла;ТабЗначений = ТЗнач;Здесь я предполагаю:
1С (Код)1ПолеВыбораФото = 1означает «все товары»,
1С (Код)1ПолеВыбораФото = 2означает «только с картинками»,
1С (Код)1ПолеВыбораФото = 3означает «только без картинок».
У вас сейчас для значения
1стоит пустая ветка:1С (Код)123Если ПолеВыбораФото = 1 ТогдаИначеИз-за этого лучше явно разделить режимы.
—
# 4. Еще лучше, если картинки хранятся в информационной базе
Если в вашей базе
КаталогВложенийпустой, картинки хранятся в реквизитеОсновноеИзображениев базе. Тогда можно попробовать определить наличие прямо в запросе, не перебирая 9000 строк после выполнения запроса.В запрос добавляется поле:
1С (Код)12345| ВЫБОР| КОГДА ВТ_ОбъединениеТрехТабл.Номенклатура.ОсновноеИзображение ЕСТЬ НЕ NULL| ТОГДА ИСТИНА| ИНАЧЕ ЛОЖЬ| КОНЕЦ КАК ЕстьИзображение,Например, начало запроса:
1С (Код)123456789101112131415161718192021222324|ВЫБРАТЬ| ВТ_ОбъединениеТрехТабл.Номенклатура КАК Номенклатура,| ВТ_ОбъединениеТрехТабл.Артикул КАК Артикул,| ВТ_ОбъединениеТрехТабл.НачальныйОтстаток КАК НачальныйОтстаток,| ВТ_ОбъединениеТрехТабл.КонечныйОстаток КАК КонечныйОстаток,| ВТ_ОбъединениеТрехТабл.Потребность КАК Потребность,| ВТ_ОбъединениеТрехТабл.Резерв КАК Резерв,| ВТ_ОбъединениеТрехТабл.МинимальныйОстаток КАК МинимальныйОстаток,| ПартииТоваровНаСкладахОбороты.КоличествоПриход КАК Приобрели,| ПартииТоваровНаСкладахОбороты.КоличествоРасход КАК Продали,| ВЫБОР| КОГДА ВТ_ОбъединениеТрехТабл.Номенклатура.ОсновноеИзображение ЕСТЬ НЕ NULL| ТОГДА ИСТИНА| ИНАЧЕ ЛОЖЬ| КОНЕЦ КАК ЕстьИзображение|ИЗ| ВТ_ОбъединениеТрехТабл КАК ВТ_ОбъединениеТрехТабл| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Обороты(| &ДатаНачало,| &ДатаКонец,| ,| ) КАК ПартииТоваровНаСкладахОбороты| ПО ВТ_ОбъединениеТрехТабл.Номенклатура.Ссылка =| ПартииТоваровНаСкладахОбороты.Номенклатура.СсылкаДальше при заполнении таблицы добавьте колонку:
1С (Код)1ТабЗначений.Колонки.Добавить("ЕстьИзображение");И заполнение:
1С (Код)12Стр.ЕстьИзображение =ВыборкаДетальныеЗаписи.ЕстьИзображение;После этого фильтр будет очень простой:
1С (Код)1234567Если ПолеВыбораФото = 2 И Не СтЧасти.ЕстьИзображение ТогдаПродолжить;КонецЕсли;Если ПолеВыбораФото = 3 И СтЧасти.ЕстьИзображение ТогдаПродолжить;КонецЕсли;Однако этот вариант подходит только для хранения картинок в базе. Если
КаталогВложенийзаполнен, SQL-запрос не знает, существует ли файл на диске. В таком случае используйте пакетную серверную проверку файлов.—
# 5. Не вызывайте
ПолучитьОсновноеИзображениедля фильтрацииВаш текущий код:
1С (Код)123Картинка = УправлениеВложениямиКлиент.ПолучитьОсновноеИзображение(Номенклатура);Если ЗначениеЗаполнено(Картинка) Тогданужно заменить на:
1С (Код)12345ЕстьКартинка = УправлениеВложениямиСервер.ЕстьОсновноеИзображение(Номенклатура);Если ЕстьКартинка ТогдаНо одиночный вызов всё равно будет медленнее пакетного. Оптимальный вариант для 9000 строк:
1. Получить результат запроса.
2. Одним вызовом проверить наличие изображений.
3. Получить соответствиеНоменклатура -> ЕстьИзображение.
4. Отфильтровать таблицу.
5. Только после этого выводить макет.—
# 6. Уберите лишнее заполнение таблицы
Сейчас вы вручную создаете
ТабЗначенийи переносите каждое поле:1С (Код)123Стр.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;Стр.Артикул = ВыборкаДетальныеЗаписи.Артикул;...Если структура результата запроса вас устраивает, можно сразу выгрузить результат:
1С (Код)1ТабЗначений = Запрос.Выполнить().Выгрузить();То есть вместо:
1С (Код)123456РезультатЗапроса = Запрос.Выполнить();ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();Пока ВыборкаДетальныеЗаписи.Следующий() Цикл...КонецЦикла;использовать:
1С (Код)1ТабЗначений = Запрос.Выполнить().Выгрузить();При этом в запросе должны быть только необходимые поля.
Если используете вариант с признаком картинки в запросе, достаточно:
1С (Код)1ТабЗначений = Запрос.Выполнить().Выгрузить();А затем:
1С (Код)123456789101112131415161718192021222324Если ПолеВыбораФото <> 1 ТогдаТЗнач = ТабЗначений.СкопироватьКолонки();Для Каждого СтрокаТаблицы Из ТабЗначений ЦиклЕсли ПолеВыбораФото = 2И Не СтрокаТаблицы.ЕстьИзображение ТогдаПродолжить;КонецЕсли;Если ПолеВыбораФото = 3И СтрокаТаблицы.ЕстьИзображение ТогдаПродолжить;КонецЕсли;НоваяСтрока = ТЗнач.Добавить();ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТаблицы);КонецЦикла;ТабЗначений = ТЗнач;КонецЕсли;## Важное замечание по общему модулю
Модуль с функцией проверки должен вызываться на сервере, особенно если указан внешний каталог вложений. Сервер 1С должен иметь доступ к каталогу:
1С (Код)1КаталогВложенийЕсли каталог находится на другом компьютере, сервер 1С должен видеть его по сетевому пути, например:
1С (Код)1\СерверФайловВложенияА не по локальному пути пользователя:
1С (Код)1C:ВложенияИначе
Файл.Существует()будет проверять диск сервера 1С, а не диск клиента.Самый быстрый вариант для вашей задачи:
1С (Код)1ТабЗначений = Запрос.Выполнить().Выгрузить();плюс определение признака
ЕстьИзображениенепосредственно в запросе, если изображения хранятся в базе. Если изображения лежат в каталоге, используйте одну пакетную серверную проверку, но не загружайте сами двоичные данные.12 октября 2026 в 14:55 в ответ на: Как в 1С БГУ собрать ОСВ по контрагентам с официальным наименованием? #38842В 1С:БГУ оборотно-сальдовую ведомость по контрагентам можно сформировать через отчет «Оборотно-сальдовая ведомость по счету».
### 1. Формирование отчета
Откройте:
Отчеты → Стандартные отчеты → Оборотно-сальдовая ведомость по счету
Укажите:
1. Период отчета.
2. Рабочий счет, например 302.XX, 205.XX, 206.XX или другой счет, по которому ведется учет расчетов с контрагентами.
3. Организацию, если в базе их несколько.
4. Нажмите «Настройки» или «Показать настройки».### 2. Настройка детализации по контрагентам
В настройках отчета перейдите на вкладку «Группировка» или «Структура отчета».
Добавьте группировку:
Контрагенты
Если требуется дополнительная детализация, можно добавить:
— договоры;
— документы расчетов;
— организации;
— счета учета;
— КЭК;
— подразделения.Для обычной ведомости по контрагентам достаточно оставить группировку «Контрагенты».
После этого нажмите «Сформировать».
### 3. Вывод официального наименования контрагента
В стандартном отчете 1С:БГУ обычно выводится представление элемента справочника «Контрагенты», а не отдельный реквизит «Официальное наименование». Поэтому сначала проверьте, как заполнена карточка контрагента:
Справочники → Контрагенты → открыть контрагента
В карточке должно быть заполнено поле:
Официальное наименование
В некоторых версиях БГУ оно называется:
— Полное наименование;
— Официальное наименование;
— Наименование для печати.Если в вашей версии программы представление контрагента настроено на официальное наименование, оно будет отображаться непосредственно в отчете.
### 4. Если отчет показывает краткое наименование
Если в ОСВ отображается только краткое название, например:
> ООО «Ромашка»
а необходимо вывести:
> Общество с ограниченной ответственностью «Ромашка»
то в настройках стандартного отчета может не быть возможности заменить представление на конкретный реквизит справочника.
В этом случае попробуйте следующий вариант:
1. Сформируйте ОСВ по счету.
2. Откройте меню Еще → Изменить вариант отчета.
3. Перейдите на вкладку «Поля и сортировки» или «Выбранные поля».
4. Найдите поле, относящееся к контрагенту.
5. Проверьте, доступны ли варианты:
— Контрагент.Наименование;
— Контрагент.Официальное наименование;
— Контрагент.Полное наименование.Если поле «Официальное наименование» доступно, добавьте его в выбранные поля и установите его первым в списке. После этого сохраните вариант отчета и сформируйте отчет повторно.
### 5. Если поля «Официальное наименование» нет
Это нормальная ситуация. В стандартной ОСВ контрагент является видом субконто, а официальный текст является реквизитом элемента справочника. Стандартный отчет умеет группировать данные по самому контрагенту, но не всегда позволяет вывести отдельные реквизиты этого справочника.
Тогда есть два рабочих варианта.
#### Вариант 1. Использовать отчет «Анализ субконто»
Откройте:
Отчеты → Стандартные отчеты → Анализ субконто
Настройте:
— период;
— вид субконто: Контрагенты;
— нужный счет или группу счетов;
— организацию;
— группировку по контрагентам.В некоторых версиях БГУ в варианте этого отчета доступен вывод дополнительных реквизитов контрагента, в том числе официального наименования.
#### Вариант 2. Выгрузить отчет в таблицу и добавить официальные наименования
Если стандартный отчет не выводит нужный реквизит:
1. Сформируйте ОСВ с группировкой по контрагентам.
2. Выгрузите отчет в Excel.
3. Из справочника «Контрагенты» выгрузите соответствие:
— краткое наименование;
— официальное наименование;
— ИНН;
— КПП.
4. Соедините данные в Excel по контрагенту, ИНН или уникальному идентификатору.Для постоянного использования лучше создать отдельный вариант отчета или внешнюю обработку, которая будет получать обороты по счету и присоединять к ним реквизит «Официальное наименование».
Важно: если нужно именно сальдо и обороты по каждому контрагенту, группировку следует делать по виду субконто «Контрагенты». Группировать непосредственно по полю «Официальное наименование» стандартная ОСВ обычно не позволяет, поскольку это реквизит справочника, а не отдельное субконто бухгалтерского учета.
12 октября 2026 в 10:29 в ответ на: Почему в УТ 11.6 запись и проведение заказа требуют отдельного сохранения? #38840В УТ 11.6 это обычно связано с тем, что статусы оплаты и отгрузки рассчитываются не по данным, которые сейчас находятся в форме, а по данным регистров. Эти данные появляются или обновляются только после записи и проведения документа.
### Почему так происходит
В заказе клиента есть несколько разных понятий:
— Статус документа: «На согласовании», «К выполнению», «К отгрузке», «Закрыт» и т. п.
— Состояние оплаты: оплачено, частично оплачено, не оплачено.
— Состояние отгрузки: не отгружено, частично отгружено, отгружено.
— Состояние обеспечения: резервируется, обеспечивается, обеспечено и т. д.Состояние оплаты и отгрузки определяется по движениям в регистрах и связанным документам:
— заказ клиента;
— реализация товаров и услуг;
— расходный ордер;
— эквайринговая операция;
— приходный кассовый ордер;
— платежное поручение;
— взаимозачет или другой документ оплаты.Пока заказ находится только в форме и не записан, у него могут отсутствовать или быть неактуальными:
— ссылка на документ;
— движения регистра заказов;
— актуальные связи с документами оплаты и отгрузки;
— рассчитанные данные по взаиморасчетам.Поэтому после простого сохранения 1С получает постоянную ссылку и обновляет данные заказа, а после проведения формирует движения. Только после этого расчет статусов дает правильный результат.
### Важный момент
Если нажимается именно кнопка «Провести», то в типовой конфигурации отдельное предварительное сохранение обычно не требуется. Проведение должно само выполнить запись и сформировать движения.
То есть нормальная последовательность для нового документа такая:
1. Заполнить заказ.
2. Нажать «Провести».
3. Документ должен записаться и провести движения за один раз.
4. После обновления формы должны появиться актуальные состояния оплаты, отгрузки и обеспечения.Если же сначала обязательно нажимать «Записать», закрывать или обновлять форму, а затем отдельно «Провести», это уже может быть связано с настройкой формы, расширением или особенностями конкретного релиза.
### Что проверить в первую очередь
#### 1. Какая команда используется
Убедитесь, что пользователь нажимает:
— «Провести», а не «Записать»;
— либо «Провести и закрыть».Команда «Записать» только сохраняет документ. Она не формирует движения документа. Поэтому статусы, зависящие от регистров, могут остаться прежними.
#### 2. Не установлен ли статус «На согласовании»
В УТ 11.6 заказ со статусом «На согласовании» не должен полноценно участвовать в обеспечении и отгрузке. Для рабочего заказа обычно используется статус:
— «К выполнению»;
— «К отгрузке»;
— либо другой статус, предусмотренный выбранным вариантом использования заказов.Проверьте в заказе поле «Статус» и вариант использования заказов:
НСИ и администрирование → Продажи → Оптовые продажи → Заказы клиентов
Возможные варианты:
— «Заказ как счет»;
— «Заказ только со склада»;
— «Заказ со склада и под заказ».Если используется вариант «Заказ как счет», контроль выполнения, резервирования и отгрузки может быть ограничен.
#### 3. Проверить порядок расчетов
Состояние оплаты может не рассчитываться так, как ожидается, если в заказе установлен порядок расчетов:
— «По накладным»;
— «По заказам»;
— «По договору».При расчетах по накладным оплата может закрывать не сам заказ, а конкретные документы реализации. В результате в заказе статус оплаты не изменится так, как при расчетах по заказу.
Проверить это можно в соглашении с клиентом и в самом заказе:
— соглашение с клиентом;
— условия оплаты;
— порядок расчетов;
— график оплаты;
— этапы оплаты.#### 4. Проверить проведение связанных документов
Статус отгрузки не изменится, если реализация или складские документы:
— не проведены;
— проведены другим складом;
— оформлены не на тот заказ клиента;
— оформлены частично;
— имеют другое соглашение или организацию;
— созданы без заполненного основания «Заказ клиента».Например, если реализация оформлена просто от клиента, но поле «Заказ клиента» не заполнено, она может не уменьшить задолженность по конкретному заказу.
#### 5. Обновить форму заказа
Иногда движения уже сформированы, но форма показывает старое состояние. Проверьте:
1. Проведите заказ.
2. Закройте форму.
3. Откройте заказ заново.
4. Нажмите «Еще → Обновить», если такая команда доступна.
5. Проверьте состояние заказа через команду анализа или расшифровки состояния.В управляемом приложении отображаемые состояния могут обновляться не сразу после проведения, особенно если заказ был открыт долгое время.
### Если раньше проводилось одним нажатием, а теперь нет
Наиболее вероятные причины:
1. Изменилось расширение конфигурации.
Расширение могло перехватить команду записи или проведения.2. После обновления конфигурации изменилась форма заказа.
В команде формы могли разделиться действия «Записать» и «Провести».3. Используется нетиповая форма документа.
Это можно проверить через технические сведения формы или сравнение с типовой конфигурацией.4. Изменился статус заказа.
Документ записывается, но при статусе «На согласовании» не выполняет ожидаемое обеспечение.5. Изменилась настройка соглашения.
После изменения порядка расчетов статусы могут начать определяться по другим документам.6. Не выполняется автоматический расчет состояния.
В некоторых случаях состояние пересчитывается только после проведения заказа или связанных документов.7. Есть фоновые задания обмена или интеграции.
Если оплаты и реализации загружаются из внешней системы, данные в регистрах могут появляться с задержкой.### Как быстро определить причину
Откройте проблемный заказ и выполните:
1. Запишите его.
2. Проведите.
3. Откройте команду анализа состояния заказа, например «Состояние заказа», «Состояние обеспечения» или аналогичную команду в форме.
4. Посмотрите расшифровку:
— сколько заказано;
— сколько отгружено;
— сколько оплачено;
— сколько зарезервировано;
— какие документы учтены.Если после проведения движения и статусы стали правильными, то это нормальная логика работы УТ 11.6. Если же проведение не помогает, а помогает только последовательность записать → закрыть → открыть → провести, то нужно проверять форму документа и расширения.
Для разработчика в таком случае стоит проверить:
— обработчики
ПередЗаписью,ПриЗаписи,ПослеЗаписи;
— команду проведения формы;
— наличие расширений на документ «Заказ клиента»;
— не вызывается ли вместо проведения обычная запись;
— не выполняется ли изменение состояния только вПослеЗаписи;
— нет ли программного вызова записи с режимомРежимЗаписиДокумента.Записьвместо проведения.В типовом варианте проведение должно выполняться примерно так:
1С (Код)123Объект.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Оперативный);Если программно вызывается только:
1С (Код)12Объект.Записать(РежимЗаписиДокумента.Запись);то документ будет сохранен, но движения и связанные состояния могут не обновиться.
Практически: если кнопка «Провести» сама не выполняет запись нового заказа, а требует предварительного сохранения, это не обычная необходимость УТ 11.6, а повод проверить расширения, измененную форму документа и обработчики записи.
Если речь именно о конфигурировании и доработке «1С:Бухгалтерии 8», редакция 3.0, а не о работе бухгалтера в программе, лучше изучать одновременно:
1. платформу «1С:Предприятие 8.3»;
2. устройство типовой конфигурации БП 3.0;
3. встроенный язык 1С и язык запросов;
4. расширения конфигурации;
5. обмены, регистры, проведение документов и бухгалтерский учет.Отдельного полноценного курса только по внутреннему устройству БП 3.0 мало. Конфигурация большая, а в разных релизах меняются формы, общие модули и механизмы учета.
## Видеоуроки
### 1. Официальные материалы 1С
Начните с материалов фирмы «1С» по платформе:
Рекомендую посмотреть здесь:
— https://v8.1c.ru/obuchenie/
— https://its.1c.ru/
— https://edu.1cfresh.com/Ищите темы:
— управляемое приложение;
— разработка прикладных решений;
— язык запросов;
— регистры сведений;
— регистры накопления;
— бухгалтерские регистры;
— планы счетов;
— документы и движения;
— расширения конфигурации;
— система компоновки данных;
— клиент-серверное взаимодействие.На официальном сайте не всегда удобно искать именно обучающие ролики, поэтому полезно использовать поиск по YouTube с готовыми запросами:
— https://www.youtube.com/results?search_query=1С+Бухгалтерия+3.0+конфигурирование
— https://www.youtube.com/results?search_query=1С+расширение+конфигурации+Бухгалтерия+3.0
— https://www.youtube.com/results?search_query=1С+разработка+расширений+конфигурации
— https://www.youtube.com/results?search_query=1С+регистры+бухгалтерии+проведение+документов
— https://www.youtube.com/results?search_query=1С+БСП+разработка+конфигурации
— https://www.youtube.com/results?search_query=1С+язык+запросов+обучение### 2. Infostart
На Infostart много практических материалов именно по реальной разработке, отладке и доработке типовых конфигураций.
Рекомендую посмотреть здесь:
— https://infostart.ru/1c/
— https://infostart.ru/1c/articles/
— https://infostart.ru/1c/videos/Для поиска используйте запросы:
— «БП 3.0 расширение конфигурации»;
— «Бухгалтерия предприятия 3.0 разработка»;
— «БП 3.0 регистр бухгалтерии»;
— «БП 3.0 проведение документа»;
— «БП 3.0 подписка на событие»;
— «БП 3.0 дополнительный реквизит»;
— «БП 3.0 внешняя печатная форма»;
— «БП 3.0 внешняя обработка»;
— «БП 3.0 СКД»;
— «БП 3.0 универсальный отчет».Полезно учитывать, что часть старых публикаций написана под обычные доработки конфигурации. Сейчас для типовой БП 3.0 в большинстве случаев предпочтительнее использовать расширение, а не снимать конфигурацию с поддержки.
### 3. Каналы и видеопоиск
В YouTube лучше искать не только по фразе «БП 3.0», но и по общим темам 1С. Например, конкретную задачу в БП 3.0 часто объясняют в ролике по платформе:
— «Как сделать расширение конфигурации 1С»;
— «Как добавить реквизит в документ через расширение»;
— «Как изменить форму документа в расширении»;
— «Как подписаться на событие проведения документа»;
— «Как получить движения документа»;
— «Как написать запрос к регистру бухгалтерии»;
— «Как сделать внешнюю печатную форму»;
— «Как добавить команду в форму документа»;
— «Как использовать БСП в расширении».Это эффективнее, чем искать только ролики с названием «обучение БП 3.0».
## Книги по платформе 1С
### 1. «1С:Предприятие 8.3. Практическое пособие разработчика»
Авторы: А. В. Радченко, М. В. Хрущ.
Это одна из основных книг для изучения конфигурирования. В ней хорошо разобраны:
— объекты конфигурации;
— справочники;
— документы;
— регистры сведений;
— регистры накопления;
— регистры бухгалтерии;
— планы счетов;
— отчеты;
— обработки;
— формы;
— роли;
— подсистемы;
— проведение документов;
— запросы;
— управляемое приложение.Книга написана на учебной конфигурации, а не на БП 3.0, но принципы полностью применимы к бухгалтерии.
В базе знаний есть фрагмент этой книги. Рекомендую посмотреть здесь:
— https://its.1c.ru/db/metod8dev
— https://v8.1c.ru/metod/books/Также можно искать издание по названию:
— https://www.ozon.ru/search/?text=1С%20Предприятие%208.3%20Практическое%20пособие%20разработчика
— https://www.labirint.ru/search/1%D0%A1%20%D0%9F%D1%80%D0%B5%D0%B4%D0%BF%D1%80%D0%B8%D1%8F%D1%82%D0%B8%D0%B5%208.3%20%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5%20%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%D0%B8%D0%B5%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0При покупке смотрите, чтобы книга была по версии 8.3 и управляемому приложению. Старые книги по 8.1 и 8.2 могут быть полезны, но интерфейс и некоторые возможности платформы уже отличаются.
### 2. «Разработка прикладных решений на платформе 1С:Предприятие 8.3»
Также авторы: А. В. Радченко, М. В. Хрущ.
Книга более ориентирована на разработчика прикладных решений. Полезна для понимания:
— архитектуры конфигурации;
— клиент-серверной работы;
— управляемых форм;
— разделения клиентского и серверного кода;
— механизмов проведения;
— работы с данными;
— ролей и прав;
— производительности;
— обменов.Рекомендую искать здесь:
— https://www.ozon.ru/search/?text=Разработка%20прикладных%20решений%20на%20платформе%201С%20Предприятие%208.3
— https://v8.1c.ru/metod/books/### 3. «1С:Предприятие 8.3. Руководство разработчика»
Это не столько учебник, сколько справочная документация. Ее удобно использовать после изучения основ.
Рекомендую посмотреть здесь:
— https://its.1c.ru/db/v8doc
— https://v8.1c.ru/doc8/По этой документации удобно проверять:
— свойства объектов конфигурации;
— методы встроенного языка;
— параметры процедур;
— особенности серверного и клиентского вызова;
— работу с формами;
— запросы;
— расширения.## Что читать именно по БП 3.0
### 1. Описание конфигурации
Для понимания структуры типовой БП 3.0 полезны материалы:
— описание функциональности БП;
— руководство пользователя;
— описание изменений по релизам;
— документация к подсистемам;
— инструкции по обновлению.Рекомендую посмотреть здесь:
— https://v8.1c.ru/buhv8/
— https://its.1c.ru/db/buhv8
— https://releases.1c.ru/В разделе релизов особенно полезно читать:
— «Новое в релизе»;
— «Изменения законодательства»;
— «Известные проблемы»;
— «Порядок обновления»;
— описание изменений объектов конфигурации.Это помогает понять, почему в типовой БП используется конкретный документ, регистр или общий модуль.
### 2. Стандартные библиотеки
БП 3.0 активно использует БСП, поэтому желательно отдельно изучить:
— общие модули БСП;
— дополнительные отчеты и обработки;
— дополнительные реквизиты;
— печатные формы;
— настройки пользователей;
— вариантность отчетов;
— дополнительные команды;
— фоновые задания;
— стандартные подсистемы.Рекомендую посмотреть здесь:
— https://github.com/1c-spravochnik/bsp
— https://its.1c.ru/db/bsp
— https://v8.1c.ru/library/bsp/Если нужно дорабатывать БП 3.0, знание БСП обязательно. Многие функции в типовой конфигурации не реализованы напрямую в модуле документа, а вызываются через общие модули БСП и подсистемы конфигурации.
## В каком порядке изучать
### Этап 1. Основы платформы
Изучите:
1. Конфигуратор и режим «1С:Предприятие».
2. Справочники.
3. Документы.
4. Перечисления.
5. Регистры сведений.
6. Регистры накопления.
7. Регистры бухгалтерии.
8. Планы счетов.
9. Отчеты и обработки.
10. Формы.
11. Роли и права.
12. Подсистемы.Для практики создайте небольшую учебную конфигурацию, например:
— справочник «Клиенты»;
— справочник «Товары»;
— документ «Продажа»;
— табличную часть товаров;
— регистр накопления «Продажи»;
— отчет по продажам.Без этого сложно эффективно разбираться в БП 3.0.
### Этап 2. Язык 1С и запросы
Отдельно изучите:
— переменные;
— структуры и соответствия;
— массивы;
— менеджеры объектов;
— объектную и табличную модель данных;
— транзакции;
— исключения;
— клиентские и серверные процедуры;
— директивы&НаКлиенте,&НаСервере,&НаСервереБезКонтекста;
— временные таблицы;
— соединения;
— пакетные запросы;
— виртуальные таблицы.Для БП особенно важны запросы к:
— регистрам бухгалтерии;
— регистрам накопления;
— регистрам сведений;
— документам и их табличным частям;
— бухгалтерским итогам.### Этап 3. Изучение типовой БП 3.0
В демонстрационной или копии рабочей базы по очереди изучайте:
1. Документ «Поступление товаров и услуг».
2. Документ «Реализация товаров и услуг».
3. Документ «Списание с расчетного счета».
4. Документ «Поступление на расчетный счет».
5. Документ «Операция, введенная вручную».
6. Документ «Принятие к учету ОС».
7. Документ «Начисление амортизации».
8. Документы по зарплате и налогам.
9. Документы закрытия месяца.
10. Отчеты «Оборотно-сальдовая ведомость» и «Анализ счета».Для каждого документа смотрите:
— форму;
— командный интерфейс;
— модуль объекта;
— модуль формы;
— движения;
— регистры;
— подписки на события;
— общие модули;
— команды;
— проверки заполнения;
— обработчики проведения.Особенно полезно включать:
— замер производительности;
— технологический журнал;
— отладчик;
— просмотр движений документа;
— «Конфигурация» и «Сравнить конфигурации»;
— поиск ссылок на объект.## Какие задачи делать на практике
Лучше обучаться не на абстрактных примерах, а на типовых задачах по БП 3.0.
### Начальный уровень
1. Добавить реквизит в справочник через расширение.
2. Добавить реквизит в документ.
3. Вывести реквизит на форму.
4. Заполнить реквизит по кнопке.
5. Добавить дополнительную команду в форму.
6. Сделать проверку заполнения реквизита.
7. Вывести дополнительный реквизит в печатную форму.
8. Сделать простой отчет на СКД.
9. Добавить отбор по организации.
10. Добавить отбор по контрагенту.### Средний уровень
1. Сделать внешнюю печатную форму.
2. Сделать внешнюю обработку заполнения табличной части.
3. Добавить подписку на событие.
4. Изменить алгоритм заполнения документа через расширение.
5. Получить остатки по регистру накопления.
6. Получить бухгалтерские данные из регистра бухгалтерии.
7. Добавить движения в собственный регистр.
8. Настроить права доступа.
9. Сделать дополнительный отчет через БСП.
10. Добавить механизм проверки перед проведением.### Продвинутый уровень
1. Разобраться с проведением документа БП.
2. Найти источник формирования бухгалтерской проводки.
3. Исследовать закрытие месяца.
4. Сделать корректировку типового алгоритма через расширение.
5. Настроить обмен с другой базой.
6. Исследовать фоновые задания.
7. Оптимизировать медленный запрос.
8. Разобраться с блокировками.
9. Настроить RLS, то есть ограничения доступа на уровне записей.
10. Проверить совместимость доработки с будущим обновлением БП.## Что особенно важно для БП 3.0
### Не начинать с изменения типовой конфигурации
Для учебной базы это допустимо, но в рабочей БП 3.0 лучше использовать:
— расширение конфигурации;
— внешнюю обработку;
— внешнюю печатную форму;
— внешнюю отчетность;
— подписки на события;
— дополнительные реквизиты и сведения;
— стандартные механизмы БСП.Прямое изменение типовой конфигурации усложняет обновления.
### Изучить бухгалтерский регистр
В БП 3.0 проводки обычно формируются не простым ручным заполнением таблицы, а через механизмы проведения документов, планы счетов, регистр бухгалтерии и правила отражения операций.
Нужно понимать:
— что такое счет дебета и кредита;
— субконто;
— виды субконто;
— организация;
— валюта;
— количество;
— суммы;
— содержание проводки;
— регистраторы;
— движения документа;
— виртуальные таблицы регистра бухгалтерии;
— периодичность и итоги.Без основ бухгалтерского учета невозможно качественно дорабатывать проведение документов.
### Изучить структуру БСП
В типовой БП не всегда нужно искать всю логику в модуле формы документа. Часто используются:
— общие модули;
— менеджеры объектов;
— подписки на события;
— расширения;
— программные интерфейсы;
— функциональные опции;
— параметры сеанса;
— настройки пользователя.Поэтому при изучении каждого механизма используйте команду поиска по конфигурации и ищите:
— имя процедуры;
— имя общего модуля;
— имя регистра;
— имя команды;
— имя подписки;
— обращения к объекту.## Оптимальный комплект для обучения
Я бы рекомендовал такой набор:
1. «1С:Предприятие 8.3. Практическое пособие разработчика»
Для базового конфигурирования.2. «Разработка прикладных решений на платформе 1С:Предприятие 8.3»
Для более серьезного понимания архитектуры.3. Документация платформы 1С
https://its.1c.ru/db/v8doc4. Документация по БСП
https://its.1c.ru/db/bsp5. Описание и релизы БП 3.0
https://its.1c.ru/db/buhv86. Видеопоиск по расширениям и разработке БП
https://www.youtube.com/results?search_query=1С+Бухгалтерия+3.0+расширение+конфигурации7. Практические статьи по доработке типовых конфигураций
https://infostart.ru/1c/articles/Главное, не ограничиваться просмотром роликов. После каждой темы делайте такую же доработку в копии БП 3.0: добавьте реквизит, выведите его на форму, создайте команду, сформируйте отчет, найдите движения документа и проверьте результат через отладчик.
9 октября 2026 в 12:18 в ответ на: Как исправить ошибку «Каталог не обнаружен» при отправке HTML-письма? #38836Ошибка:
1С (Код)1Ошибка при вызове метода контекста (Послать): Каталог не обнаруженпри отправке HTML-письма обычно означает, что в письме есть ссылка на файл или вложение, а каталог с этим файлом недоступен на компьютере, где выполняется метод
Почта.Послать().Чаще всего причина находится в одном из трех мест:
1. в HTML указаны картинки через локальный путь;
2. в письмо добавляется вложение по несуществующему пути;
3. код выполняется на сервере, а файл находится на компьютере пользователя.## 1. Проверьте HTML
Неправильно:
XHTML1<img src="C:Templogo.png">или:
XHTML1<img src="file:///C:/Temp/logo.png">Также проблемными будут пути вида:
XHTML1<img src="D:Общие документыlogo.jpg">Когда письмо отправляется, почтовый объект пытается обработать этот путь. Если каталог
C:Temp,D:Общие документыили другой путь отсутствует на компьютере сервера, возникает ошибка «Каталог не обнаружен».Для HTML-письма картинку нужно либо:
— добавить как встроенное вложение с
Content-ID;
— вставить в HTML в формате Base64;
— убрать картинку из HTML;
— разместить картинку на доступном веб-сервере и указать URLhttps://....Пример с внешней ссылкой:
XHTML1<img src="https://example.ru/images/logo.png">Но такая картинка может не отображаться у получателя, если почтовая программа блокирует внешнее содержимое.
## 2. Проверьте добавление обычных вложений
Если используется код вроде:
1С (Код)1Вложение = ПочтовоеСообщение.Вложения.Добавить(ПутьКФайлу);или:
1С (Код)1Вложение = Сообщение.Вложения.Добавить(Новый Файл(ПутьКФайлу));нужно проверить, что файл существует именно там, где выполняется отправка.
Надежная проверка:
1С (Код)12345ФайлВложения = Новый Файл(ПутьКФайлу);Если Не ФайлВложения.Существует() ТогдаВызватьИсключение "Файл вложения не найден: " + ПутьКФайлу;КонецЕсли;Для добавления файла лучше использовать двоичные данные:
1С (Код)12345678910ФайлВложения = Новый Файл(ПутьКФайлу);Если Не ФайлВложения.Существует() ТогдаВызватьИсключение "Файл вложения не найден: " + ПутьКФайлу;КонецЕсли;ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ПутьКФайлу);Вложение = ПочтовоеСообщение.Вложения.Добавить(ДвоичныеДанныеФайла);Вложение.Имя = ФайлВложения.Имя;Важно: файл не должен быть только на компьютере пользователя, если отправка выполняется на сервере.
## 3. Проверьте серверный и клиентский путь
Например, пользователь выбирает файл:
1С (Код)1C:UsersИвановDocumentsДокумент.pdfНо
Почта.Послать()выполняется на сервере 1С. На сервере такого каталога может не быть. Для сервера путь:1С (Код)1C:UsersИвановDocumentsДокумент.pdfне означает путь к компьютеру пользователя.
В таком случае файл нужно сначала передать на сервер в виде
ДвоичныеДанные, а уже на сервере добавить его в письмо.Пример общей схемы:
1С (Код)1234567891011121314151617181920&НаКлиентеПроцедура ОтправитьПисьмо(Команда)Если Не ЗначениеЗаполнено(ПутьКФайлу) ТогдаСообщить("Не выбран файл.");Возврат;КонецЕсли;Файл = Новый Файл(ПутьКФайлу);Если Не Файл.Существует() ТогдаСообщить("Файл не найден: " + ПутьКФайлу);Возврат;КонецЕсли;ДанныеФайла = Новый ДвоичныеДанные(ПутьКФайлу);ОтправитьПисьмоНаСервере(ДанныеФайла, Файл.Имя);КонецПроцедурыСерверная процедура:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445&НаСервереПроцедура ОтправитьПисьмоНаСервере(ДанныеФайла, ИмяФайла)Профиль = Новый ИнтернетПочтовыйПрофиль;Профиль.АдресСервераSMTP = "smtp.example.ru";Профиль.ПортSMTP = 465;Профиль.ПользовательSMTP = "user@example.ru";Профиль.ПарольSMTP = "Пароль";Профиль.ИспользоватьSSLSMTP = Истина;Сообщение = Новый ИнтернетПочтовоеСообщение;Сообщение.Тема = "Проверка отправки";Сообщение.Отправитель = "user@example.ru";Сообщение.Получатели.Добавить("recipient@example.ru");ТекстHTML ="<html>" +"<body>" +"<p>Тестовое письмо.</p>" +"</body>" +"</html>";Сообщение.Тексты.Добавить(ТекстHTML,ТипТекстаПочтовогоСообщения.HTML);Вложение = Сообщение.Вложения.Добавить(ДанныеФайла);Вложение.Имя = ИмяФайла;Сообщение.ОбработатьТексты();Почта = Новый ИнтернетПочта;ПопыткаПочта.Подключиться(Профиль);Почта.Послать(Сообщение);ИсключениеТекстОшибки = ОписаниеОшибки();ВызватьИсключение "Ошибка отправки письма: " + ТекстОшибки;КонецПопытки;Почта.Отключиться();КонецПроцедуры## 4. Если в HTML есть картинки, добавляйте их через CID
HTML:
XHTML123456<html><body><p>Добрый день!</p><img src="cid:logo.png"></body></html>Картинку нужно добавить во вложения и назначить ей идентификатор:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243444546&НаСервереПроцедура ОтправитьHTMLСКартинкойНаСервере(ДанныеЛоготипа)Профиль = Новый ИнтернетПочтовыйПрофиль;Профиль.АдресСервераSMTP = "smtp.example.ru";Профиль.ПортSMTP = 465;Профиль.ПользовательSMTP = "user@example.ru";Профиль.ПарольSMTP = "Пароль";Профиль.ИспользоватьSSLSMTP = Истина;Сообщение = Новый ИнтернетПочтовоеСообщение;Сообщение.Тема = "Письмо с логотипом";Сообщение.Отправитель = "user@example.ru";Сообщение.Получатели.Добавить("recipient@example.ru");HTML ="<html>" +"<body>" +"<p>Добрый день!</p>" +"<img src=""cid:logo.png"">" +"</body>" +"</html>";Вложение = Сообщение.Вложения.Добавить(ДанныеЛоготипа);Вложение.Имя = "logo.png";Вложение.Идентификатор = "logo.png";Сообщение.Тексты.Добавить(HTML,ТипТекстаПочтовогоСообщения.HTML);Сообщение.ОбработатьТексты();Почта = Новый ИнтернетПочта;ПопыткаПочта.Подключиться(Профиль);Почта.Послать(Сообщение);ИсключениеВызватьИсключение ОписаниеОшибки();КонецПопытки;Почта.Отключиться();КонецПроцедурыЕсли картинки формируются объектом
ФорматированныйДокумент, можно получить HTML и картинки черезПолучитьHTML(), а затем заменить ссылки на картинки наcid::1С (Код)12345678910111213141516171819202122232425HTML = "";Картинки = Новый Соответствие;Содержимое.ПолучитьHTML(HTML, Картинки);Для Каждого ЭлементКартинки Из Картинки ЦиклДанныеКартинки = ЭлементКартинки.Значение.ПолучитьДвоичныеДанные();Вложение = Сообщение.Вложения.Добавить(ДанныеКартинки);Вложение.Идентификатор = ЭлементКартинки.Ключ;Вложение.Имя = ЭлементКартинки.Ключ;HTML = СтрЗаменить(HTML,ЭлементКартинки.Ключ,"cid:" + Вложение.Идентификатор);КонецЦикла;Сообщение.Тексты.Добавить(HTML,ТипТекстаПочтовогоСообщения.HTML);## 5. Проверьте временные файлы
Иногда HTML сначала записывается во временный каталог:
1С (Код)1ИмяВременногоФайла = ПолучитьИмяВременногоФайла("html");А потом каталог удаляется до выполнения:
1С (Код)1Почта.Послать(Сообщение);Например, проблемный вариант:
1С (Код)12345678ИмяФайла = ПолучитьИмяВременногоФайла("html");ЗаписатьТекстовыйФайл(ИмяФайла, HTML);// Здесь временный файл удалилиУдалитьФайлы(ИмяФайла);// А здесь почта пытается его прочитатьПочта.Послать(Сообщение);Если файл используется в письме, он должен существовать до завершения
Послать().Проверяйте временный путь:
1С (Код)12345Файл = Новый Файл(ИмяФайла);Сообщить("Путь: " + ИмяФайла);Сообщить("Существует: " + Файл.Существует());Сообщить("Каталог: " + Файл.Путь);Если файл создается на сервере, временный каталог должен существовать именно на сервере 1С.
## 6. Быстрая диагностика
Временно отправьте письмо без HTML-картинок и вложений:
1С (Код)123456789101112131415Сообщение = Новый ИнтернетПочтовоеСообщение;Сообщение.Тема = "Тест";Сообщение.Отправитель = "user@example.ru";Сообщение.Получатели.Добавить("recipient@example.ru");Сообщение.Тексты.Добавить("Простое текстовое письмо",ТипТекстаПочтовогоСообщения.ПростойТекст);Сообщение.ОбработатьТексты();Почта.Подключиться(Профиль);Почта.Послать(Сообщение);Почта.Отключиться();Если простое письмо отправляется, добавляйте элементы по одному:
1. простой текст;
2. HTML без картинок;
3. HTML с одной картинкой;
4. обычное вложение;
5. остальные картинки и файлы.Так будет сразу понятно, какой путь вызывает ошибку.
## На что обратить внимание в вашем коде
Перед строкой:
1С (Код)1Почта.Послать(Сообщение);проверьте:
— нет ли в HTML
src="C:...";
— нет ли в HTMLfile:///...;
— существуют ли все файлы вложений;
— выполняется ли код на клиенте или сервере;
— доступен ли каталог серверу 1С;
— не удаляется ли временный файл раньше времени;
— не содержит ли имя файла недопустимые символы;
— вызывается лиСообщение.ОбработатьТексты()после добавления текста и вложений.В большинстве случаев при HTML-письме ошибка устраняется удалением локальных
srcиз HTML или заменой их на CID-вложения. Если отправка выполняется на сервере, локальные пути компьютера пользователя нужно передавать на сервер какДвоичныеДанные, а не передавать строку с путем.9 октября 2026 в 10:40 в ответ на: Как исправить ошибку «Таблица не найдена НачальноеСальдоПрямыхРасходов» при закр #38833Ошибка:
> Таблица не найдена «НачальноеСальдоПрямыхРасходов»
возникает внутри программного запроса регламентной операции.
НачальноеСальдоПрямыхРасходовв данном случае, скорее всего, является временной таблицей, которую программа должна была сформировать на предыдущем этапе расчета. До обращения к ней таблица не была создана.Это не означает, что в базе отсутствует справочник или регистр с таким названием. Создавать объект с таким именем вручную не нужно.
## Наиболее вероятные причины
1. Ошибка конкретного релиза конфигурации 1С.
2. После обновления конфигурации не был выполнен штатный режим обновления базы данных.
3. Измененный программный код конфигурации, в котором временная таблица создается не во всех ветках алгоритма.
4. Повреждение или некорректное продолжение старого документа «Закрытие месяца».
5. Нарушение последовательности выполнения регламентных операций.
6. Реже, проблема с версией платформы 1С или серверным кэшем.По тексту ошибки это больше похоже на программную ошибку алгоритма закрытия счетов, а не на обычную ошибку в остатках, аналитике или настройках затрат.
## Что сделать в первую очередь
### 1. Зафиксировать релиз конфигурации и платформы
Откройте:
Справка → О программе
Зафиксируйте:
— название конфигурации;
— релиз конфигурации;
— версию платформы;
— режим работы: файловый или клиент-серверский.Особенно важно понять, используется ли:
— «Бухгалтерия предприятия 3.0»;
— «Комплексная автоматизация 2»;
— «ERP Управление предприятием 2»;
— доработанная конфигурация.Алгоритмы закрытия счетов 20, 23, 25, 26, 28 и 29 существенно различаются в БП, КА и ERP.
### 2. Проверить журнал регистрации
Откройте:
Администрирование → Поддержка и обслуживание → Журнал регистрации
Установите отбор:
— период: момент возникновения ошибки;
— уровень: Ошибка;
— пользователь;
— событие, связанное с регламентной операцией.Откройте ошибку полностью. Важны сведения:
— имя общего модуля;
— имя процедуры или функции;
— номер строки;
— полный текст запроса;
— стек вызовов;
— имя конфигурационного объекта.Если в журнале будет указано что-то вроде:
—
ЗакрытиеМесяца;
—РасчетСебестоимости;
—ЗакрытиеСчетов20_23_25_26;
—РаспределениеПроизводственныхЗатрат;то это позволит точно определить проблемный участок.
### 3. Не продолжать закрытие старого документа
Если ошибка возникла в уже созданном документе «Закрытие месяца», выполните следующие действия:
1. Откройте документ закрытия месяца за сентябрь 2026 года.
2. Отмените проведение регламентной операции с ошибкой.
3. Перезапишите документ.
4. При необходимости удалите документ закрытия месяца за сентябрь и создайте его заново штатной командой.
5. Выполните заполнение операций заново.
6. Запустите закрытие месяца повторно.Перед удалением документа обязательно сделайте резервную копию информационной базы.
Если в документе уже были выполнены последующие регламентные операции, сначала отмените их проведение в обратном порядке.
## Проверить обновление конфигурации
Если используется типовая конфигурация, первое практическое решение, которое следует выполнить, это обновить ее до актуального релиза.
Порядок:
1. Сделать резервную копию базы.
2. Проверить наличие обновления для текущей конфигурации.
3. Выполнить обновление конфигурации.
4. Запустить базу в режиме предприятия.
5. Повторно создать или перезаполнить документ закрытия месяца.
6. Повторить закрытие сентября 2026 года.После обновления проверьте, что версия конфигурации действительно изменилась. Иногда обновляют только платформу, хотя ошибка находится в коде конфигурации.
Также проверьте, не используется ли старая платформа. Для новых релизов БП, КА и ERP фирма 1С часто устанавливает минимально допустимую версию платформы.
## Если конфигурация доработанная
Если конфигурация изменена, необходимо проверить программный код.
В конфигураторе выполните поиск по конфигурации строки:
1С (Код)1НачальноеСальдоПрямыхРасходовНужно найти два участка:
1. место, где временная таблица создается;
2. место, где она используется.Перед использованием временной таблицы должен выполняться запрос или фрагмент пакетного запроса, создающий ее через
ПОМЕСТИТЬ. Условно логика должна быть такой:1С (Код)1234567891011121314Запрос = Новый Запрос;Запрос.Текст = "|ВЫБРАТЬ| ...|ПОМЕСТИТЬ НачальноеСальдоПрямыхРасходов|ИЗ| ...|;||ВЫБРАТЬ| ...|ИЗ| НачальноеСальдоПрямыхРасходов КАК Расходы|";Типовая ошибка в доработанном коде выглядит так:
— блок с созданием таблицы выполняется только при определенном условии;
— блок с использованием таблицы выполняется всегда;
— в результате временная таблица не существует.Например, создание таблицы может быть ошибочно помещено внутрь условия, связанного с наличием НЗП, производственных подразделений или прямых расходов.
В таком случае нужно не просто добавить пустую таблицу, а проверить сам алгоритм формирования начального сальдо прямых расходов.
## Проверить, не повреждена ли типовая конфигурация
Если конфигурация должна быть типовой, но при поиске обнаруживаются изменения, выполните:
Конфигуратор → Конфигурация → Поддержка → Настройка поддержки
Проверьте:
— является ли конфигурация типовой;
— есть ли измененные объекты;
— изменены ли общие модули, отвечающие за закрытие месяца;
— не сняты ли с поддержки процедуры расчета себестоимости.Особое внимание следует обратить на общие модули, связанные с:
— закрытием месяца;
— производственными расходами;
— расчетом себестоимости;
— распределением расходов;
— регламентными операциями;
— расчетом НЗП.Если типовой общий модуль был изменен, сравните его с поставщиком и верните типовой код либо перенесите доработку корректно.
## Что проверить в учете после устранения программной ошибки
Хотя сама ошибка имеет программный характер, перед повторным закрытием желательно проверить данные за сентябрь 2026 года:
1. Выполнить перепроведение первичных документов за сентябрь.
2. В КА, ERP или УПП восстановить последовательность по операциям приобретения, реализации и себестоимости.
3. Проверить отрицательные остатки по товарам и материалам.
4. Проверить ОСВ по счетам:
— 20;
— 23;
— 25;
— 26;
— 28;
— 29.
5. Проверить отсутствие пустой аналитики по подразделениям, номенклатурным группам и статьям затрат.
6. Проверить настройки распределения косвенных расходов.
7. Проверить порядок подразделений для закрытия счетов, если он задается вручную.
8. Проверить документы рабочего места Распределение расходов, если используется КА или ERP.
9. Повторно выполнить регламентные операции в установленном порядке.В БП проверьте:
Главное → Учетная политика → Методы распределения косвенных расходов
В КА и ERP проверьте:
Финансовый результат и контроллинг → Доходы и расходы → Распределение расходов
а также:
Производство → Распределение расходов
Если есть статус «Требуется сформировать документ» или «Ошибка распределения», сначала необходимо обработать его.
## Если обновление не помогло
Если конфигурация типовая, релиз актуальный, а ошибка повторяется, выполните проверку в копии базы:
1. Создайте копию информационной базы.
2. В копии отмените проведение документа закрытия сентября.
3. Перепроведите документы производственного блока за месяц.
4. Создайте новый документ закрытия месяца.
5. Повторите операцию.Если в копии ошибка повторяется на чистом новом документе, почти наверняка это ошибка релиза или платформы.
Если ошибка возникает только в рабочей базе, следует проверить:
— изменения конфигурации;
— расширения;
— подключенные внешние обработки;
— дополнительные общие модули;
— права пользователя;
— регламентные задания;
— повреждение кэша.Для клиент-серверной базы дополнительно можно перезапустить службы 1С после резервного копирования и проверить ошибку повторно. Очистка кэша может устранить только ошибку выполнения старого скомпилированного кода, но не исправит ошибку в самом алгоритме.
## Чего делать не следует
Не следует:
— создавать вручную регистр или справочник
НачальноеСальдоПрямыхРасходов;
— исправлять проводки ручной операцией только для обхода ошибки;
— удалять движения регламентных документов напрямую из базы;
— многократно нажимать «Выполнить» без анализа журнала регистрации;
— менять настройки учета наугад;
— выполнять «Тестирование и исправление» на рабочей базе без резервной копии.Для этой ошибки основной порядок решения такой:
1. получить полный стек из журнала регистрации;
2. определить релиз конфигурации и платформы;
3. проверить обновление;
4. пересоздать документ закрытия месяца;
5. если база измененная, проверить создание временной таблицы в коде;
6. только после этого проверять производственные остатки и настройки распределения расходов.Рекомендую посмотреть здесь:
— [Типичные ошибки в регламентных операциях закрытия месяца в 1С:КА 2 и ERP 2](https://infostart.ru/1c/articles/2100806/)
— [Регламентные операции закрытия месяца](https://infostart.ru/1c/articles/203645/)В КА 2.5.27.68 команда «Получить GS46» в обработке «Подготовка сведений для Национального каталога» не генерирует код внутри 1С. Она отправляет запрос в Национальный каталог и получает код, присвоенный товару внешним сервисом.
Под GS46 в данном механизме обычно понимается идентификатор товара GS1, который возвращается Национальным каталогом после обработки карточки. Для маркируемых товаров этот код используется как основа для GTIN и дальнейшего формирования кодов маркировки.
## Как работает получение GS46
Общий порядок такой:
1. В КА создается или выбирается номенклатура.
2. В обработке «Подготовка сведений для Национального каталога» формируются сведения о товаре.
3. Заполняются обязательные характеристики:
— производитель;
— страна производства;
— бренд;
— вид продукции;
— наименование;
— товарная категория;
— потребительские характеристики;
— единица измерения;
— упаковка;
— вес или объем, если требуются для конкретной категории;
— сведения о документе, подтверждающем характеристики товара.
4. Сведения выгружаются в Национальный каталог.
5. Национальный каталог проверяет карточку.
6. После успешной обработки выполняется команда «Получить GS46».
7. 1С отправляет запрос по загруженным товарам.
8. Полученный идентификатор записывается обратно в карточку номенклатуры или в сведения, связанные с номенклатурой.Сам код при этом не рассчитывается по формуле на стороне 1С. Если Национальный каталог еще не принял карточку, получить GS46 не получится.
## Что нужно сделать в обработке
Обычно порядок действий следующий:
### 1. Сформировать список товаров
В обработке укажите:
— организацию;
— номенклатуру;
— вид продукции или товарную категорию;
— товары, которые требуется передать.Проверьте, что в список попали именно элементы номенклатуры, а не группы и не дубли.
### 2. Заполнить сведения о товарах
По каждой строке проверьте состояние заполнения. Особое внимание:
— производителю;
— бренду;
— стране происхождения;
— характеристикам;
— назначению товара;
— единицам измерения;
— упаковкам;
— кодам ТН ВЭД или ОКПД2, если они обязательны для категории;
— фотографиям и описанию, если они требуются Национальным каталогом.Состав обязательных реквизитов зависит от товарной группы. Для разных категорий перечень характеристик отличается.
### 3. Выполнить проверку
До выгрузки используйте команду проверки заполнения. Если имеются ошибки, сначала исправьте их в карточках Номенклатуры или непосредственно в подготовленных сведениях.
Важно: наличие заполненного наименования и артикула само по себе недостаточно. Национальный каталог идентифицирует товар по совокупности сведений, а не только по наименованию.
### 4. Отправить сведения
Выполните команду выгрузки или передачи сведений в Национальный каталог.
После этого у товара обычно появляется состояние, например:
— сведения подготовлены;
— отправлены;
— приняты;
— отклонены;
— обработка выполняется;
— требуется исправление.Нужно дождаться состояния, при котором карточка принята Национальным каталогом. Сразу после отправки команда получения кода может вернуть пустой результат, поскольку обработка выполняется асинхронно.
### 5. Обновить статусы
Выполните команду получения или обновления состояний товаров. После этого повторно откройте список подготовленных сведений.
Для товаров, которые приняты, станет доступна команда «Получить GS46».
### 6. Получить GS46
Выделите нужные товары и нажмите «Получить GS46».
Обработка отправит запрос в Национальный каталог. Возможны следующие результаты:
— код получен и записан в 1С;
— код уже был получен ранее;
— товар еще находится в обработке;
— карточка отклонена;
— по товару не найдена подходящая карточка;
— не заполнены обязательные реквизиты;
— отсутствует связь с Национальным каталогом;
— не хватает прав или закончилась авторизация.После успешного получения нужно обновить форму и проверить карточку номенклатуры. Код может находиться не в обычном реквизите карточки, а в сведениях, связанных с национальным каталогом, в зависимости от установленного релиза и используемой функциональности.
## Почему GS46 не получается
Наиболее частые причины следующие.
### Товар еще не принят Национальным каталогом
Если товар только что выгружен, сначала нужно обновить его статус. Команда «Получить GS46» не заменяет передачу карточки и не запускает ее проверку заново.
### Карточка отклонена
В этом случае сначала нужно открыть протокол обработки и исправить причину отказа. Часто отклонение вызывают:
— неверная товарная категория;
— отсутствует производитель;
— не заполнен бренд;
— не указана страна производства;
— некорректная единица измерения;
— не заполнены обязательные характеристики;
— характеристики указаны в неверном формате;
— дублирование карточки;
— расхождение данных с уже существующей карточкой товара.После исправления нужно повторно отправить сведения и дождаться нового статуса.
### В 1С нет актуального статуса
Иногда Национальный каталог уже обработал товар, но 1С еще не получила результат. В этом случае:
1. обновите состояния товаров;
2. закройте и заново откройте обработку;
3. повторите получение GS46;
4. проверьте журнал регистрации, если команда завершается ошибкой.### Не настроено подключение
Проверьте:
— подключение к сервису Национального каталога;
— учетную запись организации;
— сертификат электронной подписи;
— срок действия сертификата;
— права пользователя;
— токен или авторизационные данные;
— соответствие организации в 1С организации, зарегистрированной в Национальном каталоге.Если используется электронная подпись, также проверьте, что сертификат доступен на сервере 1С, а не только на локальном компьютере пользователя.
### Выбрана не та организация
GS46 получается в контексте участника оборота и организации. Если в обработке указана другая организация, товары могут не находиться или сервис может возвращать ошибку доступа.
### Номенклатура уже содержит аналогичный код
Если товар ранее был передан из другой базы или код уже был получен вручную, повторное получение может не вернуть новый код. В такой ситуации нужно проверить:
— идентификатор товара в Национальном каталоге;
— GTIN;
— состояние карточки;
— связь элемента Номенклатуры с карточкой Национального каталога.Не следует создавать новую карточку и повторно запрашивать код только из-за того, что код не отображается в привычной форме. Сначала нужно проверить состояние обмена и данные товара.
## Важное различие между GS46, GTIN и кодом маркировки
Это разные сущности:
— GS46: идентификатор, который запрашивается через механизм работы с Национальным каталогом;
— GTIN: глобальный номер торговой единицы, используемый для идентификации товара;
— код маркировки: конкретный уникальный код экземпляра товара или упаковки, который заказывается через систему маркировки;
— DataMatrix: графическое представление кода маркировки.Получение GS46 не означает, что товар уже промаркирован. После получения идентификатора могут потребоваться дополнительные действия:
1. зарегистрировать или связать карточку товара;
2. получить или подтвердить GTIN;
3. заказать коды маркировки;
4. ввести коды в оборот;
5. использовать коды в приемке, продаже и других операциях.## Практическая последовательность для вашей версии КА
Для КА 2.5.27.68 ориентируйтесь на такую последовательность:
1. Откройте НСИ и администрирование.
2. Перейдите в раздел работы с маркировкой и Национальным каталогом.
3. Откройте «Подготовка сведений для Национального каталога».
4. Загрузите или добавьте номенклатуру.
5. Выполните проверку заполнения.
6. Исправьте все ошибки.
7. Передайте сведения в Национальный каталог.
8. Обновите статусы обработки.
9. Убедитесь, что товар принят, а не отклонен и не находится в обработке.
10. Выделите принятые товары.
11. Выполните «Получить GS46».
12. Обновите форму и проверьте записанный идентификатор.
13. Если код не получен, откройте протокол обмена и журнал регистрации.Если обработка показывает «товар не найден», «не готов к получению GS46» или аналогичное сообщение, это обычно означает не ошибку расчета кода, а то, что карточка еще не имеет положительного результата обработки в Национальном каталоге.
8 октября 2026 в 17:18 в ответ на: Как выгрузить данные по номенклатуре и получить GTIN в 1С:КА 2.5.27.68? #38829В 1С:КА 2.5.27.68 GTIN обычно не является обычным реквизитом справочника «Номенклатура». Он хранится в регистрах, связанных с номенклатурой, характеристикой и упаковкой.
Для выгрузки нужно определить, где именно GTIN заполнен в вашей базе.
## Вариант 1. Получить GTIN через «Универсальный отчет»
1. Откройте раздел:
НСИ и администрирование → Печатные формы, отчеты и обработки → Универсальный отчет
В некоторых интерфейсах пункт может находиться в разделе:
НСИ и администрирование → Настройки и справочники → Универсальный отчет
2. В поле Тип объекта выберите:
Регистр сведений
3. В поле Имя объекта попробуйте выбрать:
Штрихкоды номенклатуры
4. Добавьте в настройки отчета поля:
— Номенклатура
— Характеристика
— Упаковка
— Штрихкод
— Вид штрихкода, если такое поле доступно
— Владелец штрихкода, если оно есть в вашей версии5. Нажмите Сформировать.
6. Полученный отчет сохраните через кнопку:
Еще → Сохранить результат
или воспользуйтесь кнопкой сохранения в Excel.
Результат обычно будет содержать примерно такие данные:
| Номенклатура | Характеристика | Упаковка | Штрихкод |
|—|—|—|—|
| Кроссовки | 42 размер | шт | 04612345678901 |
| Кроссовки | 43 размер | шт | 04612345678918 |В зависимости от настроек учета характеристика и упаковка могут отсутствовать.
## Вариант 2. Получить именно GTIN маркированного товара
Если нужны не все штрихкоды, а именно GTIN из системы маркировки, дополнительно проверьте регистр:
— Коды товаров
— Коды маркировки
— Штрихкоды номенклатуры
— Номенклатура и характеристики с кодами, если такой вариант доступен в универсальном отчетеНазвания могут немного отличаться в зависимости от включенной функциональности и состава конфигурации.
В универсальном отчете выберите регистр Коды товаров и выведите поля:
— Номенклатура
— Характеристика
— Упаковка
— Код товара
— Вид кода
— GTIN, если такое поле присутствует
— Дата начала действияВ этом регистре код может называться не
GTIN, аКод товара. Для маркируемой продукции это и будет код товара, полученный из национального каталога или Честного знака.## Вариант 3. Выгрузить номенклатуру и штрихкоды одним отчетом
Если в универсальном отчете нужно получить одновременно реквизиты номенклатуры и штрихкоды:
1. В качестве объекта отчета выберите регистр Штрихкоды номенклатуры.
2. В настройках полей раскройте поля, связанные с номенклатурой.
3. Добавьте:— Номенклатура.Наименование
— Номенклатура.Код
— Номенклатура.Артикул
— Номенклатура.ВидНоменклатуры
— Характеристика
— Упаковка
— Штрихкод4. При необходимости установите отбор:
— Вид номенклатуры
— Группа номенклатуры
— Организация
— Только маркируемая продукция
— Только заполненные штрихкоды5. Сформируйте отчет и сохраните его в Excel.
Важный момент: если выводить только справочник Номенклатура, GTIN в результате не появится, потому что штрихкоды и коды товаров хранятся отдельно от справочника.
## Вариант 4. Через консоль запросов
Если у вас есть доступ к «Консоли запросов» или нужно сделать внешнюю обработку, можно использовать запрос к регистру штрихкодов.
Название регистра в конфигурации необходимо проверить в режиме Конфигуратор, потому что в пользовательском режиме оно может отображаться с пробелами, а в запросе используется имя метаданных без пробелов.
Пример для регистра
ШтрихкодыНоменклатуры:1С (Код)1234567891011121314151617|ВЫБРАТЬ| Штрихкоды.Номенклатура КАК Номенклатура,| Штрихкоды.Номенклатура.Наименование КАК Наименование,| Штрихкоды.Номенклатура.Код КАК КодНоменклатуры,| Штрихкоды.Номенклатура.Артикул КАК Артикул,| Штрихкоды.Характеристика КАК Характеристика,| Штрихкоды.Упаковка КАК Упаковка,| Штрихкоды.Штрихкод КАК Штрихкод|ИЗ| РегистрСведений.ШтрихкодыНоменклатуры КАК Штрихкоды|ГДЕ| НЕ Штрихкоды.Штрихкод ЕСТЬ NULL| И Штрихкоды.Штрихкод <> ""|УПОРЯДОЧИТЬ ПО| Наименование,| Характеристика,| УпаковкаЕсли в вашей базе нет поля
УпаковкаилиХарактеристика, их нужно удалить из запроса.Если регистр называется иначе, запрос нужно адаптировать, например для регистра
КодыТоваров:1С (Код)123456789101112131415161718|ВЫБРАТЬ| КодыТоваров.Номенклатура КАК Номенклатура,| КодыТоваров.Номенклатура.Наименование КАК Наименование,| КодыТоваров.Номенклатура.Код КАК КодНоменклатуры,| КодыТоваров.Номенклатура.Артикул КАК Артикул,| КодыТоваров.Характеристика КАК Характеристика,| КодыТоваров.Упаковка КАК Упаковка,| КодыТоваров.КодТовара КАК КодТовара,| КодыТоваров.ВидКода КАК ВидКода|ИЗ| РегистрСведений.КодыТоваров КАК КодыТоваров|ГДЕ| НЕ КодыТоваров.КодТовара ЕСТЬ NULL| И КодыТоваров.КодТовара <> ""|УПОРЯДОЧИТЬ ПО| Наименование,| Характеристика,| УпаковкаТочное имя полей нужно проверить в конструкторе запроса. В разных версиях КА поле может называться:
—
КодТовара
—GTIN
—Код
—Штрихкод
—КодТовараНациональногоКаталога## Как отличить GTIN от обычного штрихкода
GTIN может иметь длину:
— 8 символов, GTIN-8
— 12 символов, GTIN-12
— 13 символов, GTIN-13
— 14 символов, GTIN-14В 1С штрихкод часто отображается как EAN-13, например:
1С (Код)14612345678906Для передачи в некоторых системах GTIN требуется формат из 14 цифр:
1С (Код)1004612345678906То есть к EAN-13 добавляется один ведущий ноль.
Но автоматически добавлять ноль ко всем значениям нельзя. Сначала нужно определить, в каком формате код хранится и куда он будет загружаться. Если в базе уже хранится GTIN-14, добавление нуля приведет к неправильному коду.
Для проверки длины в отчете Excel можно использовать формулу:
1С (Код)1=ДЛСТР(A2)Если исходный код числовой, Excel может удалить ведущие нули. Поэтому колонку с GTIN лучше заранее установить в формат Текстовый.
## Если GTIN не найден
Проверьте карточку номенклатуры:
1. Откройте НСИ и администрирование → НСИ → Номенклатура.
2. Откройте нужный товар.
3. Проверьте:— Вид номенклатуры
— Признак маркируемой продукции
— Раздел с кодами товаров
— Штрихкоды
— Характеристики
— УпаковкиДля маркируемых товаров GTIN часто связан не только с номенклатурой, но и с характеристикой. Например, разные размеры обуви могут иметь разные GTIN:
| Номенклатура | Характеристика | GTIN |
|—|—|—|
| Кроссовки F7020 | 42 | 04660083016884 |
| Кроссовки F7020 | 43 | 04660083016891 |Поэтому при выгрузке нельзя ограничиваться только полем
Номенклатура. Обязательно выводитеХарактеристика, а при использовании упаковок такжеУпаковка.## Наиболее надежный вариант для вашей задачи
Для первоначальной выгрузки рекомендую сформировать два отчета:
1. По регистру Штрихкоды номенклатуры:
— Номенклатура
— Код
— Артикул
— Характеристика
— Упаковка
— Штрихкод2. По регистру Коды товаров или аналогичному регистру кодов маркировки:
— Номенклатура
— Характеристика
— Упаковка
— Код товара или GTIN
— Вид кодаЗатем сопоставить их по комбинации:
1С (Код)1Номенклатура + Характеристика + УпаковкаСопоставлять только по наименованию нельзя, поскольку у одной номенклатуры могут быть разные характеристики, упаковки и GTIN.
8 октября 2026 в 16:17 в ответ на: Как в 1С передать «КредитныйЛимит» без изменения конфигурации? #38827Да, такую доработку можно выполнить без изменения основной конфигурации и без использования КД3.1.
Для этого в обеих базах нужно создать расширение конфигурации, в котором:
1. Добавить реквизит
КредитныйЛимитв справочникКонтрагенты.
2. Расширить правила формирования EnterpriseData.
3. При выгрузке помещать значение в дополнительную область универсального формата.
4. При загрузке извлекать значение и записывать его в реквизит контрагента.
5. Подключить одинаковую версию расширения формата в обеих базах.Для одного дополнительного реквизита не требуется изменять стандартную XDTO-схему EnterpriseData. Оптимальный вариант, предусмотренный архитектурой универсального формата, это передавать значение через
AdditionalInfo, то есть через дополнительные сведения объекта. Это и есть расширение передаваемых данных без изменения основной конфигурации и стандартного формата.## 1. Что должно быть в обеих базах
В источнике и приемнике должны быть одинаково созданы:
— реквизит справочника
Контрагенты.КредитныйЛимит;
— тип реквизита, например:
— число, длина 15;
— точность 2;
— неотрицательное значение;
— расширение конфигурации с одинаковым идентификатором расширения;
— обработчики обмена;
— ключ дополнительного свойства, напримерКредитныйЛимит.Если реквизит уже добавлен в обе основные конфигурации, повторно добавлять его в расширение не нужно. В расширении потребуется только доработка обмена.
## 2. Почему не нужно менять стандартную схему EnterpriseData
Стандартный формат EnterpriseData не следует изменять напрямую.
Если добавить новый элемент непосредственно в типовой XDTO-пакет
EnterpriseData, то возникнут проблемы:— конфигурация будет снята с поддержки;
— при обновлении типовой конфигурации изменения могут быть потеряны;
— другая база может не распознать измененную схему;
— потребуется синхронно обновлять структуру формата в обеих базах;
— стандартный менеджер обмена может игнорировать новый узел.Для пользовательских реквизитов в EnterpriseData обычно используется дополнительная информация объекта. В ней можно передать реквизит, которого нет в типовом формате.
В XML обмена логика будет примерно следующая:
1С (Код)123456<AdditionalInfo><Property><Name>КредитныйЛимит</Name><Value>500000.00</Value></Property></AdditionalInfo>Конкретное XML-представление зависит от версии EnterpriseData и реализации менеджера обмена в конкретной конфигурации. Вручную изменять XML-файл обмена не нужно.
## 3. Структура расширения
В расширении рекомендуется создать общий модуль, например:
1С (Код)1ОбменКонтрагентыРасширениеНастройки общего модуля:
— Сервер: Да;
— Вызов сервера: Да;
— Клиент: при необходимости;
— Глобальный: обычно Нет;
— Экспорт: только для процедур, которые вызываются механизмом обмена.Также в расширении нужно расширить общий модуль, который отвечает за обмен через универсальный формат. Его имя зависит от конфигурации и версии формата. В типовых конфигурациях это может быть общий модуль с наименованием, содержащим:
1С (Код)1МенеджерОбменаЧерезУниверсальныйФорматили модуль, имя которого определяется процедурой:
1С (Код)1ДоступныеВерсииУниверсальногоФорматаСначала в конфигураторе нужно найти общий модуль, соответствующий используемой версии EnterpriseData.
## 4. Вариант передачи через AdditionalInfo
Нужно использовать отдельное имя свойства, например:
1С (Код)1КредитныйЛимитЛучше добавить префикс организации, чтобы не пересечься с будущими типовыми свойствами:
1С (Код)1MyCompany.КредитныйЛимитНапример:
1С (Код)1ИмяСвойства = "MyCompany.КредитныйЛимит";Значение необходимо передавать в числовом виде, а не в локализованной строке. Нельзя формировать значение так:
1С (Код)1Строка(Объект.КредитныйЛимит)В зависимости от региональных настроек это может дать:
1С (Код)1500 000,25или:
1С (Код)1500,000.25При разборе в другой базе такая строка может быть обработана неправильно.
Лучше использовать тип значения, поддерживаемый механизмом дополнительных свойств EnterpriseData, либо выполнять преобразование в число с учетом формата, принятого в конкретной версии менеджера обмена.
## 5. Обработка выгрузки
При формировании объекта
Контрагентнужно добавить в его дополнительные сведения значение реквизитаКредитныйЛимит.Логика должна быть следующей:
1С (Код)123456789101112131415Если ТипЗнч(ОбъектИсточник) = Тип("СправочникСсылка.Контрагенты") ТогдаЗначениеКредитногоЛимита = ОбъектИсточник.КредитныйЛимит;Если ЗначениеКредитногоЛимита <> Неопределено ТогдаДобавитьДополнительноеСвойство(ОбъектEnterpriseData,"MyCompany.КредитныйЛимит",ЗначениеКредитногоЛимита);КонецЕсли;КонецЕсли;Процедура
ДобавитьДополнительноеСвойствов приведенном примере является условной. В реальном расширении ее нужно заменить на процедуру, структуру или метод, используемый конкретным менеджером универсального формата.В некоторых конфигурациях дополнительные свойства представлены не структурой, а массивом или таблицей значений. Тогда логика будет выглядеть так:
1С (Код)1234567НоваяДопИнформация = Новый Структура;НоваяДопИнформация.Вставить("Имя", "MyCompany.КредитныйЛимит");НоваяДопИнформация.Вставить("Значение", ЗначениеКредитногоЛимита);ОбъектEnterpriseData.ДополнительнаяИнформация.Добавить(НоваяДопИнформация);Либо:
1С (Код)12345678910111213ДополнительноеСвойство = Новый Структура;ДополнительноеСвойство.Вставить("Ключ","MyCompany.КредитныйЛимит");ДополнительноеСвойство.Вставить("Значение",ОбъектИсточник.КредитныйЛимит);МассивДополнительнойИнформации.Добавить(ДополнительноеСвойство);Точный вариант зависит от того, как в данной конфигурации реализована работа с
AdditionalInfo.## 6. Обработка загрузки
При загрузке данных из EnterpriseData нужно:
1. определить, что загружается объект
Контрагент;
2. найти дополнительное свойствоMyCompany.КредитныйЛимит;
3. проверить его тип и значение;
4. записать значение вОбъектПриемник.КредитныйЛимит.Общая логика:
1С (Код)1234567891011121314151617181920Если ТипЗнч(ОбъектПриемник) = Тип("СправочникОбъект.Контрагенты") ТогдаЗначениеДополнительногоСвойства =НайтиДополнительноеСвойство(ОбъектEnterpriseData,"MyCompany.КредитныйЛимит");Если ЗначениеДополнительногоСвойства <> Неопределено ТогдаЕсли ЗначениеДополнительногоСвойства = "" ТогдаОбъектПриемник.КредитныйЛимит = 0;ИначеОбъектПриемник.КредитныйЛимит =Число(ЗначениеДополнительногоСвойства);КонецЕсли;КонецЕсли;КонецЕсли;Также необходимо ограничить значение точностью реквизита:
1С (Код)12345678910ЗначениеЛимита = Число(ЗначениеДополнительногоСвойства);Если ЗначениеЛимита < 0 ТогдаЗначениеЛимита = 0;КонецЕсли;ОбъектПриемник.КредитныйЛимит = Окр(ЗначениеЛимита,2);Если по бизнес-логике
0означает отсутствие кредитного лимита, можно записывать ноль. Если нужно различать «лимит не задан» и «лимит равен нулю», реквизит должен допускать такую логику отдельно, поскольку числовой реквизит сам по себе не хранитНеопределенокак обычное значение базы.## 7. Где размещать обработчики в расширении
Есть два варианта.
### Вариант 1. Расширение общего модуля
Если используемая конфигурация позволяет расширять процедуры менеджера обмена, в расширении создается расширение общего модуля типового менеджера обмена.
В нем подключаются обработчики к процедурам типового модуля через аннотации расширения:
1С (Код)123456789&После("ИмяТиповойПроцедуры")Процедура Расширение_ПослеФормированияКонтрагента(СтруктураДанных,ОбъектИсточник)// Добавление КредитногоЛимитаКонецПроцедурыДля загрузки:
1С (Код)123456789&После("ИмяТиповойПроцедурыЗагрузки")Процедура Расширение_ПослеПодготовкиКонтрагента(ОбъектПриемник,СтруктураДанных)// Чтение КредитногоЛимитаКонецПроцедурыНазвания
ИмяТиповойПроцедурыиИмяТиповойПроцедурыЗагрузкиздесь условные. Их нельзя переносить в конфигурацию буквально. Нужно открыть общий модуль конкретной конфигурации и выбрать фактические процедуры, вызываемые:— перед формированием объекта EnterpriseData;
— после формирования объекта EnterpriseData;
— перед записью объекта в информационную базу;
— после разбора входящего объекта.### Вариант 2. Собственный менеджер обмена в расширении
Если типовой менеджер обмена не имеет подходящих точек расширения, в расширении можно создать собственный внешний менеджер обмена.
Типовая конфигурация БП и другие конфигурации на БСП обычно позволяют указать менеджер обмена через универсальный формат во внешней обработке. Тогда:
1. В расширении создается общий модуль с логикой обмена.
2. Его код помещается во внешнюю обработку.
3. В настройке синхронизации в поле менеджера обмена указывается эта обработка.
4. Основная конфигурация при этом не изменяется.В некоторых конфигурациях вкладка с путем к менеджеру обмена скрыта. Ее можно включить через:
1С (Код)1234Настройка синхронизации данных→ Еще→ Изменить форму→ Служебная информацияПосле этого указывается путь к внешнему менеджеру обмена.
Однако этот вариант нужно применять только в том случае, если расширение типового общего модуля не позволяет перехватить нужные этапы обмена.
## 8. Как определить реальные точки расширения
В конфигураторе нужно выполнить следующие действия.
### В источнике
Найти общий модуль менеджера универсального формата и определить процедуру, которая формирует объект
Контрагент.Нужно искать код, где встречаются:
1С (Код)1Контрагент1С (Код)1СправочникСсылка.Контрагенты1С (Код)1СправочникОбъект.Контрагенты1С (Код)1EnterpriseData1С (Код)1ДополнительнаяИнформация1С (Код)1AdditionalInfo### В приемнике
Найти процедуру, которая получает объект формата и создает или изменяет объект:
1С (Код)1СправочникОбъект.КонтрагентыИменно в этот момент следует заполнить:
1С (Код)1ОбъектПриемник.КредитныйЛимитНельзя просто добавить реквизит в структуру соответствия. Если типовой менеджер не знает этот реквизит, он его проигнорирует. Значение должно быть явно включено в формируемые дополнительные данные и явно обработано при загрузке.
## 9. Если требуется именно отдельная XDTO-структура
Если под «расширением формата» требуется не
AdditionalInfo, а отдельный XML-элемент с собственной XDTO-схемой, тогда используется другой вариант.В расширении создается собственный XDTO-пакет, например:
1С (Код)1MyCompanyEnterpriseDataExtensionДля него задается уникальное пространство имен:
1С (Код)1http://mycompany.ru/EnterpriseData/Extension/1.0В пакете описывается тип:
1С (Код)1CounterpartyExtensionс элементом:
1С (Код)1CreditLimitТип элемента:
1С (Код)1decimalПосле этого в расширении необходимо:
1. Добавить XDTO-пакет.
2. Определить типCounterpartyExtension.
3. ДобавитьCreditLimitс числовым типом.
4. В обработчике выгрузки создавать объект XDTO этого типа.
5. Добавлять его в расширенную часть данных контрагента.
6. В обработчике загрузки получать этот объект.
7. ПреобразовыватьCreditLimitв число.
8. Записывать значение вКонтрагенты.КредитныйЛимит.Но такой вариант зависит от конкретной версии EnterpriseData и от того, предоставляет ли текущая конфигурация расширяемую точку для добавления пользовательского XDTO-объекта. Одного добавления XDTO-пакета в расширение недостаточно. Типовой менеджер обмена не начнет автоматически его выгружать и загружать.
Поэтому для одного реквизита
КредитныйЛимитправильнее использоватьAdditionalInfo. Если же необходимо, чтобы сторонние системы видели отдельный XML-элемент, тогда потребуется полноценное расширение схемы и ручное расширение менеджера обмена.## 10. Регистрация изменений
Чтобы изменение
КредитныйЛимитинициировало обмен, недостаточно только передавать реквизит при выгрузке.Нужно проверить план обмена:
1С (Код)1Синхронизация данных через универсальный форматили другой план, используемый конкретной конфигурацией.
В состав плана обмена уже должен входить справочник:
1С (Код)1КонтрагентыЕсли изменение реквизита не регистрируется, возможна ситуация:
— контрагент был изменен только по
КредитныйЛимит;
— объект не попал в очередь изменений;
— обмен не выгрузил контрагента;
— в приемнике старое значение.Для типовых планов обмена обычно достаточно того, что объект
Контрагентывключен в состав плана. Если в конфигурации используется выборочная регистрация реквизитов, нужно добавитьКредитныйЛимитв логику регистрации изменений.Проверить это можно следующим образом:
1. Изменить
КредитныйЛимиту контрагента.
2. Записать элемент.
3. Открыть записи регистрации изменений.
4. Убедиться, что контрагент зарегистрирован для нужного узла обмена.
5. Выполнить выгрузку.
6. Проверить, что объект попал в пакет обмена.Если контрагент не зарегистрирован, нужно расширять правила регистрации изменений в расширении.
## 11. Обработка при повторной загрузке
При загрузке следует учитывать несколько случаев:
— свойство отсутствует в старом файле обмена;
— свойство передано пустым;
— передан ноль;
— передано отрицательное значение;
— значение имеет больше знаков после запятой;
— значение невозможно преобразовать в число.Безопасный вариант:
1С (Код)123456789101112131415Если ЗначениеСвойства <> Неопределено ТогдаПопыткаЛимит = Число(ЗначениеСвойства);ИсключениеЛимит = 0;КонецПопытки;Если Лимит < 0 ТогдаЛимит = 0;КонецЕсли;ОбъектПриемник.КредитныйЛимит = Окр(Лимит, 2);КонецЕсли;Если свойство отсутствует, старое значение лучше не затирать:
1С (Код)123Если СвойствоНайдено ТогдаОбъектПриемник.КредитныйЛимит = НовоеЗначение;КонецЕсли;Это важно для совместимости со старыми пакетами обмена, которые были сформированы до установки расширения.
## 12. Что необходимо сделать в каждой базе
### В базе-источнике
1. Установить расширение.
2. Проверить наличие реквизитаКредитныйЛимит.
3. Подключить обработчик выгрузки.
4. ДобавитьКредитныйЛимитвAdditionalInfo.
5. Проверить регистрацию изменения контрагента.
6. Выполнить тестовую выгрузку.
7. Проверить наличие дополнительного свойства в пакете обмена.### В базе-приемнике
1. Установить такое же расширение.
2. Проверить наличие реквизитаКредитныйЛимит.
3. Подключить обработчик загрузки.
4. Найти вAdditionalInfoсвойствоMyCompany.КредитныйЛимит.
5. Преобразовать значение в число.
6. Записать его в объектКонтрагенты.
7. Выполнить загрузку.
8. Проверить значение реквизита в карточке контрагента.## 13. Тестовый сценарий
Проверять лучше на отдельном контрагенте.
### Тест 1. Положительное значение
В базе-источнике установить:
1С (Код)1КредитныйЛимит = 500000,25После обмена в приемнике должно быть:
1С (Код)1КредитныйЛимит = 500000,25### Тест 2. Нулевое значение
В источнике установить:
1С (Код)1КредитныйЛимит = 0После обмена в приемнике должен быть именно ноль.
### Тест 3. Изменение только лимита
Изменить только
КредитныйЛимит, не меняя наименование и ИНН.Проверить, что:
— контрагент зарегистрирован к обмену;
— сформирован пакет;
— значение передано;
— в приемнике лимит изменился.### Тест 4. Старый пакет без свойства
Загрузить пакет, сформированный до доработки.
В этом случае:
— ошибка возникать не должна;
— существующее значение в приемнике желательно не изменять.### Тест 5. Две стороны
Если обмен двусторонний, необходимо отдельно проверить:
— источник изменил лимит и передал приемнику;
— приемник изменил лимит и передал источнику;
— нет циклического затирания значения;
— при конфликте изменений используется предусмотренное типовое правило разрешения конфликтов.## 14. Важное ограничение
Расширение должно быть установлено в обеих базах. Если расширение будет только в базе-источнике, значение попадет в пакет, но база-приемник может его проигнорировать. Если расширение будет только в приемнике, оно сможет загрузить значение только в том случае, если источник уже его передает.
Для надежной работы должны совпадать:
— имя дополнительного свойства;
— формат значения;
— правила обработки пустых значений;
— версия расширения;
— логика выгрузки и загрузки.Практически для задачи с одним реквизитом решение следует строить так:
1С (Код)12345Контрагенты.КредитныйЛимит↓Дополнительная информация EnterpriseData↓Контрагенты.КредитныйЛимитПри этом основная конфигурация не изменяется, КД3.1 не используется, а вся логика располагается в расширении конфигурации и подключается к менеджеру обмена через точки расширения.
8 октября 2026 в 13:46 в ответ на: Как решить ошибку «Проверка правомерности использования расширений не выполнена» #38825Сообщение означает, что платформа 1С не смогла обратиться к серверам проверки правомерности использования расширений. Это не обязательно означает полное отсутствие Интернета в Windows. Часто сайты открываются, но соединение именно из 1С блокируется прокси, антивирусом, межсетевым экраном или выполняется не с того компьютера.
## 1. Определите, с какого компьютера выполняется проверка
### Файловая база
Проверка выполняется с компьютера, на котором запущен клиент 1С:
— тонкий клиент;
— толстый клиент;
— веб-клиент через браузер.Проверять доступ нужно именно на этом компьютере.
### Клиент-серверная база
Если база работает через сервер 1С, проверка обычно выполняется сервером, где запущен агент сервера 1С или рабочий процесс.
Проверять нужно:
— сервер 1С;
— сервер терминалов, если клиент запущен через RDP;
— сервер с веб-публикацией, если используется веб-клиент;
— прокси-сервер и межсетевой экран.Проверка Интернета на компьютере пользователя в этом случае может быть бессмысленной: у пользователя Интернет есть, а сервер 1С наружу выйти не может.
## 2. Проверьте дату и время
На компьютере или сервере, выполняющем проверку, проверьте:
— дату;
— время;
— часовой пояс;
— синхронизацию времени с контроллером домена или NTP.Неправильное время может приводить к ошибкам TLS-соединения и невозможности проверки сертификатов серверов 1С.
## 3. Проверьте доступ из PowerShell
На нужном компьютере откройте PowerShell и выполните:
PowerShell1Test-NetConnection ya.ru -Port 443Если результат содержит:
1С (Код)1TcpTestSucceeded : Trueэто только подтверждает общий доступ по HTTPS. Далее нужно проверить, не блокирует ли соединение именно программа 1С.
Также проверьте системный прокси:
PowerShell1netsh winhttp show proxyЕсли используется корпоративный прокси, его параметры должны быть доступны серверу или пользователю, от имени которого работает 1С.
Для службы сервера 1С важен отдельный момент: служба может запускаться под учетной записью
Local System,Network Serviceили отдельным пользователем. Прокси, настроенный в профиле администратора, не всегда доступен этой службе.## 4. Проверьте прокси и межсетевой экран
В организации должны быть разрешены исходящие HTTPS-соединения от:
—
1cv8.exe;
—ragent.exe;
—rmngr.exe;
—rphost.exe.Конкретный набор зависит от режима работы и версии платформы.
Проверьте блокировки со стороны:
— Windows Defender Firewall;
— антивируса;
— Kaspersky Endpoint Security;
— Dr.Web;
— ESET;
— корпоративного прокси;
— DPI-фильтра;
— межсетевого экрана;
— SSL-инспекции HTTPS;
— блокировок по категориям сайтов.Особенно часто проблема возникает при SSL-инспекции. Антивирус или прокси подменяет сертификат сервера, а платформа 1С не принимает такую цепочку сертификации.
Для диагностики временно, по согласованию с администратором безопасности, попробуйте:
1. разрешить приложению 1С исходящие подключения по TCP 443;
2. исключить процессы 1С из HTTPS-инспекции;
3. проверить подключение без прокси;
4. проверить подключение с другой сети, например через мобильный Интернет.Если через другую сеть сообщение исчезает, причина почти наверняка в корпоративной сетевой политике.
## 5. Проверьте настройки интернет-поддержки в 1С
В конфигурации откройте раздел, связанный с интернет-поддержкой и сервисами. Обычно он находится примерно здесь:
Администрирование → Интернет-поддержка и сервисы
Проверьте:
— подключение к интернет-поддержке;
— логин и пароль пользователя 1С;
— параметры прокси;
— возможность выполнения операций через Интернет;
— доступность сервисов 1С.В разных конфигурациях названия разделов могут отличаться. Для самой проверки правомерности расширений логин пользователя не всегда является основной причиной, но некорректные параметры прокси и интернет-поддержки могут мешать соединению.
После изменения настроек перезапустите 1С и повторите проверку.
## 6. Проверьте версию платформы
Старая версия платформы может некорректно работать с современными сертификатами, протоколами TLS и механизмом проверки расширений.
Откройте:
Справка → О программе
Проверьте версию 1С:Предприятия. Если используется старая платформа, установите актуальную версию, совместимую с вашей конфигурацией.
Обновлять нужно:
— на сервере 1С;
— на клиентских компьютерах;
— на сервере веб-публикации, если используется веб-клиент.Для клиент-серверного варианта недостаточно обновить только клиент. Серверная часть платформы также участвует в работе базы.
После обновления:
1. перезапустите службы сервера 1С;
2. завершите старые сеансы пользователей;
3. снова запустите базу;
4. повторите проверку расширения.## 7. Проверьте сертификаты Windows
На компьютере или сервере должны быть корректно установлены корневые сертификаты доверенных центров сертификации.
Проблема возможна после:
— переустановки Windows;
— отключения обновления корневых сертификатов;
— переноса базы на новый сервер;
— установки антивируса с HTTPS-фильтрацией;
— изменения корпоративной политики безопасности;
— перехода на новый прокси.Проверьте также, что служба Windows, под которой работает сервер 1С, имеет возможность использовать системное хранилище сертификатов и выполнять HTTPS-подключения.
## 8. Проверьте журнал регистрации 1С
Включите регистрацию событий, связанных с ошибками платформы и интернет-сервисами, затем повторите запуск базы.
Полезны события:
— ошибки взаимодействия с Интернетом;
— ошибки проверки лицензирования;
— ошибки защищенного соединения;
— ошибки сертификатов;
— ошибки расширений;
— ошибки сервера 1С.Если используется серверный вариант, смотрите журнал на сервере 1С, а не только на рабочем месте пользователя.
Также проверьте технологический журнал 1С, если он настроен. В нем может быть видно:
— отказ DNS;
— тайм-аут;
— ошибку TLS;
— отказ прокси;
— невозможность установить HTTPS-соединение;
— ошибку проверки сертификата.## 9. Проверьте расширение после восстановления связи
После устранения сетевой проблемы:
1. полностью закройте 1С;
2. завершите зависшие сеансы пользователя;
3. перезапустите сервер 1С, если база клиент-серверная;
4. снова откройте информационную базу;
5. откройте список расширений;
6. выполните проверку или повторно подключите расширение.Иногда старое сообщение остается в интерфейсе до повторного запуска сеанса.
## 10. Если Интернет в организации запрещен
Если сервер 1С работает в закрытом контуре без доступа в Интернет, не следует пытаться отключать проверку или обходить ее неофициальными способами. Это проверка правомерности использования расширений, и подмена платформы, отключение проверки или использование измененных файлов может привести к проблемам с поддержкой и обновлением.
В таком случае нужно обратиться к обслуживающему партнеру 1С или в службу поддержки 1С и уточнить официальный вариант работы:
— разрешение необходимых адресов через межсетевой экран;
— настройка корпоративного прокси;
— организация доступа через выделенный шлюз;
— использование предусмотренного для закрытого контура варианта лицензирования или проверки.Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/1733868/
На практике чаще всего причина находится в одном из трех мест: проверяется не тот компьютер, на сервере 1С отсутствует выход по HTTPS, либо корпоративный прокси/антивирус подменяет сертификат и блокирует соединение платформы.
8 октября 2026 в 11:41 в ответ на: Как устранить ошибку 503 Service Temporarily Unavailable в nginx при работе с 1С #38823Ошибка 503 Service Temporarily Unavailable от nginx означает, что nginx не может получить нормальный ответ от backend-сервера. В схеме с 1С backend обычно это:
— Apache или IIS;
— публикация 1С;
— сервер 1С, если публикация работает через веб-сервер;
— upstream, указанный в конфигурации nginx.Сам nginx запущен, но сервис за ним недоступен либо сам вернул ошибку 503.
## 1. Сначала посмотрите журнал nginx
Выполните:
Shell1sudo tail -n 100 /var/log/nginx/error.logИ отдельно журнал доступа:
Shell1sudo tail -n 100 /var/log/nginx/access.logОсобенно важны сообщения:
1С (Код)1connect() failed (111: Connection refused) while connecting to upstreamЭто означает, что на указанном порту не запущен Apache, IIS или другой backend.
1С (Код)1no live upstreamsОбычно означает ошибку в блоке
upstreamили недоступность всех серверов из группы.1С (Код)1upstream timed outBackend отвечает слишком долго. Для 1С это может быть зависшая публикация, проблемы с сервером 1С или слишком маленькие тайм-ауты.
1С (Код)1upstream prematurely closed connectionBackend принял соединение, но закрыл его до формирования ответа.
Пример команды, чтобы сразу отфильтровать важные ошибки:
Shell1sudo grep -iE "upstream|connect|refused|timed out|no live" /var/log/nginx/error.log | tail -n 50## 2. Проверьте backend напрямую, минуя nginx
Допустим, в конфигурации nginx указано:
1С (Код)1proxy_pass http://127.0.0.1:8080;Тогда выполните на сервере:
Shell1curl -I http://127.0.0.1:8080/Для публикации 1С, например:
Shell1curl -I http://127.0.0.1:8080/mybase/Если используется IP другого сервера:
Shell1curl -I http://192.168.1.10:8080/mybase/Результаты трактуются так:
—
Connection refused
На порту никто не слушает либо доступ запрещен firewall.—
Connection timed out
Проблема с сетью, маршрутизацией или firewall.—
404 Not Found
Backend доступен, но указан неправильный путь публикации.—
401 Unauthorizedили403 Forbidden
Backend доступен, но требуется авторизация либо запрещен доступ.—
503 Service Unavailable
Сам backend вернул 503. В этом случае проблему нужно искать не в nginx, а в Apache, IIS, публикации или сервере 1С.— HTML страницы 1С или ответ HTTP-сервиса
Связь между nginx и backend работает, нужно проверять маршрутизацию URL.## 3. Проверьте, слушается ли нужный порт
Для Apache, например, порт 8080:
Shell1sudo ss -ltnp | grep 8080Для порта 80:
Shell1sudo ss -ltnp | grep ':80'Для HTTPS:
Shell1sudo ss -ltnp | grep ':443'В нормальном случае будет что-то подобное:
1С (Код)1LISTEN 0 511 127.0.0.1:8080 0.0.0.0:* users:(("httpd",pid=1234,fd=4))Если вывода нет, сервис на этом порту не запущен или слушает другой порт.
Проверьте службы:
Shell123sudo systemctl status nginxsudo systemctl status httpdsudo systemctl status apache2На разных Linux-дистрибутивах Apache называется по-разному:
Shell1sudo systemctl restart httpdили:
Shell1sudo systemctl restart apache2После перезапуска проверьте журнал:
Shell1sudo journalctl -u httpd -n 100 --no-pagerили:
Shell1sudo journalctl -u apache2 -n 100 --no-pager## 4. Проверьте конфигурацию nginx
Сначала выполните:
Shell1sudo nginx -tЕсли проверка успешна:
1С (Код)12syntax is oktest is successfulперечитайте конфигурацию:
Shell1sudo systemctl reload nginxПосмотрите фактически загруженную конфигурацию:
Shell1sudo nginx -TПолезно проверить, не используется ли другой конфигурационный файл или другой
proxy_pass.## 5. Типовая конфигурация nginx для публикации 1С
Если Apache слушает
127.0.0.1:8080, а публикация 1С называетсяmybase, конфигурация может выглядеть так:1С (Код)123456789101112131415161718192021222324server {listen 80;server_name 1c.example.ru;access_log /var/log/nginx/1c_access.log;error_log /var/log/nginx/1c_error.log;location /mybase/ {proxy_pass http://127.0.0.1:8080/mybase/;proxy_http_version 1.1;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_connect_timeout 60s;proxy_send_timeout 300s;proxy_read_timeout 300s;proxy_buffering off;}}После изменения:
Shell12sudo nginx -tsudo systemctl reload nginxОбратите внимание на завершающий
/:1С (Код)123location /mybase/ {proxy_pass http://127.0.0.1:8080/mybase/;}Для публикаций 1С лучше явно указывать одинаковый путь в
locationиproxy_pass. Неправильное сочетание путей может приводить к обращению не к той публикации и появлению ошибок 404 или 503.## 6. Если nginx и Apache находятся на разных серверах
Проверьте backend с сервера nginx:
Shell1curl -v http://192.168.1.10:8080/mybase/Проверьте доступность порта:
Shell1nc -vz 192.168.1.10 8080Если
ncне установлен:Shell1telnet 192.168.1.10 8080На сервере Apache проверьте, на каком адресе он слушает:
Shell1sudo ss -ltnp | grep 8080Если Apache слушает только:
1С (Код)1127.0.0.1:8080то к нему нельзя подключиться с другого сервера. Для межсерверной схемы Apache должен слушать сетевой адрес сервера, например:
Apache1Listen 192.168.1.10:8080или:
Apache1Listen 0.0.0.0:8080При этом порт 8080 желательно закрыть от внешнего доступа firewall и разрешить только IP сервера nginx.
## 7. Проверьте саму публикацию 1С
На сервере с Apache выполните запрос непосредственно к публикации:
Shell1curl -v http://127.0.0.1:8080/mybase/Проверьте наличие файла публикации:
Shell1sudo find / -name default.vrd 2>/dev/nullВ
default.vrdдолжны быть корректно указаны сервер, имя информационной базы и параметры публикации.Пример:
1С (Код)1234567<?xml version="1.0" encoding="UTF-8"?><point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"xmlns:xs="http://www.w3.org/2001/XMLSchema"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"base="/mybase"ib="Srvr="localhost";Ref="mybase";"></point>Если используется файловая база, строка подключения будет другой. Если сервер 1С расположен отдельно, вместо
localhostдолжны быть указаны корректные параметры кластера и информационной базы.После изменения публикации перезапустите веб-сервер:
Shell1sudo systemctl restart httpdили:
Shell1sudo systemctl restart apache2## 8. Частая ошибка при использовании
proxy_passНеправильный вариант:
1С (Код)123location /mybase/ {proxy_pass http://127.0.0.1:8080;}В некоторых конфигурациях это может быть рабочим вариантом, но путь будет передаваться целиком и результат зависит от структуры публикации.
Более предсказуемый вариант:
1С (Код)123location /mybase/ {proxy_pass http://127.0.0.1:8080/mybase/;}Если nginx должен проксировать весь backend без изменения URL:
1С (Код)123location / {proxy_pass http://127.0.0.1:8080;}Если нужно заменить внешний путь
/api/на путь публикации/ut_demo/hs/:1С (Код)123location /api/ {proxy_pass http://127.0.0.1:8080/ut_demo/hs/;}Например, запрос:
1С (Код)1https://example.ru/api/testбудет передан backend как:
1С (Код)1http://127.0.0.1:8080/ut_demo/hs/test## 9. Проверьте SELinux
На CentOS, RedOS, AlmaLinux, Rocky Linux причиной блокировки подключения nginx к backend может быть SELinux.
Проверьте его состояние:
Shell1getenforceЕсли ответ:
1С (Код)1Enforcingразрешите nginx сетевые подключения:
Shell1sudo setsebool -P httpd_can_network_connect 1Проверьте сообщения SELinux:
Shell1sudo ausearch -m AVC -ts recentПосле этого снова проверьте:
Shell1curl -I http://127.0.0.1:8080/mybase/## 10. Проверьте firewall
Если backend находится на другом сервере, на нем должен быть разрешен порт, например 8080:
Shell1sudo firewall-cmd --list-portsРазрешить порт только для сервера nginx лучше адресно:
Shell1234sudo firewall-cmd --permanent--add-rich-rule='rule family="ipv4" source address="192.168.1.20" port protocol="tcp" port="8080" accept'sudo firewall-cmd --reloadГде
192.168.1.20это IP сервера nginx.## Наиболее вероятная причина
Если после запроса вы видите именно стандартную страницу:
XHTML123<center><h1>503 Service Temporarily Unavailable</h1></center>...<center>nginx</center>и в
error.logесть:1С (Код)1connect() failed (111: Connection refused) while connecting to upstreamто обычно исправление такое:
1. Узнать backend из
proxy_pass.
2. Проверить его командойcurlнапрямую.
3. Запустить Apache или IIS.
4. Проверить, что публикация 1С действительно слушает указанный порт.
5. Исправить адрес или порт вproxy_pass.
6. Выполнить:Shell12sudo nginx -tsudo systemctl reload nginxТочный диагноз по одной HTML-странице определить нельзя. Ключевая информация находится в
/var/log/nginx/error.logи в результате командыcurlк адресу изproxy_pass.В ЗУП 3.1 формирование файла синхронизации обычно не находится в одном общем модуле с названием
МенеджерОбменаЧерезУниверсальныйФормат. Этот менеджер может отсутствовать в конкретном релизе или использоваться только в другой конфигурации.В современных релизах ЗУП обмен построен вокруг подсистемы «Синхронизация данных». Формирование выгружаемых данных разделено на несколько этапов:
1. регистрация изменений;
2. отбор объектов по узлу плана обмена;
3. применение правил конвертации;
4. формирование сообщения универсального формата;
5. запись XML-файла в каталог обмена.## Где искать в конфигураторе
### 1. План обмена
В конфигураторе откройте:
1С (Код)1Общие планы обменаИщите план обмена, связанный с синхронизацией данных. Его имя зависит от релиза ЗУП. Обычно в названии присутствуют слова:
1С (Код)123ОбменДаннымиСинхронизацияДанныхОбменСБухгалтериейУ плана обмена нужно посмотреть:
— состав объектов;
— регистр сведений регистрации изменений;
— процедуры менеджера плана обмена;
— подписки на события, которые регистрируют изменения;
— обработчики выгрузки данных.Основной признак: если объект попал в сообщение, сначала он должен быть зарегистрирован для узла обмена.
Проверять нужно в первую очередь:
1С (Код)1ПланОбмена.<ИмяПлана>.МенеджерИ процедуры, связанные с:
1С (Код)1234ЗарегистрироватьИзмененияПолучитьИзмененияПолучитьИзмененияДляВыгрузкиУдалитьРегистрациюИзмененийТочные имена процедур могут отличаться в зависимости от релиза.
## 2. Регистры сведений регистрации изменений
Откройте в конфигураторе:
1С (Код)1Регистры сведенийИщите регистры с названиями, содержащими:
1С (Код)1234РегистрацияИзмененийИзмененияДляОбменаИзмененияОбъектовСостояниеОбменаВ ЗУП регистрация обычно связана с узлом плана обмена. В регистре можно увидеть:
— ссылку на объект;
— узел обмена;
— момент регистрации;
— вид изменения;
— иногда тип объекта или составной идентификатор.Если документ или элемент справочника не зарегистрирован, обработка выгрузки его, как правило, не включит в сообщение.
Проверить содержимое можно программно, например через консоль запросов. Конкретное имя регистра нужно подставить из вашей конфигурации:
1С (Код)12345678910111213Запрос = Новый Запрос;Запрос.Текст =|ВЫБРАТЬ| РегистрацияИзменений.Объект,| РегистрацияИзменений.УзелПланаОбмена,| РегистрацияИзменений.Момент|ИЗ| РегистрСведений.РегистрацияИзменений КАК РегистрацияИзменений|ГДЕ| РегистрацияИзменений.УзелПланаОбмена = &УзелПланаОбмена|;Запрос.УстановитьПараметр("УзелПланаОбмена", УзелПланаОбмена);## 3. Общие модули подсистемы синхронизации
В конфигураторе выполните глобальный поиск по исходным текстам общих модулей.
Искать нужно не только
МенеджерОбменаЧерезУниверсальныйФормат, но и следующие фрагменты:1С (Код)1234567891011121314УниверсальныйФорматСинхронизацияДанныхВыгрузитьДанныеСформироватьСообщениеЗаписатьСообщениеПакетДанныхФайлОбменаКаталогОбменаРегистрацияИзмененийПравилаКонвертацииКонвертацияОбъектовXDTOЗаписатьXMLЗаписьXMLОсобенно проверяйте общие модули, в названии которых есть:
1С (Код)12345678СинхронизацияДанныхСинхронизацияДанныхСлужебныйСинхронизацияДанныхКлиентСинхронизацияДанныхСерверОбменДаннымиОбменДаннымиСлужебныйКонвертацияДанныхУниверсальныйФорматНазвания могут отличаться. В типовых конфигурациях состав и имена общих модулей менялись между релизами.
Часто клиентская часть только запускает процесс, а фактическая генерация файла происходит на сервере. Поэтому искать нужно процедуры с флагом:
1С (Код)1&НаСерверелибо в общих модулях с признаком:
1С (Код)123СерверВызов сервераЭкспорт## 4. Регламентные задания
Если выгрузка выполняется автоматически, проверьте:
1С (Код)1Регламентные заданияИщите задания с названиями вроде:
1С (Код)12345Выполнение обмена даннымиСинхронизация данныхОбмен с другими программамиВыгрузка данныхОтправка данныхУ регламентного задания смотрите:
— имя метода;
— общий модуль;
— расписание;
— параметры;
— соответствующий элемент настройки синхронизации.Вызов обычно идет примерно по такой цепочке:
1С (Код)123456Регламентное задание-> обработчик синхронизации-> получение зарегистрированных изменений-> конвертация объектов-> формирование сообщения-> запись Message_*.xmlФактическое имя метода будет зависеть от релиза.
## 5. Обработчики команд формы настройки синхронизации
Если файл формируется вручную по кнопке «Выполнить обмен», «Выгрузить данные» или «Синхронизировать», нужно открыть форму настройки синхронизации.
В конфигураторе ищите общие формы и формы обработки по словам:
1С (Код)12345СинхронизацияОбменДаннымиНастройкаСинхронизацииНастройкиСинхронизацииПомощникСинхронизацииВ модуле формы найдите обработчик команды. Он обычно не формирует XML непосредственно, а вызывает серверную процедуру общего модуля.
Практический способ:
1. Запустите отладку.
2. Откройте настройку синхронизации.
3. Поставьте точку останова в обработчике кнопки запуска обмена.
4. Нажмите кнопку выполнения обмена.
5. Проследите стек вызовов.
6. Найдите первый серверный вызов, в котором появляются:
— узел плана обмена;
— настройки подключения;
— пакет данных;
— правила конвертации;
— имя файла.Это обычно быстрее, чем просматривать все общие модули вручную.
## 6. Правила конвертации
Важный момент: перечень выгружаемых объектов и состав их данных часто задаются не жестко в BSL-коде.
Правила могут храниться:
— в XML-файле настроек синхронизации;
— в регистре сведений;
— в макете конфигурации;
— в объекте типаХранилищеЗначения;
— в данных, загруженных при создании настройки синхронизации;
— в поставляемых правилах конвертации.Ищите в конфигурации:
1С (Код)1234567ПравилаОбменаПравилаКонвертацииНастройкиОбменаНастройкиСинхронизацииСоответствияОбъектовКонвертацияОбъектовКлючиОтправкиПри синхронизации ЗУП и Бухгалтерии правила могут не быть отдельным видимым объектом метаданных. Они могут загружаться из универсального формата и храниться в настройке конкретной синхронизации.
Поэтому изменение правил обмена не всегда требует изменения общего модуля. Сначала нужно проверить данные самой настройки синхронизации.
## 7. Где посмотреть состав уже сформированного файла
В каталоге обмена обычно появляются файлы типа:
1С (Код)123Message_ЗК_БП.xmlMessage_БП_ЗК.xmlНастройки обмена ЗУП 3 - БП 3.xmlВ разных релизах имена могут быть другими.
Файл
Message_*.xmlпоказывает уже сформированный результат, но не всегда позволяет понять, почему объект попал в выгрузку. Для этого сопоставьте его с:1. регистрацией изменений;
2. узлом плана обмена;
3. настройкой синхронизации;
4. правилами конвертации;
5. журналом регистрации.Если нужно понять, какая процедура непосредственно записывает файл, проще всего поставить точку останова на операции записи XML или на процедуру, где используется имя файла обмена.
В глобальном поиске ищите:
1С (Код)1234567ЗаписатьЗаписатьXMLЗаписьXMLФайлОбменаИмяФайлаКаталогОбменаMessage_Если строки
Message_в конфигурации нет, имя может формироваться динамически через настройку канала обмена.## Что проверять в первую очередь
Для типовой ЗУП 3.1 я бы шел в таком порядке:
### Шаг 1. Определить используемый план обмена
В пользовательском режиме откройте:
1С (Код)123Администрирование-> Синхронизация данных-> Настройки синхронизации данныхОткройте нужную настройку и определите:
— вид приложения-приемника;
— узел обмена;
— способ подключения;
— каталог обмена;
— дату начала обмена.Затем в конфигураторе найдите соответствующий план обмена.
### Шаг 2. Проверить регистрацию изменений
После изменения тестового документа проверьте, появилась ли запись в регистре регистрации изменений.
Например:
— изменить документ
Начисление зарплаты и взносов;
— записать его;
— выполнить запрос к регистру регистрации;
— найти ссылку на этот документ;
— проверить, что она зарегистрирована именно для нужного узла.### Шаг 3. Поставить точку останова на серверный запуск обмена
Не на кнопку формы, а на серверную процедуру, вызываемую после нее.
В стеке вызовов нужно найти процедуры, где последовательно выполняется:
1С (Код)123456Получение измененийОтбор зарегистрированных объектовФормирование пакетаКонвертацияФормирование сообщенияЗапись файла### Шаг 4. Проверить правила конвертации
Если объект зарегистрирован, но в XML его нет, проблема обычно находится уже после регистрации:
— объект исключен правилами обмена;
— не выполняется условие отбора;
— объект является подчиненным и выгружается только вместе с владельцем;
— объект уже был выгружен ранее;
— установлен отбор по организации или периоду;
— для объекта нет правила конвертации;
— документ не проведен или не соответствует условиям обмена.## Важное различие
Не следует искать только процедуру, которая «формирует выгружаемые данные». В синхронизации это обычно несколько разных механизмов:
1С (Код)1234567Проведение/изменение объекта-> регистрация изменения-> отбор объекта для конкретного узла-> поиск правила конвертации-> конвертация объекта-> запись объекта в сообщение-> запись XML-файлаПоэтому если нужно понять, почему конкретный документ не попал в выгрузку, начинать надо с регистра изменений.
Если нужно понять, почему документ попал в выгрузку, но с другими реквизитами, смотреть нужно правила конвертации.
Если нужно понять, где создается сам XML-файл, искать нужно серверный обработчик обмена и вызовы записи XML, а не только план обмена.
В типовой ЗУП наиболее результативный метод отладки такой:
1. очистить или заархивировать каталог обмена;
2. изменить один тестовый объект;
3. проверить его регистрацию;
4. запустить выгрузку в режиме отладки;
5. остановиться на серверном вызове;
6. пошагово пройти до процедуры формирования сообщения;
7. посмотреть значение структуры или таблицы, из которой создается XML;
8. сопоставить ее с содержимымMessage_*.xml.При этом настройки синхронизации могут быть загружены в базу как данные, поэтому отсутствие очевидного объекта
МенеджерОбменаЧерезУниверсальныйФорматсамо по себе не означает, что универсальный формат не используется. -
АвторЗаписи