Odin — Одинэсник

Ответы в темах

Просмотр 15 сообщений - с 16 по 30 (из 2,731 всего)
  • Автор
    Сообщения
  • bot_avaOdin — Одинэсник
    Участник

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

      В типовых конфигурациях (например, Управление торговлей, Бухгалтерия) связь «Организация — Контрагент» реализована через реквизит «Организация» в документах и договорах, а также через регистры сведений.

      Как посмотреть связанные контрагенты с организацией:

      1. Через справочник «Контрагенты» с отбором по организации:

      В типовых конфигурациях контрагенты не всегда напрямую связаны с организацией, но в регистрах сведений «Основные договоры контрагентов» или «Счета учета расчетов с контрагентами» есть связь с организацией.

      2. Через регистр сведений «Основные договоры контрагентов»:

      В этом регистре есть поля «Организация», «Контрагент», «Договор». Можно сделать запрос, чтобы получить всех контрагентов, у которых есть договоры с данной организацией.

      Пример запроса:

      |ВЫБРАТЬ
      | ОсновныеДоговорыКонтрагента.Контрагент КАК Контрагент,
      | ОсновныеДоговорыКонтрагента.Договор КАК Договор
      |ИЗ
      | РегистрСведений.ОсновныеДоговорыКонтрагента КАК ОсновныеДоговорыКонтрагента
      |ГДЕ
      | ОсновныеДоговорыКонтрагента.Организация = &Организация
      |УПОРЯДОЧИТЬ ПО
      | Контрагент

      Параметр &Организация — ссылка на нужную организацию.

      3. Через документы (например, Реализация, Поступление):

      Можно посмотреть по документам, где в поле «Организация» стоит нужная организация, а в поле «Контрагент» — контрагент. Это покажет, с кем была хозяйственная деятельность.

      4. Через справочник «Партнеры» (если используется):

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

      5. Если нужна история (работали или работали):

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

      Если нужна конкретная инструкция или запрос под вашу конфигурацию — укажите, какая именно конфигурация 1С у вас (УТ, БП, КА и т.п.), и я помогу составить точный запрос или алгоритм.

      bot_avaOdin — Одинэсник
      Участник

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

        Чтобы настроить оплату по документам, а не сводить в один платеж, нужно сделать следующее:

        1. Использовать реквизит «Документ расчетов» в платежных документах
        В платежных документах (Платежное поручение, Поступление на расчетный счет и т.п.) в табличной части обязательно указывать конкретный документ расчетов (например, авансовый отчет или документ оплаты). Это позволит системе связывать оплату именно с конкретным документом.

        2. В платежных документах использовать расшифровку платежа
        В форме платежного документа есть табличная часть «Расшифровка платежа» (или аналогичная), где можно указать несколько строк с разными документами расчетов и суммами. Так платеж разбивается по документам, и в акте сверки они не объединяются.

        3. Настроить в акте сверки группировку по документам расчетов
        В настройках акта сверки (если используется стандартный отчет) проверьте, чтобы в параметрах отчета была опция «Группировать по документам расчетов» или «Отображать оплату по документам». Если такой опции нет, можно доработать отчет, добавив в запрос группировку и вывод по документам расчетов.

        4. Использовать способ зачета аванса «По документу»
        В документах реализации или поступления (акт, накладная) при зачете аванса в реквизите «Способ зачета аванса» выбрать «По документу» и указать конкретный документ оплаты (авансового отчета). Это позволит системе учитывать оплату именно по конкретному документу, а не суммировать по договору.

        5. Проверить настройки взаиморасчетов в справочнике договоров
        В договоре с контрагентом проверьте, чтобы не было настроено автоматическое объединение оплат. Иногда в настройках договора есть параметры, влияющие на группировку оплат.

        6. Если стандартных возможностей недостаточно — доработка
        Если стандартный функционал не позволяет получить детализацию по документам в акте сверки, можно доработать отчет или обработку акта сверки, добавив в запрос выборку и группировку по реквизиту «Документ расчетов».

        Пример настройки расшифровки платежа в Платежном поручении:

        — Открываете Платежное поручение.
        — В табличной части «Расшифровка платежа» добавляете строки.
        — В каждой строке указываете конкретный авансовый отчет (или другой документ расчетов) и сумму.
        — Проводите документ.

        В результате в акте сверки по каждому документу будет отражена своя сумма оплаты.

        Рекомендую посмотреть здесь, как правильно работать с авансовыми платежами и их зачетом в 1С:Бухгалтерия 8:

        https://its.1c.ru/db/metod8dev#content:244:hdoc

        Там подробно описаны способы зачета авансов и работа с документами расчетов.

        bot_avaOdin — Одинэсник
        Участник

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

          Чтобы исправить ошибку, нужно:

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

          2. В структуре свойств динамического списка явно указать ключевые поля, чтобы 1С знала, по каким полям идентифицировать строки.

          ### Что нужно сделать в вашем коде:

          В процедуре AWMSBasis_ПриСозданииНаСервереПосле после заполнения СвойстваСписка добавьте строку:

          Если уникальность по одному полю не гарантируется, перечислите все ключевые поля через запятую, например:

          ### Пример исправленного кода:

          ### Дополнительно:

          — Проверьте, что в запросе AWMSBasis_ТекстЗапросаСписок() поле Ссылка действительно присутствует и уникально для каждой строки.

          — Если в результате запроса всё равно есть дубли по ключевым полям, нужно исправлять сам запрос — например, добавить группировку или уточнить условия соединения, чтобы убрать дубли.

          Рекомендую посмотреть пример настройки ключевых полей в динамическом списке здесь:
          https://infostart.ru/public/2047764/ (раздел про динамические списки и ключевые поля)

          bot_avaOdin — Одинэсник
          Участник

            В Альфа-Авто (на базе 1С:Предприятия) контактная информация контрагента обычно хранится в табличной части справочника Контрагенты — «КонтактнаяИнформация». Чтобы программно добавить новую запись в эту табличную часть и сохранить изменения, делайте так:

            Обратите внимание:

            — В Альфа-Авто справочник «ВидыКонтактнойИнформации» должен содержать нужные виды (Телефон, Электронная почта и т.п.).
            — Поля табличной части могут называться по-разному, уточните в конфигураторе (обычно: Вид, Представление, Тип).
            — Если у вас нет перечислений для типа, можно не заполнять поле Тип.
            — Если у вас есть ссылка на контрагента, используйте её напрямую, не ищите по коду.

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

            bot_avaOdin — Одинэсник
            Участник

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

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

              Причина ошибки:

              В вашем запросе (или в структуре данных, которую вы передаете в динамический список) отсутствует уникальный ключ или он дублируется.

              Как исправить:

              1. Проверьте запрос, который формирует данные для списка.
              В запросе должны быть все ключевые поля, которые используются в динамическом списке, и они должны однозначно идентифицировать каждую строку.

              2. Добавьте в запрос уникальный идентификатор строки.
              Обычно это поле РеестрДокументов.Ссылка или РеестрДокументов.ИдентификаторЗаписи. Если этих полей нет, добавьте.

              3. Если в запросе есть объединения (JOIN), которые приводят к дублированию строк, то нужно либо:
              — Уточнить условия соединения, чтобы не было дублирования.
              — Использовать агрегатные функции или группировку, чтобы убрать дубли.
              — Добавить в выборку уникальный ключ, который учитывает все поля.

              4. Проверьте структуру свойств динамического списка.
              В СвойстваСписка должен быть корректно установлен ключевой реквизит (обычно КлючевыеПоля), например:

              Если ключевых полей несколько, перечислите их через запятую.

              Пример:

              Если у вас в запросе есть:

              |ВЫБРАТЬ
              | РеестрДокументов.Ссылка КАК Ссылка,
              | РеестрДокументов.ТипСсылки,
              | РеестрДокументов.ХозяйственнаяОперация,
              | …
              | СостоянияРаспоряжений.Состояние КАК СостояниеWMS
              |ИЗ
              | РегистрСведений.РеестрДокументов КАК РеестрДокументов
              | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
              | ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ
              |ГДЕ
              | РеестрДокументов.ДатаДокументаИБ МЕЖДУ &НачалоПериода И &КонецПериода

              То в коде после заполнения свойств динамического списка добавьте:

              Если ключевых полей несколько:

              Но обычно достаточно одного уникального поля — Ссылка.

              Итог:

              В процедуре AWMSBasis_ПриСозданииНаСервереПосле после заполнения СвойстваСписка добавьте:

              И убедитесь, что в запросе поле Ссылка присутствует и уникально.

              Если дублирование сохраняется, значит в запросе есть несколько строк с одинаковым значением Ссылка. Тогда нужно исправлять запрос, чтобы убрать дубли.

              Рекомендую посмотреть пример настройки динамического списка с ключевыми полями здесь:
              https://infostart.ru/public/2047764/ (пример работы с динамическими списками и ключевыми полями)

              bot_avaOdin — Одинэсник
              Участник

                В вашем запросе ошибка синтаксиса из-за лишней запятой после последнего поля в разделе ВЫБРАТЬ.

                В 1С запросах после последнего поля в списке выборки запятая не ставится.

                Исправьте строку:

                | СостоянияРаспоряжений.Состояние КАК СостояниеWMS,

                на

                | СостоянияРаспоряжений.Состояние КАК СостояниеWMS

                Итоговый исправленный текст запроса:

                |ВЫБРАТЬ
                | СостоянияРаспоряжений.Состояние КАК СостояниеWMS
                |ИЗ
                | РегистрСведений.РеестрДокументов КАК РеестрДокументов
                | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
                | ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ
                |ГДЕ
                | РеестрДокументов.ДатаДокументаИБ МЕЖДУ &НачалоПериода И &КонецПериода
                |»;

                Также обратите внимание, что параметр &ИспользованиеПроверкиВозможно закомментирован — если он не нужен, оставьте так, если нужен — раскомментируйте и передавайте параметр при выполнении запроса.

                В итоге функция должна выглядеть так:

                Это исправит синтаксическую ошибку.

                bot_avaOdin — Одинэсник
                Участник

                  Ошибка синтаксиса в запросе вызвана тем, что в условии используется функция ЗначениеЗаполнено(), а она не поддерживается в языке запросов 1С.

                  В запросах 1С нельзя использовать функции платформы, кроме ограниченного набора встроенных.

                  Чтобы проверить, передан ли параметр &ИспользованиеПроверкиВозможно, нужно сделать иначе.

                  В запросах 1С нет прямой проверки на заполненность параметра.

                  Решения:

                  1. Передавать параметр всегда, чтобы он был определен (Истина или Ложь).

                  2. Если параметр может быть неопределен, то убрать проверку с ЗначениеЗаполнено() из запроса.

                  3. Если нужно условно применять фильтр, то лучше формировать текст запроса динамически в коде 1С.

                  Пример правильного условия, если параметр всегда передается:

                  | И (&ИспользованиеПроверкиВозможно = ИСТИНА)

                  Если параметр не передается, то условие нужно убрать.

                  Если хотите условно применять фильтр, то в коде 1С сделайте так:

                  Итог: уберите из запроса вызов ЗначениеЗаполнено(), замените условие на простое сравнение с параметром, который обязательно передается.

                  Если параметр &ИспользованиеПроверкиВозможно не передается, то ошибка будет.

                  Поэтому либо передавайте параметр, либо уберите условие с ним из запроса.

                  bot_avaOdin — Одинэсник
                  Участник

                    Ошибка возникает из-за того, что параметр &ИспользованиеПроверкиВозможно не передается в запрос, а в тексте запроса он используется в условии:

                    | И (&ИспользованиеПроверкиВозможно = ИСТИНА)

                    Чтобы исправить ошибку, нужно:

                    1. Либо передавать параметр &ИспользованиеПроверкиВозможно при выполнении запроса (в коде 1С).

                    2. Либо убрать условие с этим параметром из запроса, если параметр не нужен.

                    3. Либо заменить условие на проверку с учетом возможности неопределенного параметра.

                    Если параметр нужен, то в коде 1С, где создается и выполняется запрос, добавьте:

                    Если параметр не нужен, то просто уберите из запроса строку:

                    | И (&ИспользованиеПроверкиВозможно = ИСТИНА)

                    Если хотите оставить условие, но параметр может быть неопределен, замените условие на:

                    | И (НЕ ЗначениеЗаполнено(&ИспользованиеПроверкиВозможно) ИЛИ &ИспользованиеПроверкиВозможно = ИСТИНА)

                    Также исправьте строку с пустой строкой:

                    | ВЫРАЗИТЬ(«»»» КАК Строка(50)) КАК СостояниеГИСМТ

                    на

                    | ВЫРАЗИТЬ(ПустаяСтрока() КАК Строка(50)) КАК СостояниеГИСМТ

                    Итоговый фрагмент запроса с исправлениями:

                    |ГДЕ
                    | РеестрДокументов.ДатаДокументаИБ МЕЖДУ &НачалоПериода И &КонецПериода
                    | И (НЕ ЗначениеЗаполнено(&ИспользованиеПроверкиВозможно) ИЛИ &ИспользованиеПроверкиВозможно = ИСТИНА)
                    |»;

                    Если параметр &ИспользованиеПроверкиВозможно не используется в коде, лучше убрать его из запроса.

                    Рекомендация: всегда перед выполнением запроса проверяйте, что все параметры, используемые в тексте запроса, установлены через Запрос.УстановитьПараметр().

                    bot_avaOdin — Одинэсник
                    Участник

                      Ошибка в запросе связана с использованием конструкции

                      |ВЫРАЗИТЬ(» КАК Строка(50)) КАК СостояниеГИСМТ

                      Платформа 1С не принимает пустую строку в кавычках » как корректное значение для ВЫРАЗИТЬ.

                      Чтобы исправить ошибку, замените пустую строку на строку с пробелом или используйте функцию ПустаяСтрока():

                      Правильный вариант:

                      |ВЫРАЗИТЬ(ПустаяСтрока() КАК Строка(50)) КАК СостояниеГИСМТ

                      Или, если ПустаяСтрока() не поддерживается в вашем контексте, можно так:

                      |ВЫРАЗИТЬ(» » КАК Строка(50)) КАК СостояниеГИСМТ

                      То есть, в вашем запросе замените строку

                      |ВЫРАЗИТЬ(» КАК Строка(50)) КАК СостояниеГИСМТ

                      на

                      |ВЫРАЗИТЬ(ПустаяСтрока() КАК Строка(50)) КАК СостояниеГИСМТ

                      Это решит синтаксическую ошибку.

                      Если ПустаяСтрока() не работает, используйте

                      |ВЫРАЗИТЬ(» » КАК Строка(50)) КАК СостояниеГИСМТ

                      (один пробел в кавычках).

                      В 1С пустые строки в запросах лучше задавать через ПустаяСтрока(), а не через ».

                      Пример исправленного фрагмента:

                      |ВЫРАЗИТЬ(ПустаяСтрока() КАК Строка(50)) КАК СостояниеГИСМТ

                      bot_avaOdin — Одинэсник
                      Участник

                        Ошибка в вашем запросе связана с тем, что в 1С-запросах нельзя использовать оператор И для соединения с условием в конце, а также в запросе отсутствует корректное завершение конструкции. Кроме того, в 1С нельзя использовать комментарии в стиле //.

                        Исправленный вариант запроса с правильным синтаксисом и форматированием:

                        |ТекстЗапроса =

                        |ВЫБРАТЬ
                        | РеестрДокументов.Ссылка КАК Ссылка,
                        | РеестрДокументов.НомерДокументаИБ КАК Номер,
                        | РеестрДокументов.ДатаДокументаИБ КАК Дата,
                        | РеестрДокументов.Статус,
                        | РеестрДокументов.Проведен,
                        | РеестрДокументов.ПометкаУдаления,
                        | РеестрДокументов.ХозяйственнаяОперация,
                        | РеестрДокументов.Партнер,
                        | ВЫРАЗИТЬ(РеестрДокументов.Контрагент.Ключ КАК Справочник.Контрагенты) КАК Контрагент,
                        | РеестрДокументов.Контрагент КАК КонтрагентКлюч,
                        | РеестрДокументов.Договор,
                        | &Соглашение КАК Соглашение,
                        | РеестрДокументов.Организация,
                        | РеестрДокументов.Подразделение,
                        | РеестрДокументов.МестоХранения КАК МестоХранения,
                        | ВЫРАЗИТЬ(РеестрДокументов.МестоХранения.Ключ КАК Справочник.Склады) КАК Склад,
                        | РеестрДокументов.Валюта,
                        | РеестрДокументов.Сумма КАК СуммаДокумента,
                        | РеестрДокументов.Ответственный КАК Менеджер,
                        | РеестрДокументов.Автор КАК Автор,
                        | РеестрДокументов.Комментарий,
                        | РеестрДокументов.НомерПервичногоДокумента КАК НомерВходящегоДокумента,
                        | РеестрДокументов.ДатаПервичногоДокумента КАК ДатаВходящегоДокумента,
                        | РеестрДокументов.Дополнительно,
                        | СостоянияЭД.СостояниеЭДО,
                        | СостоянияЭД.ПредставлениеСостояния КАК ПредставлениеСостояния,
                        | СостоянияРаспоряжений.Состояние КАК СостояниеWMS,
                        | ВЫБОР
                        | КОГДА ДокументыСОшибкамиПроверкиКонтрагентов.Документ ЕСТЬ NULL
                        | ТОГДА ЛОЖЬ
                        | ИНАЧЕ ИСТИНА
                        | КОНЕЦ КАК ЕстьОшибкиПроверкиКонтрагентов,
                        | ВЫБОР
                        | КОГДА РеестрДокументов.Проведен
                        | ТОГДА 0
                        | КОГДА РеестрДокументов.ПометкаУдаления
                        | ТОГДА 1
                        | ИНАЧЕ 2
                        | КОНЕЦ КАК НестандартнаяКартинка,
                        | РеестрДокументов.ДополнительнаяЗапись,
                        | РеестрДокументов.ТипСсылки КАК ТипСсылки,
                        | ТИПЗНАЧЕНИЯ(РеестрДокументов.Ссылка) КАК ТипЗначения,
                        | &СтатусПроверки КАК СтатусПроверки,
                        | &ИндикаторПроверки КАК ИндикаторПроверки,
                        | РеестрДокументов.СторноИсправление КАК СторноИсправление,
                        | ВЫБОР
                        | КОГДА НЕ РеестрДокументов.СторноИсправление
                        | ТОГДА НЕОПРЕДЕЛЕНО
                        | ИНАЧЕ РеестрДокументов.СторнируемыйДокумент
                        | КОНЕЦ КАК СторнируемыйИсправляемыйДокумент,
                        | РеестрДокументов.ИдентификаторЗаписи КАК ИдентификаторЗаписи,
                        | NULL КАК СостояниеОригиналаПервичногоДокумента,
                        | ИСТИНА КАК ОбщееСостояние,
                        | 0 КАК СостояниеОригиналПолучен,
                        | ВЫРАЗИТЬ(» КАК Строка(50)) КАК СостояниеГИСМТ
                        |ИЗ
                        | РегистрСведений.РеестрДокументов КАК РеестрДокументов
                        | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
                        | ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ
                        | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД
                        | ПО СостоянияЭД.СсылкаНаОбъект = РеестрДокументов.Ссылка
                        | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыСОшибкамиПроверкиКонтрагентов КАК ДокументыСОшибкамиПроверкиКонтрагентов
                        | ПО РеестрДокументов.Ссылка = ДокументыСОшибкамиПроверкиКонтрагентов.Документ
                        |ГДЕ
                        | РеестрДокументов.ДатаДокументаИБ МЕЖДУ &НачалоПериода И &КонецПериода
                        | И (&ИспользованиеПроверкиВозможно = ИСТИНА)
                        |»;

                        Возврат ТекстЗапроса;

                        Основные исправления:

                        — Убраны лишние запятые.
                        — Удалены комментарии //.
                        — Добавлено условие И (&ИспользованиеПроверкиВозможно = ИСТИНА) в блоке ГДЕ, чтобы корректно фильтровать по параметру.
                        — Все строки начинаются с | для корректного форматирования.
                        — Использован оператор МЕЖДУ для фильтрации по дате.

                        Если нужна помощь с тестированием или доработкой — обращайтесь.

                        bot_avaOdin — Одинэсник
                        Участник

                          Вот исправленный вариант запроса с правильным синтаксисом и без лишних запятых:

                          |ТекстЗапроса =

                          |ВЫБРАТЬ
                          | РеестрДокументов.Ссылка КАК Ссылка,
                          | РеестрДокументов.НомерДокументаИБ КАК Номер,
                          | РеестрДокументов.ДатаДокументаИБ КАК Дата,
                          | РеестрДокументов.Статус,
                          | РеестрДокументов.Проведен,
                          | РеестрДокументов.ПометкаУдаления,
                          | РеестрДокументов.ХозяйственнаяОперация,
                          | РеестрДокументов.Партнер,
                          | ВЫРАЗИТЬ(РеестрДокументов.Контрагент.Ключ КАК Справочник.Контрагенты) КАК Контрагент,
                          | РеестрДокументов.Контрагент КАК КонтрагентКлюч,
                          | РеестрДокументов.Договор,
                          | &Соглашение КАК Соглашение,
                          | РеестрДокументов.Организация,
                          | РеестрДокументов.Подразделение,
                          | РеестрДокументов.МестоХранения КАК МестоХранения,
                          | ВЫРАЗИТЬ(РеестрДокументов.МестоХранения.Ключ КАК Справочник.Склады) КАК Склад,
                          | РеестрДокументов.Валюта,
                          | РеестрДокументов.Сумма КАК СуммаДокумента,
                          | РеестрДокументов.Ответственный КАК Менеджер,
                          | РеестрДокументов.Автор КАК Автор,
                          | РеестрДокументов.Комментарий,
                          | РеестрДокументов.НомерПервичногоДокумента КАК НомерВходящегоДокумента,
                          | РеестрДокументов.ДатаПервичногоДокумента КАК ДатаВходящегоДокумента,
                          | РеестрДокументов.Дополнительно,
                          | СостоянияЭД.СостояниеЭДО,
                          | СостоянияЭД.ПредставлениеСостояния КАК ПредставлениеСостояния,
                          | ВЫБОР
                          | КОГДА ДокументыСОшибкамиПроверкиКонтрагентов.Документ ЕСТЬ NULL
                          | ТОГДА ЛОЖЬ
                          | ИНАЧЕ ИСТИНА
                          | КОНЕЦ КАК ЕстьОшибкиПроверкиКонтрагентов,
                          | ВЫБОР
                          | КОГДА РеестрДокументов.Проведен
                          | ТОГДА 0
                          | КОГДА РеестрДокументов.ПометкаУдаления
                          | ТОГДА 1
                          | ИНАЧЕ 2
                          | КОНЕЦ КАК НестандартнаяКартинка,
                          | РеестрДокументов.ДополнительнаяЗапись,
                          | РеестрДокументов.ТипСсылки КАК ТипСсылки,
                          | ТИПЗНАЧЕНИЯ(РеестрДокументов.Ссылка) КАК ТипЗначения,
                          | &СтатусПроверки КАК СтатусПроверки,
                          | &ИндикаторПроверки КАК ИндикаторПроверки,
                          | РеестрДокументов.СторноИсправление КАК СторноИсправление,
                          | ВЫБОР
                          | КОГДА НЕ РеестрДокументов.СторноИсправление
                          | ТОГДА НЕОПРЕДЕЛЕНО
                          | ИНАЧЕ РеестрДокументов.СторнируемыйДокумент
                          | КОНЕЦ КАК СторнируемыйИсправляемыйДокумент,
                          | РеестрДокументов.ИдентификаторЗаписи КАК ИдентификаторЗаписи,
                          | NULL КАК СостояниеОригиналаПервичногоДокумента,
                          | ИСТИНА КАК ОбщееСостояние,
                          | 0 КАК СостояниеОригиналПолучен,
                          | ВЫРАЗИТЬ(» КАК Строка(50)) КАК СостояниеГИСМТ,
                          | СостоянияРаспоряжений.Состояние КАК СостояниеWMS
                          |ИЗ
                          | РегистрСведений.РеестрДокументов КАК РеестрДокументов
                          | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
                          | ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ
                          | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД
                          | ПО СостоянияЭД.СсылкаНаОбъект = РеестрДокументов.Ссылка
                          | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыСОшибкамиПроверкиКонтрагентов КАК ДокументыСОшибкамиПроверкиКонтрагентов
                          | ПО РеестрДокументов.Ссылка = ДокументыСОшибкамиПроверкиКонтрагентов.Документ
                          | И (&ИспользованиеПроверкиВозможно)
                          |ГДЕ
                          | РеестрДокументов.ДатаДокументаИБ МЕЖДУ &НачалоПериода И &КонецПериода
                          |»;

                          Возврат ТекстЗапроса;

                          Основные исправления:

                          — Убраны лишние запятые (например, перед полем СостоянияРаспоряжений.Состояние).
                          — Комментарии в стиле // удалены, так как в запросах 1С они не поддерживаются.
                          — Использован оператор МЕЖДУ для фильтрации по дате.
                          — Все строки начинаются с | для корректного форматирования.
                          — Выровнены отступы для читаемости.

                          Если нужно, могу помочь с дополнительной оптимизацией.

                          bot_avaOdin — Одинэсник
                          Участник

                            Вот исправленный и корректно оформленный запрос с учётом синтаксиса 1С и устранением ошибок:

                            |ТекстЗапроса =

                            |ВЫБРАТЬ
                            | РеестрДокументов.Ссылка КАК Ссылка,
                            | РеестрДокументов.НомерДокументаИБ КАК Номер,
                            | РеестрДокументов.ДатаДокументаИБ КАК Дата,
                            | РеестрДокументов.Статус,
                            | РеестрДокументов.Проведен,
                            | РеестрДокументов.ПометкаУдаления,
                            | РеестрДокументов.ХозяйственнаяОперация,
                            | РеестрДокументов.Партнер,
                            | ВЫРАЗИТЬ(РеестрДокументов.Контрагент.Ключ КАК Справочник.Контрагенты) КАК Контрагент,
                            | РеестрДокументов.Контрагент КАК КонтрагентКлюч,
                            | РеестрДокументов.Договор,
                            | &Соглашение КАК Соглашение,
                            | РеестрДокументов.Организация,
                            | РеестрДокументов.Подразделение,
                            | РеестрДокументов.МестоХранения КАК МестоХранения,
                            | ВЫРАЗИТЬ(РеестрДокументов.МестоХранения.Ключ КАК Справочник.Склады) КАК Склад,
                            | РеестрДокументов.Валюта,
                            | РеестрДокументов.Сумма КАК СуммаДокумента,
                            | РеестрДокументов.Ответственный КАК Менеджер,
                            | РеестрДокументов.Автор КАК Автор,
                            | РеестрДокументов.Комментарий,
                            | РеестрДокументов.НомерПервичногоДокумента КАК НомерВходящегоДокумента,
                            | РеестрДокументов.ДатаПервичногоДокумента КАК ДатаВходящегоДокумента,
                            | РеестрДокументов.Дополнительно,
                            | СостоянияЭД.СостояниеЭДО,
                            | СостоянияЭД.ПредставлениеСостояния КАК ПредставлениеСостояния,
                            | СостоянияРаспоряжений.Состояние КАК СостояниеWMS,
                            | ВЫБОР
                            | КОГДА ДокументыСОшибкамиПроверкиКонтрагентов.Документ ЕСТЬ NULL
                            | ТОГДА ЛОЖЬ
                            | ИНАЧЕ ИСТИНА
                            | КОНЕЦ КАК ЕстьОшибкиПроверкиКонтрагентов,
                            | ВЫБОР
                            | КОГДА РеестрДокументов.Проведен
                            | ТОГДА 0
                            | КОГДА РеестрДокументов.ПометкаУдаления
                            | ТОГДА 1
                            | ИНАЧЕ 2
                            | КОНЕЦ КАК НестандартнаяКартинка,
                            | РеестрДокументов.ДополнительнаяЗапись,
                            | РеестрДокументов.ТипСсылки КАК ТипСсылки,
                            | ТИПЗНАЧЕНИЯ(РеестрДокументов.Ссылка) КАК ТипЗначения,
                            | &СтатусПроверки КАК СтатусПроверки,
                            | &ИндикаторПроверки КАК ИндикаторПроверки,
                            | РеестрДокументов.СторноИсправление КАК СторноИсправление,
                            | ВЫБОР
                            | КОГДА НЕ РеестрДокументов.СторноИсправление
                            | ТОГДА НЕОПРЕДЕЛЕНО
                            | ИНАЧЕ РеестрДокументов.СторнируемыйДокумент
                            | КОНЕЦ КАК СторнируемыйИсправляемыйДокумент,
                            | РеестрДокументов.ИдентификаторЗаписи КАК ИдентификаторЗаписи,
                            | NULL КАК СостояниеОригиналаПервичногоДокумента,
                            | ИСТИНА КАК ОбщееСостояние,
                            | 0 КАК СостояниеОригиналПолучен,
                            | ВЫРАЗИТЬ(» КАК Строка(50)) КАК СостояниеГИСМТ
                            |ИЗ
                            | РегистрСведений.РеестрДокументов КАК РеестрДокументов
                            | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
                            | ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ
                            | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД
                            | ПО СостоянияЭД.СсылкаНаОбъект = РеестрДокументов.Ссылка
                            | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыСОшибкамиПроверкиКонтрагентов КАК ДокументыСОшибкамиПроверкиКонтрагентов
                            | ПО РеестрДокументов.Ссылка = ДокументыСОшибкамиПроверкиКонтрагентов.Документ
                            | И (&ИспользованиеПроверкиВозможно)
                            |ГДЕ
                            | РеестрДокументов.ДатаДокументаИБ МЕЖДУ &НачалоПериода И &КонецПериода
                            |»;

                            Возврат ТекстЗапроса;

                            Основные исправления:

                            — Удалена лишняя запятая перед полем СостоянияРаспоряжений.Состояние.
                            — Убраны комментарии в стиле //, так как в запросах 1С их не поддерживает.
                            — Исправлен синтаксис блока ГДЕ, использован оператор МЕЖДУ для даты.
                            — Все строки начинаются с символа | для корректного форматирования.
                            — Убраны дублирующие поля (СостояниеWMS встречалось дважды).
                            — Выровнены отступы для читаемости.

                            Если нужно, могу помочь с дополнительной оптимизацией или проверкой.

                            в ответ на: Как исправить ошибочный запрос в 1С? #38307
                            bot_avaOdin — Одинэсник
                            Участник

                              Вот исправленный и структурированный вариант вашего запроса с корректным синтаксисом 1С:

                              |ТекстЗапроса =

                              |ВЫБРАТЬ
                              | РеестрДокументов.Ссылка КАК Ссылка,
                              | РеестрДокументов.НомерДокументаИБ КАК Номер,
                              | РеестрДокументов.ДатаДокументаИБ КАК Дата,
                              | РеестрДокументов.Статус КАК Статус,
                              | РеестрДокументов.Проведен КАК Проведен,
                              | РеестрДокументов.ПометкаУдаления КАК ПометкаУдаления,
                              | РеестрДокументов.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
                              | РеестрДокументов.Партнер КАК Партнер,
                              | ВЫРАЗИТЬ(РеестрДокументов.Контрагент.Ключ КАК Справочник.Контрагенты) КАК Контрагент,
                              | РеестрДокументов.Контрагент КАК КонтрагентКлюч,
                              | РеестрДокументов.Договор КАК Договор,
                              | РеестрДокументов.Организация КАК Организация,
                              | РеестрДокументов.Подразделение КАК Подразделение,
                              | РеестрДокументов.МестоХранения КАК МестоХранения,
                              | ВЫРАЗИТЬ(РеестрДокументов.МестоХранения.Ключ КАК Справочник.Склады) КАК Склад,
                              | РеестрДокументов.Валюта КАК Валюта,
                              | РеестрДокументов.Сумма КАК СуммаДокумента,
                              | РеестрДокументов.Ответственный КАК Менеджер,
                              | РеестрДокументов.Автор КАК Автор,
                              | РеестрДокументов.Комментарий КАК Комментарий,
                              | РеестрДокументов.НомерПервичногоДокумента КАК НомерВходящегоДокумента,
                              | РеестрДокументов.ДатаПервичногоДокумента КАК ДатаВходящегоДокумента,
                              | РеестрДокументов.Дополнительно КАК Дополнительно,
                              | СостоянияРаспоряжений.Состояние КАК СостояниеWMS,
                              | СостоянияЭД.СостояниеЭДО КАК СостояниеВерсииЭД,
                              | СостоянияЭД.ПредставлениеСостояния КАК ПредставлениеСостояния,
                              | ВЫБОР
                              | КОГДА ДокументыСОшибкамиПроверкиКонтрагентов.Документ ЕСТЬ NULL
                              | ТОГДА ЛОЖЬ
                              | ИНАЧЕ ИСТИНА
                              | КОНЕЦ КАК ЕстьОшибкиПроверкиКонтрагентов,
                              | ВЫБОР
                              | КОГДА РеестрДокументов.Проведен
                              | ТОГДА 0
                              | КОГДА РеестрДокументов.ПометкаУдаления
                              | ТОГДА 1
                              | ИНАЧЕ 2
                              | КОНЕЦ КАК НестандартнаяКартинка,
                              | РеестрДокументов.ДополнительнаяЗапись КАК ДополнительнаяЗапись,
                              | РеестрДокументов.ТипСсылки КАК ТипСсылки,
                              | &СтатусПроверки КАК СтатусПроверки,
                              | &ИндикаторПроверки КАК ИндикаторПроверки,
                              | ТИПЗНАЧЕНИЯ(РеестрДокументов.Ссылка) КАК ТипЗначения,
                              | NULL КАК СостояниеОригиналаПервичногоДокумента,
                              | ИСТИНА КАК ОбщееСостояние,
                              | 0 КАК СостояниеОригиналПолучен,
                              | РеестрДокументов.СторноИсправление КАК СторноИсправление,
                              | РеестрДокументов.ИдентификаторЗаписи КАК ИдентификаторЗаписи,
                              | ВЫБОР
                              | КОГДА НЕ РеестрДокументов.СторноИсправление
                              | ТОГДА НЕОПРЕДЕЛЕНО
                              | ИНАЧЕ РеестрДокументов.СторнируемыйДокумент
                              | КОНЕЦ КАК СторнируемыйИсправляемыйДокумент,
                              | ВЫРАЗИТЬ(» КАК Строка(50)) КАК СостояниеГИСМТ
                              |ИЗ
                              | РегистрСведений.РеестрДокументов КАК РеестрДокументов
                              | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
                              | ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ
                              | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД
                              | ПО СостоянияЭД.СсылкаНаОбъект = РеестрДокументов.Ссылка
                              | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыСОшибкамиПроверкиКонтрагентов КАК ДокументыСОшибкамиПроверкиКонтрагентов
                              | ПО РеестрДокументов.Ссылка = ДокументыСОшибкамиПроверкиКонтрагентов.Документ
                              | И (&ИспользованиеПроверкиВозможно)
                              |ГДЕ
                              | (РеестрДокументов.ДатаДокументаИБ >= &НачалоПериода
                              | ИЛИ &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1))
                              | И (РеестрДокументов.ДатаДокументаИБ <= &КонецПериода
                              | ИЛИ &КонецПериода = ДАТАВРЕМЯ(1, 1, 1))
                              |»;

                              Возврат ТекстЗапроса;

                              Объяснение:

                              — Убрал лишние запятые после соединений (в 1С-запросах запятая после JOIN не нужна).
                              — Выровнял отступы и добавил символы | в начале каждой строки.
                              — Вложенные соединения и условия перенесены в правильный синтаксис.
                              — Убрал комментарии в стиле //, так как в 1С-запросах лучше использовать /* … */ или не использовать вовсе.
                              — В выражениях ВЫРАЗИТЬ и ВЫБОР синтаксис сохранён корректным.

                              Если нужно, могу помочь с адаптацией под конкретную конфигурацию.

                              bot_avaOdin — Одинэсник
                              Участник

                                Чтобы добавить в ваш запрос поле из регистра сведений AWMSBasis_СостоянияРаспоряжений с псевдонимом СостояниеWMS, нужно:

                                1. В блоке выборки добавить поле:
                                | ,СостоянияРаспоряжений.Состояние КАК СостояниеWMS

                                2. В блоке ИЗ добавить левое соединение с регистром:
                                | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
                                | ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ

                                Пример итогового фрагмента запроса:

                                |ВЫБРАТЬ
                                | РеестрДокументов.Дополнительно КАК Дополнительно,
                                | РеестрДокументов.Комментарий КАК Комментарий,
                                | РеестрДокументов.Проведен КАК Проведен,
                                | РеестрДокументов.ПометкаУдаления КАК ПометкаУдаления,
                                | СостоянияРаспоряжений.Состояние КАК СостояниеWMS
                                |ИЗ
                                | РегистрСведений.РеестрДокументов КАК РеестрДокументов
                                | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
                                | ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ
                                |ГДЕ
                                | ((РеестрДокументов.ДатаДокументаИБ >= &НачалоПериода
                                | ИЛИ &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1))
                                | И (РеестрДокументов.ДатаДокументаИБ <= &КонецПериода
                                | ИЛИ &КонецПериода = ДАТАВРЕМЯ(1, 1, 1)))

                                Если у вас есть переменная ТекстЗапроса, то вставьте эти строки в соответствующие места, не забывая про синтаксис и символы | в начале каждой строки.

                                Если нужно, могу помочь с полным текстом запроса.

                                bot_avaOdin — Одинэсник
                                Участник

                                  Ошибка «Элемент не выбран!» возникает потому, что метод Справочники.Контрагенты.НайтиПоКоду(Контрагент.Код, Истина) не нашёл элемент справочника и вернул пустое значение (Неопределено). А дальше вы пытаетесь вызвать ПолучитьОбъект() у пустого значения, что и даёт ошибку.

                                  Как исправить:

                                  1. Проверьте, что Контрагент.Код действительно существует и корректен.
                                  2. Добавьте проверку результата поиска перед вызовом ПолучитьОбъект().

                                  Пример исправленного кода:

                                  Если Контрагент — это ссылка на элемент справочника, то лучше не искать по коду, а использовать ссылку напрямую:

                                  Итого: ошибка возникает из-за того, что НайтиПоКоду не нашёл элемент, и нужно проверить результат перед использованием.

                                Просмотр 15 сообщений - с 16 по 30 (из 2,731 всего)
                                База знаний 1С