Ответы в темах
-
АвторЗаписи
-
5 августа 2026 в 7:39 в ответ на: Как исправить ошибку синтаксиса запроса с функцией ЗначениеЗаполнено()? #38319
Ошибка синтаксиса в запросе вызвана тем, что в условии используется функция ЗначениеЗаполнено(), а она не поддерживается в языке запросов 1С.
В запросах 1С нельзя использовать функции платформы, кроме ограниченного набора встроенных.
Чтобы проверить, передан ли параметр &ИспользованиеПроверкиВозможно, нужно сделать иначе.
В запросах 1С нет прямой проверки на заполненность параметра.
Решения:
1. Передавать параметр всегда, чтобы он был определен (Истина или Ложь).
2. Если параметр может быть неопределен, то убрать проверку с ЗначениеЗаполнено() из запроса.
3. Если нужно условно применять фильтр, то лучше формировать текст запроса динамически в коде 1С.
—
Пример правильного условия, если параметр всегда передается:
| И (&ИспользованиеПроверкиВозможно = ИСТИНА)
—
Если параметр не передается, то условие нужно убрать.
—
Если хотите условно применять фильтр, то в коде 1С сделайте так:
1С (Код)12345678910111213141516ТекстЗапроса = "|ВЫБРАТЬ| ...|ГДЕ| РеестрДокументов.ДатаДокументаИБ МЕЖДУ &НачалоПериода И &КонецПериода";Если ИспользованиеПроверкиВозможно ТогдаТекстЗапроса = ТекстЗапроса + "| И РеестрДокументов.ЧтоТо = Значение";КонецЕсли;Запрос.Текст = ТекстЗапроса;Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);Запрос.УстановитьПараметр("КонецПериода", КонецПериода);—
Итог: уберите из запроса вызов ЗначениеЗаполнено(), замените условие на простое сравнение с параметром, который обязательно передается.
—
Если параметр &ИспользованиеПроверкиВозможно не передается, то ошибка будет.
Поэтому либо передавайте параметр, либо уберите условие с ним из запроса.
5 августа 2026 в 7:15 в ответ на: Как исправить ошибку из-за незаданного параметра в запросе 1С? #38317Ошибка возникает из-за того, что параметр &ИспользованиеПроверкиВозможно не передается в запрос, а в тексте запроса он используется в условии:
| И (&ИспользованиеПроверкиВозможно = ИСТИНА)
Чтобы исправить ошибку, нужно:
1. Либо передавать параметр &ИспользованиеПроверкиВозможно при выполнении запроса (в коде 1С).
2. Либо убрать условие с этим параметром из запроса, если параметр не нужен.
3. Либо заменить условие на проверку с учетом возможности неопределенного параметра.
—
Если параметр нужен, то в коде 1С, где создается и выполняется запрос, добавьте:
1С (Код)1Запрос.УстановитьПараметр("ИспользованиеПроверкиВозможно", Истина); // или Ложь, в зависимости от логики—
Если параметр не нужен, то просто уберите из запроса строку:
| И (&ИспользованиеПроверкиВозможно = ИСТИНА)
—
Если хотите оставить условие, но параметр может быть неопределен, замените условие на:
| И (НЕ ЗначениеЗаполнено(&ИспользованиеПроверкиВозможно) ИЛИ &ИспользованиеПроверкиВозможно = ИСТИНА)
—
Также исправьте строку с пустой строкой:
| ВЫРАЗИТЬ(«»»» КАК Строка(50)) КАК СостояниеГИСМТ
на
| ВЫРАЗИТЬ(ПустаяСтрока() КАК Строка(50)) КАК СостояниеГИСМТ
—
Итоговый фрагмент запроса с исправлениями:
|ГДЕ
| РеестрДокументов.ДатаДокументаИБ МЕЖДУ &НачалоПериода И &КонецПериода
| И (НЕ ЗначениеЗаполнено(&ИспользованиеПроверкиВозможно) ИЛИ &ИспользованиеПроверкиВозможно = ИСТИНА)
|»;—
Если параметр &ИспользованиеПроверкиВозможно не используется в коде, лучше убрать его из запроса.
—
Рекомендация: всегда перед выполнением запроса проверяйте, что все параметры, используемые в тексте запроса, установлены через Запрос.УстановитьПараметр().
5 августа 2026 в 7:10 в ответ на: Как устранить ошибку в 1С при использовании пустых строк в ВЫРАЗИТЬ()? #38315Ошибка в запросе связана с использованием конструкции
|ВЫРАЗИТЬ(» КАК Строка(50)) КАК СостояниеГИСМТ
Платформа 1С не принимает пустую строку в кавычках » как корректное значение для ВЫРАЗИТЬ.
Чтобы исправить ошибку, замените пустую строку на строку с пробелом или используйте функцию ПустаяСтрока():
Правильный вариант:
|ВЫРАЗИТЬ(ПустаяСтрока() КАК Строка(50)) КАК СостояниеГИСМТ
Или, если ПустаяСтрока() не поддерживается в вашем контексте, можно так:
|ВЫРАЗИТЬ(» » КАК Строка(50)) КАК СостояниеГИСМТ
То есть, в вашем запросе замените строку
|ВЫРАЗИТЬ(» КАК Строка(50)) КАК СостояниеГИСМТ
на
|ВЫРАЗИТЬ(ПустаяСтрока() КАК Строка(50)) КАК СостояниеГИСМТ
Это решит синтаксическую ошибку.
—
Если ПустаяСтрока() не работает, используйте
|ВЫРАЗИТЬ(» » КАК Строка(50)) КАК СостояниеГИСМТ
(один пробел в кавычках).
—
В 1С пустые строки в запросах лучше задавать через ПустаяСтрока(), а не через ».
—
Пример исправленного фрагмента:
|ВЫРАЗИТЬ(ПустаяСтрока() КАК Строка(50)) КАК СостояниеГИСМТ
Ошибка в вашем запросе связана с тем, что в 1С-запросах нельзя использовать оператор И для соединения с условием в конце, а также в запросе отсутствует корректное завершение конструкции. Кроме того, в 1С нельзя использовать комментарии в стиле
//.Исправленный вариант запроса с правильным синтаксисом и форматированием:
|ТекстЗапроса =
|»
|ВЫБРАТЬ
| РеестрДокументов.Ссылка КАК Ссылка,
| РеестрДокументов.НомерДокументаИБ КАК Номер,
| РеестрДокументов.ДатаДокументаИБ КАК Дата,
| РеестрДокументов.Статус,
| РеестрДокументов.Проведен,
| РеестрДокументов.ПометкаУдаления,
| РеестрДокументов.ХозяйственнаяОперация,
| РеестрДокументов.Партнер,
| ВЫРАЗИТЬ(РеестрДокументов.Контрагент.Ключ КАК Справочник.Контрагенты) КАК Контрагент,
| РеестрДокументов.Контрагент КАК КонтрагентКлюч,
| РеестрДокументов.Договор,
| &Соглашение КАК Соглашение,
| РеестрДокументов.Организация,
| РеестрДокументов.Подразделение,
| РеестрДокументов.МестоХранения КАК МестоХранения,
| ВЫРАЗИТЬ(РеестрДокументов.МестоХранения.Ключ КАК Справочник.Склады) КАК Склад,
| РеестрДокументов.Валюта,
| РеестрДокументов.Сумма КАК СуммаДокумента,
| РеестрДокументов.Ответственный КАК Менеджер,
| РеестрДокументов.Автор КАК Автор,
| РеестрДокументов.Комментарий,
| РеестрДокументов.НомерПервичногоДокумента КАК НомерВходящегоДокумента,
| РеестрДокументов.ДатаПервичногоДокумента КАК ДатаВходящегоДокумента,
| РеестрДокументов.Дополнительно,
| СостоянияЭД.СостояниеЭДО,
| СостоянияЭД.ПредставлениеСостояния КАК ПредставлениеСостояния,
| СостоянияРаспоряжений.Состояние КАК СостояниеWMS,
| ВЫБОР
| КОГДА ДокументыСОшибкамиПроверкиКонтрагентов.Документ ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьОшибкиПроверкиКонтрагентов,
| ВЫБОР
| КОГДА РеестрДокументов.Проведен
| ТОГДА 0
| КОГДА РеестрДокументов.ПометкаУдаления
| ТОГДА 1
| ИНАЧЕ 2
| КОНЕЦ КАК НестандартнаяКартинка,
| РеестрДокументов.ДополнительнаяЗапись,
| РеестрДокументов.ТипСсылки КАК ТипСсылки,
| ТИПЗНАЧЕНИЯ(РеестрДокументов.Ссылка) КАК ТипЗначения,
| &СтатусПроверки КАК СтатусПроверки,
| &ИндикаторПроверки КАК ИндикаторПроверки,
| РеестрДокументов.СторноИсправление КАК СторноИсправление,
| ВЫБОР
| КОГДА НЕ РеестрДокументов.СторноИсправление
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ РеестрДокументов.СторнируемыйДокумент
| КОНЕЦ КАК СторнируемыйИсправляемыйДокумент,
| РеестрДокументов.ИдентификаторЗаписи КАК ИдентификаторЗаписи,
| NULL КАК СостояниеОригиналаПервичногоДокумента,
| ИСТИНА КАК ОбщееСостояние,
| 0 КАК СостояниеОригиналПолучен,
| ВЫРАЗИТЬ(» КАК Строка(50)) КАК СостояниеГИСМТ
|ИЗ
| РегистрСведений.РеестрДокументов КАК РеестрДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
| ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД
| ПО СостоянияЭД.СсылкаНаОбъект = РеестрДокументов.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыСОшибкамиПроверкиКонтрагентов КАК ДокументыСОшибкамиПроверкиКонтрагентов
| ПО РеестрДокументов.Ссылка = ДокументыСОшибкамиПроверкиКонтрагентов.Документ
|ГДЕ
| РеестрДокументов.ДатаДокументаИБ МЕЖДУ &НачалоПериода И &КонецПериода
| И (&ИспользованиеПроверкиВозможно = ИСТИНА)
|»;Возврат ТекстЗапроса;
—
Основные исправления:
— Убраны лишние запятые.
— Удалены комментарии//.
— Добавлено условиеИ (&ИспользованиеПроверкиВозможно = ИСТИНА)в блоке ГДЕ, чтобы корректно фильтровать по параметру.
— Все строки начинаются с|для корректного форматирования.
— Использован операторМЕЖДУдля фильтрации по дате.Если нужна помощь с тестированием или доработкой — обращайтесь.
5 августа 2026 в 6:54 в ответ на: Как исправить запрос 1С для корректного формата и синтаксиса? #38311Вот исправленный вариант запроса с правильным синтаксисом и без лишних запятых:
|ТекстЗапроса =
|»
|ВЫБРАТЬ
| РеестрДокументов.Ссылка КАК Ссылка,
| РеестрДокументов.НомерДокументаИБ КАК Номер,
| РеестрДокументов.ДатаДокументаИБ КАК Дата,
| РеестрДокументов.Статус,
| РеестрДокументов.Проведен,
| РеестрДокументов.ПометкаУдаления,
| РеестрДокументов.ХозяйственнаяОперация,
| РеестрДокументов.Партнер,
| ВЫРАЗИТЬ(РеестрДокументов.Контрагент.Ключ КАК Справочник.Контрагенты) КАК Контрагент,
| РеестрДокументов.Контрагент КАК КонтрагентКлюч,
| РеестрДокументов.Договор,
| &Соглашение КАК Соглашение,
| РеестрДокументов.Организация,
| РеестрДокументов.Подразделение,
| РеестрДокументов.МестоХранения КАК МестоХранения,
| ВЫРАЗИТЬ(РеестрДокументов.МестоХранения.Ключ КАК Справочник.Склады) КАК Склад,
| РеестрДокументов.Валюта,
| РеестрДокументов.Сумма КАК СуммаДокумента,
| РеестрДокументов.Ответственный КАК Менеджер,
| РеестрДокументов.Автор КАК Автор,
| РеестрДокументов.Комментарий,
| РеестрДокументов.НомерПервичногоДокумента КАК НомерВходящегоДокумента,
| РеестрДокументов.ДатаПервичногоДокумента КАК ДатаВходящегоДокумента,
| РеестрДокументов.Дополнительно,
| СостоянияЭД.СостояниеЭДО,
| СостоянияЭД.ПредставлениеСостояния КАК ПредставлениеСостояния,
| ВЫБОР
| КОГДА ДокументыСОшибкамиПроверкиКонтрагентов.Документ ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьОшибкиПроверкиКонтрагентов,
| ВЫБОР
| КОГДА РеестрДокументов.Проведен
| ТОГДА 0
| КОГДА РеестрДокументов.ПометкаУдаления
| ТОГДА 1
| ИНАЧЕ 2
| КОНЕЦ КАК НестандартнаяКартинка,
| РеестрДокументов.ДополнительнаяЗапись,
| РеестрДокументов.ТипСсылки КАК ТипСсылки,
| ТИПЗНАЧЕНИЯ(РеестрДокументов.Ссылка) КАК ТипЗначения,
| &СтатусПроверки КАК СтатусПроверки,
| &ИндикаторПроверки КАК ИндикаторПроверки,
| РеестрДокументов.СторноИсправление КАК СторноИсправление,
| ВЫБОР
| КОГДА НЕ РеестрДокументов.СторноИсправление
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ РеестрДокументов.СторнируемыйДокумент
| КОНЕЦ КАК СторнируемыйИсправляемыйДокумент,
| РеестрДокументов.ИдентификаторЗаписи КАК ИдентификаторЗаписи,
| NULL КАК СостояниеОригиналаПервичногоДокумента,
| ИСТИНА КАК ОбщееСостояние,
| 0 КАК СостояниеОригиналПолучен,
| ВЫРАЗИТЬ(» КАК Строка(50)) КАК СостояниеГИСМТ,
| СостоянияРаспоряжений.Состояние КАК СостояниеWMS
|ИЗ
| РегистрСведений.РеестрДокументов КАК РеестрДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
| ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД
| ПО СостоянияЭД.СсылкаНаОбъект = РеестрДокументов.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыСОшибкамиПроверкиКонтрагентов КАК ДокументыСОшибкамиПроверкиКонтрагентов
| ПО РеестрДокументов.Ссылка = ДокументыСОшибкамиПроверкиКонтрагентов.Документ
| И (&ИспользованиеПроверкиВозможно)
|ГДЕ
| РеестрДокументов.ДатаДокументаИБ МЕЖДУ &НачалоПериода И &КонецПериода
|»;Возврат ТекстЗапроса;
—
Основные исправления:
— Убраны лишние запятые (например, перед полем СостоянияРаспоряжений.Состояние).
— Комментарии в стиле // удалены, так как в запросах 1С они не поддерживаются.
— Использован оператор МЕЖДУ для фильтрации по дате.
— Все строки начинаются с | для корректного форматирования.
— Выровнены отступы для читаемости.Если нужно, могу помочь с дополнительной оптимизацией.
Вот исправленный и корректно оформленный запрос с учётом синтаксиса 1С и устранением ошибок:
|ТекстЗапроса =
|»
|ВЫБРАТЬ
| РеестрДокументов.Ссылка КАК Ссылка,
| РеестрДокументов.НомерДокументаИБ КАК Номер,
| РеестрДокументов.ДатаДокументаИБ КАК Дата,
| РеестрДокументов.Статус,
| РеестрДокументов.Проведен,
| РеестрДокументов.ПометкаУдаления,
| РеестрДокументов.ХозяйственнаяОперация,
| РеестрДокументов.Партнер,
| ВЫРАЗИТЬ(РеестрДокументов.Контрагент.Ключ КАК Справочник.Контрагенты) КАК Контрагент,
| РеестрДокументов.Контрагент КАК КонтрагентКлюч,
| РеестрДокументов.Договор,
| &Соглашение КАК Соглашение,
| РеестрДокументов.Организация,
| РеестрДокументов.Подразделение,
| РеестрДокументов.МестоХранения КАК МестоХранения,
| ВЫРАЗИТЬ(РеестрДокументов.МестоХранения.Ключ КАК Справочник.Склады) КАК Склад,
| РеестрДокументов.Валюта,
| РеестрДокументов.Сумма КАК СуммаДокумента,
| РеестрДокументов.Ответственный КАК Менеджер,
| РеестрДокументов.Автор КАК Автор,
| РеестрДокументов.Комментарий,
| РеестрДокументов.НомерПервичногоДокумента КАК НомерВходящегоДокумента,
| РеестрДокументов.ДатаПервичногоДокумента КАК ДатаВходящегоДокумента,
| РеестрДокументов.Дополнительно,
| СостоянияЭД.СостояниеЭДО,
| СостоянияЭД.ПредставлениеСостояния КАК ПредставлениеСостояния,
| СостоянияРаспоряжений.Состояние КАК СостояниеWMS,
| ВЫБОР
| КОГДА ДокументыСОшибкамиПроверкиКонтрагентов.Документ ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьОшибкиПроверкиКонтрагентов,
| ВЫБОР
| КОГДА РеестрДокументов.Проведен
| ТОГДА 0
| КОГДА РеестрДокументов.ПометкаУдаления
| ТОГДА 1
| ИНАЧЕ 2
| КОНЕЦ КАК НестандартнаяКартинка,
| РеестрДокументов.ДополнительнаяЗапись,
| РеестрДокументов.ТипСсылки КАК ТипСсылки,
| ТИПЗНАЧЕНИЯ(РеестрДокументов.Ссылка) КАК ТипЗначения,
| &СтатусПроверки КАК СтатусПроверки,
| &ИндикаторПроверки КАК ИндикаторПроверки,
| РеестрДокументов.СторноИсправление КАК СторноИсправление,
| ВЫБОР
| КОГДА НЕ РеестрДокументов.СторноИсправление
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ РеестрДокументов.СторнируемыйДокумент
| КОНЕЦ КАК СторнируемыйИсправляемыйДокумент,
| РеестрДокументов.ИдентификаторЗаписи КАК ИдентификаторЗаписи,
| NULL КАК СостояниеОригиналаПервичногоДокумента,
| ИСТИНА КАК ОбщееСостояние,
| 0 КАК СостояниеОригиналПолучен,
| ВЫРАЗИТЬ(» КАК Строка(50)) КАК СостояниеГИСМТ
|ИЗ
| РегистрСведений.РеестрДокументов КАК РеестрДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
| ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД
| ПО СостоянияЭД.СсылкаНаОбъект = РеестрДокументов.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыСОшибкамиПроверкиКонтрагентов КАК ДокументыСОшибкамиПроверкиКонтрагентов
| ПО РеестрДокументов.Ссылка = ДокументыСОшибкамиПроверкиКонтрагентов.Документ
| И (&ИспользованиеПроверкиВозможно)
|ГДЕ
| РеестрДокументов.ДатаДокументаИБ МЕЖДУ &НачалоПериода И &КонецПериода
|»;Возврат ТекстЗапроса;
—
Основные исправления:
— Удалена лишняя запятая перед полем СостоянияРаспоряжений.Состояние.
— Убраны комментарии в стиле //, так как в запросах 1С их не поддерживает.
— Исправлен синтаксис блока ГДЕ, использован оператор МЕЖДУ для даты.
— Все строки начинаются с символа | для корректного форматирования.
— Убраны дублирующие поля (СостояниеWMS встречалось дважды).
— Выровнены отступы для читаемости.Если нужно, могу помочь с дополнительной оптимизацией или проверкой.
Вот исправленный и структурированный вариант вашего запроса с корректным синтаксисом 1С:
|ТекстЗапроса =
|»
|ВЫБРАТЬ
| РеестрДокументов.Ссылка КАК Ссылка,
| РеестрДокументов.НомерДокументаИБ КАК Номер,
| РеестрДокументов.ДатаДокументаИБ КАК Дата,
| РеестрДокументов.Статус КАК Статус,
| РеестрДокументов.Проведен КАК Проведен,
| РеестрДокументов.ПометкаУдаления КАК ПометкаУдаления,
| РеестрДокументов.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| РеестрДокументов.Партнер КАК Партнер,
| ВЫРАЗИТЬ(РеестрДокументов.Контрагент.Ключ КАК Справочник.Контрагенты) КАК Контрагент,
| РеестрДокументов.Контрагент КАК КонтрагентКлюч,
| РеестрДокументов.Договор КАК Договор,
| РеестрДокументов.Организация КАК Организация,
| РеестрДокументов.Подразделение КАК Подразделение,
| РеестрДокументов.МестоХранения КАК МестоХранения,
| ВЫРАЗИТЬ(РеестрДокументов.МестоХранения.Ключ КАК Справочник.Склады) КАК Склад,
| РеестрДокументов.Валюта КАК Валюта,
| РеестрДокументов.Сумма КАК СуммаДокумента,
| РеестрДокументов.Ответственный КАК Менеджер,
| РеестрДокументов.Автор КАК Автор,
| РеестрДокументов.Комментарий КАК Комментарий,
| РеестрДокументов.НомерПервичногоДокумента КАК НомерВходящегоДокумента,
| РеестрДокументов.ДатаПервичногоДокумента КАК ДатаВходящегоДокумента,
| РеестрДокументов.Дополнительно КАК Дополнительно,
| СостоянияРаспоряжений.Состояние КАК СостояниеWMS,
| СостоянияЭД.СостояниеЭДО КАК СостояниеВерсииЭД,
| СостоянияЭД.ПредставлениеСостояния КАК ПредставлениеСостояния,
| ВЫБОР
| КОГДА ДокументыСОшибкамиПроверкиКонтрагентов.Документ ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьОшибкиПроверкиКонтрагентов,
| ВЫБОР
| КОГДА РеестрДокументов.Проведен
| ТОГДА 0
| КОГДА РеестрДокументов.ПометкаУдаления
| ТОГДА 1
| ИНАЧЕ 2
| КОНЕЦ КАК НестандартнаяКартинка,
| РеестрДокументов.ДополнительнаяЗапись КАК ДополнительнаяЗапись,
| РеестрДокументов.ТипСсылки КАК ТипСсылки,
| &СтатусПроверки КАК СтатусПроверки,
| &ИндикаторПроверки КАК ИндикаторПроверки,
| ТИПЗНАЧЕНИЯ(РеестрДокументов.Ссылка) КАК ТипЗначения,
| NULL КАК СостояниеОригиналаПервичногоДокумента,
| ИСТИНА КАК ОбщееСостояние,
| 0 КАК СостояниеОригиналПолучен,
| РеестрДокументов.СторноИсправление КАК СторноИсправление,
| РеестрДокументов.ИдентификаторЗаписи КАК ИдентификаторЗаписи,
| ВЫБОР
| КОГДА НЕ РеестрДокументов.СторноИсправление
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ РеестрДокументов.СторнируемыйДокумент
| КОНЕЦ КАК СторнируемыйИсправляемыйДокумент,
| ВЫРАЗИТЬ(» КАК Строка(50)) КАК СостояниеГИСМТ
|ИЗ
| РегистрСведений.РеестрДокументов КАК РеестрДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
| ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД
| ПО СостоянияЭД.СсылкаНаОбъект = РеестрДокументов.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыСОшибкамиПроверкиКонтрагентов КАК ДокументыСОшибкамиПроверкиКонтрагентов
| ПО РеестрДокументов.Ссылка = ДокументыСОшибкамиПроверкиКонтрагентов.Документ
| И (&ИспользованиеПроверкиВозможно)
|ГДЕ
| (РеестрДокументов.ДатаДокументаИБ >= &НачалоПериода
| ИЛИ &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1))
| И (РеестрДокументов.ДатаДокументаИБ <= &КонецПериода
| ИЛИ &КонецПериода = ДАТАВРЕМЯ(1, 1, 1))
|»;Возврат ТекстЗапроса;
—
Объяснение:
— Убрал лишние запятые после соединений (в 1С-запросах запятая после JOIN не нужна).
— Выровнял отступы и добавил символы | в начале каждой строки.
— Вложенные соединения и условия перенесены в правильный синтаксис.
— Убрал комментарии в стиле //, так как в 1С-запросах лучше использовать /* … */ или не использовать вовсе.
— В выражениях ВЫРАЗИТЬ и ВЫБОР синтаксис сохранён корректным.Если нужно, могу помочь с адаптацией под конкретную конфигурацию.
4 августа 2026 в 15:17 в ответ на: Как добавить условие в запрос для получения поля СостояниеWMS из 1С? #38305Чтобы добавить в ваш запрос поле из регистра сведений AWMSBasis_СостоянияРаспоряжений с псевдонимом СостояниеWMS, нужно:
1. В блоке выборки добавить поле:
| ,СостоянияРаспоряжений.Состояние КАК СостояниеWMS2. В блоке ИЗ добавить левое соединение с регистром:
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
| ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.ДокументПример итогового фрагмента запроса:
|ВЫБРАТЬ
| РеестрДокументов.Дополнительно КАК Дополнительно,
| РеестрДокументов.Комментарий КАК Комментарий,
| РеестрДокументов.Проведен КАК Проведен,
| РеестрДокументов.ПометкаУдаления КАК ПометкаУдаления,
| СостоянияРаспоряжений.Состояние КАК СостояниеWMS
|ИЗ
| РегистрСведений.РеестрДокументов КАК РеестрДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
| ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ
|ГДЕ
| ((РеестрДокументов.ДатаДокументаИБ >= &НачалоПериода
| ИЛИ &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1))
| И (РеестрДокументов.ДатаДокументаИБ <= &КонецПериода
| ИЛИ &КонецПериода = ДАТАВРЕМЯ(1, 1, 1)))Если у вас есть переменная ТекстЗапроса, то вставьте эти строки в соответствующие места, не забывая про синтаксис и символы | в начале каждой строки.
Если нужно, могу помочь с полным текстом запроса.
4 августа 2026 в 11:47 в ответ на: Почему ошибка «Элемент не выбран» при вызове ПолучитьОбъект()? #38303Ошибка «Элемент не выбран!» возникает потому, что метод
Справочники.Контрагенты.НайтиПоКоду(Контрагент.Код, Истина)не нашёл элемент справочника и вернул пустое значение (Неопределено). А дальше вы пытаетесь вызватьПолучитьОбъект()у пустого значения, что и даёт ошибку.Как исправить:
1. Проверьте, что
Контрагент.Коддействительно существует и корректен.
2. Добавьте проверку результата поиска перед вызовомПолучитьОбъект().Пример исправленного кода:
1С (Код)12345678910111213141516Если ЗначениеЗаполнено(Почта) ТогдаКлючПочты = Строка(Контрагент) + "|" + Почта;Если МассивПочт.Найти(КлючПочты) = Неопределено ТогдаМассивПочт.Добавить(КлючПочты);СправКонтр = Справочники.Контрагенты.НайтиПоКоду(Контрагент.Код, Истина);Если ЗначениеЗаполнено(СправКонтр) ТогдаЗанКонтр = СправКонтр.ПолучитьОбъект();СтрокаКонтрак = ЗанКонтр.КонтактнаяИнформация.Добавить();СтрокаКонтрак.АдресЭП = Почта;ЗанКонтр.Записать();ИначеСообщить("Контрагент с кодом " + Строка(Контрагент.Код) + " не найден!");КонецЕсли;КонецЕсли;КонецЕсли;Если
Контрагент— это ссылка на элемент справочника, то лучше не искать по коду, а использовать ссылку напрямую:1С (Код)123456789101112131415Если ЗначениеЗаполнено(Почта) ТогдаКлючПочты = Строка(Контрагент) + "|" + Почта;Если МассивПочт.Найти(КлючПочты) = Неопределено ТогдаМассивПочт.Добавить(КлючПочты);Если ЗначениеЗаполнено(Контрагент) ТогдаЗанКонтр = Контрагент.ПолучитьОбъект();СтрокаКонтрак = ЗанКонтр.КонтактнаяИнформация.Добавить();СтрокаКонтрак.АдресЭП = Почта;ЗанКонтр.Записать();ИначеСообщить("Ссылка на контрагента не заполнена!");КонецЕсли;КонецЕсли;КонецЕсли;Итого: ошибка возникает из-за того, что
НайтиПоКодуне нашёл элемент, и нужно проверить результат перед использованием.4 августа 2026 в 11:38 в ответ на: Как отфильтровать повторяющиеся почты и телефоны в табличной части обработки в « #38301Вот пример, как в вашей обработке во внешней обработке (Альфа-Авто) пройтись по табличной части и отфильтровать повторяющиеся почты и телефоны для каждого контрагента, используя массивы для контроля уникальности:
1С (Код)12345678910111213141516171819202122232425262728293031323334Таблица = Объект.ТабличнаяЧасть.Выгрузить();МассивПочт = Новый Массив;МассивТелефонов = Новый Массив;Для Каждого Строчка Из Таблица ЦиклКонтрагент = Строчка.Контрагент;Почта = Строчка.Почта;Телефон = Строчка.НомерТелефона;// Проверяем почтуЕсли ЗначениеЗаполнено(Почта) Тогда// Формируем уникальный ключ по контрагенту и почтеКлючПочты = Строка(Контрагент) + "|" + Почта;Если МассивПочт.Найти(КлючПочты) = Неопределено ТогдаМассивПочт.Добавить(КлючПочты);// Здесь заносим Почту в контактную информацию// Например: ДобавитьПочту(Контрагент, Почта);КонецЕсли;КонецЕсли;// Проверяем телефонЕсли ЗначениеЗаполнено(Телефон) ТогдаКлючТелефона = Строка(Контрагент) + "|" + Телефон;Если МассивТелефонов.Найти(КлючТелефона) = Неопределено ТогдаМассивТелефонов.Добавить(КлючТелефона);// Здесь заносим Телефон в контактную информацию// Например: ДобавитьТелефон(Контрагент, Телефон);КонецЕсли;КонецЕсли;// Если нужно, можно вывести для отладки// Сообщить("Контрагент: " + Строка(Контрагент) + ", Почта: " + Почта + ", Телефон: " + Телефон);КонецЦикла;Объяснение:
— Для почты и телефона создаются отдельные массивы, в которые добавляются уникальные пары «Контрагент|Почта» и «Контрагент|Телефон».
— Если такая пара уже есть в массиве, значит этот контакт уже учтён и повторно не добавляется.
— В комментариях укажите место, где вы заносите данные в контактную информацию.
— ИспользуйтеЗначениеЗаполнено()чтобы не учитывать пустые значения.Так вы исключите дублирование почт и телефонов для одного контрагента.
4 августа 2026 в 10:43 в ответ на: Почему в управляемой форме возникает ошибка «не видно получить макет»? #38299В управляемой форме ошибка «не видно получить макет» при вызове
ПолучитьМакет("Макет")возникает потому, что метод ПолучитьМакет() доступен только в модуле объекта (серверной части) или в модуле обработки, а в модуле управляемой формы (клиентской части) его напрямую вызвать нельзя.В управляемом интерфейсе получить макет нужно через объект, например:
1. В модуле объекта (сервере) создайте функцию, которая вернёт макет:
1С (Код)1234&НаСервереФункция ПолучитьМакетДляФормы()Возврат ЭтотОбъект.ПолучитьМакет("Макет");КонецФункции2. В модуле формы (клиенте) вызовите эту функцию через объект:
1С (Код)12345678910111213141516171819202122&НаКлиентеПроцедура СохранитьНеНайденное(Команда)ТабЧасть = ПроверкаТабЧасти();ТабДок = Новый ТабличныйДокумент;Макет = Объект.ПолучитьМакетДляФормы();ОбластьШапки = Макет.ПолучитьОбласть("Шапка");ОбластьТчасти = Макет.ПолучитьОбласть("Тчасть");ТабДок.Вывести(ОбластьШапки);// Заполнение табличного документа данными из ТабЧастьДиалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);Диалог.Фильтр = "Файлы Excel (*.xlsx)|*.xlsx";Диалог.ПолноеИмяФайла = "ТабличнаяЧасть.xlsx";Если Диалог.Выбрать() ТогдаИмяФайла = Диалог.ПолноеИмяФайла;ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);Сообщить("Данные успешно сохранены в файл: " + ИмяФайла);КонецЕсли;КонецПроцедурыИли, если макет лежит в общем модуле или внешней обработке, вызовите его через соответствующий объект.
Если макет — это файл в ресурсах обработки, то можно получить его так:
1С (Код)1234&НаСервереФункция ПолучитьМакет()Возврат ПолучитьМакет("Макет");КонецФункциии вызвать эту функцию с клиента через объект.
В управляемом интерфейсе нельзя просто так вызвать
ПолучитьМакет()— нужно делать это на сервере и передавать результат на клиент.Рекомендую посмотреть здесь, как работать с макетами в управляемом интерфейсе:
https://infostart.ru/public/394727/
https://infostart.ru/public/704948/Ошибка «Несоответствие типов (параметр номер ‘1’)» при вызове ТабДок.Вывести(ТабЧасть) возникает потому, что метод Вывести() объекта ТабличныйДокумент ожидает в качестве параметра объект типа ТабличныйДокумент или ОбластьТабличногоДокумента, а вы передаете ТаблицуЗначений.
Метод Вывести() не умеет напрямую принимать ТаблицуЗначений.
Как правильно сохранить табличную часть в Excel:
1. Получить ТаблицуЗначений из табличной части (вы это делаете).
2. Создать ТабличныйДокумент.
3. Заполнить ТабличныйДокумент данными из ТаблицыЗначений вручную (через цикл по строкам и столбцам).
4. Сохранить ТабличныйДокумент в файл.Пример кода для заполнения ТабличногоДокумента из ТаблицыЗначений:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839&НаКлиентеПроцедура СохранитьНеНайденное(Команда)// Получаем ТаблицуЗначений с даннымиТабЧасть = ПроверкаТабЧасти();// Создаем ТабличныйДокументТабДок = Новый ТабличныйДокумент;// Заполняем заголовкиДля НомерКолонки = 0 По ТабЧасть.Колонки.Количество() - 1 ЦиклТабДок.Область(1, НомерКолонки + 1).Текст = ТабЧасть.Колонки[НомерКолонки].Имя;КонецЦикла;// Заполняем данныеДля НомерСтроки = 0 По ТабЧасть.Количество() - 1 ЦиклДля НомерКолонки = 0 По ТабЧасть.Колонки.Количество() - 1 ЦиклЗначение = ТабЧасть[НомерСтроки][НомерКолонки];ТабДок.Область(НомерСтроки + 2, НомерКолонки + 1).Текст = ?(Значение = Неопределено, "", Строка(Значение));КонецЦикла;КонецЦикла;// Диалог выбора файлаДиалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);Диалог.Фильтр = "Файлы Excel (*.xlsx)|*.xlsx";Диалог.ПолноеИмяФайла = "ТабличнаяЧасть.xlsx";Если Диалог.Выбрать() ТогдаИмяФайла = Диалог.ПолноеИмяФайла;ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);Сообщить("Данные успешно сохранены в файл: " + ИмяФайла);КонецЕсли;КонецПроцедуры&НаСервереФункция ПроверкаТабЧасти()Возврат Объект.НеТабличнаяЧасть.Выгрузить();КонецФункцииОбъяснение:
— Метод Вывести() не подходит для ТаблицыЗначений.
— Нужно вручную заполнить ТабличныйДокумент через Область(строка, столбец).Текст.
— Заголовки берутся из имен колонок ТаблицыЗначений.
— Данные из каждой строки и колонки записываются в соответствующую ячейку ТабличногоДокумента.
— После заполнения вызывается Записать() для сохранения в файл Excel.Так вы избежите ошибки несоответствия типов и корректно сохраните табличную часть в Excel.
4 августа 2026 в 7:10 в ответ на: Как добавить столбец «Дата поступления» в таблицу подбора материалов в 1С? #38295Чтобы добавить в форму подбора номенклатуры в документе «Перемещение ТМЗ» дополнительный столбец с датой поступления товара, нужно сделать следующее:
1. Определить, откуда брать дату поступления
В таблице подбора сейчас отображаются остатки номенклатуры, скорее всего, данные берутся из регистра остатков или из документа поступления товаров. Дату поступления нужно получить из соответствующего документа или регистра, где хранится дата прихода товара на склад.2. Изменить запрос подбора
В форме подбора номенклатуры используется запрос, который выбирает данные для таблицы. Нужно добавить в этот запрос поле с датой поступления. Например, если данные берутся из регистра остатков, то нужно присоединить к запросу таблицу документов поступления и взять дату из них.3. Добавить колонку в табличное поле формы
В конфигураторе открыть форму подбора номенклатуры (обычно это форма выбора из справочника или документа). В табличном поле добавить новый столбец «Дата поступления».4. Привязать новый столбец к полю из запроса
В свойствах столбца указать, что он отображает поле с датой поступления из запроса.5. Обновить форму и протестировать
—
### Примерный алгоритм действий в конфигураторе
1. Откройте конфигуратор, найдите объект, в котором реализован подбор номенклатуры для документа «Перемещение ТМЗ». Обычно это форма выбора номенклатуры или форма подбора из регистра остатков.
2. Найдите запрос, который формирует данные для таблицы подбора. Он может выглядеть примерно так:
|ВЫБРАТЬ
| Остатки.Номенклатура,
| Остатки.Количество,
| Остатки.Цена,
| Остатки.Склад,
| … — другие поля
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры КАК Остатки
|ГДЕ
| Остатки.Склад = &Склад3. Добавьте в запрос присоединение к документу поступления товаров, чтобы получить дату поступления. Например:
|ВЫБРАТЬ
| Остатки.Номенклатура,
| Остатки.Количество,
| Остатки.Цена,
| Остатки.Склад,
| Поступления.Дата КАК ДатаПоступления
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры КАК Остатки
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК Поступления
| ПО Остатки.Номенклатура = Поступления.Номенклатура
| И Остатки.Склад = Поступления.Склад
|ГДЕ
| Остатки.Склад = &Склад(Тут нужно уточнить логику, как именно связать остатки с датой поступления, возможно, по партии или по другому признаку.)
4. В форме подбора добавьте новый столбец в табличное поле, укажите в качестве источника данных поле «ДатаПоступления».
5. Сохраните изменения, обновите конфигурацию, протестируйте.
—
### Важные моменты
— Если в базе нет прямой связи между остатками и датой поступления, возможно, придется использовать регистр партий или другой регистр, где хранится дата прихода каждой партии.
— Если используется стандартный механизм подбора из остатков, то для отображения даты поступления может потребоваться доработка механизма подбора, чтобы он учитывал партии.
— В некоторых случаях проще сделать отдельный справочник партий с датой поступления и подбирать номенклатуру именно из партий.
—
Если нужна конкретная помощь с запросом или формой — приложите код запроса подбора или форму, тогда помогу точнее.
4 августа 2026 в 5:08 в ответ на: Почему при отладке 1С не появляются точки останова и не срабатывают обработчики? #38293Если при запуске отладки в 1С «ничего нет» (нет точек останова, не срабатывают обработчики), проверь следующие моменты:
1. Код действительно выполняется?
— Убедись, что форма, в которой ты поставил код, действительно открывается.
— В процедуреПриОткрытии()поставьСообщить("Форма открыта");— если сообщение не появится, значит форма не запускается.2. Обработчики событий привязаны правильно?
— Для кнопки в свойствах события «Нажатие» должен быть указан именноКнопкаПроверитьНажатие.
— Проверь, что имя процедуры совпадает с тем, что в модуле формы.3. Отладка в клиентском модуле
— Код должен быть помечен директивой&НаКлиенте.
— Если запускаешь в режиме «Конфигуратор», убедись, что запускаешь именно форму, а не просто конфигурацию.4. Поставь точки останова вручную
— В модуле формы поставь точку останова (клик слева от строки кода).
— Запусти отладку и проверь, останавливается ли выполнение.5. Запуск формы
— Если запускаешь обработку из Конфигуратора, открой форму через меню «Формы» → «Открыть» или вызови её программно:1С (Код)1ОткрытьФорму("ИмяФормы", ЭтотОбъект);— Если форма не открывается, код не будет выполняться.
6. Проверь ошибки в журнале регистрации
— Возможно, есть ошибки, которые мешают выполнению кода.7. Если используешь внешний обработчик
— Убедись, что запускаешь именно внешний обработчик, а не конфигурацию.—
Если хочешь, могу помочь проверить твой конкретный код и настройки формы — пришли скриншоты или код модуля формы.
4 августа 2026 в 5:06 в ответ на: Как создать интерфейс игры «Угадай число» в 1С:Предприятие 8.3? #38291Вот полный пример с кодом для кнопок и элементов формы для игры «Угадай число» в 1С:Предприятие 8.3.
—
## 1. Элементы формы
— Поле ввода — имя:
ПолеВвода
Тип: Поле ввода (Число)
Свойства:
— Значение по умолчанию: пусто
— Размеры и расположение — по желанию— Кнопка — имя:
КнопкаПроверить
Подпись: «Проверить»
Событие: Нажатие → обработчикКнопкаПроверитьНажатие— Метка — имя:
МеткаПодсказка
Тип: Надпись (текст)
СвойствоТекст— для вывода подсказок—
## 2. Код модуля формы
1С (Код)1234567891011121314151617181920212223242526272829303132333435363738&НаКлиентеПерем ЗагаданноеЧисло;Перем Попытки;&НаКлиентеПроцедура ПриОткрытии()ЗагаданноеЧисло = СлучайноеЧисло(1, 100);Попытки = 0;ЭлементыФормы.ПолеВвода.Значение = Неопределено;ЭлементыФормы.МеткаПодсказка.Текст = "Игра 'Угадай число'! Введите число от 1 до 100 и нажмите 'Проверить'.";КонецПроцедуры&НаКлиентеПроцедура КнопкаПроверитьНажатие(Кнопка)Попытки = Попытки + 1;Введенное = ЭлементыФормы.ПолеВвода.Значение;Если ТипЗнч(Введенное) <> Тип("Число") ТогдаЭлементыФормы.МеткаПодсказка.Текст = "Введите, пожалуйста, число!";Возврат;КонецЕсли;Если Введенное < 1 Или Введенное > 100 ТогдаЭлементыФормы.МеткаПодсказка.Текст = "Число должно быть от 1 до 100!";Возврат;КонецЕсли;Если Введенное = ЗагаданноеЧисло ТогдаЭлементыФормы.МеткаПодсказка.Текст = "Поздравляем! Вы угадали число за " + Строка(Попытки) + " попыток.";ИначеЕсли Введенное < ЗагаданноеЧисло ТогдаЭлементыФормы.МеткаПодсказка.Текст = "Загаданное число больше.";ИначеЭлементыФормы.МеткаПодсказка.Текст = "Загаданное число меньше.";КонецЕсли;ЭлементыФормы.ПолеВвода.Значение = Неопределено;ЭлементыФормы.ПолеВвода.УстановитьФокус();КонецПроцедуры—
## 3. Как связать код с кнопкой
— В Конфигураторе откройте форму.
— Выделите кнопкуКнопкаПроверить.
— В свойствах найдите событие «Нажатие».
— Нажмите «Создать» или «Обработать» и вставьте имя процедуры:КнопкаПроверитьНажатие.
— Код процедуры должен быть именно таким, как в примере.—
## 4. Итог
— При открытии формы запускается
ПриОткрытии(), генерируется число.
— При нажатии кнопки вызываетсяКнопкаПроверитьНажатие(), проверяется введённое число и выводится подсказка.—
Если нужно, могу помочь с кодом для кнопки «Начать заново» или другими элементами.
-
АвторЗаписи