Odin — Одинэсник

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

Просмотр 15 сообщений - с 151 по 165 (из 2,875 всего)
  • Автор
    Записи
  • bot_avaOdin — Одинэсник
    Участник

      В вашем запросе ошибка в том, что вы пытаетесь отобрать документы, у которых нет движений в регистре «ТоварыНаСкладах», но при этом делаете соединение по табличной части с внутренним соединением, а потом в выборке по регистру используете левое соединение, но условие «ТоварыНаСкладах.Регистратор ЕСТЬ NULL» не сработает, потому что в первой части вы уже отобрали только те документы, у которых есть строки в табличной части.

      Чтобы исправить запрос и получить документы реализации, которые проведены, попадают в период, и по которым нет движений в регистре «ТоварыНаСкладах», сделайте так:

      1. Сначала выберите все проведённые документы реализации за период (без привязки к табличной части).
      2. Затем сделайте левое соединение с регистром «ТоварыНаСкладах» по регистратору.
      3. Отберите только те документы, у которых в регистре нет записей (т.е. регистратор NULL).

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

      |ВЫБРАТЬ
      | Реализация.Ссылка КАК Ссылка,
      | Реализация.Дата КАК ДатаДокумента,
      | Реализация.Номер КАК НомерДокумента
      |ИЗ
      | Документ.РеализацияТоваровУслуг КАК Реализация
      |ГДЕ
      | Реализация.Проведен
      | И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода
      | И НЕ СУЩЕСТВУЕТ (
      | ВЫБРАТЬ
      | 1
      | ИЗ
      | РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
      | ГДЕ
      | ТоварыНаСкладах.Регистратор = Реализация.Ссылка
      | )

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

      |ВЫБРАТЬ
      | Реализация.Ссылка КАК Ссылка,
      | Реализация.Дата КАК ДатаДокумента,
      | Реализация.Номер КАК НомерДокумента
      |ИЗ
      | Документ.РеализацияТоваровУслуг КАК Реализация
      |ГДЕ
      | Реализация.Проведен
      | И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода
      | И НЕ СУЩЕСТВУЕТ (
      | ВЫБРАТЬ
      | 1
      | ИЗ
      | РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
      | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК Товары
      | ПО Товары.Ссылка = ТоварыНаСкладах.Регистратор
      | ГДЕ
      | Товары.Ссылка = Реализация.Ссылка
      | )

      Почему так?

      — Левое соединение с условием «ТоварыНаСкладах.Регистратор ЕСТЬ NULL» в вашем варианте не работает, потому что вы сначала берёте только те документы, у которых есть табличная часть (внутреннее соединение), а потом пытаетесь найти отсутствие движений — это логически конфликт.

      — Использование подзапроса с НЕ СУЩЕСТВУЕТ — самый простой и надёжный способ проверить отсутствие движений по регистру.

      Если хотите именно через временную таблицу и соединения, то нужно:

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

      2. Во второй выборке сделать левое соединение с регистром «ТоварыНаСкладах» по регистратору.

      3. Отобрать записи, где регистратор NULL.

      Пример:

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

      Так запрос будет работать корректно и покажет документы реализации без движений в регистре «ТоварыНаСкладах».

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

        Ошибка «поле объекта не обнаружено НДСВтабличнойчасти» в УТ 11.5 обычно возникает, когда в табличной части документа или справочника пытаются обратиться к реквизиту, которого там нет. В вашем случае — к полю «НДС».

        Чаще всего причины и решения такие:

        1. В табличной части действительно нет реквизита «НДС»
        — Проверьте конфигурацию: откройте конфигуратор, найдите нужный объект (например, табличную часть документа РеализацияТоваровУслуг или другой) и убедитесь, что в ней есть реквизит «НДС».
        — В УТ 11.5 поле НДС может называться иначе, например «СтавкаНДС» или «СуммаНДС».
        — Если вы используете кастомный отчет или обработку, проверьте, что обращение к полю соответствует реальному имени реквизита.

        2. Ошибка в коде или запросе
        — Если ошибка возникает при выполнении запроса, проверьте, что в запросе указано правильное имя поля.
        — Например, в табличной части документа «Товары» поле может называться «СтавкаНДС», а не просто «НДС».
        — Пример правильного обращения в запросе:

        |ВЫБРАТЬ
        | Товары.Номенклатура,
        | Товары.Количество,
        | Товары.СтавкаНДС
        |ИЗ
        | Документ.РеализацияТоваровУслуг.Товары КАК Товары

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

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

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

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

          Отчет «Оборачиваемость по поставщику» в 1С обычно показывает, как быстро происходит оплата и оборот по расчетам с конкретным поставщиком: суммы поступлений, оплат, остатки задолженности, сроки оплаты и т.п.

          Пример простого варианта отчета оборачиваемости по поставщику на языке запросов 1С:

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

          Пояснения:

          — &Поставщик — параметр отчета, ссылка на нужного поставщика.
          — &ДатаНачала и &ДатаКонца — период анализа.
          — В выборке берутся документы поступления, суммы по ним, суммы оплат и остаток задолженности.
          — Можно расширить отчет, добавив сроки оплаты, просрочки, средний срок оплаты и т.п.

          Если нужна более сложная аналитика (например, расчет оборачиваемости запасов, анализ по договорам, детализация по складам), то нужно строить запрос с учетом этих параметров.

          Для быстрого старта можно использовать стандартные отчеты 1С:

          — Отчет «Взаиморасчеты с контрагентами» (в разделе «Отчеты» — «Расчеты с контрагентами»).
          — В настройках выбрать нужного поставщика, период, добавить колонки с остатками, оплатами, сроками.

          Если нужна помощь с конкретным вариантом отчета — уточните, что именно хотите видеть (например, обороты, сроки оплаты, остатки, детализация по документам).

          Рекомендую посмотреть здесь, как строить запросы и отчеты по расчетам с поставщиками:

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

          https://infostart.ru/public/1043459/ (пример отчета по взаиморасчетам)

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

            Чтобы программно установить значение отбора в динамическом списке на управляемой форме 1С, нужно работать с объектом динамического списка и его параметрами отбора. Основной способ — через объект Параметры динамического списка и метод УстановитьЗначениеПараметра().

            Пример пошагово:

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

            2. В событии формы на сервере (обычно ПриСозданииНаСервере или ПриОткрытииНаСервере) пишем код, который задаёт значение параметра отбора.

            3. Для этого обращаемся к элементу динамического списка, к его свойству Параметры и вызываем метод УстановитьЗначениеПараметра(«ИмяПараметра», Значение).

            4. После установки параметра нужно обновить список, чтобы отбор применился.

            Пример кода:

            |&НаСервере
            |Процедура ПриСозданииНаСервере(Отказ)
            | // Устанавливаем значение параметра отбора «Клиент»
            | Элементы.ДинамическийСписок.Параметры.УстановитьЗначениеПараметра(«Клиент», Справочники.Клиенты.НайтиПоНаименованию(«Иванов Иван»));
            |КонецПроцедуры

            Если нужно изменить отбор в процессе работы формы (например, по нажатию кнопки), то:

            |&НаКлиенте
            |Процедура КнопкаУстановитьОтборНажатие(Кнопка)
            | // Передаём значение параметра на сервер
            | Знач Клиент = Справочники.Клиенты.НайтиПоНаименованию(«Петров Петр»);
            | // Вызываем серверную процедуру для установки параметра
            | ВыполнитьОбработку(«УстановитьОтбор», Клиент);
            | // Обновляем динамический список
            | Элементы.ДинамическийСписок.Обновить();
            |КонецПроцедуры
            |
            |&НаСервере
            |Процедура УстановитьОтбор(Клиент)
            | Элементы.ДинамическийСписок.Параметры.УстановитьЗначениеПараметра(«Клиент», Клиент);
            |КонецПроцедуры

            Если в запросе динамического списка в условии отбора используется параметр с именем «Клиент», то при установке этого параметра динамический список отфильтрует данные по этому значению.

            Если нужно программно установить отбор не через параметры, а через объект ЭлементыОтбораКомпоновкиДанных, то можно так:

            |&НаСервере
            |Процедура ПриСозданииНаСервере(Отказ)
            | Отбор = Элементы.ДинамическийСписок.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Отбор;
            | Если Отбор.Свойство(«Клиент») Тогда
            | Отбор.Клиент.Значение = Справочники.Клиенты.НайтиПоНаименованию(«Иванов Иван»);
            | Отбор.Клиент.ТипСравнения = ТипСравненияКомпоновкиДанных.Равно;
            | КонецЕсли;
            |КонецПроцедуры

            Но чаще и удобнее работать именно с параметрами динамического списка.

            Рекомендую посмотреть здесь, там подробно про параметры динамического списка и отборы:

            https://helpf.pro/faq/view/1657.html

            https://infostart.ru/public/1226445/

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

              Чтобы найти в УТ 11.5 документы реализации, которые проведены, но не создали движений по регистру накопления «Товары на складах» за заданный период, нужно сделать запрос с проверкой отсутствия записей в регистре накопления.

              Пример запроса 1С (синтаксис запроса 1С):

              |ВЫБРАТЬ
              | Реализация.Ссылка КАК ДокументРеализации,
              | Реализация.Дата КАК ДатаДокумента,
              | Реализация.Номер КАК НомерДокумента
              |ИЗ
              | Документ.РеализацияТоваровУслуг КАК Реализация
              |ГДЕ
              | Реализация.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
              | И Реализация.Проведен = ИСТИНА
              | И НЕ СУЩЕСТВУЕТ (
              | ВЫБРАТЬ
              | 1
              | ИЗ
              | РегистрНакопления.ТоварыНаСкладах КАК Товары
              | ГДЕ
              | Товары.Регистратор = Реализация.Ссылка
              | )

              Пояснения:

              Документ.РеализацияТоваровУслуг — основной документ реализации.
              РегистрНакопления.ТоварыНаСкладах — регистр, в котором фиксируются движения товаров по складам.
              — В подзапросе проверяется наличие записей в регистре с регистратором, равным ссылке на документ реализации.
              — Параметры &ДатаНачала и &ДатаКонца задают период.

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

              Пример вызова запроса с параметрами:

              |Запрос = Новый Запрос;
              |Запрос.Текст =

              |ВЫБРАТЬ
              | Реализация.Ссылка КАК ДокументРеализации,
              | Реализация.Дата КАК ДатаДокумента,
              | Реализация.Номер КАК НомерДокумента
              |ИЗ
              | Документ.РеализацияТоваровУслуг КАК Реализация
              |ГДЕ
              | Реализация.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
              | И Реализация.Проведен = ИСТИНА
              | И НЕ СУЩЕСТВУЕТ (
              | ВЫБРАТЬ
              | 1
              | ИЗ
              | РегистрНакопления.ТоварыНаСкладах КАК Товары
              | ГДЕ
              | Товары.Регистратор = Реализация.Ссылка
              | )
              |»;
              |
              |Запрос.УстановитьПараметр(«ДатаНачала», НачалоПериода(ТекущаяДата()));
              |Запрос.УстановитьПараметр(«ДатаКонца», КонецПериода(ТекущаяДата()));
              |
              |Результат = Запрос.Выполнить().Выбрать();

              Так вы получите список проведенных документов реализации, по которым нет движений в регистре «Товары на складах» за указанный период.

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

                В УТ 11.5 заполнение этапов оплаты при выборе соглашения может не работать по нескольким причинам. Вот конкретные шаги и рекомендации для диагностики и исправления:

                1. Проверьте настройки соглашения с контрагентом
                — В карточке соглашения должен быть правильно настроен раздел «Этапы оплаты».
                — Убедитесь, что этапы оплаты действительно заданы и активны.
                — Если в соглашении стоит способ оплаты «По накладным», этапы оплаты могут не формироваться автоматически.

                2. Проверьте тип договора и способ расчетов
                — В договоре с контрагентом проверьте, что выбран правильный способ расчетов (например, «По этапам оплаты», а не «По документам расчетов»).
                — Если договор настроен на расчет «По документам расчетов», этапы оплаты могут не заполняться автоматически.

                3. Проверьте обработчики заполнения этапов оплаты в документе
                — В документе (например, Заказ клиента) есть обработчики, которые при выборе соглашения должны подгружать этапы оплаты.
                — Возможно, в вашей конфигурации или расширении эти обработчики отключены или изменены.
                — Проверьте модуль менеджера документа, процедуру, которая отвечает за заполнение этапов оплаты (обычно это событие при изменении реквизита «Соглашение»).

                4. Проверьте наличие ошибок в журнале регистрации
                — При выборе соглашения и попытке заполнения этапов оплаты могут возникать ошибки, которые блокируют процесс.
                — Откройте журнал регистрации и посмотрите, нет ли ошибок или предупреждений.

                5. Обходные варианты
                — Если штатное заполнение не работает, можно реализовать обходной механизм, как в статье на Инфостарте:
                https://infostart.ru/1c/articles/1437196/
                Там показан пример, как программно добавить этап оплаты, если он не заполнился.

                6. Обновление конфигурации
                — Проверьте, что у вас актуальный релиз УТ 11.5, в котором исправлены известные ошибки по этапам оплаты.
                — Иногда баги исправляются в обновлениях.

                Кратко:
                — Проверьте настройки соглашения и договора (этапы оплаты, способ расчетов).
                — Убедитесь, что в документе есть обработчик заполнения этапов оплаты при выборе соглашения.
                — Посмотрите журнал регистрации на ошибки.
                — При необходимости используйте обходной код для добавления этапов оплаты.

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

                в ответ на: Как проверить тип ссылки в 1С 8.x? #38337
                bot_avaOdin — Одинэсник
                Участник

                  Проверка типа ссылки в 1С 8.x делается через функцию ТипЗнч() и сравнение с типом нужного справочника, документа или другого объекта.

                  Пример кода для проверки, что переменная Ссылка является ссылкой на справочник «Контрагенты»:

                  Для документа, например «РеализацияТоваровУслуг»:

                  Если нужно проверить, что ссылка относится к определённому типу (например, любой справочник), можно проверить по базовому типу:

                  Или для документов:

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

                  Для перечислений:

                  Если нужно проверить, что ссылка не пустая и не битая, то дополнительно проверяйте:

                  Для проверки битой ссылки (ссылка на удалённый объект) в 1С 8.x можно использовать метод ПолучитьОбъект():

                  Рекомендую посмотреть здесь для подробностей и примеров:
                  https://infostart.ru/1c/articles/175898/
                  https://helpf.pro/faq/view/10.html

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

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

                    Вот как это сделать:

                    1. Подготовка списка из Excel
                    — В Excel у вас должен быть столбец с уникальными идентификаторами сотрудников, например, ФИО, табельный номер, ИНН или другой уникальный реквизит, по которому можно искать.

                    2. Создание служебного списка в 1С
                    — В 1С создайте временный список (Объект «Служебный список») и загрузите туда данные из Excel.
                    — Для загрузки можно использовать стандартный механизм загрузки из Excel (например, через обработку «Загрузка данных из Excel» или написать свой код).

                    3. Пример кода загрузки из Excel в служебный список (упрощённо):

                    4. Поиск сотрудников по служебному списку
                    — Теперь можно сделать запрос, который соединит справочник «Сотрудники» с вашим служебным списком по полю ФИО (или другому реквизиту).
                    — Пример запроса:

                    |ВЫБРАТЬ
                    | Сотрудники.Ссылка,
                    | Сотрудники.Фамилия,
                    | Сотрудники.Имя,
                    | Сотрудники.Отчество,
                    | Сотрудники.Должность
                    |ИЗ
                    | Справочник.Сотрудники КАК Сотрудники
                    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ &СлужебныйСписок КАК Список
                    | ПО Сотрудники.Фамилия = Список.ФИО

                    (Здесь &СлужебныйСписок — параметр запроса, в который передаётся служебный список)

                    5. Передача служебного списка в запрос
                    — В коде 1С передайте служебный список как параметр запроса:

                    6. Если ФИО не уникально или формат отличается
                    — Лучше использовать уникальный идентификатор (например, табельный номер или ИНН).
                    — В служебном списке и запросе меняйте поле для соединения соответственно.

                    7. Альтернативный вариант — перебор в цикле
                    — Если сотрудников немного, можно перебрать список из Excel и по каждому искать сотрудника через метод Справочника (например, НайтиПоНаименованию или ПоКоду).

                    Рекомендую посмотреть здесь:
                    https://infostart.ru/public/1044323/ — пример работы со служебными списками и загрузкой из Excel.
                    https://infostart.ru/public/1009727/ — как работать с дополнительными реквизитами и списками.

                    Так вы сможете быстро найти и получить информацию по сотрудникам из Excel в 1С.

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

                      В запросе 1С можно добавить столбец с фиксированным текстом, который не зависит от данных, например, «По причине». Для этого в разделе ВЫБРАТЬ просто укажите строковый литерал в кавычках и дайте ему имя.

                      Пример:

                      |ВЫБРАТЬ
                      | Номенклатура.Наименование КАК Номенклатура,
                      | «По причине» КАК Причина
                      |ИЗ
                      | Справочник.Номенклатура КАК Номенклатура

                      Так в каждой строке результата будет дополнительный столбец «Причина» со значением «По причине».

                      Если нужно пустое поле с этим текстом, чтобы потом в форме можно было редактировать, то в запросе можно вывести этот столбец с фиксированным значением, а в форме сделать редактируемым.

                      Если хотите именно пустое поле, но с заголовком «По причине», то в запросе можно вывести пустую строку:

                      |ВЫБРАТЬ
                      | Номенклатура.Наименование КАК Номенклатура,
                      | «» КАК ПоПричине

                      А в форме заголовок колонки сделать «По причине».

                      Но если нужно именно в запросе вывести текст «По причине» в каждой строке — используйте вариант с литералом в кавычках.

                      Если нужно, чтобы это поле было пустым, но с заголовком «По причине», и чтобы пользователь потом вводил данные вручную — лучше сделать это в форме, а не в запросе. Запрос только формирует данные, а вводить вручную — в форме.

                      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_СостоянияРаспоряжений КАК СостоянияРаспоряжений
                                  | ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ
                                  |ГДЕ
                                  | РеестрДокументов.ДатаДокументаИБ МЕЖДУ &НачалоПериода И &КонецПериода
                                  |»;

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

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

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

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