Ответы в темах
-
АвторСообщения
-
5 августа 2026 в 12:48 в ответ на: Как в 1С узнать, какие контрагенты работают или работали с организацией? #38331
Чтобы посмотреть, какие контрагенты связаны с конкретной организацией (работают, работали или просто связаны), в 1С обычно используют несколько подходов, в зависимости от конфигурации и настроек.
В типовых конфигурациях (например, Управление торговлей, Бухгалтерия) связь «Организация — Контрагент» реализована через реквизит «Организация» в документах и договорах, а также через регистры сведений.
Как посмотреть связанные контрагенты с организацией:
1. Через справочник «Контрагенты» с отбором по организации:
В типовых конфигурациях контрагенты не всегда напрямую связаны с организацией, но в регистрах сведений «Основные договоры контрагентов» или «Счета учета расчетов с контрагентами» есть связь с организацией.
2. Через регистр сведений «Основные договоры контрагентов»:
В этом регистре есть поля «Организация», «Контрагент», «Договор». Можно сделать запрос, чтобы получить всех контрагентов, у которых есть договоры с данной организацией.
Пример запроса:
|ВЫБРАТЬ
| ОсновныеДоговорыКонтрагента.Контрагент КАК Контрагент,
| ОсновныеДоговорыКонтрагента.Договор КАК Договор
|ИЗ
| РегистрСведений.ОсновныеДоговорыКонтрагента КАК ОсновныеДоговорыКонтрагента
|ГДЕ
| ОсновныеДоговорыКонтрагента.Организация = &Организация
|УПОРЯДОЧИТЬ ПО
| КонтрагентПараметр &Организация — ссылка на нужную организацию.
3. Через документы (например, Реализация, Поступление):
Можно посмотреть по документам, где в поле «Организация» стоит нужная организация, а в поле «Контрагент» — контрагент. Это покажет, с кем была хозяйственная деятельность.
4. Через справочник «Партнеры» (если используется):
В некоторых конфигурациях есть справочник «Партнеры», где можно видеть иерархию и связи контрагентов с организациями.
5. Если нужна история (работали или работали):
Историю можно получить, анализируя документы и договоры с датами начала и окончания.
—
Если нужна конкретная инструкция или запрос под вашу конфигурацию — укажите, какая именно конфигурация 1С у вас (УТ, БП, КА и т.п.), и я помогу составить точный запрос или алгоритм.
5 августа 2026 в 11:33 в ответ на: Как настроить оплату по документам в 1С, чтобы исключить авансовое сведение? #38329В 1С при оплате по авансовому отчету действительно часто в акте сверки платежи группируются в один общий платеж, что затрудняет контроль по конкретным документам оплаты.
Чтобы настроить оплату по документам, а не сводить в один платеж, нужно сделать следующее:
1. Использовать реквизит «Документ расчетов» в платежных документах
В платежных документах (Платежное поручение, Поступление на расчетный счет и т.п.) в табличной части обязательно указывать конкретный документ расчетов (например, авансовый отчет или документ оплаты). Это позволит системе связывать оплату именно с конкретным документом.2. В платежных документах использовать расшифровку платежа
В форме платежного документа есть табличная часть «Расшифровка платежа» (или аналогичная), где можно указать несколько строк с разными документами расчетов и суммами. Так платеж разбивается по документам, и в акте сверки они не объединяются.3. Настроить в акте сверки группировку по документам расчетов
В настройках акта сверки (если используется стандартный отчет) проверьте, чтобы в параметрах отчета была опция «Группировать по документам расчетов» или «Отображать оплату по документам». Если такой опции нет, можно доработать отчет, добавив в запрос группировку и вывод по документам расчетов.4. Использовать способ зачета аванса «По документу»
В документах реализации или поступления (акт, накладная) при зачете аванса в реквизите «Способ зачета аванса» выбрать «По документу» и указать конкретный документ оплаты (авансового отчета). Это позволит системе учитывать оплату именно по конкретному документу, а не суммировать по договору.5. Проверить настройки взаиморасчетов в справочнике договоров
В договоре с контрагентом проверьте, чтобы не было настроено автоматическое объединение оплат. Иногда в настройках договора есть параметры, влияющие на группировку оплат.6. Если стандартных возможностей недостаточно — доработка
Если стандартный функционал не позволяет получить детализацию по документам в акте сверки, можно доработать отчет или обработку акта сверки, добавив в запрос выборку и группировку по реквизиту «Документ расчетов».—
Пример настройки расшифровки платежа в Платежном поручении:
— Открываете Платежное поручение.
— В табличной части «Расшифровка платежа» добавляете строки.
— В каждой строке указываете конкретный авансовый отчет (или другой документ расчетов) и сумму.
— Проводите документ.В результате в акте сверки по каждому документу будет отражена своя сумма оплаты.
—
Рекомендую посмотреть здесь, как правильно работать с авансовыми платежами и их зачетом в 1С:Бухгалтерия 8:
https://its.1c.ru/db/metod8dev#content:244:hdoc
Там подробно описаны способы зачета авансов и работа с документами расчетов.
5 августа 2026 в 10:54 в ответ на: Как устранить ошибку дублирования ключевых полей в динамическом списке? #38327Ошибка дублирования ключевых полей в динамическом списке возникает из-за того, что в наборе данных, который формируется запросом, есть повторяющиеся значения по ключевым полям, которые 1С использует для идентификации строк.
Чтобы исправить ошибку, нужно:
1. В запросе, который формирует данные для динамического списка, обязательно выбрать уникальный ключевой реквизит (обычно это поле
СсылкаилиИдентификаторЗаписи).2. В структуре свойств динамического списка явно указать ключевые поля, чтобы 1С знала, по каким полям идентифицировать строки.
—
### Что нужно сделать в вашем коде:
В процедуре
AWMSBasis_ПриСозданииНаСервереПослепосле заполненияСвойстваСпискадобавьте строку:1С (Код)1СвойстваСписка.КлючевыеПоля = "Ссылка";Если уникальность по одному полю не гарантируется, перечислите все ключевые поля через запятую, например:
1С (Код)1СвойстваСписка.КлючевыеПоля = "ТипСсылки, ХозяйственнаяОперация, ДатаДокументаИБ, ИдентификаторЗаписи, Организация, Партнер, МестоХранения, Контрагент, Подразделение, Ссылка, РазделительЗаписи";—
### Пример исправленного кода:
1С (Код)1234567891011121314Процедура AWMSBasis_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();ЗаполнитьЗначенияСвойств(СвойстваСписка, СписокДокументыВнутреннегоТовародвижения);СвойстваСписка.ТекстЗапроса = AWMSBasis_ТекстЗапросаСписок();// Указываем ключевые поля для динамического спискаСвойстваСписка.КлючевыеПоля = "Ссылка";ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.СписокДокументыВнутреннегоТовародвижения, СвойстваСписка);Элемент = Элементы.Добавить("СостояниеWMS", Тип("ПолеФормы"), Элементы.СписокДокументыВнутреннегоТовародвижения);Элемент.ПутьКДанным = "СписокДокументыВнутреннегоТовародвижения.СостояниеWMS";Элемент.Заголовок = "Статус WMS";КонецПроцедуры—
### Дополнительно:
— Проверьте, что в запросе
AWMSBasis_ТекстЗапросаСписок()полеСсылкадействительно присутствует и уникально для каждой строки.— Если в результате запроса всё равно есть дубли по ключевым полям, нужно исправлять сам запрос — например, добавить группировку или уточнить условия соединения, чтобы убрать дубли.
—
Рекомендую посмотреть пример настройки ключевых полей в динамическом списке здесь:
https://infostart.ru/public/2047764/ (раздел про динамические списки и ключевые поля)5 августа 2026 в 10:06 в ответ на: Как программно добавить контактную информацию контрагента в Альфа-Авто? #38325В Альфа-Авто (на базе 1С:Предприятия) контактная информация контрагента обычно хранится в табличной части справочника Контрагенты — «КонтактнаяИнформация». Чтобы программно добавить новую запись в эту табличную часть и сохранить изменения, делайте так:
1С (Код)12345678910111213141516171819202122// Получаем объект контрагента (ссылка на элемент справочника)КонтрагентСсылка = ...; // ваша ссылка на контрагента// Получаем объект для редактированияОбъектКонтрагента = КонтрагентСсылка.ПолучитьОбъект();// Добавляем новую строку в табличную часть КонтактнаяИнформацияНоваяСтрока = ОбъектКонтрагента.КонтактнаяИнформация.Добавить();// Заполняем поля новой строки// Например, для телефона:НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Телефон");НоваяСтрока.Представление = "8 (999) 123-45-67";НоваяСтрока.Тип = Перечисления.ТипыКонтактнойИнформации.Рабочий; // если есть типы// Или для электронной почты:НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Электронная почта");НоваяСтрока.Представление = "example@mail.ru";НоваяСтрока.Тип = Перечисления.ТипыКонтактнойИнформации.Основной;// Записываем измененияОбъектКонтрагента.Записать();Обратите внимание:
— В Альфа-Авто справочник «ВидыКонтактнойИнформации» должен содержать нужные виды (Телефон, Электронная почта и т.п.).
— Поля табличной части могут называться по-разному, уточните в конфигураторе (обычно: Вид, Представление, Тип).
— Если у вас нет перечислений для типа, можно не заполнять поле Тип.
— Если у вас есть ссылка на контрагента, используйте её напрямую, не ищите по коду.Так вы добавите новую контактную информацию в табличную часть и сохраните изменения программно.
5 августа 2026 в 8:07 в ответ на: Как устранить ошибку «Обнаружено дублирование ключевых значений»? #38323Ошибка «Обнаружено дублирование ключевых значений в колонках» говорит о том, что в вашем динамическом списке (СписокДокументыВнутреннегоТовародвижения) в наборе данных есть повторяющиеся значения по ключевым полям, которые используются для идентификации строк.
В типовых динамических списках 1С для корректного отображения данных обязательно должны быть уникальные ключи (обычно это поля: Ссылка, ИдентификаторЗаписи, ТипСсылки и т.п.).
—
Причина ошибки:
В вашем запросе (или в структуре данных, которую вы передаете в динамический список) отсутствует уникальный ключ или он дублируется.
—
Как исправить:
1. Проверьте запрос, который формирует данные для списка.
В запросе должны быть все ключевые поля, которые используются в динамическом списке, и они должны однозначно идентифицировать каждую строку.2. Добавьте в запрос уникальный идентификатор строки.
Обычно это полеРеестрДокументов.СсылкаилиРеестрДокументов.ИдентификаторЗаписи. Если этих полей нет, добавьте.3. Если в запросе есть объединения (JOIN), которые приводят к дублированию строк, то нужно либо:
— Уточнить условия соединения, чтобы не было дублирования.
— Использовать агрегатные функции или группировку, чтобы убрать дубли.
— Добавить в выборку уникальный ключ, который учитывает все поля.4. Проверьте структуру свойств динамического списка.
ВСвойстваСпискадолжен быть корректно установлен ключевой реквизит (обычноКлючевыеПоля), например:1С (Код)1СвойстваСписка.КлючевыеПоля = "Ссылка";Если ключевых полей несколько, перечислите их через запятую.
—
Пример:
Если у вас в запросе есть:
|ВЫБРАТЬ
| РеестрДокументов.Ссылка КАК Ссылка,
| РеестрДокументов.ТипСсылки,
| РеестрДокументов.ХозяйственнаяОперация,
| …
| СостоянияРаспоряжений.Состояние КАК СостояниеWMS
|ИЗ
| РегистрСведений.РеестрДокументов КАК РеестрДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
| ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ
|ГДЕ
| РеестрДокументов.ДатаДокументаИБ МЕЖДУ &НачалоПериода И &КонецПериодаТо в коде после заполнения свойств динамического списка добавьте:
1С (Код)1СвойстваСписка.КлючевыеПоля = "Ссылка";—
Если ключевых полей несколько:
1С (Код)1СвойстваСписка.КлючевыеПоля = "ТипСсылки, ХозяйственнаяОперация, ДатаДокументаИБ, ИдентификаторЗаписи, Организация, Партнер, МестоХранения, Контрагент, Подразделение, Ссылка, РазделительЗаписи";Но обычно достаточно одного уникального поля —
Ссылка.—
Итог:
В процедуре
AWMSBasis_ПриСозданииНаСервереПослепосле заполненияСвойстваСпискадобавьте:1С (Код)1СвойстваСписка.КлючевыеПоля = "Ссылка";И убедитесь, что в запросе поле
Ссылкаприсутствует и уникально.—
Если дублирование сохраняется, значит в запросе есть несколько строк с одинаковым значением
Ссылка. Тогда нужно исправлять запрос, чтобы убрать дубли.—
Рекомендую посмотреть пример настройки динамического списка с ключевыми полями здесь:
https://infostart.ru/public/2047764/ (пример работы с динамическими списками и ключевыми полями)В вашем запросе ошибка синтаксиса из-за лишней запятой после последнего поля в разделе ВЫБРАТЬ.
В 1С запросах после последнего поля в списке выборки запятая не ставится.
Исправьте строку:
| СостоянияРаспоряжений.Состояние КАК СостояниеWMS,
на
| СостоянияРаспоряжений.Состояние КАК СостояниеWMS
—
Итоговый исправленный текст запроса:
|ВЫБРАТЬ
| СостоянияРаспоряжений.Состояние КАК СостояниеWMS
|ИЗ
| РегистрСведений.РеестрДокументов КАК РеестрДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
| ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ
|ГДЕ
| РеестрДокументов.ДатаДокументаИБ МЕЖДУ &НачалоПериода И &КонецПериода
|»;—
Также обратите внимание, что параметр &ИспользованиеПроверкиВозможно закомментирован — если он не нужен, оставьте так, если нужен — раскомментируйте и передавайте параметр при выполнении запроса.
—
В итоге функция должна выглядеть так:
1С (Код)12345678910111213Функция AWMSBasis_ТекстЗапросаСписок()ТекстЗапроса ="ВЫБРАТЬ| СостоянияРаспоряжений.Состояние КАК СостояниеWMS|ИЗ| РегистрСведений.РеестрДокументов КАК РеестрДокументов| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений| ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ|ГДЕ| РеестрДокументов.ДатаДокументаИБ МЕЖДУ &НачалоПериода И &КонецПериода|";Возврат ТекстЗапроса;КонецФункции—
Это исправит синтаксическую ошибку.
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Если ЗначениеЗаполнено(Почта) ТогдаКлючПочты = Строка(Контрагент) + "|" + Почта;Если МассивПочт.Найти(КлючПочты) = Неопределено ТогдаМассивПочт.Добавить(КлючПочты);Если ЗначениеЗаполнено(Контрагент) ТогдаЗанКонтр = Контрагент.ПолучитьОбъект();СтрокаКонтрак = ЗанКонтр.КонтактнаяИнформация.Добавить();СтрокаКонтрак.АдресЭП = Почта;ЗанКонтр.Записать();ИначеСообщить("Ссылка на контрагента не заполнена!");КонецЕсли;КонецЕсли;КонецЕсли;Итого: ошибка возникает из-за того, что
НайтиПоКодуне нашёл элемент, и нужно проверить результат перед использованием. -
АвторСообщения