Ответы в темах
-
АвторЗаписи
-
25 сентября 2026 в 9:07 в ответ на: Как передать содержимое файла из КД 2, а не только ссылку? #38727
В КД 2 это типичная ситуация: ПКО переносит объект «Присоединенный файл» и его реквизиты, но само содержимое файла не переносится. В приемнике создается новая ссылка или элемент справочника, а двоичные данные остаются в источнике.
Нужно передавать не только ПКО присоединенного файла, но и его содержимое из хранилища файлов.
## Что проверить сначала
### 1. Включена ли передача файлов в настройках обмена
В обработке универсального обмена XML проверьте настройки:
— включена передача присоединенных файлов;
— файлы не исключены отбором;
— в правилах есть ПКО для объекта присоединенного файла;
— в ПВД выгружается не только владелец файла, но и сами присоединенные файлы.Если используется типовой обмен между конфигурациями на БСП, сначала нужно проверить типовой механизм передачи файлов. В типовых конфигурациях присоединенные файлы часто обмениваются отдельным объектом, а не обычным реквизитом документа.
### 2. Что именно переносит ПКО
Если ПКО переносит только такие поля:
1С (Код)12345ВладелецНаименованиеРасширениеРазмерДатаИзменениято оно переносит только описание файла.
Сам файл обычно хранится отдельно:
— в реквизите типа
ХранилищеЗначения;
— в регистре сведений хранения файлов;
— в файловом хранилище БСП;
— в томе хранения;
— в адресе временного хранилища;
— в справочнике присоединенных файлов, а двоичные данные находятся в другом объекте или регистре.Поэтому нужно найти место фактического хранения файла в конкретной конфигурации.
## Вариант для КД 2: передача файла через параметр объекта
Общий принцип такой:
1. В источнике получить двоичные данные файла.
2. Передать их в параметр объекта.
3. В приемнике получить параметр.
4. Записать двоичные данные в новый присоединенный файл.
5. Присвоить созданный файл документу или другому владельцу.### На стороне источника
В ПКО присоединенного файла или в ПКС, отвечающем за файл, передается параметр, например
ДвоичныеДанныеФайла.В обработчике «Перед выгрузкой»:
1С (Код)1234567891011121314151617Если ЗначениеЗаполнено(Источник.Ссылка) ТогдаФайлОбъект = Источник.Ссылка.ПолучитьОбъект();Если ФайлОбъект <> Неопределено Тогда// Ниже нужно использовать фактический реквизит// или функцию вашей конфигурации, где хранится содержимое файла.//// Пример, если данные хранятся непосредственно в реквизите:ДвоичныеДанныеФайла = ФайлОбъект.ХранилищеФайла;Значение = ДвоичныеДанныеФайла;КонецЕсли;КонецЕсли;Но имя
ХранилищеФайлаздесь условное. В вашей конфигурации оно может называться иначе. Часто встречаются варианты:1С (Код)12345Источник.ХранилищеФайлаИсточник.ДвоичныеДанныеИсточник.ФайлИсточник.ХранилищеИсточник.ДанныеФайлаЕсли файл хранится не в самом объекте, нужно использовать функцию общего модуля конфигурации, например механизм БСП для получения данных присоединенного файла.
## Более надежный вариант через
ХранилищеЗначенияДля КД 2 обычно удобнее передавать не сами двоичные данные напрямую, а
ХранилищеЗначения.В обработчике на стороне источника:
1С (Код)12345ДвоичныеДанныеФайла = ПолучитьДвоичныеДанныеФайла(Источник);Если ДвоичныеДанныеФайла <> Неопределено ТогдаЗначение = Новый ХранилищеЗначения(ДвоичныеДанныеФайла);КонецЕсли;Приемник получает значение:
1С (Код)12345ХранилищеФайла = ПараметрыОбъекта.Получить("ДвоичныеДанныеФайла");Если ХранилищеФайла <> Неопределено ТогдаДвоичныеДанныеФайла = ХранилищеФайла.Получить();КонецЕсли;Однако для больших файлов этот способ может сильно увеличивать XML-файл обмена и потребление памяти. Для файлов размером в несколько мегабайт и больше лучше использовать отдельное файловое или сетевое хранилище.
## Пример логики загрузки в приемнике
После загрузки ПКО присоединенного файла нужно получить двоичные данные и записать их в объект файла:
1С (Код)123456789101112131415161718192021ХранилищеФайла = ПараметрыОбъекта.Получить("ДвоичныеДанныеФайла");Если ХранилищеФайла <> Неопределено ТогдаДвоичныеДанныеФайла = ХранилищеФайла.Получить();Если ДвоичныеДанныеФайла <> Неопределено Тогда// Объект уже создан стандартным механизмом КД// или создаем его самостоятельно.Объект.Размер = ДвоичныеДанныеФайла.Размер();// Если в конфигурации есть реквизит типа ХранилищеЗначения:Объект.ХранилищеФайла =Новый ХранилищеЗначения(ДвоичныеДанныеФайла);Объект.Записать();КонецЕсли;КонецЕсли;Здесь
Объект.ХранилищеФайлатоже нужно заменить на фактический реквизит приемника.## Если файл хранится в регистре сведений
В современных типовых конфигурациях данные присоединенных файлов нередко находятся не в самом справочнике
ПрисоединенныеФайлы, а в отдельном регистре или общем механизме БСП.Тогда схема будет такой:
### На стороне источника
В обработчике ПКО нужно получить запись хранилища по ссылке файла:
1С (Код)12345678910111213141516Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Хранилище.Хранилище КАК Хранилище|ИЗ| РегистрСведений.ХранилищеФайлов КАК Хранилище|ГДЕ| Хранилище.Файл = &Файл";Запрос.УстановитьПараметр("Файл", Источник.Ссылка);Выборка = Запрос.Выполнить().Выбрать();Если Выборка.Следующий() ТогдаЗначение = Выборка.Хранилище;КонецЕсли;Названия регистра и полей нужно заменить на фактические из вашей конфигурации. В разных конфигурациях они отличаются, поэтому этот код нельзя вставлять без проверки метаданных.
### На стороне приемника
После создания элемента присоединенного файла нужно записать полученное хранилище в соответствующий регистр:
1С (Код)123456789101112ХранилищеФайла = ПараметрыОбъекта.Получить("ДвоичныеДанныеФайла");Если ХранилищеФайла <> Неопределено ТогдаМенеджерЗаписи = РегистрыСведений.ХранилищеФайлов.СоздатьМенеджерЗаписи();МенеджерЗаписи.Файл = Объект.Ссылка;МенеджерЗаписи.Хранилище = ХранилищеФайла;МенеджерЗаписи.Записать();КонецЕсли;Конкретные измерения регистра нужно смотреть в конфигураторе. Обычно кроме файла могут использоваться:
— владелец файла;
— идентификатор файла;
— версия файла;
— ключ записи;
— тип хранения;
— имя файла.## Важный момент: порядок загрузки
Если файл присоединен к документу, сначала должен быть создан или найден сам документ, затем присоединенный файл.
Правильный порядок:
1. Загрузить владельца, например документ.
2. Найти или создать присоединенный файл.
3. Получить двоичные данные из параметров.
4. Записать содержимое файла.
5. Установить владельца файла.
6. Записать файл и запись хранилища.Если сначала загружать присоединенный файл, а документ-владелец еще не создан, ссылка владельца может не разрешиться.
## Если файл должен просто физически лежать в каталоге
Иногда не требуется хранить файл в стандартном механизме присоединенных файлов. Тогда проще передавать:
— имя файла;
— расширение;
— двоичные данные.На приемнике сохранить его в каталог:
1С (Код)123ВременныйФайл = ПолучитьИмяВременногоФайла(РасширениеФайла);ДвоичныеДанныеФайла.Записать(ВременныйФайл);Если требуется потом прикрепить файл к документу, после сохранения нужно зарегистрировать его штатными процедурами конфигурации.
## Почему не стоит передавать путь к файлу
Путь вида:
1С (Код)1C:ДокументыСкан.pdfпереносить бессмысленно, потому что на приемнике такого файла может не быть.
Путь можно передавать только если:
— обе базы работают на одном сервере;
— каталог общий;
— у пользователя 1С есть права на него;
— путь одинаковый или заранее настроен;
— файл не удаляется до загрузки.В обычном обмене нужно передавать либо содержимое файла, либо ссылку на общее сетевое/облачное хранилище.
## Что исправить в вашем случае
Скорее всего сейчас ПКО переносит только ссылку на элемент
ПрисоединенныеФайлы. Нужно добавить в ПКО отдельный параметр, например:1С (Код)1ДвоичныеДанныеФайлаВ ПКС этого параметра указать передачу данных через параметр объекта.
На стороне выгрузки:
1С (Код)123456ФайлИсточник = Источник.Ссылка.ПолучитьОбъект();Если ФайлИсточник <> Неопределено ТогдаДвоичныеДанные = ПолучитьДанныеПрисоединенногоФайла(ФайлИсточник);Значение = Новый ХранилищеЗначения(ДвоичныеДанные);КонецЕсли;На стороне загрузки:
1С (Код)1234567891011ХранилищеФайла =ПараметрыОбъекта.Получить("ДвоичныеДанныеФайла");Если ХранилищеФайла <> Неопределено ТогдаДвоичныеДанные = ХранилищеФайла.Получить();ЗаписатьДанныеПрисоединенногоФайла(Объект,ДвоичныеДанные);КонецЕсли;Функции
ПолучитьДанныеПрисоединенногоФайлаиЗаписатьДанныеПрисоединенногоФайланужно реализовать под конкретную конфигурацию, потому что в БП, УТ, ERP, КА и самописных конфигурациях структура хранения файлов может отличаться.Для типовой конфигурации сначала рекомендуется проверить штатный механизм обмена файлами. Если в типовом обмене файлы не передаются, обычно причина в том, что в настройке синхронизации отключен обмен файлами или ПВД выгружает только ссылку на присоединенный файл.
25 сентября 2026 в 8:45 в ответ на: Как добавить условие проверки движений по регистру склада на «Приход»? #38725Условие по виду движения нужно добавить в секцию
ПОлевого соединения, а не вГДЕ.Иначе, если поставить
ВидДвижения = ПриходвГДЕ, левое соединение фактически превратится во внутреннее, и документы без движений не попадут в результат.Запрос для поиска перемещений, у которых отсутствует движение Приход по регистру
ТоварыНаСкладах:1С (Код)12345678910111213141516171819202122232425262728|ВЫБРАТЬ РАЗЛИЧНЫЕ| Реализация.Ссылка КАК Ссылка|ПОМЕСТИТЬ ВТ_Доки|ИЗ| Документ.ПеремещениеТоваров КАК Реализация| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК РеализацияТовары| ПО РеализацияТовары.Ссылка = Реализация.Ссылка|ГДЕ| Реализация.Проведен| И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода| И Реализация.Статус <>| ЗНАЧЕНИЕ(Перечисление.СтатусыПеремещенийТоваров.Принято)| И РеализацияТовары.Номенклатура.ТипНоменклатуры =| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)|;||////////////////////////////////////////////////////////////////////////////////||ВЫБРАТЬ| ВТ_Доки.Ссылка КАК Ссылка|ИЗ| ВТ_Доки КАК ВТ_Доки| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах| ПО ВТ_Доки.Ссылка = ТоварыНаСкладах.Регистратор| И ТоварыНаСкладах.ВидДвижения =| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)|ГДЕ| ТоварыНаСкладах.Регистратор ЕСТЬ NULLЭтот запрос вернет документы, по которым нет ни одного движения с видом
Приходв регистреТоварыНаСкладах.## Если нужно проверять движение прихода именно по складу
Если нужно проверять приход только по конкретному складу, например склад передается параметром
&Склад, добавьте условие также вПО:1С (Код)1234567891011|ВЫБРАТЬ| ВТ_Доки.Ссылка КАК Ссылка|ИЗ| ВТ_Доки КАК ВТ_Доки| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах| ПО ВТ_Доки.Ссылка = ТоварыНаСкладах.Регистратор| И ТоварыНаСкладах.ВидДвижения =| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)| И ТоварыНаСкладах.Склад = &Склад|ГДЕ| ТоварыНаСкладах.Регистратор ЕСТЬ NULLВ этом случае необходимо установить параметр:
1С (Код)1Запрос.УстановитьПараметр("Склад", Склад);## Если нужно проверить наличие прихода на любом складе
Тогда условие по
Складдобавлять не нужно. Первый вариант проверяет движениеПриходпо любому складу.## Если нужно исключить помеченные на удаление документы
Добавьте в первый блок:
1С (Код)1| И НЕ Реализация.ПометкаУдаленияПолный фрагмент условий:
1С (Код)12345678|ГДЕ| Реализация.Проведен| И НЕ Реализация.ПометкаУдаления| И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода| И Реализация.Статус <>| ЗНАЧЕНИЕ(Перечисление.СтатусыПеремещенийТоваров.Принято)| И РеализацияТовары.Номенклатура.ТипНоменклатуры =| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)## Если нужно проверить конкретно склад-получатель из документа
В зависимости от конфигурации у документа могут быть реквизиты вроде:
1С (Код)1|Реализация.СкладПолучательили:
1С (Код)1|Реализация.СкладТогда вместо параметра можно сравнивать склад регистра со складом документа:
1С (Код)1234| ПО ВТ_Доки.Ссылка = ТоварыНаСкладах.Регистратор| И ТоварыНаСкладах.ВидДвижения =| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)| И ТоварыНаСкладах.Склад = ВТ_Доки.Ссылка.СкладПолучательНо такой вариант нужно использовать только в том случае, если в вашей конфигурации у документа действительно есть реквизит
СкладПолучатель, а в регистреТоварыНаСкладахдвижение прихода записывается именно по нему.Для обычной проверки отсутствия прихода по документу достаточно основного условия:
1С (Код)12| И ТоварыНаСкладах.ВидДвижения =| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)25 сентября 2026 в 7:54 в ответ на: Являются ли «пометка удаления» и «не проведен» одним и тем же в 1С? #38723Нет, это два разных независимых свойства документа.
## Пометка удаления
Проверяется свойством:
1С (Код)1Документ.ПометкаУдаленияУсловие:
1С (Код)1Документ.ПометкаУдаленияозначает, что документ помечен на удаление.
В запросе:
1С (Код)12|ГДЕ| Реализация.ПометкаУдаленияЧтобы выбрать документы, не помеченные на удаление:
1С (Код)12|ГДЕ| НЕ Реализация.ПометкаУдаленияили:
1С (Код)12|ГДЕ| Реализация.ПометкаУдаления = ЛОЖЬ## Проведен или не проведен
Проверяется свойством:
1С (Код)1Документ.ПроведенУсловие:
1С (Код)1Документ.Проведенозначает, что документ проведен.
Чтобы выбрать документы, которые не проведены:
1С (Код)12|ГДЕ| НЕ Реализация.Проведенили:
1С (Код)12|ГДЕ| Реализация.Проведен = ЛОЖЬ## Примеры условий
### Проведенные документы, не помеченные на удаление
1С (Код)123|ГДЕ| Реализация.Проведен| И НЕ Реализация.ПометкаУдаления### Непроведенные документы, не помеченные на удаление
1С (Код)123|ГДЕ| НЕ Реализация.Проведен| И НЕ Реализация.ПометкаУдаления### Проведенные документы, помеченные на удаление
1С (Код)123|ГДЕ| Реализация.Проведен| И Реализация.ПометкаУдаления### Все документы, которые нужно исключить из обработки
Например, исключить документы, если они либо помечены на удаление, либо не проведены:
1С (Код)123|ГДЕ| НЕ Реализация.ПометкаУдаления| И Реализация.Проведен## Важная особенность
При интерактивной установке пометки удаления на проведенный документ 1С обычно автоматически снимает проведение. Поэтому часто получается такое:
1С (Код)12Проведен = ЛожьПометкаУдаления = ИстинаНо это результат конкретного действия пользователя, а не равенство свойств.
Возможны и другие состояния:
| Проведен | Пометка удаления | Что означает |
|—|—:|—|
| Истина | Ложь | Обычный действующий документ |
| Ложь | Ложь | Непроведенный документ, не помечен на удаление |
| Ложь | Истина | Документ помечен на удаление |
| Истина | Истина | Может существовать при программной записи или особенностях конфигурации, но обычно так быть не должно |Для вашей задачи, если нужно выбрать документы для перепроведения, условие должно быть примерно таким:
1С (Код)1234|ГДЕ| Реализация.Проведен| И НЕ Реализация.ПометкаУдаления| И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериодаЕсли нужно проверить непроведенные документы без пометки удаления:
1С (Код)123|ГДЕ| НЕ Реализация.Проведен| И НЕ Реализация.ПометкаУдаленияА если нужно найти документы, по которым отсутствуют движения, не забудьте дополнительно проверить и то, что документ не помечен на удаление:
1С (Код)123|ГДЕ| Реализация.Проведен| И НЕ Реализация.ПометкаУдаленияПроведенотвечает за наличие движений документа, аПометкаУдаленияотвечает только за последующее удаление объекта.24 сентября 2026 в 16:38 в ответ на: Почему при запуске копии базы 1С запускается обработчик обновления конфигурации? #38721При запуске копии базы обработчик обновления релиза запускается потому, что вместе с данными копируется и служебная информация о состоянии обновления. 1С видит, что конфигурация базы данных еще не полностью приведена к версии конфигурации, и продолжает выполнение отложенных обработчиков.
## Почему это происходит
Наиболее частые причины:
1. Копия сделана во время незавершенного обновления
Например, в рабочей базе уже была загружена новая конфигурация, но еще не завершились отложенные обработчики. В копию попадает:
— новая конфигурация;
— данные о зарегистрированных объектах;
— очередь обработчиков;
— их текущие статусы;
— признак незавершенного обновления.При первом запуске копии 1С продолжает обработку.
2. Обновление рабочей базы было прервано
Это может произойти из-за:
— закрытия Конфигуратора;
— аварийного завершения процесса1cv8.exe;
— отключения электричества;
— нехватки места на диске;
— блокировки базы другим пользователем;
— ошибки в обработчике;
— тайм-аута или сбоя фонового задания.3. Копия была сделана после обновления конфигурации, но до окончания обработки данных
В 1С обновление состоит не только из замены конфигурации. После обновления структуры могут запускаться длительные обработчики, которые переносят и преобразуют данные.
Поэтому надпись о том, что конфигурация обновлена, еще не всегда означает, что все данные обработаны.
4. Копия сделана средствами, которые сохранили служебное состояние базы
Это относится к:
— копированию файловой базы
1Cv8.1CD;
— восстановлению резервной копии;
— копии серверной базы средствами СУБД;
— выгрузке и загрузке.dt.Восстановленная база может продолжить ранее начатое обновление.
5. Копия запускается на другой версии платформы
Иногда при открытии копии более новой платформой запускаются дополнительные процедуры обновления данных или служебных объектов. Это не всегда означает обновление прикладной конфигурации, но внешне выглядит похожим образом.
## Что сначала проверить
Перед любыми исправлениями нужно определить, действительно ли идет обновление и не выполняется ли оно в другом сеансе.
### 1. Сделать резервную копию именно зависшей копии
Для файловой базы нужно скопировать файл:
1С (Код)11Cv8.1CDДля клиент-серверной базы желательно сделать отдельную резервную копию средствами СУБД.
Не следует сразу запускать «Тестирование и исправление», удалять записи из служебных регистров или менять статусы обработчиков. Сначала нужно сохранить исходное состояние.
### 2. Проверить, есть ли другие пользователи
В клиент-серверном варианте проверьте активные соединения в консоли администрирования 1С. В файловом варианте проверьте, что файл базы не открыт другими процессами.
Если обработчик запускается в копии, где никто больше не работает, это нормально. Если же одновременно работает несколько пользователей, обработка может постоянно останавливаться или запускаться повторно.
### 3. Посмотреть стандартный отчет о ходе обновления
В зависимости от конфигурации это может быть:
— «Результат обновления программы»;
— «Монитор обновления программы»;
— форма выполнения отложенных обработчиков;
— сообщение при запуске информационной базы;
— раздел администрирования, связанный с обновлением программы.В отчете нужно посмотреть:
— имя обработчика;
— количество объектов к обработке;
— текущий прогресс;
— текст последней ошибки;
— сколько попыток выполнения уже было;
— дату последнего запуска.Если количество объектов уменьшается, обработчик не завис, а просто выполняется долго.
## Как отличить медленный обработчик от действительно зависшего
Обработчик можно считать работающим, если:
— меняется количество обработанных объектов;
— изменяется время последней обработки;
— в журнале регистрации появляются новые записи;
— растет загрузка процессора, диска или базы данных;
— уменьшается размер очереди;
— меняются данные, которые должен формировать обработчик.Признаки зависания:
— количество объектов не меняется длительное время;
— одна и та же ошибка повторяется при каждой попытке;
— обработчик стартует снова и снова;
— в журнале регистрации есть ошибки «Объект не найден», «Поле не заполнено», «Нарушение ограничения уникальности»;
— обработчик не может обработать один или несколько конкретных объектов;
— нет активности в базе, но статус остается «Выполняется»;
— обновление прерывалось на одном и том же месте.Если обработчик работает с миллионами записей, отсутствие видимого прогресса несколько минут или даже десятков минут еще не доказывает зависание. Оценивать нужно по журналу регистрации и нагрузке.
## Что делать с зависшим обработчиком
### Вариант 1. Дать обработчику завершиться
Если это тестовая или восстановленная копия и обработчик не выдает ошибок, сначала оставьте базу в монопольном режиме и дождитесь окончания.
Для ускорения:
— запускайте обработку без пользователей;
— используйте локальный диск для файловой базы;
— убедитесь, что на диске достаточно места;
— не запускайте параллельно тяжелые регламентные задания;
— не прерывайте процесс повторно.В некоторых конфигурациях в форме результата обновления можно выбрать режим обработки:
— «Работа пользователей»;
— «Обработка данных».Режим «Обработка данных» обычно обрабатывает данные более интенсивно и может поддерживать несколько потоков. Но его следует применять на копии после проверки, что обработчики не имеют проблем с параллельным выполнением.
### Вариант 2. Найти ошибку в журнале регистрации
Откройте журнал регистрации и отберите события за период запуска обновления. Ищите:
—
Ошибка;
—Исключение;
—Обработчик обновления;
—Отложенное обновление;
— имя обработчика;
— текст «Объект не найден»;
— ошибки записи объекта;
— ошибки нарушения ограничений;
— ошибки обращения к несуществующему реквизиту или регистру.Часто обработчик не является зависшим. Он повторяет попытку, потому что каждый раз встречает один некорректный объект.
Типовые причины:
— документ помечен на удаление;
— документ не проводится из-за старых некорректных данных;
— в объекте не заполнено обязательное поле;
— есть битая ссылка;
— удален владелец или подчиненный объект;
— в выборку попадает пользовательский документ, который типовой обработчик не умеет обрабатывать;
— запрос обработчика возвращает дубли;
— один обработчик ожидает данные, которые должен создать другой обработчик.После исправления причины обработчик обычно можно запустить повторно.
### Вариант 3. Проверить зарегистрированные объекты
В конфигурациях, где используется стандартный механизм отложенного обновления, может применяться регистр сведений «Обработчики обновления» или аналогичный служебный объект.
В нем обычно видны:
— имя обработчика;
— статус;
— дата начала;
— дата последней попытки;
— количество обработанных объектов;
— оставшееся количество;
— сообщение об ошибке.Особенно внимательно проверьте обработчики со статусами:
— «Выполняется»;
— «Приостановлен»;
— «Ошибка»;
— «Ожидает обработки».Если обработчик имеет статус «Выполняется», но фактически процесс давно завершился аварийно, на копии иногда можно перевести его в состояние, допускающее повторную обработку. Конкретное название статуса зависит от конфигурации.
Не меняйте статус без резервной копии. Простая смена статуса не исправляет данные и может только привести к повторному выполнению обработчика.
### Вариант 4. Исправить проблемные данные
Если в журнале найден конкретный объект, нужно проверить его в пользовательском режиме или обработкой.
Например:
— заполнить отсутствующий реквизит;
— восстановить владельца;
— снять ошибочную пометку удаления;
— перепровести документ, если это допустимо;
— удалить некорректную запись из копии;
— исключить объект из обработки, если он не должен участвовать в обновлении.Для рабочей базы исправление в закрытом периоде требует отдельного анализа. В копии можно сначала проверить способ исправления, затем переносить его в рабочую базу.
### Вариант 5. Запустить базу в режиме отладки обновления
Для анализа длительных отложенных обработчиков полезен запуск с параметром:
1С (Код)1/С РежимОтладкиВ этом режиме длительные операции выполняются более прозрачно, что позволяет:
— увидеть конкретный обработчик;
— поймать ошибку в отладчике;
— исследовать параметры;
— понять, на каком объекте останавливается обработка;
— анализировать запрос, выполняемый обработчиком.Для файловой базы запуск может выглядеть примерно так:
1С (Код)1"C:Program Files1cv88.3.XX.XXXXbin1cv8.exe" ENTERPRISE /F"C:BasesTest" /C"РежимОтладки"Для серверной базы вместо
/Fуказываются параметры/S, пользователь и пароль.Точное имя параметра и поддержка режима зависят от версии платформы и конфигурации. Если параметр не распознается, его нужно проверить для конкретного релиза платформы.
## Можно ли просто удалить зависший обработчик
Обычно нет.
Нельзя без анализа:
— удалять записи из регистра «Обработчики обновления»;
— очищать регистрацию изменений;
— удалять служебные записи напрямую через SQL;
— откатывать дату обновления вручную;
— загружать старую конфигурацию поверх базы;
— несколько раз подряд запускать «Тестирование и исправление»;
— принудительно устанавливать статус «Завершен».Обработчик мог не только формировать очередь, но и частично изменить данные. Если просто отметить его завершенным, часть базы останется в старом состоянии, а конфигурация будет считаться обновленной. Впоследствии это может проявиться в отчетах, проведении документов или обменах.
Удаление регистрации допустимо только в обоснованных случаях, например если:
— данные уже были обработаны ранее;
— объект ошибочно зарегистрирован;
— объект не относится к типовому сценарию;
— разработчик точно определил, что его обработка не требуется.В таких случаях лучше использовать штатную обработку или доработанный механизм отмены регистрации, а не удалять записи напрямую из базы данных.
## Если обработчик запускается в копии каждый раз
Порядок действий:
1. Закройте все сеансы с копией.
2. Сделайте копию файла1Cv8.1CDили резервную копию серверной базы.
3. Запустите копию монопольно.
4. Откройте результат обновления программы.
5. Определите конкретное имя обработчика.
6. Посмотрите его прогресс и последнюю ошибку.
7. Проверьте журнал регистрации по этому обработчику.
8. Исправьте проблемные данные или код обработчика.
9. Повторно запустите обработку.
10. Убедитесь, что очередь обработчиков полностью завершена.
11. Только после этого используйте копию для тестирования или дальнейшего обновления.Если копия нужна только для просмотра данных и обработчики запускать не требуется, правильнее сделать копию уже после полного завершения обновления рабочей базы. Если это невозможно, копию следует рассматривать как базу, в которой еще продолжается технологическая операция обновления.
## Когда нужен разработчик
Разработчик конфигурации нужен, если:
— обработчик зацикливается;
— выборка возвращает одни и те же строки;
— обработчик не учитывает документы расширения;
— возникает ошибка в типовом коде;
— обработчики зависят друг от друга;
— в многопоточном режиме один обработчик использует данные, которые еще не созданы другим;
— проблема воспроизводится только на большом объеме данных;
— обработчик постоянно возвращает статус «Выполняется», но количество объектов не меняется.В таких случаях анализируют код процедуры обновления, запросы, регистрацию объектов и порядок выполнения обработчиков. Иногда помогает изменение порядка обработчиков: сначала выполняется обработчик, создающий необходимые данные, затем обработчики, которые эти данные используют.
При обновлении нетиповой конфигурации также проверяют доработки. Частая ситуация: типовой обработчик рассчитан на стандартные документы, а в базе появились собственные документы или регистраторы. Они попадают в очередь, но типовая процедура не умеет их обрабатывать, из-за чего обновление повторяет одну и ту же попытку.
23 сентября 2026 в 17:26 в ответ на: Как проверить и провести документы в 1С без движений в регистре? #38719Ваш запрос уже выбирает все проведенные документы, по которым нет движений в регистре
ТоварыНаСкладах. Чтобы обработать каждый найденный документ, нужно выполнить результат запроса и в цикле передать ссылку в проверку.## 1. Запрос для получения документов без движений
Лучше ограничить проверку регистра условием по нужному виду регистратора. Сам запрос можно оставить таким:
1С (Код)123456789101112131415161718192021222324|ВЫБРАТЬ РАЗЛИЧНЫЕ| Реализация.Ссылка КАК Ссылка|ПОМЕСТИТЬ ВТ_Доки|ИЗ| Документ.ВозвратТоваровПоставщику КАК Реализация| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровПоставщику.Товары КАК РеализацияТовары| ПО РеализацияТовары.Ссылка = Реализация.Ссылка|ГДЕ| Реализация.Проведен| И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода| И РеализацияТовары.Номенклатура.ТипНоменклатуры =| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)|;||////////////////////////////////////////////////////////////////////////////////||ВЫБРАТЬ| ВТ_Доки.Ссылка КАК Ссылка|ИЗ| ВТ_Доки КАК ВТ_Доки| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах| ПО ВТ_Доки.Ссылка = ТоварыНаСкладах.Регистратор|ГДЕ| ТоварыНаСкладах.Регистратор ЕСТЬ NULLПараметры запроса нужно установить обязательно:
1С (Код)12Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);Запрос.УстановитьПараметр("КонецПериода", КонецПериода);## 2. Проверка всех найденных документов
Например, если нужно просто вывести список документов без движений:
1С (Код)123456789101112131415161718Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();КоличествоДокументов = 0;Пока Выборка.Следующий() ЦиклКоличествоДокументов = КоличествоДокументов + 1;Сообщить("Нет движений в регистре ТоварыНаСкладах: "+ Строка(Выборка.Ссылка));КонецЦикла;Сообщить("Всего документов без движений: "+ Строка(КоличествоДокументов));## 3. Если для каждого документа нужно вызвать свою проверку
Допустим, у вас есть процедура:
1С (Код)1ПроверитьДокумент(СсылкаДокумента);Тогда вызов всех документов будет таким:
1С (Код)12345678Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклПроверитьДокумент(Выборка.Ссылка);КонецЦикла;Например:
1С (Код)12345678910111213Процедура ПроверитьДокумент(СсылкаДокумента) ЭкспортЕсли Не ЗначениеЗаполнено(СсылкаДокумента) ТогдаВозврат;КонецЕсли;Сообщить("Проверяется документ: "+ Строка(СсылкаДокумента));// Здесь размещается ваша проверкаКонецПроцедуры## 4. Если нужно повторно провести все найденные документы
Если задача состоит в том, чтобы перепровести документы и сформировать движения, можно получить объект документа и записать его с проведением:
1С (Код)12345678910111213141516171819202122232425262728Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклСсылкаДокумента = Выборка.Ссылка;ОбъектДокумента = СсылкаДокумента.ПолучитьОбъект();ПопыткаОбъектДокумента.Записать(РежимЗаписиДокумента.Проведение);Сообщить("Документ проведен: "+ Строка(СсылкаДокумента));ИсключениеСообщить("Ошибка проведения документа "+ Строка(СсылкаДокумента)+ ": "+ ОписаниеОшибки());КонецПопытки;КонецЦикла;Но для массового проведения лучше использовать транзакцию и блокировку, особенно если документов много.
## 5. Вариант с транзакцией
1С (Код)12345678910111213141516171819202122232425НачатьТранзакцию();ПопыткаРезультат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклОбъектДокумента =Выборка.Ссылка.ПолучитьОбъект();ОбъектДокумента.Записать(РежимЗаписиДокумента.Проведение);КонецЦикла;ЗафиксироватьТранзакцию();ИсключениеОтменитьТранзакцию();ВызватьИсключение;КонецПопытки;Минус этого варианта в том, что при ошибке в одном документе будут отменены изменения по всем документам. Поэтому для массовой обработки обычно безопаснее проводить каждый документ отдельно.
## 6. Рекомендуемый вариант для массового проведения
Такой вариант не откатывает уже успешно проведенные документы, если следующий документ завершился ошибкой:
1С (Код)1234567891011121314151617181920212223242526272829303132333435363738394041424344Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклСсылкаДокумента = Выборка.Ссылка;ПопыткаОбъектДокумента = СсылкаДокумента.ПолучитьОбъект();Если Не ОбъектДокумента.Проведен ТогдаОбъектДокумента.Записать(РежимЗаписиДокумента.Проведение);Сообщить("Проведен документ: "+ Строка(СсылкаДокумента));Иначе// Для уже проведенного документа перепроведение обычно// выполняется записью с режимом проведенияОбъектДокумента.Записать(РежимЗаписиДокумента.Проведение);Сообщить("Перепроведен документ: "+ Строка(СсылкаДокумента));КонецЕсли;ИсключениеСообщить("Не удалось провести документ "+ Строка(СсылкаДокумента)+ ". "+ ОписаниеОшибки());КонецПопытки;КонецЦикла;## 7. Если нужно только проверить наличие движений после проведения
После перепроведения исходный результат запроса уже не обновится. Нужно повторно выполнить запрос:
1С (Код)1234567891011121314151617181920Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Если Не Выборка.Следующий() ТогдаСообщить("Документов без движений не найдено.");ИначеПока Истина ЦиклСообщить("По-прежнему нет движений: "+ Строка(Выборка.Ссылка));Если Не Выборка.Следующий() ТогдаПрервать;КонецЕсли;КонецЦикла;КонецЕсли;## 8. Важная проверка
В вашем запросе документ считается проблемным, если у него нет вообще ни одной записи в регистре
ТоварыНаСкладах.Если документ должен делать движения только по товарам определенного типа, это условие корректно:
1С (Код)12|И РеализацияТовары.Номенклатура.ТипНоменклатуры =| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)Но если в документе есть и услуги, и товары, то наличие движений нужно проверять не просто по регистратору, а по конкретной номенклатуре. Иначе документ может иметь движения по одной строке, а другая товарная строка останется без движений.
Для простой проверки всех документов ваш основной алгоритм такой:
1С (Код)12345678910111213Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);Запрос.УстановитьПараметр("КонецПериода", КонецПериода);Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклОбъектДокумента = Выборка.Ссылка.ПолучитьОбъект();ОбъектДокумента.Записать(РежимЗаписиДокумента.Проведение);КонецЦикла;То есть запрос формирует список ссылок, а цикл
Пока Выборка.Следующий()последовательно обрабатывает все найденные документы.23 сентября 2026 в 17:25 в ответ на: Почему в 1С 7.7 журнал документов не показывает все счета? #38717Понял, речь идет о 1С:Предприятие 7.7, а не о 1С 8.3. Предыдущий пример запроса для 8.3 к версии 7.7 неприменим.
В 1С 7.7 список документов обычно открывается через журнал документов. Если в журнале отображаются не все счета, проверьте следующее.
### 1. Установленный период журнала
В верхней части журнала может быть установлен период просмотра:
— текущий день;
— текущий месяц;
— текущий квартал;
— произвольный ограниченный период.Из-за этого старые счета не будут видны.
Установите максимально широкий период через пункт меню, обычно:
Действия → Интервал дат
или кнопку выбора интервала на панели журнала.
Укажите, например:
— начало:
01.01.2000;
— конец: текущая дата.Точное название пункта зависит от конфигурации и настроек интерфейса.
### 2. Отбор в журнале
В 1С 7.7 журнал может иметь установленный отбор. Проверьте:
Действия → Отбор
или соответствующую кнопку на панели инструментов.
Уберите отборы по:
— организации;
— контрагенту;
— договору;
— ответственному;
— пользователю;
— виду операции;
— состоянию документа;
— номеру;
— дате.Если доступна команда сброса отбора, используйте:
Действия → Сбросить отбор
### 3. Журнал может показывать не все виды документов
В 7.7 один журнал может быть настроен на отображение только определенных видов документов. Проверьте настройку журнала:
Действия → Настройка журнала
Убедитесь, что в составе отображаемых документов выбран именно документ «Счет на оплату покупателю».
В некоторых конфигурациях счет может находиться:
— в отдельном журнале;
— в общем журнале документов;
— в журнале расчетов с покупателями;
— в журнале заказов или реализации.### 4. Счета могли быть введены другим документом
В УТ 7.7 счет иногда оформляется не отдельным документом, а как:
— заказ покупателя;
— заявка покупателя;
— документ реализации;
— документ, печатная форма которого называется «Счет на оплату».То есть название печатной формы не всегда совпадает с видом документа в метаданных.
Проверьте, какой именно документ открывается при создании счета. В меню:
Документы
найдите документ, который используется для оформления счета, и откройте его журнал напрямую.
### 5. Ограничения прав пользователя
Если один пользователь видит счета, а другой нет, вероятная причина в правах доступа.
В 1С 7.7 проверьте:
— права пользователя на сам документ;
— права на журнал документов;
— доступ к организации;
— рабочее место пользователя;
— ограничения по подразделению или ответственному;
— настройки пользователя в конфигурации.Для проверки войдите под пользователем с полными правами и откройте тот же журнал.
Если администратор видит все документы, а обычный пользователь только часть, проблема, скорее всего, в правах или программном отборе.
### 6. Документы помечены на удаление
Проверьте, не помечены ли отсутствующие счета на удаление. В зависимости от конфигурации такие документы могут:
— отображаться другим цветом;
— скрываться из обычного списка;
— показываться только при включенной настройке отображения удаляемых объектов.Откройте меню журнала и включите отображение помеченных на удаление документов, если такая команда предусмотрена.
### 7. Программный отбор в модуле формы журнала
В конфигурациях 7.7 часто в модуле формы журнала устанавливают отбор программно. Например, журнал может показывать только документы:
— текущей организации;
— текущего менеджера;
— текущего склада;
— за определенный период;
— с незакрытым состоянием;
— связанные с конкретным заказом.Если ручной сброс отбора не помогает, нужно открыть конфигуратор и проверить форму журнала документа.
Ищите в модуле формы журнала процедуры:
—
ПриОткрытии;
—ПриИзмененииИнтервала;
—ОбработкаВыбора;
—УстановитьОтбор;
—УстановитьФильтр;
—НачалоВыбораЗначения.В 1С 7.7 отборы могли задаваться как через настройки журнала, так и непосредственно кодом формы.
### 8. Как проверить наличие документа в базе через встроенный запрос 7.7
В 1С 7.7 используется другой язык запросов. Синтаксис 8.3 вида
Документ.СчетНаОплатуПокупателюс полями через точку здесь использовать нельзя.Пример запроса 7.7 имеет примерно такой вид:
|Период с ДатаНач по ДатаКон;
|Документ = Документ.СчетНаОплатуПокупателю.ТекущийДокумент;
|ДатаДок = Документ.СчетНаОплатуПокупателю.ДатаДок;
|НомерДок = Документ.СчетНаОплатуПокупателю.НомерДок;
|Фирма = Документ.СчетНаОплатуПокупателю.Фирма;
|Контрагент = Документ.СчетНаОплатуПокупателю.Контрагент;
|Группировка Документ;
|Упорядочить по ДатаДок;Но этот текст сработает только если в конкретной конфигурации действительно существует документ с идентификатором:
СчетНаОплатуПокупателюВ 7.7 имя документа в конфигураторе могло быть другим, например:
—
Счет;
—СчетПокупателю;
—СчетФактура;
—ЗаказПокупателя.Поэтому точное имя нужно посмотреть в конфигураторе в дереве Документы.
Для вашей ситуации в первую очередь проверьте:
1. Интервал дат журнала.
2. Отбор журнала.
3. Состав документов журнала.
4. Права текущего пользователя.
5. Программный отбор в форме журнала.Для 1С 7.7 наиболее частая причина именно в ограниченном интервале дат или в отборе журнала, сохраненном пользователем.
23 сентября 2026 в 15:48 в ответ на: Как извлечь весь текст из XML в 1С с помощью `ЧтениеXML`? #38715Ваша функция удаляет все фрагменты между
<и>, а оставшийся текст объединяет в одну строку. Для простого XML она может работать, но это не полноценный разбор XML.Проблемы текущего варианта:
— текст комментариев попадёт в результат;
— содержимоеCDATAобрабатывается некорректно;
— символ>внутри значения атрибута может преждевременно завершить тег;
— XML-сущности, например&, не преобразуются в&;
— XML-декларации, инструкции обработки иDOCTYPEкорректно не учитываются;
— при некорректном XML функция не сообщает об ошибке.Для XML лучше использовать объект
ЧтениеXML.### Вариант функции для извлечения всего текстового содержимого
1С (Код)12345678910111213141516171819202122232425262728Функция ИзвлечьТекстИзXML(СтрокаXML) ЭкспортЕсли ПустаяСтрока(СтрокаXML) ТогдаВозврат "";КонецЕсли;ЧтениеXML = Новый ЧтениеXML;ПопыткаЧтениеXML.УстановитьСтроку(СтрокаXML);Результат = "";Пока ЧтениеXML.Прочитать() ЦиклЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст ТогдаРезультат = Результат + ЧтениеXML.Значение;КонецЕсли;КонецЦикла;Возврат СокрЛП(Результат);ИсключениеВызватьИсключение "Некорректная XML-строка: " + ОписаниеОшибки();КонецПопытки;КонецФункцииНапример, для XML:
1С (Код)12345<Документ><Номер>123</Номер><Дата>2026-09-23</Дата><Комментарий>Текст & описание</Комментарий></Документ>результатом будет примерно:
1С (Код)11232026-09-23Текст & описаниеXML-парсер автоматически преобразует
&в символ&.Если между значениями нужны пробелы или переводы строк, добавьте их при объединении:
1С (Код)1234567891011121314151617181920212223242526Функция ИзвлечьТекстИзXML(СтрокаXML) ЭкспортЕсли ПустаяСтрока(СтрокаXML) ТогдаВозврат "";КонецЕсли;ЧтениеXML = Новый ЧтениеXML;ЧтениеXML.УстановитьСтроку(СтрокаXML);МассивТекста = Новый Массив;Пока ЧтениеXML.Прочитать() ЦиклЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст ТогдаТекстУзла = СокрЛП(ЧтениеXML.Значение);Если ЗначениеЗаполнено(ТекстУзла) ТогдаМассивТекста.Добавить(ТекстУзла);КонецЕсли;КонецЕсли;КонецЦикла;Возврат СтрСоединить(МассивТекста, " ");КонецФункцииДля получения только текста определённого элемента, например
<Комментарий>, лучше проверять имя текущего элемента и учитывать уровень вложенности. Простая функция сТипУзлаXML.Текстизвлекает текст из всех элементов XML, включая вложенные узлы.Если XML содержит только один известный тег и гарантированно имеет простой вид, ваш вариант можно немного улучшить, но для общего случая рекомендуется использовать
ЧтениеXML.23 сентября 2026 в 15:13 в ответ на: Как настроить режим «Только изменения» в 1С СКАТ — Профессионал 5.0? #38713На вашей форме выбран режим «Только изменения», но поля:
— Узел обмена товарами
— Узел обмена заказамине заполнены. Поэтому 1С предлагает выбрать узлы из плана обмена с сайтом.
## Что такое узел обмена
Узел обмена в 1С это не сайт, не пользователь и не адрес
1c_exchange.php.Это служебная запись, которая обозначает конкретного участника обмена, например:
— интернет-магазин;
— сайт организации;
— периферийную базу;
— внешний информационный ресурс.Для режима «Только изменения» узел необходим, потому что 1С должна запоминать:
— какие товары уже выгружались;
— какие товары изменились после последней выгрузки;
— какие заказы были переданы;
— какие объекты еще ожидают отправки;
— до какого момента обмен уже выполнялся.Технически это связано с механизмом плана обмена. План обмена хранит зарегистрированные изменения объектов и узлы, которым эти изменения должны быть переданы.
## Что нужно выбрать в вашей настройке
В поле «Узел обмена товарами» нужно выбрать узел, предназначенный для сайта и выгрузки товаров.
Например, он может называться:
—
Сайт;
—WEB-сайт;
—Интернет-магазин;
—Битрикс;
—Сайт товары;
—Основной сайт.В поле «Узел обмена заказами» нужно выбрать узел, предназначенный для обмена заказами.
Он может называться:
—
Сайт заказы;
—WEB-сайт заказы;
—Интернет-магазин;
—Битрикс заказы.Названия зависят от того, как в конфигурации СКАТ были созданы планы обмена.
## Как выбрать узел
1. Откройте поле «Узел обмена товарами».
2. Нажмите кнопку с лупой справа.
3. В открывшемся списке найдите узел сайта.
4. Выберите его двойным щелчком.
5. Аналогично заполните поле «Узел обмена заказами».Кнопка с тремя точками обычно открывает список или форму выбора, а кнопка с лупой выполняет поиск элемента.
После выбора в полях вместо пустых красных областей должно появиться наименование узла.
## Если список узлов пустой
Если при нажатии на выбор узла список пустой, значит, узел обмена еще не создан или не настроен.
В этом случае нужно проверить план обмена:
1. Откройте раздел Администрирование либо Все функции.
2. Найдите пункт, связанный с:
— планами обмена;
— обменом с WEB-сайтом;
— настройкой обмена с сайтом.
3. Откройте план обмена, который используется для обмена с сайтом.
4. Проверьте список узлов.
5. Создайте узел сайта, если его нет.В разных версиях СКАТ пункт может называться немного по-разному. Обычно используется план обмена с названием вроде:
— Обмен с WEB-сайтом;
— Обмен с сайтом;
— Обмен данными с сайтом;
— Обмен товарами и заказами.В узле указываются, как правило:
— наименование узла;
— код узла;
— признак использования;
— иногда дополнительные параметры подключения.Не нужно создавать произвольный план обмена, если в конфигурации уже есть типовой план для сайта. Нужно использовать именно типовой план, предусмотренный СКАТ.
## Нужно ли использовать один узел или разные
На вашей форме предусмотрены два отдельных поля, поэтому конфигурация может ожидать разные узлы:
— отдельный узел для товаров;
— отдельный узел для заказов.Если в списке типового плана есть только один узел сайта, его можно выбрать в обоих полях, но делать это следует только если именно так предусмотрено конфигурацией.
Обычно безопасный вариант:
— в «Узел обмена товарами» выбрать узел для товаров;
— в «Узел обмена заказами» выбрать узел для заказов.Не следует выбирать узел от другого обмена, например узел бухгалтерии или другой информационной базы.
## Что означает режим «Только изменения»
В вашей форме сейчас установлено:
— Выгрузка товаров;
— Обмен заказами;
— Выгрузка на сайт;
— Только изменения.В этом режиме при каждом запуске обмена 1С передает не весь справочник товаров, а только объекты, которые были изменены после предыдущей выгрузки.
Например, будут переданы:
— новый товар;
— измененная цена;
— измененный остаток;
— измененное описание;
— измененная картинка;
— измененная характеристика;
— измененная группа товара;
— новый или измененный заказ.Однако режим «Только изменения» нормально работает только после того, как:
1. узлы обмена созданы;
2. узлы назначены в настройке;
3. выполнена первоначальная полная выгрузка;
4. сайт корректно принял эту выгрузку;
5. 1С начала регистрировать изменения для выбранного узла.## Рекомендуемый порядок настройки
### 1. Сначала проверить соединение
На форме нажмите «Проверить».
Должна пройти авторизация по адресу обмена:
1С (Код)1http://ваш-сайт/1c_exchange.phpУ пользователя сайта должны быть права на обмен с 1С. Если проверка не проходит, сначала исправьте подключение:
— адрес сайта;
— логин;
— пароль;
— доступность сайта из 1С;
— права пользователя Битрикс;
— настройки веб-сервера;
— протокол HTTP или HTTPS.### 2. Заполнить узлы
Назначьте узел товаров и узел заказов. Пока эти поля пустые, режим «Только изменения» использовать нельзя.
### 3. Выполнить первоначальную полную выгрузку
Для первой загрузки рекомендуется временно выбрать:
1С (Код)1Полная выгрузкаи выгрузить товары на сайт.
Полная выгрузка необходима, чтобы сайт получил исходный полный состав:
— товары;
— группы;
— цены;
— остатки;
— характеристики;
— изображения;
— свойства, участвующие в обмене.Если сразу оставить «Только изменения», на сайте могут отсутствовать объекты, которые были созданы до включения обмена или не зарегистрировались для конкретного узла.
### 4. Переключить обратно на «Только изменения»
После успешной полной выгрузки:
1. установите «Только изменения»;
2. сохраните настройку;
3. измените тестовый товар;
4. запустите обмен;
5. проверьте изменение на сайте.Например, для проверки можно изменить описание или цену одного товара.
## Важный момент по расписанию
На вашей форме флажок «Использовать периодический обмен данными» снят.
Это означает, что обмен не будет запускаться автоматически по расписанию. Его нужно будет запускать вручную через кнопку или команду обмена.
Если требуется автоматический обмен:
1. установите флажок «Использовать периодический обмен данными»;
2. нажмите «Дополнительные настройки расписания»;
3. задайте периодичность;
4. проверьте, что 1С работает в режиме, где выполняются регламентные задания.В клиент-серверном варианте также необходимо, чтобы сервер 1С и регламентные задания были доступны. В файловой базе автоматический обмен обычно зависит от того, запущена ли база и выполняются ли фоновые задания.
## Если после настройки изменения не выгружаются
Проверьте следующие причины:
1. Узлы обмена не назначены.
2. После создания узла не была выполнена первоначальная полная выгрузка.
3. Объект не входит в состав выгружаемых данных.
4. Изменение сделано в реквизите, который не передается на сайт.
5. Обмен запускается не по той настройке.
6. Регламентное задание отключено.
7. У пользователя сайта нет прав на прием данных.
8. В 1С остались ошибки предыдущего обмена.
9. Не настроена регистрация изменений для выбранного узла.
10. В конфигурации используются отдельные узлы для товаров и заказов, но выбран один и тот же узел.На скриншоте основная проблема сейчас именно в том, что оба поля узлов пустые. Сначала нужно выбрать или создать узлы в плане обмена с сайтом, затем выполнить первоначальную полную выгрузку и только после этого использовать режим «Только изменения».
23 сентября 2026 в 14:47 в ответ на: Как в «Альфа-Авто» учесть ГСМ в литрах при продаже в больших упаковках? #38711Для вашей задачи в «Альфа-Авто» следует использовать упаковки номенклатуры и коэффициенты пересчёта единиц измерения. Разукомплектация, комплектация, складской учёт и «Честный знак» для этого не нужны.
Но важный момент: в заказ-наряде количество должно вводиться в литрах, а не в бочках.
## Как настроить
Для каждой позиции ГСМ:
1. В карточке номенклатуры установить базовую единицу измерения:
—литр.2. Создать упаковки:
—Бочка 208 л, коэффициент пересчёта:208;
—Бочка 201 л, коэффициент:201;
—Канистра 40 л, коэффициент:40;
— и так далее.То есть упаковка должна означать не отдельный товар, а способ измерения или реализации этого же товара.
Например:
| Упаковка | Коэффициент |
|—|—:|
| Литр | 1 |
| Бочка 208 л | 208 |
| Бочка 201 л | 201 |
| Канистра 40 л | 40 |## Как задавать цену
Если бочка 208 литров стоит, например, 41 600 рублей, то цена одного литра должна рассчитываться так:
1С (Код)141 600 / 208 = 200 рублей за литрВ заказ-наряде:
1С (Код)123Количество: 30 лЦена: 200 руб.Сумма: 6 000 руб.То есть стоимость должна быть задана или рассчитана за литр, даже если исходный прайс поставщика или ваша внутренняя цена определены за бочку.
## Что указывать в заказ-наряде
В строке заказ-наряда должно быть:
1С (Код)12345Номенклатура: Масло моторное ...Единица: лКоличество: 30Цена: цена за 1 литрСумма: 30 × цена за литрНельзя указывать:
1С (Код)12Единица: Бочка 208 лКоличество: 30В таком случае программа совершенно правильно воспримет это как 30 бочек и посчитает стоимость 6240 литров.
## Для чего тогда нужны упаковки
Упаковки нужны для пересчёта между количеством литров и количеством тары.
Например:
— 1 бочка 208 л = 208 л;
— 30 л = 30 / 208 = 0,14423 бочки;
— 416 л = 2 бочки;
— 20 л из канистры 40 л = половина канистры.При этом в вашем случае в заказ-наряде используется именно литровое количество. Упаковка «Бочка 208 л» нужна для:
— хранения информации о вариантах тары;
— формирования закупочных или отпускных цен;
— пересчёта количества при необходимости;
— отображения, сколько тары соответствует расходу;
— использования в прайсах, если это поддерживается конкретной версией «Альфа-Авто».## Рекомендуемая модель для вашей ситуации
У вас фактически есть два разных понятия:
1. Единица расхода при ремонте: литр.
2. Тара, в которой ГСМ закупается или реализуется: бочка, канистра и т. п.Их не следует смешивать.
Правильная модель:
1С (Код)12345678Номенклатура: Масло XYZБазовая единица: литрУпаковки:Бочка 208 лБочка 201 лКанистра 40 лЦена в заказ-наряде: за 1 литрКоличество в заказ-наряде: в литрах## Если цена должна зависеть от конкретной тары
Если цена литра зависит от выбранной тары, например:
— из бочки 208 л: 200 руб./л;
— из бочки 201 л: 205 руб./л;
— из канистры 40 л: 230 руб./л,то в «Альфа-Авто» нужно использовать либо:
— отдельные виды цен для разных упаковок;
— цены номенклатуры с указанием упаковки;
— либо отдельные позиции номенклатуры, если текущая версия программы не умеет хранить разные цены по упаковкам.В последнем случае можно завести, например:
1С (Код)123Масло XYZ, бочка 208 лМасло XYZ, бочка 201 лМасло XYZ, канистра 40 лНо это менее удобно для аналитики, поскольку одна и та же марка масла будет разбита на несколько элементов номенклатуры.
Предпочтительный вариант для вашей задачи:
1С (Код)1234Одна номенклатураЕдиница расхода: литрУпаковки с коэффициентамиЦена в заказ-наряде: за литр## Что не нужно использовать
Для описанной задачи не требуются:
— комплектация номенклатуры;
— разукомплектация;
— наборы;
— производственные операции;
— складские документы;
— серийный учёт;
— маркировка «Честный знак»;
— списание ГСМ со склада.Если заказ-наряд используется только для расчёта с подрядчиком и аналитики ремонта, то упаковка должна использоваться только как механизм пересчёта единиц и формирования цены, а не как складская операция.
## Важное ограничение
В некоторых версиях «Альфа-Авто» механизм упаковок пересчитывает количество, но не всегда автоматически пересчитывает цену именно так, как требуется в вашем сценарии. Поэтому сначала нужно проверить на тестовой базе:
1. Создать товар с базовой единицей
литр.
2. Добавить упаковкуБочка 208 л.
3. Установить цену бочки.
4. Ввести в заказ-наряд количество30.
5. Проверить, получается ли сумма как:1С (Код)1Цена бочки / 208 × 30Если программа при выборе упаковки сохраняет цену бочки и умножает её на 30, то в заказ-наряде упаковку выбирать не нужно. В этом случае цена должна храниться как цена за литр, а бочка использоваться только как справочная упаковка или при закупочных операциях.
Таким образом, основной инструмент: «Упаковки номенклатуры» с коэффициентами пересчёта, а для заказ-наряда единицей количества следует выбрать литр, с ценой за один литр.
23 сентября 2026 в 12:34 в ответ на: Как перенести присоединенные файлы из регистра двоичных данных в регистр хранили #38709Для переноса присоединенных файлов между информационными базами через КД нужно переносить не ссылку на
ХранилищеЗначения, а сами двоичные данные файла.Обычная схема такая:
1С (Код)123456789Источник:РегистрСведений.ДвоичныеДанныеФайловФайлДвоичныеДанныеФайлаПриемник:РегистрСведений.ХранилищеФайловФайлХранилищеФайлаНазвания ресурсов могут отличаться в конкретной конфигурации. Например, в приемнике ресурс может называться
ДвоичныеДанныеФайла,ХранилищеФайлаилиДанныеФайла.## Важный момент
Значение типа
ХранилищеЗначениянельзя корректно переносить как обычное значение регистра. В источнике нужно:1. получить значение из
ХранилищеЗначения;
2. преобразовать его вДвоичныеДанные;
3. передать двоичные данные через КД;
4. в приемнике снова создатьХранилищеЗначения.## Вариант через обработчик объекта источника
В правиле конвертации объекта для регистра
ДвоичныеДанныеФайловв обработчике перед выгрузкой можно получить двоичные данные следующим образом:1С (Код)12345678910Если Источник.ДвоичныеДанныеФайла <> Неопределено ТогдаДвоичныеДанныеФайла =Источник.ДвоичныеДанныеФайла.Получить();Если ДвоичныеДанныеФайла <> Неопределено ТогдаИсточник.ДвоичныеДанныеФайла = ДвоичныеДанныеФайла;КонецЕсли;КонецЕсли;Но этот вариант сработает только в том случае, если механизм КД допускает изменение значения источника перед формированием сообщения. В некоторых версиях КД изменять объект
Источникв этом обработчике нельзя или нежелательно. Тогда лучше использовать отдельный реквизит передачи.## Рекомендуемый вариант через значение ПКС
Создайте в правилах конвертации реквизита
ДвоичныеДанныеФайлаобработчик значения.В источнике:
1С (Код)1234567Значение = Неопределено;Если Источник.ДвоичныеДанныеФайла <> Неопределено ТогдаЗначение = Источник.ДвоичныеДанныеФайла.Получить();КонецЕсли;В приемнике для реквизита типа
ХранилищеЗначения:1С (Код)123Если Значение <> Неопределено ТогдаЗначение = Новый ХранилищеЗначения(Значение);КонецЕсли;Если в вашей версии КД в обработчике приемника доступна переменная
Источник, а результат записывается вЗначение, код будет выглядеть так:1С (Код)12345Если Источник <> Неопределено ТогдаЗначение = Новый ХранилищеЗначения(Источник);ИначеЗначение = Неопределено;КонецЕсли;Здесь
Источникдолжен содержать именноДвоичныеДанные, а не объектХранилищеЗначения.## Более надежный вариант через временный файл
Для больших файлов лучше не передавать
ХранилищеЗначениянапрямую. Получите двоичные данные, запишите их во временный файл, а затем загрузите в приемнике.### На стороне источника
1С (Код)1234567891011121314151617181920212223242526272829ДвоичныеДанныеФайла = Неопределено;Если Источник.ДвоичныеДанныеФайла <> Неопределено ТогдаДвоичныеДанныеФайла =Источник.ДвоичныеДанныеФайла.Получить();КонецЕсли;Если ДвоичныеДанныеФайла <> Неопределено ТогдаИмяВременногоФайла = ПолучитьИмяВременногоФайла();ПопыткаДвоичныеДанныеФайла.Записать(ИмяВременногоФайла);Значение = Новый ДвоичныеДанные(ИмяВременногоФайла);НаконецЕсли ЗначениеЗаполнено(ИмяВременногоФайла) ТогдаУдалитьФайлы(ИмяВременногоФайла);КонецЕсли;КонецПопытки;ИначеЗначение = Неопределено;КонецЕсли;Однако для обычной передачи через КД запись во временный файл чаще всего не требуется. Двоичные данные можно передавать напрямую.
## Настройка правил конвертации
### 1. Сначала перенесите владельцев файлов
В регистре обычно хранится ссылка на присоединенный файл или элемент справочника
ПрисоединенныеФайлы.Поэтому сначала должны быть перенесены:
— документы;
— справочники;
— элементы справочника присоединенных файлов;
— владельцы присоединенных файлов.И только потом регистр с двоичными данными.
Иначе запись регистра в приемнике не сможет определить значение измерения
Файл.### 2. Создайте правило для регистра-источника
В КД настройте:
1С (Код)1Регистр сведений ДвоичныеДанныеФайловВ качестве объекта-приемника укажите:
1С (Код)1Регистр сведений ХранилищеФайловЕсли регистр приемника имеет другое имя, выбирайте фактический регистр из конфигурации.
### 3. Сопоставьте измерения
Например:
1С (Код)1Источник.Файл -> Приемник.ФайлЕсли в приемнике измерение называется иначе:
1С (Код)1Источник.Файл -> Приемник.ПрисоединенныйФайлДля ссылок нужно настроить правила конвертации объектов, а не передавать ссылку напрямую. Ссылка из одной базы не является ссылкой на объект в другой базе.
### 4. Сопоставьте ресурс с двоичными данными
В источнике:
1С (Код)1ДвоичныеДанныеФайлаВ приемнике:
1С (Код)1ХранилищеФайлаДля источника установите обработчик:
1С (Код)12345Значение = Неопределено;Если Источник.ДвоичныеДанныеФайла <> Неопределено ТогдаЗначение = Источник.ДвоичныеДанныеФайла.Получить();КонецЕсли;Для приемника:
1С (Код)12345Если Значение <> Неопределено ТогдаЗначение = Новый ХранилищеЗначения(Значение);ИначеЗначение = Неопределено;КонецЕсли;## Если регистр приемника записывается вручную
Иногда КД не позволяет удобно передать большой ресурс регистра. Тогда в обработчике загрузки можно создать запись регистра вручную.
Пример:
1С (Код)123456789101112Если ДвоичныеДанныеФайла = Неопределено ТогдаВозврат;КонецЕсли;МенеджерЗаписи =РегистрыСведений.ХранилищеФайлов.СоздатьМенеджерЗаписи();МенеджерЗаписи.Файл = СсылкаНаФайл;МенеджерЗаписи.ХранилищеФайла =Новый ХранилищеЗначения(ДвоичныеДанныеФайла);МенеджерЗаписи.Записать();Названия
Файл,ХранилищеФайла,СсылкаНаФайлнужно заменить на фактические имена измерения и ресурса.Если регистр периодический, дополнительно заполните период:
1С (Код)1МенеджерЗаписи.Период = ТекущаяДата();Если у регистра есть регистратор, нужно заполнить и его:
1С (Код)1МенеджерЗаписи.Регистратор = ДокументИсточник;## Если исходный ресурс уже содержит не
ХранилищеЗначенияВ некоторых конфигурациях ресурс регистра имеет тип:
1С (Код)1ХранилищеЗначенияТогда используется:
1С (Код)12ДвоичныеДанныеФайла =Источник.ДвоичныеДанныеФайла.Получить();Если ресурс уже имеет тип:
1С (Код)1ДвоичныеДанныето
.Получить()вызывать не нужно:1С (Код)12ДвоичныеДанныеФайла =Источник.ДвоичныеДанныеФайла;Универсальная проверка:
1С (Код)123456789101112131415161718ДвоичныеДанныеФайла = Неопределено;Если Источник.ДвоичныеДанныеФайла <> Неопределено ТогдаЕсли ТипЗнч(Источник.ДвоичныеДанныеФайла) =Тип("ХранилищеЗначения") ТогдаДвоичныеДанныеФайла =Источник.ДвоичныеДанныеФайла.Получить();ИначеДвоичныеДанныеФайла =Источник.ДвоичныеДанныеФайла;КонецЕсли;КонецЕсли;## Проверка типа ресурса
Для диагностики в обработчик можно временно добавить:
1С (Код)1234567891011Если Источник.ДвоичныеДанныеФайла = Неопределено ТогдаСообщить("Двоичные данные отсутствуют");ИначеСообщить("Тип ресурса: "+ Строка(ТипЗнч(Источник.ДвоичныеДанныеФайла)));КонецЕсли;Ожидаемый результат обычно такой:
1С (Код)1Тип ресурса: ХранилищеЗначенияили:
1С (Код)1Тип ресурса: ДвоичныеДанные## Проверка результата в приемнике
После загрузки проверьте регистр запросом:
|ВЫБРАТЬ
| ХранилищеФайлов.Файл,
| ХранилищеФайлов.ХранилищеФайла
|ИЗ
| РегистрСведений.ХранилищеФайлов КАК ХранилищеФайловДля проверки размера файла ресурс нужно получить программно:
1С (Код)123456789101112131415161718Выборка = РегистрыСведений.ХранилищеФайлов.Выбрать();Пока Выборка.Следующий() ЦиклЕсли Выборка.ХранилищеФайла <> Неопределено ТогдаДвоичныеДанныеФайла =Выборка.ХранилищеФайла.Получить();Сообщить("Файл: "+ Строка(Выборка.Файл)+ ", размер: "+ Строка(ДвоичныеДанныеФайла.Размер()));КонецЕсли;КонецЦикла;## Что чаще всего является причиной ошибки
1. В источник передается
ХранилищеЗначения, а не его содержимое.
2. В приемник записываетсяДвоичныеДанные, хотя ресурс имеет типХранилищеЗначения.
3. Не создано соответствие для элементаПрисоединенныеФайлы.
4. В регистр приемника не попадает измерениеФайл.
5. Регистр загружается раньше, чем справочник присоединенных файлов.
6. Используется неправильное имя ресурса.
7. Файл нулевого размера или значение ресурса равноНеопределено.
8. У пользователя нет права на чтение исходного регистра.
9. Механизм КД ограничивает размер передаваемого сообщения.
10. В обработчике используетсяИсточник.Складили другое поле объекта, а фактически нужное значение находится в регистре.Практически для КД настройка должна выглядеть так:
1С (Код)12345РегистрСведений.ДвоичныеДанныеФайлов.Файл-> РегистрСведений.ХранилищеФайлов.ФайлРегистрСведений.ДвоичныеДанныеФайлов.ДвоичныеДанныеФайла-> РегистрСведений.ХранилищеФайлов.ХранилищеФайлаОбработчик источника:
1С (Код)12345Значение = Неопределено;Если Источник.ДвоичныеДанныеФайла <> Неопределено ТогдаЗначение = Источник.ДвоичныеДанныеФайла.Получить();КонецЕсли;Обработчик приемника:
1С (Код)123Если Значение <> Неопределено ТогдаЗначение = Новый ХранилищеЗначения(Значение);КонецЕсли;23 сентября 2026 в 12:12 в ответ на: Почему не выполняется условие `Если ЗначениеЗаполнено(Источник.Склад)` в конверт #38707В конвертации проблема чаще всего не в
Если, а в том, чтоИсточник.Складможет быть:—
Неопределено;
— пустой ссылкой;
— структурой или объектом XDTO, у которого нет обычного доступа через точку;
— не загружен в источник;
— значением другого типа;
— реквизитом с другим именем.Ваш код:
1С (Код)123Если ЗначениеЗаполнено(Источник.Склад) ТогдаЗначение = Источник.Склад;КонецЕсли;можно использовать только если
Источник.Складдействительно существует и имеет обычный тип значения.## Надежный вариант для объекта или структуры
Сначала получите значение в отдельную переменную:
1С (Код)123456789101112131415СкладИсточник = Неопределено;Если ТипЗнч(Источник) = Тип("Структура") ТогдаИсточник.Свойство("Склад", СкладИсточник);ИначеСкладИсточник = Источник.Склад;КонецЕсли;Если ЗначениеЗаполнено(СкладИсточник) ТогдаЗначение = СкладИсточник;КонецЕсли;Но для правил конвертации КД2 обычно лучше проверять наличие свойства через
Свойство():1С (Код)123456789СкладИсточник = Неопределено;Если Источник.Свойство("Склад", СкладИсточник) ТогдаЕсли ЗначениеЗаполнено(СкладИсточник) ТогдаЗначение = СкладИсточник;КонецЕсли;КонецЕсли;Такой вариант не вызовет ошибку, если в источнике вообще нет свойства
Склад.## Если
Источникявляется объектом 1СДля объекта документа или элемента справочника используйте:
1С (Код)123Если ЗначениеЗаполнено(Источник.Склад) ТогдаЗначение = Источник.Склад;КонецЕсли;Но нужно проверить, что поле действительно называется именно
Склад.Например, в источнике оно может называться:
1С (Код)12345СкладСкладОтправительСкладПолучательМестоХраненияСкладОрганизацииВ правилах конвертации имя должно совпадать с именем реквизита объекта-источника, а не с его представлением на форме.
## Если
Складимеет составной типЕсли реквизит
Складможет содержать несколько типов, например:—
СправочникСсылка.Склады;
—СправочникСсылка.СкладыНоменклатуры;
—СправочникСсылка.СкладыОрганизаций;
—СправочникСсылка.СтруктурныеЕдиницы;то нужно проверить тип значения:
1С (Код)123456789101112СкладИсточник = Источник.Склад;Если ЗначениеЗаполнено(СкладИсточник) ТогдаЕсли ТипЗнч(СкладИсточник) =Тип("СправочникСсылка.Склады") ТогдаЗначение = СкладИсточник;КонецЕсли;КонецЕсли;Если в вашей конфигурации склад хранится не в справочнике
Склады, подставьте фактический тип справочника.Для диагностики временно добавьте:
1С (Код)1234567891011Сообщить("Тип Источник.Склад: "+ Строка(ТипЗнч(Источник.Склад)));Сообщить("Значение Источник.Склад: "+ Строка(Источник.Склад));Сообщить("ЗначениеЗаполнено: "+ Строка(ЗначениеЗаполнено(Источник.Склад)));В некоторых обработчиках КД сообщения не отображаются в пользовательском окне. Тогда используйте запись в журнал регистрации либо стандартную функцию диагностики конкретной версии конвертации.
## Для пустой ссылки лучше использовать явную проверку
В старых версиях платформы и отдельных механизмах конвертации
ЗначениеЗаполнено()может вести себя не так, как ожидается для ссылочных значений. Можно проверить явно:1С (Код)12345678СкладИсточник = Источник.Склад;Если СкладИсточник <> НеопределеноИ ЗначениеЗаполнено(СкладИсточник) ТогдаЗначение = СкладИсточник;КонецЕсли;Если нужно убедиться, что это именно ссылка на нужный справочник:
1С (Код)12345678910СкладИсточник = Источник.Склад;Если СкладИсточник <> НеопределеноИ ТипЗнч(СкладИсточник) =Тип("СправочникСсылка.Склады")И ЗначениеЗаполнено(СкладИсточник) ТогдаЗначение = СкладИсточник;КонецЕсли;## Если используется 1С 7.7 или старый обработчик КД
В старом обработчике может отсутствовать современная функция
ЗначениеЗаполнено(), либо она работает иначе. Тогда проверяйте значение черезПустоеЗначение():1С (Код)123Если ПустоеЗначение(Источник.Склад) = 0 ТогдаЗначение = Источник.Склад;КонецЕсли;Для 1С 7.7 также может потребоваться проверка существования реквизита:
1С (Код)1234567Если Источник.ПолучитьАтрибут("Склад") = 1 ТогдаЕсли ПустоеЗначение(Источник.Склад) = 0 ТогдаЗначение = Источник.Склад;КонецЕсли;КонецЕсли;Но этот вариант относится именно к старому встроенному языку 1С 7.7. Для 1С 8.x его применять не нужно.
## Частая ошибка в обработчике ПКС
В правилах конвертации
Значениеможет быть не обычной переменной результата, а уже заполненным значением, которое потом используется механизмом ПКС. Если склад не заполнен, ваш код ничего не делает, и вЗначениеостается прежнее значение.Если при пустом складе нужно явно очищать результат, пишите так:
1С (Код)123456789Значение = Неопределено;Если Источник.Свойство("Склад", СкладИсточник) ТогдаЕсли ЗначениеЗаполнено(СкладИсточник) ТогдаЗначение = СкладИсточник;КонецЕсли;КонецЕсли;Если ожидается именно пустая ссылка на справочник, а не
Неопределено, используйте пустую ссылку соответствующего типа:1С (Код)12345Значение = Справочники.Склады.ПустаяСсылка();Если ЗначениеЗаполнено(Источник.Склад) ТогдаЗначение = Источник.Склад;КонецЕсли;## Если склад нужно искать в приемнике
Нельзя всегда передавать ссылку склада из базы-источника напрямую. Если базы разные, ссылка из источника не существует в приемнике. В этом случае нужно передавать код или наименование и выполнять поиск в приемнике.
Например, в обработчике перед выгрузкой:
1С (Код)1234567891011Если ЗначениеЗаполнено(Источник.Склад) ТогдаЗначение = Новый Структура;Значение.Вставить("Код",Источник.Склад.Код);Значение.Вставить("Наименование",Источник.Склад.Наименование);КонецЕсли;А в обработчике поиска объекта приемника искать склад по коду или наименованию.
Пример через запрос в 1С:
|ВЫБРАТЬ ПЕРВЫЕ 1
| Склады.Ссылка
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| Склады.Код = &КодСкладаНо в правилах конвертации обычно правильнее настроить ПКС по полям:
1С (Код)12Склад.КодСклад.Наименованиеа не передавать ссылку целиком.
## Практический вариант для КД2
Попробуйте заменить код на такой:
1С (Код)123456789101112СкладИсточник = Неопределено;Если Источник.Свойство("Склад", СкладИсточник) ТогдаЕсли СкладИсточник <> НеопределеноИ ЗначениеЗаполнено(СкладИсточник) ТогдаЗначение = СкладИсточник;КонецЕсли;КонецЕсли;Если это не сработает, добавьте диагностику:
1С (Код)1234567891011121314151617181920212223242526СкладИсточник = Неопределено;Если Источник.Свойство("Склад", СкладИсточник) ТогдаСообщить("Склад найден. Тип: "+ Строка(ТипЗнч(СкладИсточник)));Сообщить("Склад: "+ Строка(СкладИсточник));Сообщить("Заполнен: "+ Строка(ЗначениеЗаполнено(СкладИсточник)));Если ЗначениеЗаполнено(СкладИсточник) ТогдаЗначение = СкладИсточник;КонецЕсли;ИначеСообщить("У Источника отсутствует свойство Склад");КонецЕсли;По результату сообщения будет понятно:
—
Складотсутствует в источнике;
— склад есть, но он пустой;
— склад имеет неправильный тип;
— значение заполнено, но его нельзя напрямую передать в приемник;
— проблема находится уже в поиске соответствия объекта приемника.23 сентября 2026 в 10:38 в ответ на: Как исправить ошибку «Отсутствуют метаданные для расширения конфигурации»? #38705Сообщение относится уже не к внешней обработке
.epf, а к расширению конфигурации:1С (Код)12БонусныеБаллы (1.6)Критичная: Отсутствуют метаданные для расширения конфигурацииЭто означает, что расширение
БонусныеБаллызарегистрировано в информационной базе, но платформа не может найти или прочитать его метаданные. Обычно причина одна из следующих:— расширение было загружено некорректно;
— файл расширения поврежден;
— расширение создано для другой версии конфигурации;
— после обновления основной конфигурации расширение стало несовместимым;
— расширение было удалено физически, но осталось зарегистрированным в базе;
— расширение переносили через.dt,.cf,.cfuили сравнение/объединение;
— расширение разрабатывалось для другой редакции Розницы;
— повреждены служебные данные расширения.## Что сделать сначала
Перед исправлением обязательно создайте резервную копию базы.
Для клиент-серверной базы:
— резервная копия средствами СУБД;
— дополнительно желательно выгрузить.dt, если размер базы позволяет.Для файловой базы:
Администрирование → Выгрузить информационную базу.
## Проверка расширения
Откройте базу в режиме Конфигуратор.
В дереве конфигурации найдите:
Расширения конфигурации
или:
Конфигурация → Расширения конфигурации.
Найдите расширение:
1С (Код)1БонусныеБаллыПроверьте:
1. Отображается ли расширение в списке.
2. Открывается ли оно двойным щелчком.
3. Есть ли внутри объекты метаданных.
4. Указана ли версия расширения1.6.
5. Не помечено ли расширение как поврежденное.
6. Не установлен ли режим совместимости, не соответствующий основной конфигурации.
7. Не отличается ли версия расширения от версии основной конфигурации Розницы.Если расширение не открывается, дерево объектов пустое или появляется сообщение об отсутствии метаданных, текущее расширение фактически непригодно для работы.
## Основной способ исправления
### 1. Отключить расширение
Если база запускается:
1. Откройте раздел администрирования.
2. Перейдите в список расширений конфигурации.
3. ОткройтеБонусныеБаллы.
4. Снимите флаг активности или отключите расширение.
5. Перезапустите базу.
6. Проверьте, исчезла ли ошибка.Если после отключения ошибка исчезла, причина точно находится в расширении, а не в основной конфигурации.
### 2. Удалить поврежденное расширение
Если расширение не нужно или имеется исправленный файл расширения:
1. Сделайте резервную копию.
2. Отключите расширение.
3. УдалитеБонусныеБаллы.
4. Перезапустите 1С.
5. Проверьте запуск и работу базы.Удалять расширение без резервной копии нельзя. Оно могло содержать:
— дополнительные реквизиты;
— дополнительные табличные части;
— документы;
— регистры;
— константы;
— подписки на события;
— общий программный код;
— формы и команды;
— данные в регистрах, созданных расширением.Само удаление метаданных расширения не всегда удаляет данные, но доступ к ним через программу может исчезнуть.
### 3. Установить исправленную версию
Если функциональность нужна, получите у разработчика новый файл расширения, совместимый одновременно с:
— текущей платформой 1С;
— текущим релизом1С:Розницы;
— текущей редакцией конфигурации;
— текущей версией БСП;
— режимом совместимости базы.Не следует просто загружать расширение
БонусныеБаллы (1.6)повторно поверх поврежденного. Надежнее:1. сохранить настройки расширения;
2. отключить старое расширение;
3. удалить старое расширение;
4. перезапустить базу;
5. установить новую версию;
6. проверить функциональность на копии базы;
7. только после этого повторить на рабочей базе.## Если ошибка появилась после обновления Розницы
Это наиболее вероятный сценарий. После обновления типовой конфигурации могли измениться:
— имена объектов;
— состав реквизитов;
— формы;
— команды;
— процедуры общих модулей;
— точки расширения;
— аннотации&После,&Перед,&ИзменениеИКонтроль;
— состав подписок на события;
— требования к режиму совместимости.Расширение версии
1.6могло быть рассчитано на старый релиз Розницы. В этом случае нужно получить обновление расширения именно под новый релиз основной конфигурации.Проверить релиз можно через:
Справка → О программе.
Запишите:
— версию платформы;
— релиз конфигурации;
— редакцию Розницы.Эти данные нужны разработчику расширения.
## Если расширение не видно в списке, но ошибка остается
Такое бывает, если основная конфигурация или служебные данные базы содержат ссылку на расширение, а само описание расширения повреждено.
Попробуйте следующий порядок:
1. Запустить базу в режиме конфигуратора.
2. Выполнить проверку логической целостности:
Администрирование → Тестирование и исправление.
3. На копии базы включить:
— проверку логической целостности;
— пересчет итогов;
— реструктуризацию таблиц при необходимости.
4. Выполнить проверку.
5. Перезапустить базу.Не включайте без необходимости удаление объектов, исправление ссылок и очистку незаполненных ссылок на рабочей базе. Сначала проверяйте результат на копии.
Для клиент-серверной базы также имеет смысл выполнить проверку средствами СУБД, особенно если до появления ошибки были:
— аварийное завершение сервера;
— восстановление базы из неполной копии;
— ошибки диска;
— принудительное завершение процессаrphost;
— сбои при обновлении конфигурации;
— ошибки записи в PostgreSQL или MS SQL Server.## Если база не запускается в режиме «Предприятие»
Удаление или отключение расширения можно выполнить из конфигуратора.
Порядок:
1. Запустите конфигуратор.
2. Откройте Расширения конфигурации.
3. НайдитеБонусныеБаллы.
4. Сначала снимите активность.
5. Сохраните конфигурацию.
6. Запустите базу в режиме «Предприятие».
7. Если база запускается, установите исправленную версию расширения.Если даже конфигуратор не позволяет открыть расширение, не пытайтесь исправлять файл базы вручную через SQL. Внутренние таблицы 1С не предназначены для такого редактирования, и можно окончательно повредить информационную базу.
## Что не поможет
Не поможет:
— очистка кэша пользователя;
— переустановка клиента 1С;
— повторный запуск обработки.epf;
— изменение настроек безопасного режима внешней обработки;
— удаление временных файлов Windows;
— смена пользователя 1С.Кэш можно очистить только если ошибка связана с интерфейсом или старой версией формы. Сообщение:
1С (Код)1Отсутствуют метаданные для расширения конфигурацииуказывает на проблему самого расширения или его регистрации в информационной базе.
## Рекомендуемый порядок именно для вашей ситуации
1. Сделать копию базы.
2. В конфигураторе открыть список расширений.
3. ПроверитьБонусныеБаллы.
4. Отключить его.
5. Запустить базу.
6. Если ошибка исчезла, удалить старую версию расширения на копии.
7. Получить у разработчика версию расширения под текущий релиз Розницы.
8. Установить новую версию на копию.
9. Проверить загрузку поступлений и проведение документов.
10. Только после проверки заменить расширение в рабочей базе.Если расширение было частью поставки или внедрения, самостоятельно удалять его на рабочей базе рискованно. Сначала нужно выяснить, какие объекты и данные оно добавляло. Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/242628/22 сентября 2026 в 14:26 в ответ на: Почему таблица значений заполняется только после второго выбора заявки? #38703Причина в порядке выполнения обработчиков. В момент вызова серверной процедуры реквизит формы
Запись.ЗаявкаНаПроизводствоеще содержит старое значение. Поэтому при первом выборе запрос выполняется со старой ссылкой, обычно с пустой, и таблица остается пустой.После первого выбора реквизит уже записан. При втором выборе серверная процедура видит значение, выбранное в первый раз, поэтому таблица заполняется данными от предыдущей заявки.
Нужно не читать ссылку из
Запись.ЗаявкаНаПроизводствовнутри серверной процедуры, а передавать в нееВыбранноеЗначениеиз клиентского обработчика.### Исправленный вариант
1С (Код)123456789101112131415161718&НаКлиентеПроцедура ВДС_ЗаявкаНаПроизводствоОбработкаВыбораПосле(Элемент,ВыбранноеЗначение,ДополнительныеДанные,ВыборДобавлением,СтандартнаяОбработка)Если ЗначениеЗаполнено(ВыбранноеЗначение) ТогдаЗапись.ЗаявкаНаПроизводство = ВыбранноеЗначение;ИначеЗапись.ЗаявкаНаПроизводство = Неопределено;КонецЕсли;ВДС_ЗаявкаНаПроизводствоОбработкаВыбораПослеНаСервере(ВыбранноеЗначение);КонецПроцедурыСерверную процедуру нужно изменить, чтобы она принимала ссылку параметром:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455&НаСервереПроцедура ВДС_ЗаявкаНаПроизводствоОбработкаВыбораПослеНаСервере(ЗаявкаНаПроизводство)ПустаяТЗ = Новый ТаблицаЗначений;ПустаяТЗ.Колонки.Добавить("Номенклатура");ПустаяТЗ.Колонки.Добавить("Количество");ПустаяТЗ.Колонки.Добавить("ЕдиницаИзмерения");ПустаяТЗ.Колонки.Добавить("Включать");Если Не ЗначениеЗаполнено(ЗаявкаНаПроизводство) ТогдаЗначениеВРеквизитФормы(ПустаяТЗ,"НоменклатураЗаказовПереработчику");Возврат;КонецЕсли;Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Обеспечение.Номенклатура КАК Номенклатура,| Обеспечение.Упаковка КАК Упаковка,| Обеспечение.Количество КАК Количество|ИЗ| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК Обеспечение|ГДЕ| Обеспечение.Ссылка = &Ссылка| И Обеспечение.ВариантОбеспечения = &ВариантОбеспечения";Запрос.УстановитьПараметр("Ссылка",ЗаявкаНаПроизводство);Запрос.УстановитьПараметр("ВариантОбеспечения",Перечисления.ВариантыОбеспечения.КОбеспечению);Результат = Запрос.Выполнить().Выгрузить();Для Каждого СтрРезультата Из Результат ЦиклНоваяСтрока = ПустаяТЗ.Добавить();НоваяСтрока.Номенклатура = СтрРезультата.Номенклатура;НоваяСтрока.Количество = СтрРезультата.Количество;НоваяСтрока.ЕдиницаИзмерения = СтрРезультата.Упаковка;НоваяСтрока.Включать = Ложь;КонецЦикла;ЗначениеВРеквизитФормы(ПустаяТЗ,"НоменклатураЗаказовПереработчику");КонецПроцедурыКлючевые изменения:
1. В клиентской процедуре используется
ВыбранноеЗначение.
2. Выбранное значение сразу присваивается реквизиту:1С (Код)1Запись.ЗаявкаНаПроизводство = ВыбранноеЗначение;3. Эта же ссылка явно передается на сервер:
1С (Код)12ВДС_ЗаявкаНаПроизводствоОбработкаВыбораПослеНаСервере(ВыбранноеЗначение);4. На сервере запрос использует параметр процедуры, а не
Запись.ЗаявкаНаПроизводство:1С (Код)123Запрос.УстановитьПараметр("Ссылка",ЗаявкаНаПроизводство);Дополнительно обратите внимание на этот момент:
1С (Код)1НоваяСтрока.ЕдиницаИзмерения = Стр.Упаковка;В запросе поле называется
Упаковка, а в таблице формы колонка называетсяЕдиницаИзмерения. Это допустимо, если вы сознательно хотите записать упаковку в единицу измерения. Но если в форме должна отображаться именно единица измерения номенклатуры, нужно получать ее отдельным полем запроса, например черезНоменклатура.ЕдиницаИзмерения, если такое поле есть в вашей конфигурации.Можно также оставить вашу текущую серверную процедуру и просто передавать туда выбранную ссылку:
1С (Код)1234567891011121314&НаКлиентеПроцедура ВДС_ЗаявкаНаПроизводствоОбработкаВыбораПосле(Элемент,ВыбранноеЗначение,ДополнительныеДанные,ВыборДобавлением,СтандартнаяОбработка)Запись.ЗаявкаНаПроизводство = ВыбранноеЗначение;ВДС_ЗаявкаНаПроизводствоОбработкаВыбораПослеНаСервере(ВыбранноеЗначение);КонецПроцедурыИ сервер:
1С (Код)123456789101112131415&НаСервереПроцедура ВДС_ЗаявкаНаПроизводствоОбработкаВыбораПослеНаСервере(ЗаявкаНаПроизводство)Если Не ЗначениеЗаполнено(ЗаявкаНаПроизводство) Тогда// очистка таблицыВозврат;КонецЕсли;// Запрос использовать с параметром ЗаявкаНаПроизводствоЗапрос.УстановитьПараметр("Ссылка",ЗаявкаНаПроизводство);КонецПроцедурыГлавная ошибка была именно здесь:
1С (Код)1Запрос.УстановитьПараметр("Ссылка", Запись.ЗаявкаНаПроизводство);В обработчике выбора это значение может быть еще не обновлено. Поэтому на первом выборе используется предыдущее значение, а на втором уже значение, установленное при первом выборе.
22 сентября 2026 в 14:01 в ответ на: Как проверять содержание строкового поля неограниченной длины в запросе 1С? #38701Для строкового поля «Строка неограниченной длины» в запросе 1С сначала нужно ограничить длину через
ВЫРАЗИТЬ, указав типСТРОКА(N).### Проверка на точное соответствие
Например, найти документы с определенным комментарием:
1С (Код)12345678910Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Документы.Ссылка|ИЗ| Документ.РеализацияТоваровУслуг КАК Документы|ГДЕ| ВЫРАЗИТЬ(Документы.Комментарий КАК СТРОКА(1000)) = &Комментарий";Запрос.УстановитьПараметр("Комментарий", "Текст комментария");В данном примере поле
Комментарийприводится к строке длиной 1000 символов, после чего сравнивается с параметром.### Проверка вхождения текста
Для поиска фрагмента строки используйте
ПОДОБНО:1С (Код)1234567891011Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Документы.Ссылка|ИЗ| Документ.РеализацияТоваровУслуг КАК Документы|ГДЕ| ВЫРАЗИТЬ(Документы.Комментарий КАК СТРОКА(1000))| ПОДОБНО &Шаблон";Запрос.УстановитьПараметр("Шаблон", "%ошибка%");Символ
%означает любое количество символов. Например:1С (Код)1Запрос.УстановитьПараметр("Шаблон", "%оплата%");Так будут найдены строки, содержащие слово
оплата.### Проверка начала строки
1С (Код)12345678910Запрос.Текст ="ВЫБРАТЬ| Документы.Ссылка|ИЗ| Документ.РеализацияТоваровУслуг КАК Документы|ГДЕ| ВЫРАЗИТЬ(Документы.Комментарий КАК СТРОКА(1000))| ПОДОБНО &Шаблон";Запрос.УстановитьПараметр("Шаблон", "Ошибка%");### Проверка окончания строки
1С (Код)1Запрос.УстановитьПараметр("Шаблон", "%требует уточнения");### Проверка, что поле заполнено
1С (Код)1234567Запрос.Текст ="ВЫБРАТЬ| Документы.Ссылка|ИЗ| Документ.РеализацияТоваровУслуг КАК Документы|ГДЕ| ВЫРАЗИТЬ(Документы.Комментарий КАК СТРОКА(1000)) <> """;### Проверка, что поле пустое
1С (Код)1234567Запрос.Текст ="ВЫБРАТЬ| Документы.Ссылка|ИЗ| Документ.РеализацияТоваровУслуг КАК Документы|ГДЕ| ВЫРАЗИТЬ(Документы.Комментарий КАК СТРОКА(1000)) = """;### Важное ограничение
Размер
СТРОКА(N)должен быть достаточным для проверяемого значения:1С (Код)1ВЫРАЗИТЬ(Объект.Текст КАК СТРОКА(1000))Если фактическое содержимое длиннее 1000 символов, при приведении оно может быть обрезано. Поэтому:
— для коротких комментариев можно использовать
СТРОКА(100);
— для больших текстов лучше использоватьСТРОКА(1000),СТРОКА(4000)или другое подходящее значение;
— при точном сравнении длинного текста размер должен быть не меньше возможной длины значения.Основной шаблон такой:
1С (Код)1|ВЫРАЗИТЬ(ИмяПоля КАК СТРОКА(1000)) = &Параметрили:
1С (Код)1|ВЫРАЗИТЬ(ИмяПоля КАК СТРОКА(1000)) ПОДОБНО &Параметр22 сентября 2026 в 9:34 в ответ на: Как подключить внешнюю обработку в 1С при ошибке «Действие недоступно в безопасн #38699Ошибка возникает при подключении файла, еще до его регистрации в списке дополнительных обработок. Поэтому проблема находится не в записи документа, а в коде, который выполняется при загрузке внешней обработки:
— в модуле объекта;
— в функцииСведенияОВнешнейОбработке();
— в разделе переменных модуля;
— в обработчике инициализации модуля;
— в общем модуле, который вызывается из этих мест.Сообщение:
1С (Код)1Действие недоступно в безопасном режимеозначает, что 1С загрузила обработку в безопасном режиме и обнаружила запрещенное действие.
## Что проверить в первую очередь
Откройте файл
ITC_ЗагрузкаПоступлений_Розница.epfв конфигураторе и проверьте модуль объекта.В функции:
1С (Код)1Функция СведенияОВнешнейОбработке() Экспортнайдите строку:
1С (Код)1ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);и замените на:
1С (Код)123ПараметрыРегистрации.Вставить("БезопасныйРежим",Ложь);Минимальная функция регистрации должна выглядеть примерно так:
1С (Код)123456789101112131415161718192021222324252627Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;ПараметрыРегистрации.Вставить("Вид","ДополнительнаяОбработка");ПараметрыРегистрации.Вставить("Наименование","Загрузка поступлений Розница");ПараметрыРегистрации.Вставить("Версия","1.0");ПараметрыРегистрации.Вставить("БезопасныйРежим",Ложь);ПараметрыРегистрации.Вставить("Информация","Загрузка поступлений");Возврат ПараметрыРегистрации;КонецФункцииНо если ошибка появляется даже после такой замены, значит запрещенное действие выполняется до возврата из этой функции.
## Что нельзя выполнять при инициализации обработки
Проверьте модуль объекта и удалите из верхнего уровня модуля любые вызовы вроде:
1С (Код)1Соединение = Новый COMОбъект(...);1С (Код)1ЗапуститьПриложение(...);1С (Код)1Файл = Новый Файл(...);1С (Код)1Чтение = Новый ЧтениеТекста(...);1С (Код)1Запись = Новый ЗаписьТекста(...);1С (Код)1HTTPСоединение = Новый HTTPСоединение(...);1С (Код)1ВнешниеКомпоненты.Подключить(...);1С (Код)1Выполнить(ТекстКода);1С (Код)1УстановитьПривилегированныйРежим(Истина);Также опасны обращения к внешним файлам, COM-объектам, интернету, внешним компонентам и запуску программ операционной системы.
Особенно важно проверить переменные модуля. Например, такой код выполняется уже во время загрузки обработки:
1С (Код)123Перем Подключение;Подключение = Новый COMОбъект("V83.COMConnector");Его нужно заменить на создание объекта внутри команды обработки:
1С (Код)123456789&НаКлиентеПроцедура Загрузить(Команда)Подключение = Новый COMОбъект("V83.COMConnector");// Дальнейшая работаКонецПроцедурыНо если обработка зарегистрирована с безопасным режимом, даже вызов внутри команды может быть запрещен. В таком случае обработку нужно регистрировать как небезопасную или переделывать механизм работы.
## Важный момент по функции регистрации
Функция
СведенияОВнешнейОбработке()должна только формировать параметры регистрации. В ней не должно быть загрузки файлов, подключения к другой базе, создания COM-объекта или записи данных.Плохой вариант:
1С (Код)123456789101112Функция СведенияОВнешнейОбработке() ЭкспортПодключение = Новый COMОбъект("V83.COMConnector");Настройки = ПолучитьНастройкиИзФайла();ПараметрыРегистрации = Новый Структура;Возврат ПараметрыРегистрации;КонецФункцииПравильный вариант:
1С (Код)123456789101112131415Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;ПараметрыРегистрации.Вставить("Наименование","Загрузка поступлений Розница");ПараметрыРегистрации.Вставить("БезопасныйРежим",Ложь);Возврат ПараметрыРегистрации;КонецФункции## Если обработка подключается через БСП
В современных конфигурациях для дополнительных обработок может использоваться БСП. Тогда регистрация обычно выглядит примерно так:
1С (Код)12345678910111213141516171819202122Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации =ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();ПараметрыРегистрации.Вставить("Вид",ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка());ПараметрыРегистрации.Вставить("Наименование","Загрузка поступлений Розница");ПараметрыРегистрации.Вставить("БезопасныйРежим",Ложь);Возврат ПараметрыРегистрации;КонецФункцииТочный код зависит от версии БСП и конфигурации. Если в вашей конфигурации используется механизм разрешений безопасного режима, одной строки
БезопасныйРежим = Ложьможет быть недостаточно.## Проверьте настройки пользователя
Есть два разных механизма, их часто путают.
### Безопасный режим
Ограничивает выполнение отдельных действий внешней обработки. Именно с ним связано ваше сообщение:
1С (Код)1Действие недоступно в безопасном режиме### Защита от опасных действий
Выдает предупреждение вида:
1С (Код)12Предупреждение безопасности.Открывается внешняя обработка...Это другая настройка.
Если после исправления файла появляется именно предупреждение безопасности, а не ошибка безопасного режима, тогда можно проверить пользователя в конфигураторе:
1. Откройте конфигуратор.
2. Откройте список пользователей информационной базы.
3. Откройте пользователя.
4. Проверьте настройку Защита от опасных действий.Но отключать ее для всех пользователей не рекомендуется. Сначала нужно убедиться, что файл действительно доверенный.
## После изменения файл нужно зарегистрировать заново
Порядок такой:
1. Сделайте резервную копию базы.
2. Откройте.epfв конфигураторе.
3. ИсправьтеСведенияОВнешнейОбработке().
4. Удалите опасный код из верхнего уровня модуля.
5. Сохраните обработку.
6. Закройте конфигуратор.
7. Удалите старую обработку из списка дополнительных обработок.
8. Загрузите исправленный файл заново.
9. Перезапустите клиент 1С.Если обработка уже была зарегистрирована, изменение файла на диске само по себе не обновит обработку в базе.
## Как быстро найти запрещенную строку
В конфигураторе выполните поиск по модулю обработки по словам:
1С (Код)1234567891011121314COMОбъектЗапуститьПриложениеВнешниеКомпонентыУстановитьПривилегированныйРежимВыполнитьЧтениеТекстаЗаписьТекстаПолучитьФайлПоместитьФайлHTTPСоединениеFTPСоединениеФайлЗаписатьУдалитьПроверьте не только
СведенияОВнешнейОбработке(), но и:— объявления переменных модуля;
— основной модуль объекта;
— формы обработки;
— вызываемые общие модули;
— процедуры, выполняемые при открытии формы.## Если исходник обработки закрыт
Если
.epfне открывается в конфигураторе или модуль защищен паролем, самостоятельно исправить обработку невозможно. В таком случае варианты только такие:1. запросить у разработчика новую версию обработки;
2. запросить исходный файл без защиты;
3. попросить разработчика убрать выполнение запрещенных действий из инициализации;
4. проверить совместимость версии платформы и конфигурации.Фраза 1С:
1С (Код)1Возможно, она не подходит для этой версии приложенияв данном случае может быть стандартным общим текстом. Реальная причина указана ниже:
1С (Код)1Действие недоступно в безопасном режимеТо есть сначала нужно исправить безопасный режим и код инициализации, а уже потом проверять совместимость версии приложения.
-
АвторЗаписи