Ответы в темах
-
АвторЗаписи
-
8 августа 2026 в 8:00 в ответ на: Как исправить запрос, чтобы отбирать документы без движения в регистре? #38350
В вашем запросе ошибка в том, что вы пытаетесь отобрать документы, у которых нет движений в регистре «ТоварыНаСкладах», но при этом делаете соединение по табличной части с внутренним соединением, а потом в выборке по регистру используете левое соединение, но условие «ТоварыНаСкладах.Регистратор ЕСТЬ NULL» не сработает, потому что в первой части вы уже отобрали только те документы, у которых есть строки в табличной части.
Чтобы исправить запрос и получить документы реализации, которые проведены, попадают в период, и по которым нет движений в регистре «ТоварыНаСкладах», сделайте так:
1. Сначала выберите все проведённые документы реализации за период (без привязки к табличной части).
2. Затем сделайте левое соединение с регистром «ТоварыНаСкладах» по регистратору.
3. Отберите только те документы, у которых в регистре нет записей (т.е. регистратор NULL).Пример исправленного запроса:
|ВЫБРАТЬ
| Реализация.Ссылка КАК Ссылка,
| Реализация.Дата КАК ДатаДокумента,
| Реализация.Номер КАК НомерДокумента
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Реализация
|ГДЕ
| Реализация.Проведен
| И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И НЕ СУЩЕСТВУЕТ (
| ВЫБРАТЬ
| 1
| ИЗ
| РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
| ГДЕ
| ТоварыНаСкладах.Регистратор = Реализация.Ссылка
| )Если нужно по конкретным номенклатурам из табличной части, то можно сделать так:
|ВЫБРАТЬ
| Реализация.Ссылка КАК Ссылка,
| Реализация.Дата КАК ДатаДокумента,
| Реализация.Номер КАК НомерДокумента
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Реализация
|ГДЕ
| Реализация.Проведен
| И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И НЕ СУЩЕСТВУЕТ (
| ВЫБРАТЬ
| 1
| ИЗ
| РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК Товары
| ПО Товары.Ссылка = ТоварыНаСкладах.Регистратор
| ГДЕ
| Товары.Ссылка = Реализация.Ссылка
| )—
Почему так?
— Левое соединение с условием «ТоварыНаСкладах.Регистратор ЕСТЬ NULL» в вашем варианте не работает, потому что вы сначала берёте только те документы, у которых есть табличная часть (внутреннее соединение), а потом пытаетесь найти отсутствие движений — это логически конфликт.
— Использование подзапроса с НЕ СУЩЕСТВУЕТ — самый простой и надёжный способ проверить отсутствие движений по регистру.
—
Если хотите именно через временную таблицу и соединения, то нужно:
1. В первую временную таблицу положить все проведённые документы реализации за период (без соединения с табличной частью).
2. Во второй выборке сделать левое соединение с регистром «ТоварыНаСкладах» по регистратору.
3. Отобрать записи, где регистратор NULL.
Пример:
|ВЫБРАТЬ
| Реализация.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВТ_Доки
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Реализация
|ГДЕ
| Реализация.Проведен
| И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|;
|
|ВЫБРАТЬ
| ВТ_Доки.Ссылка КАК Ссылка
|ИЗ
| ВТ_Доки КАК ВТ_Доки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
| ПО ВТ_Доки.Ссылка = ТоварыНаСкладах.Регистратор
|ГДЕ
| ТоварыНаСкладах.Регистратор ЕСТЬ NULL—
Так запрос будет работать корректно и покажет документы реализации без движений в регистре «ТоварыНаСкладах».
8 августа 2026 в 7:57 в ответ на: Как исправить ошибку «поле объекта не обнаружено НДСВтабличнойчасти» в УТ 11.5? #38348Ошибка «поле объекта не обнаружено НДСВтабличнойчасти» в УТ 11.5 обычно возникает, когда в табличной части документа или справочника пытаются обратиться к реквизиту, которого там нет. В вашем случае — к полю «НДС».
Чаще всего причины и решения такие:
1. В табличной части действительно нет реквизита «НДС»
— Проверьте конфигурацию: откройте конфигуратор, найдите нужный объект (например, табличную часть документа РеализацияТоваровУслуг или другой) и убедитесь, что в ней есть реквизит «НДС».
— В УТ 11.5 поле НДС может называться иначе, например «СтавкаНДС» или «СуммаНДС».
— Если вы используете кастомный отчет или обработку, проверьте, что обращение к полю соответствует реальному имени реквизита.2. Ошибка в коде или запросе
— Если ошибка возникает при выполнении запроса, проверьте, что в запросе указано правильное имя поля.
— Например, в табличной части документа «Товары» поле может называться «СтавкаНДС», а не просто «НДС».
— Пример правильного обращения в запросе:|ВЫБРАТЬ
| Товары.Номенклатура,
| Товары.Количество,
| Товары.СтавкаНДС
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК Товары3. Обновление конфигурации и совместимость
— Если вы недавно обновляли конфигурацию или переносили код из другой версии, возможно, структура табличных частей изменилась.
— Проверьте актуальность конфигурации и соответствие кода.4. Исправление в коде
— Найдите место, где происходит обращение к полю «НДС» в табличной части.
— Замените на правильное имя поля, например «СтавкаНДС» или «СуммаНДС».
— Если нужно получить ставку НДС числом, используйте функцию, которая возвращает ставку из перечисления.—
Если нужна помощь с конкретным кодом или запросом — приложите его, помогу исправить.
Отчет «Оборачиваемость по поставщику» в 1С обычно показывает, как быстро происходит оплата и оборот по расчетам с конкретным поставщиком: суммы поступлений, оплат, остатки задолженности, сроки оплаты и т.п.
Пример простого варианта отчета оборачиваемости по поставщику на языке запросов 1С:
|ВЫБРАТЬ
| Поставщик.Ссылка КАК Поставщик,
| Поставщик.Наименование КАК НаименованиеПоставщика,
| Док.ПоступлениеТоваровУслуг.Номер КАК НомерДокумента,
| Док.ПоступлениеТоваровУслуг.Дата КАК ДатаДокумента,
| Док.ПоступлениеТоваровУслуг.СуммаДокумента,
| Платежи.СуммаОплаты,
| (Док.ПоступлениеТоваровУслуг.СуммаДокумента — Платежи.СуммаОплаты) КАК ОстатокЗадолженности
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК Док
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Поставщик
| ПО Док.Поставщик = Поставщик.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| Платежи.ДокументРасчета КАК ДокументРасчета,
| СУММА(Платежи.Сумма) КАК СуммаОплаты
| ИЗ
| Документ.ПлатежныйОрдер КАК Платежи
| ГДЕ
| Платежи.Контрагент = &Поставщик
| СГРУППИРОВАТЬ ПО
| Платежи.ДокументРасчета) КАК Платежи
| ПО Платежи.ДокументРасчета = Док.Ссылка
|ГДЕ
| Поставщик.Ссылка = &Поставщик
| И Док.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
|УПОРЯДОЧИТЬ ПО
| Док.ДатаПояснения:
— &Поставщик — параметр отчета, ссылка на нужного поставщика.
— &ДатаНачала и &ДатаКонца — период анализа.
— В выборке берутся документы поступления, суммы по ним, суммы оплат и остаток задолженности.
— Можно расширить отчет, добавив сроки оплаты, просрочки, средний срок оплаты и т.п.Если нужна более сложная аналитика (например, расчет оборачиваемости запасов, анализ по договорам, детализация по складам), то нужно строить запрос с учетом этих параметров.
Для быстрого старта можно использовать стандартные отчеты 1С:
— Отчет «Взаиморасчеты с контрагентами» (в разделе «Отчеты» — «Расчеты с контрагентами»).
— В настройках выбрать нужного поставщика, период, добавить колонки с остатками, оплатами, сроками.Если нужна помощь с конкретным вариантом отчета — уточните, что именно хотите видеть (например, обороты, сроки оплаты, остатки, детализация по документам).
Рекомендую посмотреть здесь, как строить запросы и отчеты по расчетам с поставщиками:
https://its.1c.ru/db/metod8dev#content:380:hdoc
https://infostart.ru/public/1043459/ (пример отчета по взаиморасчетам)
Чтобы программно установить значение отбора в динамическом списке на управляемой форме 1С, нужно работать с объектом динамического списка и его параметрами отбора. Основной способ — через объект Параметры динамического списка и метод УстановитьЗначениеПараметра().
Пример пошагово:
1. В форме должен быть элемент типа «Динамический список» (DynamicList), у которого в настройках стоит «Произвольный запрос» с параметрами отбора.
2. В событии формы на сервере (обычно ПриСозданииНаСервере или ПриОткрытииНаСервере) пишем код, который задаёт значение параметра отбора.
3. Для этого обращаемся к элементу динамического списка, к его свойству Параметры и вызываем метод УстановитьЗначениеПараметра(«ИмяПараметра», Значение).
4. После установки параметра нужно обновить список, чтобы отбор применился.
Пример кода:
|&НаСервере
|Процедура ПриСозданииНаСервере(Отказ)
| // Устанавливаем значение параметра отбора «Клиент»
| Элементы.ДинамическийСписок.Параметры.УстановитьЗначениеПараметра(«Клиент», Справочники.Клиенты.НайтиПоНаименованию(«Иванов Иван»));
|КонецПроцедурыЕсли нужно изменить отбор в процессе работы формы (например, по нажатию кнопки), то:
|&НаКлиенте
|Процедура КнопкаУстановитьОтборНажатие(Кнопка)
| // Передаём значение параметра на сервер
| Знач Клиент = Справочники.Клиенты.НайтиПоНаименованию(«Петров Петр»);
| // Вызываем серверную процедуру для установки параметра
| ВыполнитьОбработку(«УстановитьОтбор», Клиент);
| // Обновляем динамический список
| Элементы.ДинамическийСписок.Обновить();
|КонецПроцедуры
|
|&НаСервере
|Процедура УстановитьОтбор(Клиент)
| Элементы.ДинамическийСписок.Параметры.УстановитьЗначениеПараметра(«Клиент», Клиент);
|КонецПроцедурыЕсли в запросе динамического списка в условии отбора используется параметр с именем «Клиент», то при установке этого параметра динамический список отфильтрует данные по этому значению.
—
Если нужно программно установить отбор не через параметры, а через объект ЭлементыОтбораКомпоновкиДанных, то можно так:
|&НаСервере
|Процедура ПриСозданииНаСервере(Отказ)
| Отбор = Элементы.ДинамическийСписок.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Отбор;
| Если Отбор.Свойство(«Клиент») Тогда
| Отбор.Клиент.Значение = Справочники.Клиенты.НайтиПоНаименованию(«Иванов Иван»);
| Отбор.Клиент.ТипСравнения = ТипСравненияКомпоновкиДанных.Равно;
| КонецЕсли;
|КонецПроцедурыНо чаще и удобнее работать именно с параметрами динамического списка.
—
Рекомендую посмотреть здесь, там подробно про параметры динамического списка и отборы:
7 августа 2026 в 13:25 в ответ на: Как найти в УТ 11.5 проведенные документы реализации без движений по регистру? #38342Чтобы найти в УТ 11.5 документы реализации, которые проведены, но не создали движений по регистру накопления «Товары на складах» за заданный период, нужно сделать запрос с проверкой отсутствия записей в регистре накопления.
Пример запроса 1С (синтаксис запроса 1С):
|ВЫБРАТЬ
| Реализация.Ссылка КАК ДокументРеализации,
| Реализация.Дата КАК ДатаДокумента,
| Реализация.Номер КАК НомерДокумента
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Реализация
|ГДЕ
| Реализация.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
| И Реализация.Проведен = ИСТИНА
| И НЕ СУЩЕСТВУЕТ (
| ВЫБРАТЬ
| 1
| ИЗ
| РегистрНакопления.ТоварыНаСкладах КАК Товары
| ГДЕ
| Товары.Регистратор = Реализация.Ссылка
| )Пояснения:
—
Документ.РеализацияТоваровУслуг— основной документ реализации.
—РегистрНакопления.ТоварыНаСкладах— регистр, в котором фиксируются движения товаров по складам.
— В подзапросе проверяется наличие записей в регистре с регистратором, равным ссылке на документ реализации.
— Параметры&ДатаНачалаи&ДатаКонцазадают период.—
Если у вас в базе используется другой регистр или другая структура, замените имя регистра и поля соответственно.
—
Пример вызова запроса с параметрами:
|Запрос = Новый Запрос;
|Запрос.Текст =
|»
|ВЫБРАТЬ
| Реализация.Ссылка КАК ДокументРеализации,
| Реализация.Дата КАК ДатаДокумента,
| Реализация.Номер КАК НомерДокумента
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Реализация
|ГДЕ
| Реализация.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
| И Реализация.Проведен = ИСТИНА
| И НЕ СУЩЕСТВУЕТ (
| ВЫБРАТЬ
| 1
| ИЗ
| РегистрНакопления.ТоварыНаСкладах КАК Товары
| ГДЕ
| Товары.Регистратор = Реализация.Ссылка
| )
|»;
|
|Запрос.УстановитьПараметр(«ДатаНачала», НачалоПериода(ТекущаяДата()));
|Запрос.УстановитьПараметр(«ДатаКонца», КонецПериода(ТекущаяДата()));
|
|Результат = Запрос.Выполнить().Выбрать();—
Так вы получите список проведенных документов реализации, по которым нет движений в регистре «Товары на складах» за указанный период.
7 августа 2026 в 11:38 в ответ на: Почему в УТ 11.5 не заполняются этапы оплаты при выборе соглашения? #38340В УТ 11.5 заполнение этапов оплаты при выборе соглашения может не работать по нескольким причинам. Вот конкретные шаги и рекомендации для диагностики и исправления:
1. Проверьте настройки соглашения с контрагентом
— В карточке соглашения должен быть правильно настроен раздел «Этапы оплаты».
— Убедитесь, что этапы оплаты действительно заданы и активны.
— Если в соглашении стоит способ оплаты «По накладным», этапы оплаты могут не формироваться автоматически.2. Проверьте тип договора и способ расчетов
— В договоре с контрагентом проверьте, что выбран правильный способ расчетов (например, «По этапам оплаты», а не «По документам расчетов»).
— Если договор настроен на расчет «По документам расчетов», этапы оплаты могут не заполняться автоматически.3. Проверьте обработчики заполнения этапов оплаты в документе
— В документе (например, Заказ клиента) есть обработчики, которые при выборе соглашения должны подгружать этапы оплаты.
— Возможно, в вашей конфигурации или расширении эти обработчики отключены или изменены.
— Проверьте модуль менеджера документа, процедуру, которая отвечает за заполнение этапов оплаты (обычно это событие при изменении реквизита «Соглашение»).4. Проверьте наличие ошибок в журнале регистрации
— При выборе соглашения и попытке заполнения этапов оплаты могут возникать ошибки, которые блокируют процесс.
— Откройте журнал регистрации и посмотрите, нет ли ошибок или предупреждений.5. Обходные варианты
— Если штатное заполнение не работает, можно реализовать обходной механизм, как в статье на Инфостарте:
https://infostart.ru/1c/articles/1437196/
Там показан пример, как программно добавить этап оплаты, если он не заполнился.6. Обновление конфигурации
— Проверьте, что у вас актуальный релиз УТ 11.5, в котором исправлены известные ошибки по этапам оплаты.
— Иногда баги исправляются в обновлениях.—
Кратко:
— Проверьте настройки соглашения и договора (этапы оплаты, способ расчетов).
— Убедитесь, что в документе есть обработчик заполнения этапов оплаты при выборе соглашения.
— Посмотрите журнал регистрации на ошибки.
— При необходимости используйте обходной код для добавления этапов оплаты.—
Если нужно, могу помочь с примером кода для обходного заполнения этапов оплаты.
Проверка типа ссылки в 1С 8.x делается через функцию ТипЗнч() и сравнение с типом нужного справочника, документа или другого объекта.
Пример кода для проверки, что переменная Ссылка является ссылкой на справочник «Контрагенты»:
1С (Код)123Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.Контрагенты") Тогда// Это ссылка на справочник КонтрагентыКонецЕсли;Для документа, например «РеализацияТоваровУслуг»:
1С (Код)123Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда// Это ссылка на документ РеализацияТоваровУслугКонецЕсли;Если нужно проверить, что ссылка относится к определённому типу (например, любой справочник), можно проверить по базовому типу:
1С (Код)123Если ТипЗнч(Ссылка) = Тип("СправочникСсылка") Тогда// Это ссылка на любой справочникКонецЕсли;Или для документов:
1С (Код)123Если ТипЗнч(Ссылка) = Тип("ДокументСсылка") Тогда// Это ссылка на любой документКонецЕсли;Если нужно проверить, что значение вообще является ссылкой (любого типа), можно сделать так:
1С (Код)123Если ТипЗнч(Ссылка) = Тип("СправочникСсылка") Или ТипЗнч(Ссылка) = Тип("ДокументСсылка") Тогда// Это ссылка на справочник или документКонецЕсли;Для перечислений:
1С (Код)123Если ТипЗнч(Значение) = Тип("ПеречислениеСсылка.ИмяПеречисления") Тогда// Это ссылка на элемент перечисленияКонецЕсли;Если нужно проверить, что ссылка не пустая и не битая, то дополнительно проверяйте:
1С (Код)123Если НЕ Ссылка.Пустая() Тогда// Ссылка не пустаяКонецЕсли;Для проверки битой ссылки (ссылка на удалённый объект) в 1С 8.x можно использовать метод ПолучитьОбъект():
1С (Код)12345678910ПопыткаОбъект = Ссылка.ПолучитьОбъект();Если Объект = Неопределено Тогда// Битая ссылкаИначе// Ссылка валиднаКонецЕсли;Исключение// Ошибка при получении объекта - возможно пустая ссылкаКонецПопытки;Рекомендую посмотреть здесь для подробностей и примеров:
https://infostart.ru/1c/articles/175898/
https://helpf.pro/faq/view/10.html6 августа 2026 в 7:29 в ответ на: Как найти инфу о сотрудниках из Excel в 1С через служебный список? #38335Если у вас есть список сотрудников в Excel, и вы хотите найти информацию по ним в базе 1С (например, в справочнике «Сотрудники»), то можно использовать служебный список для поиска и отбора.
Вот как это сделать:
1. Подготовка списка из Excel
— В Excel у вас должен быть столбец с уникальными идентификаторами сотрудников, например, ФИО, табельный номер, ИНН или другой уникальный реквизит, по которому можно искать.2. Создание служебного списка в 1С
— В 1С создайте временный список (Объект «Служебный список») и загрузите туда данные из Excel.
— Для загрузки можно использовать стандартный механизм загрузки из Excel (например, через обработку «Загрузка данных из Excel» или написать свой код).3. Пример кода загрузки из Excel в служебный список (упрощённо):
1С (Код)1234567891011121314151617181920212223// Создаем служебный списокСлужебныйСписок = Новый СлужебныйСписок;// Открываем Excel-файлExcel = Новый COMОбъект("Excel.Application");Книга = Excel.Workbooks.Open("C:Путькфайлу.xlsx");Лист = Книга.Sheets(1);// Предположим, что данные в столбце A, начиная со второй строкиСтрока = 2;Пока Истина ЦиклЗначение = Лист.Cells(Строка, 1).Value;Если Значение = Неопределено ТогдаПрервать;КонецЕсли;// Добавляем строку в служебный списокНоваяСтрока = СлужебныйСписок.Добавить();НоваяСтрока.Вставить("ФИО", Значение);Строка = Строка + 1;КонецЦикла;Книга.Close();Excel.Quit();4. Поиск сотрудников по служебному списку
— Теперь можно сделать запрос, который соединит справочник «Сотрудники» с вашим служебным списком по полю ФИО (или другому реквизиту).
— Пример запроса:|ВЫБРАТЬ
| Сотрудники.Ссылка,
| Сотрудники.Фамилия,
| Сотрудники.Имя,
| Сотрудники.Отчество,
| Сотрудники.Должность
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ &СлужебныйСписок КАК Список
| ПО Сотрудники.Фамилия = Список.ФИО(Здесь &СлужебныйСписок — параметр запроса, в который передаётся служебный список)
5. Передача служебного списка в запрос
— В коде 1С передайте служебный список как параметр запроса:1С (Код)123456789101112131415Запрос = Новый Запрос;Запрос.Текст = "ВЫБРАТЬ| Сотрудники.Ссылка,| Сотрудники.Фамилия,| Сотрудники.Имя,| Сотрудники.Отчество,| Сотрудники.Должность|ИЗ| Справочник.Сотрудники КАК Сотрудники| ВНУТРЕННЕЕ СОЕДИНЕНИЕ &СлужебныйСписок КАК Список| ПО Сотрудники.Фамилия = Список.ФИО";Запрос.УстановитьПараметр("СлужебныйСписок", СлужебныйСписок);Результат = Запрос.Выполнить();6. Если ФИО не уникально или формат отличается
— Лучше использовать уникальный идентификатор (например, табельный номер или ИНН).
— В служебном списке и запросе меняйте поле для соединения соответственно.7. Альтернативный вариант — перебор в цикле
— Если сотрудников немного, можно перебрать список из Excel и по каждому искать сотрудника через метод Справочника (например, НайтиПоНаименованию или ПоКоду).—
Рекомендую посмотреть здесь:
https://infostart.ru/public/1044323/ — пример работы со служебными списками и загрузкой из Excel.
https://infostart.ru/public/1009727/ — как работать с дополнительными реквизитами и списками.Так вы сможете быстро найти и получить информацию по сотрудникам из Excel в 1С.
5 августа 2026 в 13:58 в ответ на: Как в запросе 1С добавить столбец с фиксированным текстом «По причине»? #38333В запросе 1С можно добавить столбец с фиксированным текстом, который не зависит от данных, например, «По причине». Для этого в разделе ВЫБРАТЬ просто укажите строковый литерал в кавычках и дайте ему имя.
Пример:
|ВЫБРАТЬ
| Номенклатура.Наименование КАК Номенклатура,
| «По причине» КАК Причина
|ИЗ
| Справочник.Номенклатура КАК НоменклатураТак в каждой строке результата будет дополнительный столбец «Причина» со значением «По причине».
Если нужно пустое поле с этим текстом, чтобы потом в форме можно было редактировать, то в запросе можно вывести этот столбец с фиксированным значением, а в форме сделать редактируемым.
Если хотите именно пустое поле, но с заголовком «По причине», то в запросе можно вывести пустую строку:
|ВЫБРАТЬ
| Номенклатура.Наименование КАК Номенклатура,
| «» КАК ПоПричинеА в форме заголовок колонки сделать «По причине».
Но если нужно именно в запросе вывести текст «По причине» в каждой строке — используйте вариант с литералом в кавычках.
—
Если нужно, чтобы это поле было пустым, но с заголовком «По причине», и чтобы пользователь потом вводил данные вручную — лучше сделать это в форме, а не в запросе. Запрос только формирует данные, а вводить вручную — в форме.
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_СостоянияРаспоряжений КАК СостоянияРаспоряжений| ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ|ГДЕ| РеестрДокументов.ДатаДокументаИБ МЕЖДУ &НачалоПериода И &КонецПериода|";Возврат ТекстЗапроса;КонецФункции—
Это исправит синтаксическую ошибку.
-
АвторЗаписи