Ответы в темах
-
АвторСообщения
-
14 апреля 2026 в 11:00 в ответ на: Как отсортировать массив в 1С по полю структуры элементов? #36359
В 1С массив — это просто упорядоченный набор значений, у элементов массива нет полей, как у объектов или структур. Поэтому напрямую отсортировать массив по полю элементов нельзя, если элементы — не простые значения, а, например, структуры или объекты.
Чтобы отсортировать массив по полю элементов (например, если массив содержит структуры с одинаковым набором полей), нужно:
1. Преобразовать массив в СписокЗначений.
2. Загрузить в СписокЗначений элементы массива.
3. Вызвать метод СортироватьПоЗначению() — но он сортирует по значению элементов, а не по полю внутри структуры.
4. Чтобы сортировать именно по полю, нужно использовать ТаблицуЗначений, где можно указать сортировку по колонке.Пример сортировки массива структур по полю «Имя»:
1С (Код)1234567891011121314151617181920212223242526// Исходный массив структурМассив = Новый Массив;Массив.Добавить(Новый Структура("Имя,Возраст", "Иван", 30));Массив.Добавить(Новый Структура("Имя,Возраст", "Петр", 25));Массив.Добавить(Новый Структура("Имя,Возраст", "Алексей", 35));// Создаем таблицу значений с колонками, соответствующими полям структурТаблица = Новый ТаблицаЗначений;Таблица.Колонки.Добавить("Имя");Таблица.Колонки.Добавить("Возраст");// Заполняем таблицу значений из массиваДля Каждого Элемент Из Массив ЦиклНоваяСтрока = Таблица.Добавить();НоваяСтрока.Имя = Элемент.Имя;НоваяСтрока.Возраст = Элемент.Возраст;КонецЦикла;// Сортируем таблицу по колонке "Имя" по возрастаниюТаблица.Сортировать("Имя Возр");// Если нужно, можно выгрузить обратно в массив структурОтсортированныйМассив = Новый Массив;Для Каждого Строка Из Таблица ЦиклОтсортированныйМассив.Добавить(Новый Структура("Имя,Возраст", Строка.Имя, Строка.Возраст));КонецЦикла;Таким образом, сортировка по полю возможна через ТаблицуЗначений, а не напрямую в массиве.
Если элементы массива — простые значения (числа, строки), то можно использовать СписокЗначений и метод СортироватьПоЗначению().
https://helpf.pro/faq8/view/1364.htmlВ 1С массив — это просто упорядоченный набор значений, у элементов массива нет полей, как у объектов или структур. Поэтому напрямую отсортировать массив по полю элементов нельзя, если элементы — не простые значения, а, например, структуры или объекты.
Чтобы отсортировать массив по полю элементов (например, если массив содержит структуры с одинаковым набором полей), нужно:
1. Преобразовать массив в СписокЗначений.
2. Загрузить в СписокЗначений элементы массива.
3. Вызвать метод СортироватьПоЗначению() — но он сортирует по значению элементов, а не по полю внутри структуры.
4. Чтобы сортировать именно по полю, нужно использовать ТаблицуЗначений, где можно указать сортировку по колонке.Пример сортировки массива структур по полю «Имя»:
1С (Код)1234567891011121314151617181920212223242526// Исходный массив структурМассив = Новый Массив;Массив.Добавить(Новый Структура("Имя,Возраст", "Иван", 30));Массив.Добавить(Новый Структура("Имя,Возраст", "Петр", 25));Массив.Добавить(Новый Структура("Имя,Возраст", "Алексей", 35));// Создаем таблицу значений с колонками, соответствующими полям структурТаблица = Новый ТаблицаЗначений;Таблица.Колонки.Добавить("Имя");Таблица.Колонки.Добавить("Возраст");// Заполняем таблицу значений из массиваДля Каждого Элемент Из Массив ЦиклНоваяСтрока = Таблица.Добавить();НоваяСтрока.Имя = Элемент.Имя;НоваяСтрока.Возраст = Элемент.Возраст;КонецЦикла;// Сортируем таблицу по колонке "Имя" по возрастаниюТаблица.Сортировать("Имя Возр");// Если нужно, можно выгрузить обратно в массив структурОтсортированныйМассив = Новый Массив;Для Каждого Строка Из Таблица ЦиклОтсортированныйМассив.Добавить(Новый Структура("Имя,Возраст", Строка.Имя, Строка.Возраст));КонецЦикла;Таким образом, сортировка по полю возможна через ТаблицуЗначений, а не напрямую в массиве.
Если элементы массива — простые значения (числа, строки), то можно использовать СписокЗначений и метод СортироватьПоЗначению().
https://helpf.pro/faq8/view/1364.htmlВ 1С массив — это просто упорядоченный набор значений, у элементов массива нет полей, как у объектов или структур. Поэтому напрямую отсортировать массив по полю элементов нельзя, если элементы — не простые значения, а, например, структуры или объекты.
Чтобы отсортировать массив по полю элементов (например, если массив содержит структуры с одинаковым набором полей), нужно:
1. Преобразовать массив в СписокЗначений.
2. Загрузить в СписокЗначений элементы массива.
3. Вызвать метод СортироватьПоЗначению() — но он сортирует по значению элементов, а не по полю внутри структуры.
4. Чтобы сортировать именно по полю, нужно использовать ТаблицуЗначений, где можно указать сортировку по колонке.Пример сортировки массива структур по полю «Имя»:
1С (Код)1234567891011121314151617181920212223242526// Исходный массив структурМассив = Новый Массив;Массив.Добавить(Новый Структура("Имя,Возраст", "Иван", 30));Массив.Добавить(Новый Структура("Имя,Возраст", "Петр", 25));Массив.Добавить(Новый Структура("Имя,Возраст", "Алексей", 35));// Создаем таблицу значений с колонками, соответствующими полям структурТаблица = Новый ТаблицаЗначений;Таблица.Колонки.Добавить("Имя");Таблица.Колонки.Добавить("Возраст");// Заполняем таблицу значений из массиваДля Каждого Элемент Из Массив ЦиклНоваяСтрока = Таблица.Добавить();НоваяСтрока.Имя = Элемент.Имя;НоваяСтрока.Возраст = Элемент.Возраст;КонецЦикла;// Сортируем таблицу по колонке "Имя" по возрастаниюТаблица.Сортировать("Имя Возр");// Если нужно, можно выгрузить обратно в массив структурОтсортированныйМассив = Новый Массив;Для Каждого Строка Из Таблица ЦиклОтсортированныйМассив.Добавить(Новый Структура("Имя,Возраст", Строка.Имя, Строка.Возраст));КонецЦикла;Таким образом, сортировка по полю возможна через ТаблицуЗначений, а не напрямую в массиве.
Если элементы массива — простые значения (числа, строки), то можно использовать СписокЗначений и метод СортироватьПоЗначению().
https://helpf.pro/faq8/view/1364.htmlВ 1С массив — это просто упорядоченный набор значений, у элементов массива нет полей, как у объектов или структур. Поэтому напрямую отсортировать массив по полю элементов нельзя, если элементы — не простые значения, а, например, структуры или объекты.
Чтобы отсортировать массив по полю элементов (например, если массив содержит структуры с одинаковым набором полей), нужно:
1. Преобразовать массив в СписокЗначений.
2. Загрузить в СписокЗначений элементы массива.
3. Вызвать метод СортироватьПоЗначению() — но он сортирует по значению элементов, а не по полю внутри структуры.
4. Чтобы сортировать именно по полю, нужно использовать ТаблицуЗначений, где можно указать сортировку по колонке.Пример сортировки массива структур по полю «Имя»:
1С (Код)1234567891011121314151617181920212223242526// Исходный массив структурМассив = Новый Массив;Массив.Добавить(Новый Структура("Имя,Возраст", "Иван", 30));Массив.Добавить(Новый Структура("Имя,Возраст", "Петр", 25));Массив.Добавить(Новый Структура("Имя,Возраст", "Алексей", 35));// Создаем таблицу значений с колонками, соответствующими полям структурТаблица = Новый ТаблицаЗначений;Таблица.Колонки.Добавить("Имя");Таблица.Колонки.Добавить("Возраст");// Заполняем таблицу значений из массиваДля Каждого Элемент Из Массив ЦиклНоваяСтрока = Таблица.Добавить();НоваяСтрока.Имя = Элемент.Имя;НоваяСтрока.Возраст = Элемент.Возраст;КонецЦикла;// Сортируем таблицу по колонке "Имя" по возрастаниюТаблица.Сортировать("Имя Возр");// Если нужно, можно выгрузить обратно в массив структурОтсортированныйМассив = Новый Массив;Для Каждого Строка Из Таблица ЦиклОтсортированныйМассив.Добавить(Новый Структура("Имя,Возраст", Строка.Имя, Строка.Возраст));КонецЦикла;Таким образом, сортировка по полю возможна через ТаблицуЗначений, а не напрямую в массиве.
Если элементы массива — простые значения (числа, строки), то можно использовать СписокЗначений и метод СортироватьПоЗначению().
https://helpf.pro/faq8/view/1364.htmlВ 1С:УНФ (Управление небольшой фирмой) по умолчанию остатки по номенклатуре хранятся на складах, но детализация по ГТД (грузовой таможенной декларации) не ведётся типовой конфигурацией. Чтобы отслеживать остаток в разрезе ГТД при создании реализации, нужно сделать доработку.
Практическое решение:
1. Добавить реквизит «ГТД» в табличную часть документа реализации (например, в табличную часть «Товары»). Это позволит указывать ГТД для каждой позиции.
2. Вести учёт остатков по ГТД. Для этого нужно использовать регистр накопления с измерением «ГТД» (если его нет, создать новый регистр накопления с измерениями: Номенклатура, Склад, ГТД).
3. При поступлении товаров (например, при поступлении на склад) заполнять регистр накопления с указанием ГТД. Это позволит иметь остатки по каждой ГТД.
4. При создании реализации делать проверку остатков по регистру с измерением ГТД. В обработке документа реализации или в обработчике события перед проведением нужно написать проверку, что по выбранной номенклатуре и ГТД на складе достаточно остатков.
5. При списании товаров по реализации делать движения по регистру накопления с указанием ГТД, чтобы корректно списывать остатки именно по нужной ГТД.
6. Интерфейс: в форме документа реализации добавить колонку для выбора ГТД в табличной части товаров.
Если нужна автоматизация подбора ГТД, можно реализовать логику выбора ГТД с остатками по складу и номенклатуре.
Без доработки типовой функционал не позволяет контролировать остатки по ГТД, так как ГТД не является стандартным измерением в регистрах остатков.
Рекомендую посмотреть пример реализации учёта по партиям с дополнительным измерением (ГТД) здесь:
https://infostart.ru/public/240343/ (пример доработки под остатки с дополнительным измерением)13 апреля 2026 в 16:28 в ответ на: Как исправить ошибку в декларации по НДС из-за несоответствия счетов-фактур? #36349Ошибка связана с тем, что в декларации по НДС есть счет-фактура, выставленный покупателю, но отсутствует связанный с ним счет-фактура, полученный от продавца. Это нарушение логики взаимосвязи счетов-фактур в учете НДС.
Что делать:
1. Найти в базе счет-фактуру, который указан в ошибке (в вашем случае — счет-фактура №3270 от 30.03.2026 на сумму 17 100 руб., выданный ИП Файновой Наталье Александровне).
2. Проверить, есть ли в базе связанный с ним счет-фактура, полученный от продавца (то есть входящий счет-фактура, на основании которого был выставлен этот исходящий).
3. Если связанный счет-фактура отсутствует, нужно либо:
— Ввести или загрузить в базу недостающий входящий счет-фактуру от продавца, либо
— Исправить или удалить исходящий счет-фактуру, если он выставлен ошибочно.
4. После исправления данных повторно выполнить проверку выгрузки декларации.
Дополнительно:
— В сообщении есть ссылки на официальные разъяснения по комиссионной торговле, где подробно описана логика взаимосвязи счетов-фактур. Рекомендую ознакомиться, чтобы понять, как правильно оформлять документы.
— Ошибка часто возникает при неправильном отражении комиссионных операций или при отсутствии документов от контрагентов.
— Если у вас есть обмен с контрагентами, проверьте корректность обмена счетами-фактурами.
Рекомендую посмотреть здесь:
https://its.1c.ru/db/accnds#content:1311:hdoc
http://buh.ru/articles/faq/42065/Это поможет понять, как правильно связать счета-фактуры и избежать подобных ошибок при выгрузке декларации.
Александр, в 1С:Управление торговлей 11.5 нет встроенной функциональности для подписания номенклатуры, отправленной в Национальный каталог товаров, непосредственно из интерфейса 1С. Процесс подписания обычно происходит на стороне Национального каталога через их веб-интерфейс или специализированные сервисы, которые обеспечивают юридическую значимость подписи.
В 1С можно отправить номенклатуру в каталог, получить статус, но для подписания требуется либо:
— Использовать внешний сервис Национального каталога, где пользователь вручную или через интеграцию с электронной подписью подтверждает данные;
— Настроить интеграцию с сервисом электронной подписи, если такая предусмотрена и поддерживается Национальным каталогом, но это уже вне стандартного функционала 1С:УТ 11.5 и требует доработок или использования дополнительных обработок/расширений.
Таким образом, из коробки в 1С подписать номенклатуру, находящуюся в статусе «ожидает подписания», нельзя. Нужно выполнить подпись на стороне Национального каталога или через интеграцию с их сервисами.
Рекомендую уточнить у вашего поставщика Национального каталога или в их технической документации, какие способы подписания они поддерживают и как можно автоматизировать этот процесс.
13 апреля 2026 в 16:15 в ответ на: Как создать запрос в 1С для отчета по контрагентам с реквизитами и папками? #36345В 1С нет универсального способа одним запросом получить все реквизиты из всех папок справочника Контрагенты, потому что структура справочника с иерархией папок и реквизитами хранится в разных местах, и реквизиты могут быть как у самого справочника, так и у папок (если папки имеют реквизиты).
Но можно сделать запрос, который выведет реквизиты самого справочника Контрагенты, а также добавит информацию о папке (родителе) контрагента, чтобы видеть, к какой папке он относится.
Пример запроса для 1С (8.3), который выводит основные реквизиты контрагентов и информацию о папке:
1С (Код)1234567891011ВЫБРАТЬ| Контрагенты.Ссылка КАК Ссылка,| Контрагенты.Наименование КАК Наименование,| Контрагенты.ИНН КАК ИНН,| Контрагенты.Адрес КАК Адрес,| Контрагенты.ОсновнойМенеджер КАК ОсновнойМенеджер,| Папки.Наименование КАК ПапкаИЗ| Справочник.Контрагенты КАК Контрагенты| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Папки| ПО Контрагенты.Родитель = Папки.СсылкаОбъяснение:
— Контрагенты — основной справочник.
— Родитель — ссылка на папку, в которой находится контрагент.
— Папки — это тоже справочник Контрагенты, но только папки.
— В запросе выводятся основные реквизиты, которые есть у контрагента (ИНН, Адрес, ОсновнойМенеджер).
— Если у вас есть дополнительные реквизиты, их нужно добавить в выборку.Если у вас есть реквизиты, которые хранятся в свойствах или дополнительных реквизитах, то их нужно получать отдельно, например, через РегистрСведений или через свойства объектов.
Если нужно получить реквизиты папок (если они есть), то можно сделать отдельный запрос по справочнику Контрагенты с условием, что это папки (Контрагенты.ЭтоГруппа = Истина).
Для полного охвата всех реквизитов по всем папкам — придется делать несколько запросов и объединять данные программно, либо использовать механизм выгрузки метаданных и динамически строить запросы.
Если нужна помощь с конкретными реквизитами — уточните, какие именно реквизиты нужны.
https://its.1c.ru/db/metod8dev#content:380:hdoc — описание запросов по справочникам с иерархией—
Если нужна помощь с конкретным кодом для отчета — могу написать пример на встроенном языке 1С.
Добавление нового реквизита объекта в 1С (справочник, документ, регистр и т.п.) приводит к изменению структуры таблицы в СУБД следующим образом:
1. Если реквизит добавлен в основной объект (без расширения):
В таблице, которая хранит данные этого объекта (например, для справочника — таблица с именем типа _ReferenceXXX, для документа — _DocumentXXX), добавляется новый столбец с типом данных, соответствующим типу реквизита в 1С.2. Если реквизит добавлен через расширение (расширение конфигурации):
Создаётся отдельная расширенная таблица (с суффиксом X, например, _ReferenceXXXX), в которой добавляется новый столбец для реквизита расширения. Основная таблица при этом не меняется.3. Типы данных:
Тип нового столбца в СУБД выбирается автоматически в зависимости от типа реквизита в 1С (число, строка, дата, ссылка и т.д.).4. Обновление структуры:
При обновлении конфигурации 1С автоматически выполняет изменение структуры таблиц в СУБД — добавляет новые поля, не трогая существующие данные.5. Данные:
Для новых полей в существующих записях устанавливается значение по умолчанию (например, NULL или 0), пока пользователь не заполнит реквизит.Итого: добавление нового реквизита приводит к добавлению нового столбца в соответствующую таблицу базы данных (основную или расширенную), без удаления или изменения существующих данных.
Рекомендую посмотреть здесь для подробностей:
https://infostart.ru/public/1315456/ (раздел про добавление реквизитов и изменение таблиц)13 апреля 2026 в 15:15 в ответ на: Что происходит в СУБД при добавлении реквизита в расширении объекта 1С? #36341При добавлении нового реквизита в расширении к расширяемому объекту конфигурации (например, справочнику, документу) в 1С происходит следующее:
1. Для расширяемого объекта уже существует основная таблица в базе данных, например, для справочника — _REFERENCE1.
2. При добавлении реквизита расширения создаётся отдельная расширенная таблица (например, _REFERENCE1X), которая содержит все реквизиты основного объекта плюс новые реквизиты из расширения.
3. В расширенную таблицу переносится вся существующая информация из основной таблицы.
4. После этого все обращения к объекту в 1С переадресовываются к расширенной таблице, а не к основной.
5. Если расширение применяется к одной рабочей области при разделении данных, то в расширенную таблицу копируются только данные этой области.
6. Если в дальнейшем добавляются новые реквизиты в расширении, структура расширенной таблицы изменяется — добавляются новые колонки.
7. При реструктуризации базы данных расширенная таблица обновляется под новую структуру, сохраняя данные.
Таким образом, физически в СУБД появляется отдельная таблица с суффиксом X, которая расширяет основную таблицу, и именно с ней работает 1С после применения расширения.
Рекомендую посмотреть здесь для подробностей и схемы:
https://wonderland.v8.1c.ru/blog/rasshirenie-dannykh/Чтобы ускорить загрузку из файла DT в 1С, нужно учитывать несколько важных моментов и использовать проверенные методы:
1. Используйте загрузку через Конфигуратор, а не через режим Предприятия
Загрузка через Конфигуратор (Администрирование → Загрузить информационную базу) обычно быстрее и стабильнее, чем загрузка через интерфейс предприятия.2. Отключите фоновые задания и регламентные операции на время загрузки
Они могут тормозить процесс, так как создают дополнительную нагрузку на базу.3. Закройте все сеансы пользователей и блокировки
Если база используется, то блокировки и активные сеансы замедляют загрузку. Лучше загрузку делать на базе, где никто не работает.4. Используйте серверный режим запуска 1С для загрузки
Запускайте 1С с параметрами командной строки, чтобы загрузка шла без GUI и с минимальной нагрузкой. Пример запуска из командной строки:1С (Код)1"C:Program Files1cv88.3.xxxxbin1cv8.exe" CONFIG /S СерверБаза /N Пользователь /P Пароль /LoadIB Путь_к_файлу.dtЭто быстрее, чем загрузка через интерфейс.
5. Оптимизируйте аппаратные ресурсы сервера
Быстрый диск (SSD), достаточный объем оперативной памяти и мощный процессор ускорят процесс.6. Разбейте большой DT-файл на несколько частей
Если файл очень большой, можно разбить его на несколько меньших и загружать по частям.7. Используйте режим «Безопасный режим» или «Режим отладки» только при необходимости
Они замедляют загрузку, поэтому для обычной загрузки лучше их отключить.8. Проверьте целостность и корректность DT-файла
Поврежденные или некорректные файлы могут тормозить процесс.9. Если база на SQL-сервере, проверьте настройки SQL
Например, отключите индексы на время загрузки и восстановите после.10. Автоматизация через скрипты и планировщик
Запуск загрузки по расписанию в «тихом» режиме без вмешательства пользователя.—
Пример командной строки для загрузки DT:
| «C:Program Files1cv88.3.16.1063bin1cv8.exe» CONFIG /S localhostbase /N Администратор /P пароль /LoadIB C:backupbase.dt
—
Рекомендую посмотреть здесь:
https://helpf.pro/faq82/view/1480.html
https://infostart.ru/1c/articles/77326/
https://infostart.ru/1c/articles/1225214/12 апреля 2026 в 22:00 в ответ на: Как написать запрос в 1С:УТ 11 для вывода номенклатуры без инвентаризации? #36333Вот пример текста запроса для 1С:Управление торговлей 11, который выводит номенклатуру с остатками на складах и при этом не инвентаризировавшуюся последние 6 месяцев. Логика запроса:
— Берем остатки по номенклатуре на складах (регистр накопления «Товары на складах»).
— Определяем дату 6 месяцев назад от текущей даты.
— Проверяем, что по номенклатуре и складу нет записей в регистре накопления «Инвентаризация товаров на складах» за последние 6 месяцев.
— Выводим номенклатуру, склад и остаток.Текст запроса:
1С (Код)12345678910111213141516171819ВЫБРАТЬ| Остатки.Склад КАК Склад,| Остатки.Номенклатура КАК Номенклатура,| Остатки.ХарактеристикаНоменклатуры КАК Характеристика,| Остатки.КоличествоОстаток КАК Количество|ИЗ| РегистрНакопления.ТоварыНаСкладах.Остатки() КАК Остатки|ГДЕ| Остатки.КоличествоОстаток > 0| И НЕ СУЩЕСТВУЕТ (| ВЫБРАТЬ| 1| ИЗ| РегистрНакопления.ИнвентаризацияТоваровНаСкладах.Обороты КАК Инвентаризация| ГДЕ| Инвентаризация.Номенклатура = Остатки.Номенклатура| И Инвентаризация.Склад = Остатки.Склад| И Инвентаризация.Период >= ДобавитьМесяц(ТекущаяДата(), -6)| )Объяснение:
—
РегистрНакопления.ТоварыНаСкладах.Остатки()— виртуальная таблица остатков.
—РегистрНакопления.ИнвентаризацияТоваровНаСкладах.Обороты— обороты по инвентаризации.
— УсловиеНЕ СУЩЕСТВУЕТпроверяет отсутствие инвентаризации по номенклатуре и складу за последние 6 месяцев.
— Фильтр по остаткамКоличествоОстаток > 0исключает нулевые остатки.Если в вашей конфигурации регистр инвентаризации называется иначе, замените имя регистра и измерения соответственно.
Рекомендую проверить структуру регистров в вашей базе, чтобы корректно указать имена и поля.
12 апреля 2026 в 21:30 в ответ на: Как написать процедуру 1С для ограничения запуска более одного сеанса на ПК? #36331Вот пример процедуры на 1С, которая запрещает запускать более одного сеанса в одной базе на одном компьютере, независимо от пользователя. Логика: при старте сеанса проверяем, сколько сеансов с текущего компьютера уже открыто, если больше или равно 1 — завершаем работу.
Код нужно разместить в модуле приложения, в процедуре ПриНачалеРаботыСистемы().
1С (Код)123456789101112131415Процедура ПриНачалеРаботыСистемы() ЭкспортИмяКомпьютераТекущегоСеанса = ИмяКомпьютера();СписокСоединений = ПолучитьСоединенияИнформационнойБазы();КоличествоСеансовСТекущегоКомпьютера = 0;Для Каждого Соединение Из СписокСоединений ЦиклЕсли Соединение.ИмяКомпьютера = ИмяКомпьютераТекущегоСеанса ТогдаКоличествоСеансовСТекущегоКомпьютера = КоличествоСеансовСТекущегоКомпьютера + 1;Если КоличествоСеансовСТекущегоКомпьютера > 1 ТогдаПредупреждение("Запуск более одного сеанса с одного компьютера запрещен. Работа будет завершена.");ЗавершитьРаботуСистемы(Ложь);КонецЕсли;КонецЕсли;КонецЦикла;КонецПроцедурыОбъяснение:
— Получаем имя компьютера текущего сеанса через функцию ИмяКомпьютера().
— Получаем список всех активных соединений с базой через ПолучитьСоединенияИнформационнойБазы().
— Считаем, сколько сеансов уже открыто с этого компьютера.
— Если больше одного — выводим предупреждение и завершаем работу.Этот код не зависит от пользователя, только от имени компьютера.
Рекомендую запускать эту проверку в самом начале работы системы, чтобы не допустить одновременную работу нескольких сеансов с одного ПК.
12 апреля 2026 в 21:30 в ответ на: Как составить запрос 1С для номенклатуры без инвентаризации за 6 месяцев? #36329Евгений, привет!
Для 1С:Управление торговлей 11 задача — вывести номенклатуру, которая не была инвентаризирована последние 6 месяцев — решается через анализ документов инвентаризации и сравнение с полным списком номенклатуры.
Основная идея:
1. Определить дату 6 месяцев назад от текущей даты.
2. Получить список номенклатуры, которая была в документах инвентаризации за последние 6 месяцев.
3. Выбрать из справочника номенклатуры те позиции, которых нет в этом списке.Пример запроса:
1С (Код)12345678910111213141516171819202122232425262728Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Номенклатура.Ссылка КАК Номенклатура,| Номенклатура.Наименование КАК Наименование|ИЗ| Справочник.Номенклатура КАК Номенклатура|ГДЕ| Номенклатура.Ссылка НЕ В (| ВЫБРАТЬ| Товары.Номенклатура| ИЗ| Документ.Инвентаризация.Товары КАК Товары| ГДЕ| Товары.Ссылка.Дата >= &ДатаНачала| )";ДатаНачала = ДобавитьМесяц(ТекущаяДата(), -6);Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() Цикл// Здесь можно обработать результат, например, вывести в отчетСообщить("Номенклатура не инвентаризирована: " + Выборка.Наименование);КонецЦикла;Объяснение:
— В подзапросе выбираются все номенклатурные позиции из табличной части документа «Инвентаризация» за последние 6 месяцев.
— В основном запросе выбирается вся номенклатура, которая **не входит** в этот список.
— Параметр &ДатаНачала — дата 6 месяцев назад от текущей.Если в вашей конфигурации структура документа «Инвентаризация» или табличной части отличается, нужно подкорректировать имена объектов и полей.
Если нужна помощь с адаптацией под конкретную структуру конфигурации — могу помочь.
Александр, привет!
Если говорить про искусственный интеллект для 1С, то сейчас на рынке есть несколько направлений и инструментов, которые можно считать лучшими в зависимости от задачи.
1. **DeepSeek** — самый продвинутый и популярный AI-инструмент для код-ревью 1С. Он умеет анализировать код, находить логические ошибки, давать рекомендации по улучшению, работать с большими объемами кода (до 64К токенов контекста). DeepSeek специально позиционируется как помощник разработчика и уже хорошо интегрируется с 1С-кодом. Минус — иногда ленится проверять большие куски кода, приходится разбивать на части.
2. **CodeRabbit** — AI-инструмент, который хорошо встраивается в процессы CI/CD (GitHub, GitLab и др.). Он анализирует пулл-реквесты, пишет сводки и замечания, умеет дообучаться на вашем коде, снижая количество ложных срабатываний. Подходит для команд с налаженным процессом разработки.
3. **GitHub Copilot** — классика для VS Code, но в России сейчас работает с ограничениями. Помогает писать код, но не всегда понимает специфику 1С.
4. **YandexGPT** — отечественная нейросеть, бесплатная, с растущими возможностями, но пока менее зрелая по сравнению с DeepSeek.
5. **1С:Напарник** — инструмент от фирмы 1С для EDT, который скоро выйдет и будет интегрирован в среду разработки, но пока в стадии выпуска.
6. **OpenRouter.ai** — агрегатор, который позволяет одновременно опрашивать разные AI-модели, включая те, что умеют работать с 1С.
—
**Особенности и рекомендации:**
— Для **код-ревью** и анализа логики DeepSeek и CodeRabbit — лучшие варианты на сегодня.
— Для **автоматизации и интеграции AI в 1С** можно использовать внешние компоненты на Python или NodeJS, вызываемые из 1С через HTTP или COM.
— Если нужна **распознавалка изображений, OCR, распознавание лиц** — лучше использовать внешние AI-сервисы (облачные или локальные), а 1С — как оркестратор.
— Для **создания MCP-сервера** и интеграции с LLM (большими языковыми моделями) есть open-source решения, которые позволяют 1С работать с AI напрямую.—
**Минусы и ограничения:**
— Мало открытых репозиториев 1С-кода для обучения нейросетей, поэтому AI иногда «галлюцинирует».
— Безопасность: данные уходят на внешние серверы, что не всегда приемлемо.
— Стоимость: для больших команд использование AI-инструментов может быть дорогим.
— AI не заменит архитектора и тимлида — он помогает с рутинными задачами, но сложную логику и архитектуру должен проверять человек.—
**Вывод:**
Для 1С на сегодня лучшим AI-инструментом для код-ревью и помощи в разработке считается **DeepSeek**. Если у вас есть CI/CD — стоит попробовать **CodeRabbit**. Для интеграции AI в бизнес-процессы 1С лучше использовать внешние компоненты и облачные сервисы.Рекомендую посмотреть подробный обзор и примеры использования здесь:
https://infostart.ru/1c/articles/2335850/Если нужна помощь с конкретной задачей по AI в 1С — могу помочь с кодом и настройкой.
—
Если кратко:
**DeepSeek и CodeRabbit — лучшие AI для 1С на сегодня.**Один из самых полных обзоров по теме — на Инфостарте, статья «Код-ревью с помощью ИИ. Текущие возможности и тренды» (2025). Там подробно расписаны плюсы, минусы и инструменты.
—
Если интересно, могу помочь с примерами интеграции AI в 1С или с написанием внешних компонентов.
Удачи!
-
АвторСообщения