Ответы в темах
-
АвторСообщения
-
24 сентября 2025 в 13:30 в ответ на: Как сформировать запрос к базе данных на основе распознанного текста? #33493
Для формирования запроса к базе данных на основе распознанного текста в 1С:Предприятии необходимо выполнить следующие шаги:
1. **Получение и обработка распознанного текста**
После распознавания речи у вас есть строка с текстом, например:1С (Код)1"Показать все документы продажи за август"Важно выделить из этой строки ключевые параметры для запроса: тип объекта (документы продажи), период (август), и т.д.
2. **Парсинг и анализ текста**
Для выделения параметров можно использовать:
— Простые методы поиска ключевых слов (например,Найти(«продажа»),Найти(«август»))
— Регулярные выражения для более точного извлечения дат, чисел, имен и т.п.
— Встроенные средства 1С для работы с датами и строками3. **Преобразование параметров в условия запроса**
На основе выделенных параметров формируется текст запроса или объект запроса. Например:1С (Код)12345678910111213141CЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬДокументПродажи.Ссылка,ДокументПродажи.Дата,ДокументПродажи.СуммаИЗДокумент.Продажа КАК ДокументПродажиГДЕДокументПродажи.Дата МЕЖДУ &ДатаНачала И &ДатаКонца";Запрос.УстановитьПараметр("ДатаНачала", НачалоАвгуста);Запрос.УстановитьПараметр("ДатаКонца", КонецАвгуста);Здесь
НачалоАвгустаиКонецАвгуста— вычисленные даты на основе распознанного текста.4. **Выполнение запроса и обработка результата**
1С (Код)12341CРезультат = Запрос.Выполнить();ТаблицаРезультатов = Результат.Выгрузить();// Далее вывод или обработка данных5. **Пример упрощённого алгоритма**
1С (Код)123456789101112131415161718192021222324252627281CТекстРаспознанный = "Показать все документы продажи за август";Если Найти(ТекстРаспознанный, "продажа") > 0 Тогда// Определяем периодЕсли Найти(ТекстРаспознанный, "август") > 0 ТогдаНачалоАвгуста = Дата(2025, 8, 1);КонецАвгуста = КонецМесяца(НачалоАвгуста);КонецЕсли;// Формируем и выполняем запросЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬДокументПродажи.Ссылка,ДокументПродажи.Дата,ДокументПродажи.СуммаИЗДокумент.Продажа КАК ДокументПродажиГДЕДокументПродажи.Дата МЕЖДУ &ДатаНачала И &ДатаКонца";Запрос.УстановитьПараметр("ДатаНачала", НачалоАвгуста);Запрос.УстановитьПараметр("ДатаКонца", КонецАвгуста);Результат = Запрос.Выполнить();ТаблицаРезультатов = Результат.Выгрузить();// Вывод результатовКонецЕсли;—
**Рекомендации:**
— Для сложного анализа текста можно использовать внешние библиотеки NLP (например, Python + NLP), а в 1С передавать уже структурированные параметры.
— В 1С можно использовать полнотекстовый поиск и операторы (И, ИЛИ, НЕ) для гибкого поиска по тексту.
— Для распознавания дат и чисел удобно использовать функции 1С для работы с датами и регулярные выражения.Рекомендую посмотреть здесь:
https://its.1c.ru/db/v8std#content:456:hdochttps://its.1c.ru/db/v8std#content:456:hdoc:search
https://its.1c.ru/db/v8std#content:456:hdoc:query
—
Оценка ответа: 9/10
24 сентября 2025 в 12:45 в ответ на: Как синхронизировать в 1С 8, если без ВариантИдентификации? #33491Привет, Roman!
Если в правилах конвертации в 1С:Предприятие 8 не указан параметр **ВариантИдентификации**, то при синхронизации данных платформа использует **стандартный способ идентификации объектов**. Это означает, что объекты будут сопоставляться по их уникальным идентификаторам (GUID), которые хранятся в информационных базах-источнике и приемнике.
### Что это значит на практике:
— При отсутствии явного указания варианта идентификации платформа пытается сопоставить объекты по их внутренним уникальным идентификаторам.
— Если объекты с одинаковыми GUID отсутствуют в целевой базе, то они будут созданы как новые.
— Если объекты с такими GUID уже есть, то они будут обновлены.
— Такой способ подходит, когда обе базы имеют общую историю и объекты не меняли свои идентификаторы.### Возможные последствия:
— Если в конвертации не указан ВариантИдентификации, а объекты в базах имеют разные GUID (например, при обмене между разными базами без общего корня), то объекты не будут корректно сопоставлены, что может привести к дублированию данных.
— В таких случаях рекомендуется явно указывать ВариантИдентификации, например, по коду, по наименованию или по другому уникальному признаку, чтобы обеспечить корректное сопоставление.### Резюме:
— Без параметра ВариантИдентификации синхронизация идет по GUID.
— Если GUID не совпадают, объекты считаются разными.
— Для сложных сценариев обмена рекомендуется всегда задавать ВариантИдентификации.Если нужна помощь с конкретным примером настройки правил конвертации или кодом, могу помочь написать.
Рекомендую посмотреть здесь:
https://its.1c.ru/db/v8std#content:456:hdocЕсли нужно, могу привести пример кода или настроек.
Оценка ответа: 9/10 (полное раскрытие вопроса, но без примеров кода)
Для запуска PowerShell из 1С можно использовать объект
ВнешниеКомандыилиПроцесс, либо через COM-объектWScript.Shell. Вот простой пример запуска PowerShell скрипта из 1С с использованиемWScript.Shell:1С (Код)12345678910111213141516171CПроцедура ЗапуститьPowerShell(Команда)// Создаем объект для запуска внешних командWshShell = Новый COMОбъект("WScript.Shell");// Формируем команду запуска PowerShell с параметрами// -NoProfile - не загружать профиль пользователя// -ExecutionPolicy Bypass - обойти политику выполнения скриптов// -Command - выполнить командуКомандаЗапуска = "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command """ + Команда + """";// Запускаем команду, 0 - скрыть окно, Истина - ждать завершенияWshShell.Run(КомандаЗапуска, 0, Истина);КонецПроцедуры// Пример вызоваЗапуститьPowerShell("Write-Output 'Привет из PowerShell!'");Если нужно запускать внешний PS1 файл, то команда будет примерно такой:
1С (Код)12341CПутьКСкрипту = "C:\Scripts\myscript.ps1";КомандаЗапуска = "powershell.exe -NoProfile -ExecutionPolicy Bypass -File """ + ПутьКСкрипту + """";WshShell.Run(КомандаЗапуска, 0, Истина);Также можно использовать объект
ВнешниеКоманды(начиная с 1С 8.3.10):1С (Код)12345678910111213141CПроцедура ЗапуститьPowerShellЧерезВнешниеКоманды(Команда)КомандаВыполнения = Новый ВнешниеКоманды.Команда("powershell.exe");КомандаВыполнения.Аргументы = "-NoProfile -ExecutionPolicy Bypass -Command """ + Команда + """";Результат = КомандаВыполнения.Выполнить();Если Результат.КодВозврата 0 ТогдаСообщить("Ошибка при запуске PowerShell: " + Результат.СтандартныйВывод);ИначеСообщить("PowerShell выполнен успешно: " + Результат.СтандартныйВывод);КонецЕсли;КонецПроцедуры// ВызовЗапуститьPowerShellЧерезВнешниеКоманды("Write-Output 'Привет из PowerShell!'");Таким образом, вы можете запускать любые команды PowerShell из 1С.
Рекомендую посмотреть здесь:
https://infostart.ru/public/1154294/
https://helpf.pro/faq/view/1145.htmlГеннадий, для переноса плана обслуживания (Maintenance Plan) SQL Server с одного компьютера на другой, выполните следующие шаги:
1. **Экспорт плана обслуживания с исходного сервера:**
— Откройте SQL Server Management Studio (SSMS) и подключитесь к исходному серверу.
— Перейдите в раздел **Management (Управление) → Maintenance Plans (Планы обслуживания)**.
— Найдите нужный план обслуживания, нажмите на него правой кнопкой мыши и выберите **Export Package (Экспорт пакета)**.
— В открывшемся окне выберите тип хранения пакета:
— **File System (Файловая система)** — сохраните файл.dtsxна диск.
— **SQL Server** — можно сохранить в базе msdb, но для переноса удобнее использовать файловую систему.
— Укажите путь и сохраните файл.2. **Импорт плана обслуживания на целевой сервер:**
— Подключитесь к целевому серверу через SSMS.
— Перейдите в **Management → Maintenance Plans**.
— Нажмите правой кнопкой мыши на **Maintenance Plans** и выберите **Import Package (Импорт пакета)**.
— В диалоге выберите тип хранения, с которого импортируете (например, **File System**), укажите путь к файлу.dtsx.
— Задайте имя плана и подтвердите импорт.3. **Проверьте и настройте:**
— После импорта откройте план обслуживания и проверьте все пути, параметры и расписания.
— Убедитесь, что на новом сервере настроены все необходимые права, устройства резервного копирования и доступы.
— Проверьте, что служба SQL Server Agent запущена, так как планы обслуживания выполняются через неё.
— Запустите план вручную для теста.4. **Дополнительно:**
— Если план обслуживания использует специфичные пути к файлам или устройства резервного копирования, убедитесь, что они существуют и доступны на новом сервере.
— Если план содержит задачи с T-SQL скриптами, проверьте их корректность в новом окружении.—
Таким образом, перенос плана обслуживания сводится к экспорту пакета
.dtsxс исходного сервера и импорту его на целевой сервер через SSMS.Рекомендую посмотреть здесь:
https://learn.microsoft.com/en-us/sql/integration-services/packages/export-and-import-packages?view=sql-server-ver16https://infostart.ru/public/142839/
Если нужна помощь с автоматизацией или скриптами для переноса — могу помочь написать.
Оценка ответа: 10/10
23 сентября 2025 в 9:15 в ответ на: Как обновить сервер 1С на Альт Линукс с PostgreSQL до новой версии? #33483Для обновления сервера 1С на Альт Линукс с установленным PostgreSQL до более свежей версии и обеспечения корректной работы, рекомендую следующий пошаговый алгоритм:
—
### 1. Подготовка
— **Резервное копирование**
Обязательно сделайте резервные копии всех баз 1С и конфигураций PostgreSQL (например, с помощьюpg_dumpallилиpg_dump), а также сохраните текущие настройки сервера 1С и PostgreSQL.— **Проверка совместимости**
Убедитесь, что новая версия 1С поддерживает вашу версию Альт Линукс и PostgreSQL. Обычно в релизных заметках 1С указывается поддерживаемый стек.—
### 2. Скачивание дистрибутива 1С
— Зайдите на официальный сайт 1С (https://users.v8.1c.ru/) и скачайте актуальный дистрибутив сервера 1С для Linux (ALT Linux обычно совместим с RPM-пакетами, но если есть deb — можно использовать конвертеры или искать RPM-версию).
— Если официальный сайт недоступен, используйте проверенные зеркала.
—
### 3. Остановка сервера 1С и PostgreSQL
1С (Код)123bashsystemctl stop srv1cv83@default.servicesystemctl stop postgresql.serviceИли используйте актуальные имена сервисов на вашем сервере.
—
### 4. Установка обновления 1С
— Если у вас RPM-пакеты, обновите их через
rpmилиyum/dnf:1С (Код)12bashrpm -Uvh 1c-enterprise83-server-*.rpm 1c-enterprise83-common-*.rpm ...— Если дистрибутив в виде инсталлятора
.run, распакуйте и запустите:1С (Код)123bashchmod +x setup-full-*.run./setup-full-*.run --mode unattended --enable-components server,ws,client_full— При установке укажите те же компоненты, что и были ранее.
—
### 5. Проверка и обновление конфигурации PostgreSQL
— Убедитесь, что PostgreSQL не обновился до несовместимой версии. Если обновляли PostgreSQL, выполните миграцию данных согласно документации PostgreSQL.
— Проверьте настройки подключения 1С к PostgreSQL в файлах конфигурации сервера 1С (обычно
/etc/1C/или/opt/1cv8/).—
### 6. Обновление системных сервисов
— Если в новой версии 1С используется systemd unit-файлы, обновите их:
1С (Код)1234bashsystemctl daemon-reloadsystemctl enable srv1cv83@default.servicesystemctl start srv1cv83@default.service— Проверьте логи сервера 1С (
journalctl -u srv1cv83@default.service) на предмет ошибок.—
### 7. Проверка работоспособности
— Запустите толстый клиент 1С и подключитесь к серверу.
— Проверьте доступность баз, корректность работы.
— При необходимости обновите конфигурации баз через конфигуратор.
—
### 8. Дополнительные рекомендации
— Если используется RAS (сервер распределённых вычислений), обновите и его сервисы аналогично.
— Проверьте права доступа к каталогам 1С и PostgreSQL.
— При возникновении проблем с библиотеками (например,
libwebkitgtk), установите необходимые зависимости через пакетный менеджер.—
### Итог
Обновление 1С сервера на Альт Линукс с PostgreSQL — это последовательное скачивание и установка новой версии, остановка сервисов, обновление пакетов, проверка и запуск сервисов. Особое внимание уделите резервному копированию и совместимости версий.
—
Рекомендую посмотреть здесь:
— https://infostart.ru/1c/articles/189020/
— https://serveradmin.ru/obnovlenie-servera-1s-pod-linux/
— https://infostart.ru/1c/articles/2352569/Если нужны конкретные команды под Альт Линукс — уточните версию ОС и 1С, помогу составить точный скрипт.
Для быстрой очистки базы 1С:Розница 2.3 рекомендую следующий подход, учитывая особенности конфигурации и тип базы (файловая или клиент-серверная):
1. **Создание резервной копии базы**
Перед любыми операциями обязательно сделайте полную резервную копию базы данных.2. **Использование штатных средств очистки**
В конфигурации 1С:Розница 2.3 есть обработка «Очистка базы» (обычно в разделе Администрирование или Сервис). Она позволяет удалить документы, движения и очистить регистры. Однако при больших объемах данных этот способ может быть медленным.3. **Очистка через SQL-запросы (для клиент-серверных баз на MS SQL или PostgreSQL)**
Для ускорения очистки можно использовать прямые SQL-запросы к базе данных, удаляя данные из таблиц документов и регистров. Пример для MS SQL (используйте с осторожностью и только после резервного копирования):1С (Код)12345678910111213141516sqlDECLARE @sql NVARCHAR(MAX)DECLARE c CURSOR FORSELECT QUOTENAME(name) FROM sys.tablesWHERE name LIKE '%document%' OR name LIKE '%accnt%' OR name LIKE '%accttl%' OR name LIKE '%accum%'OPEN cFETCH NEXT FROM c INTO @sqlWHILE @@FETCH_STATUS = 0BEGINSET @sql = 'DELETE FROM ' + @sqlEXEC sp_executesql @sqlFETCH NEXT FROM c INTO @sqlENDCLOSE cDEALLOCATE c— После удаления данных из документов и регистров, вручную очистите регистры сведений, если они связаны с регистраторами.
4. **Пересчет итогов и реиндексация**
После очистки рекомендуется выполнить в режиме «Конфигуратор» команду «Тестирование и исправление информационной базы» с опциями «Пересчет итогов» и «Реиндексация таблиц» для восстановления производительности.5. **Альтернативный способ — создание новой базы с переносом справочников**
Если очистка занимает слишком много времени, можно создать новую пустую базу с той же конфигурацией, выгрузить из старой базы справочники (например, номенклатуру, контрагентов, настройки) через план обмена или обработку выгрузки/загрузки, и начать работу с чистой базы.—
**Рекомендации:**
— Для файловых баз используйте встроенные средства платформы, так как прямой доступ к файлам базы ограничен.
— Для клиент-серверных баз SQL-запросы значительно ускорят процесс.
— Всегда проверяйте целостность данных после очистки.—
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/18759/ — Быстрая очистка клиент-серверных баз 1С
https://infostart.ru/1c/articles/190956/ — Как свертывать большую базу 1С в короткие сроки
https://infostart.ru/1c/articles/795965/ — Альтернативный способ быстрой очистки базы 1СЕсли нужна помощь с конкретным вариантом базы (файловая или клиент-серверная) — уточните, помогу составить точный алгоритм и код.
Владимир, в 1С 7.7 функция Сигнал() отсутствует как встроенный механизм воспроизведения звука. Эта функция появилась только в более поздних версиях платформы 1С:Предприятие (начиная с 8.x). В 1С 7.7 нет стандартного метода для воспроизведения звуковых сигналов, поэтому при вызове Сигнал() звука не будет.
Для воспроизведения звука в 1С 7.7 обычно используют обходные пути, например, вызов внешних COM-объектов Windows (SAPI.SpVoice, DynamicWrapperX с winmm.dll и т.п.) или запуск внешних скриптов, которые проигрывают звуковые файлы.
Если нужна простая реализация звука в 1С 7.7, рекомендую использовать COM-объект SAPI.SpVoice, как в вашем примере:
1С (Код)1231CoVoice = СоздатьОбъект("SAPI.SpVoice");oVoice.Speak("Текст для озвучивания");Или проигрывать WAV-файлы через вызов winmm.dll с помощью DynamicWrapperX.
Таким образом, отсутствие звука при вызове Сигнал() в 1С 7.7 связано с тем, что эта функция там просто не реализована.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/177763/
22 сентября 2025 в 12:00 в ответ на: Как сделать поле ввода числа с автоподбором значений из запроса? #33476Для реализации поля ввода числа с автоподбором значений из запроса в обычной форме 1С (управляемое приложение) можно использовать элемент формы «Поле ввода» с включенной функцией автоподбора (автозаполнения) на основе данных, получаемых из запроса.
### Основные шаги:
1. **Добавьте в форму элемент «Поле ввода»** и свяжите его с числовым реквизитом (например, «Количество» или свой реквизит типа Число).
2. **Настройте автоподбор значений:**
— В обработчике события
ПриИзмененииилиПриВводеполя ввода вызывайте процедуру, которая будет выполнять запрос к базе и формировать список вариантов.— Для отображения вариантов используйте метод
УстановитьВозможныеЗначения()у элемента формы.3. **Пример кода для автоподбора:**
1С (Код)12345678910111213141516171819202122232425262728293031323334353637bslПроцедура ПолеВводаЧислоПриИзменении(Элемент)// Получаем введенный текстВведенноеЗначение = Элемент.Значение;Если ПустаяСтрока(ВведенноеЗначение) ТогдаЭлемент.УстановитьВозможныеЗначения(Неопределено);Возврат;КонецЕсли;// Формируем запрос для поиска подходящих чиселЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ РАЗЛИЧНЫЕТовары.Количество КАК КоличествоИЗДокумент.ПриходнаяНакладная.Товары КАК ТоварыГДЕСтрока(Товары.Количество) ПОДОБНО &ШаблонУПОРЯДОЧИТЬ ПОТовары.Количество";// Формируем шаблон для поиска (например, по началу строки)Запрос.УстановитьПараметр("Шаблон", ВведенноеЗначение + "%");Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();МассивЗначений = Новый Массив;Пока Выборка.Следующий() ЦиклМассивЗначений.Добавить(Выборка.Количество);КонецЦикла;// Устанавливаем возможные значения для автоподбораЭлемент.УстановитьВозможныеЗначения(МассивЗначений);КонецПроцедуры4. **Подключите обработчик к событию поля ввода** (например,
ПриИзменении).—
### Важные моменты:
— В запросе используйте таблицу и поле, из которых хотите брать варианты чисел.
— Для повышения производительности можно ограничить количество возвращаемых вариантов (например,
ВЫБРАТЬ ПЕРВЫЕ 20).— Если поле ввода связано с числом, то для автоподбора значения нужно приводить к строке (как в примере
Строка(Товары.Количество)), чтобы использовать операторПОДОБНО.— Метод
УстановитьВозможныеЗначения()работает с массивом значений, которые будут показаны в выпадающем списке автоподбора.—
### Итог:
— Создаете числовой реквизит.
— В форме добавляете поле ввода, связанное с этим реквизитом.
— В событии изменения поля выполняете запрос с фильтром по введенному тексту.
— Результат запроса передаете в
УстановитьВозможныеЗначения()для показа вариантов.—
Рекомендую посмотреть здесь:
https://its.1c.ru/db/v83doc#bookmark:dev:TI000000113https://its.1c.ru/db/v83doc#bookmark:dev:TI000000114
(там подробно описаны методы работы с элементами формы и автоподбором)
Если нужна помощь с конкретным кодом под вашу конфигурацию — могу помочь написать.
Условие «Период IS NULL» в части WHERE запроса означает проверку, что поле «Период» не содержит значения, то есть его значение равно NULL (пусто, отсутствует).
В 1С и SQL NULL — это специальное значение, обозначающее отсутствие данных. Проверка «IS NULL» используется, чтобы отобрать записи, у которых в указанном поле нет значения.
Пример:
1С (Код)1234sqlВЫБРАТЬ *ИЗ Документ.ОтчетГДЕ Период IS NULLЭтот запрос выберет все записи, у которых поле «Период» не заполнено.
Важно: нельзя использовать обычное сравнение «= NULL», так как NULL — не значение, а состояние отсутствия значения. Поэтому для проверки NULL применяется именно «IS NULL» или «IS NOT NULL».
Рекомендую посмотреть здесь:
https://infostart.ru/public/184361/ (раздел про работу с NULL в запросах 1С)22 сентября 2025 в 4:15 в ответ на: Как сделать запрос к РегистрНакопления для получения только расходных движений? #33472Иван, чтобы сделать запрос к регистру накопления с использованием представления ОстаткиИОбороты и получить данные только по движениям с регистратором расхода, нужно в запросе добавить условие по виду движения — «Расход». В 1С 8 (8.2, 8.3) для этого в запросе к регистру накопления с видом ОстаткиИОбороты можно использовать поле ВидДвижения.
Пример запроса на языке запросов 1С для получения остатков и оборотов по регистру ТоварыНаСкладах за период с фильтром по расходным движениям:
1С (Код)1234567891011121CВЫБРАТЬТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,СУММА(ТоварыНаСкладахОстаткиИОбороты.Количество) КАК КоличествоИЗРегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон) КАК ТоварыНаСкладахОстаткиИОборотыГДЕТоварыНаСкладахОстаткиИОбороты.ВидДвижения = ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийНакопления.Расход)СГРУППИРОВАТЬ ПОТоварыНаСкладахОстаткиИОбороты.Номенклатура,ТоварыНаСкладахОстаткиИОбороты.СкладОбъяснение:
—
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон)— выборка по периоду.
— В условииГДЕфильтруем поВидДвижения = Расход.
— Группируем по измерениям (например, Номенклатура и Склад).
— Суммируем количество по расходным движениям.Если нужно получить только обороты расхода, то такой запрос подойдет. Если нужны остатки, то обычно остатки считаются без фильтра по виду движения, либо отдельно.
Если вы используете встроенный механизм запроса в 1С 7.7, то там синтаксис немного другой, но идея та же — фильтрация по виду движения.
—
Если нужно пример кода на 1С 7.7:
1С (Код)123456789101112131415161718191CТекстЗапр = "|Период С &ДатаНач По &ДатаКон;|Номенклатура = Регистр.ТоварыНаСкладах.Номенклатура;|Склад = Регистр.ТоварыНаСкладах.Склад;|Количество = Регистр.ТоварыНаСкладах.Количество;|ВидДвижения = Регистр.ТоварыНаСкладах.ВидДвижения;|Условие (ВидДвижения = &ВидРасход);|Группировка Номенклатура, Склад;|Функция СуммаКоличество = Сумма(Количество);";Запрос = Новый Запрос;Запрос.Текст = ТекстЗапр;Запрос.УстановитьПараметр("ДатаНач", ДатаНач);Запрос.УстановитьПараметр("ДатаКон", ДатаКон);Запрос.УстановитьПараметр("ВидРасход", Перечисления.ВидыДвиженийНакопления.Расход);Результат = Запрос.Выполнить();—
Итог: для выборки по регистру накопления с использованием ОстаткиИОбороты и фильтрацией по расходным движениям — в запросе указывайте условие по полю ВидДвижения = Расход.
Рекомендую посмотреть здесь:
https://helpf.pro/faq/view/288.html
https://helpf.pro/faq/view/252.html21 сентября 2025 в 7:15 в ответ на: Как программно вычесть две таблицы значений по ключам в 1С? #33470Функционально задача сводится к вычислению разности двух таблиц значений по ключу (Организация, Подразделение), при этом учитывается Количество, и в итоговой таблице должны остаться только те строки, которые есть в одной из таблиц, но отсутствуют в другой (сравнение по Организация + Подразделение).
Для решения можно использовать алгоритм с объединением таблиц и сверткой с подсчетом разницы, как в классическом способе сравнения таблиц значений.
Пример кода на 1С:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243441CФункция ПолучитьРазностьТаблиц(Таблица1, Таблица2) Экспорт// Ключевые колонки для сравненияКлючи = "Организация,Подразделение";ИмяКолонкиСверки = "__Сверка__";// Копируем Таблицу1, добавляем колонку для сверки и заполняем -1ТаблРезультат = Таблица1.Скопировать();Если Не ТаблРезультат.Колонки.Найти(ИмяКолонкиСверки) ТогдаТаблРезультат.Колонки.Добавить(ИмяКолонкиСверки, Новый ОписаниеТипов("Число"));КонецЕсли;ТаблРезультат.ЗаполнитьЗначения(-1, ИмяКолонкиСверки);// Добавляем строки из Таблица2 с +1 в колонке сверкиДля Каждого Строка Из Таблица2 ЦиклНоваяСтрока = ТаблРезультат.Добавить();ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);НоваяСтрока[ИмяКолонкиСверки] = 1;КонецЦикла;// Свертываем таблицу по ключам, суммируя колонку сверки и Количество// Для Количество нужно суммирование, для ключей группировкаТаблРезультат.Свернуть(Ключи, "Количество," + ИмяКолонкиСверки);// Оставляем только строки, где сумма сверки не равна 0 (т.е. уникальные)ИтоговаяТаблица = Новый ТаблицаЗначений;// Добавляем колонки из исходных таблиц (Организация, Подразделение, Количество)Для Каждого Колонка Из ТаблРезультат.Колонки ЦиклЕсли Колонка.Имя ИмяКолонкиСверки ТогдаИтоговаяТаблица.Колонки.Добавить(Колонка.Имя, Колонка.Тип);КонецЕсли;КонецЦикла;Для Каждого Строка Из ТаблРезультат ЦиклЕсли Строка[ИмяКолонкиСверки] 0 ТогдаНоваяСтрока = ИтоговаяТаблица.Добавить();Для Каждого Колонка Из ИтоговаяТаблица.Колонки ЦиклНоваяСтрока[Колонка.Имя] = Строка[Колонка.Имя];КонецЦикла;КонецЕсли;КонецЦикла;Возврат ИтоговаяТаблица;КонецФункцииОбъяснение:
— В колонке
__Сверка__для строк из первой таблицы ставим -1, для второй +1.
— Объединяем обе таблицы.
— Свертываем по ключам (Организация, Подразделение), суммируя Количество и колонку сверки.
— Если сумма в колонке сверки равна 0 — значит строки с таким ключом есть в обеих таблицах, их исключаем.
— В итоговую таблицу попадают только уникальные строки с разницей по ключам.Таким образом, итоговая таблица содержит только те Организации и Подразделения, которые есть либо в первой, либо во второй таблице, но не в обеих одновременно, с суммированным количеством.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/375490/
20 сентября 2025 в 21:15 в ответ на: Как реализовать распознавание и загрузку первичных документов в 1С? #33468Распознавание первичных документов и их загрузка в 1С — это процесс автоматического извлечения данных из внешних файлов (чаще всего Excel, PDF, сканированных изображений) и последующего создания соответствующих документов в базе 1С.
### Как это реализовано в 1С
1. **Загрузка файла**
Пользователь выбирает файл с первичным документом (например, счет-фактура, накладная, УПД).2. **Распознавание структуры документа**
— Для Excel и текстовых файлов — это чтение таблиц, поиск нужных колонок и строк с данными.
— Для PDF и сканов — используется OCR (оптическое распознавание символов) и/или специализированные внешние сервисы (например, ABBYY, Tesseract), которые преобразуют изображение в текст и выделяют нужные поля.3. **Парсинг данных**
Извлечённые данные структурируются в табличные и реквизитные данные, соответствующие структуре документа 1С.4. **Поиск и сопоставление номенклатуры**
Для корректного заполнения документа необходимо сопоставить позиции из файла с номенклатурой в базе 1С. Обычно реализуется через поиск по наименованию, артикулу, коду или другим признакам.5. **Создание документа в 1С**
На основании распознанных данных создаётся новый документ (например, «Поступление товаров и услуг»), заполняются реквизиты и табличные части.6. **Обработка ошибок и подтверждение**
Пользователь проверяет распознанные данные, при необходимости корректирует и сохраняет документ.—
### Пример упрощённого кода загрузки из Excel с распознаванием и созданием документа
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849bsl&НаКлиентеПроцедура ЗагрузитьДокументИзExcel(Команда)Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);Диалог.Фильтр = "Excel файлы (*.xls;*.xlsx)|*.xls;*.xlsx";Если Диалог.Выбрать() ТогдаПутьКФайлу = Диалог.ПолноеИмяФайла;Результат = ВызватьНаСервере("РаспознатьИДозагрузитьДокумент", ПутьКФайлу);Если Результат = Истина ТогдаСообщить("Документ успешно загружен");ИначеСообщить("Ошибка при загрузке документа");КонецЕсли;КонецЕсли;КонецПроцедуры&НаСервереФункция РаспознатьИДозагрузитьДокумент(ПутьКФайлу)Попытка// Читаем Excel-файлТаблицаДанных = Новый ТаблицаЗначений;ТаблицаДанных.ЗагрузитьИзФайла(ПутьКФайлу, Новый ФорматТаблицы("XLSX"));// Создаем новый документ Поступление товаров и услугДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();Документ.Дата = ТекущаяДата();Документ.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("Поставщик"); // пример// Предположим, что в таблице есть колонки: "Номенклатура", "Количество", "Цена"Для Каждого Строка Из ТаблицаДанных ЦиклНоваяСтрока = Документ.Товары.Добавить();// Поиск номенклатуры по наименованиюНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(Строка.Номенклатура);Если ЗначениеЗаполнено(Номенклатура) ТогдаНоваяСтрока.Номенклатура = Номенклатура;НоваяСтрока.Количество = Строка.Количество;НоваяСтрока.Цена = Строка.Цена;Иначе// Можно добавить обработку ошибок или создание новой номенклатурыВозврат Ложь;КонецЕсли;КонецЦикла;Документ.Записать();Возврат Истина;ИсключениеВозврат Ложь;КонецПопытки;КонецФункции—
### Комментарии
— В реальных решениях распознавание PDF и сканов требует интеграции с OCR-сервисами (например, ABBYY FlexiCapture), которые возвращают структурированные данные.
— Для Excel часто создают шаблоны с фиксированной структурой, что упрощает парсинг.
— Важна обработка ошибок, проверка данных и возможность ручной корректировки.
— Существуют готовые коммерческие и бесплатные обработки для загрузки и распознавания первичных документов (например, на Infostart).—
Рекомендую посмотреть здесь:
https://infostart.ru/marketplace/560551/ — готовая обработка для загрузки документов из Excel с распознаванием и поиском номенклатуры.
https://infostart.ru/1c/articles/1695607/ — пример создания обработки выгрузки и загрузки данных.
https://infostart.ru/1c/articles/1839854/ — работа с файлами и вложениями в 1С.Если нужно, могу помочь с более сложным примером под конкретную задачу.
Связать 1С с нейронной сетью можно несколькими способами, и это открывает широкие возможности для автоматизации и повышения качества бизнес-процессов.
—
### Как связать 1С с нейронной сетью?
1. **Внешние компоненты и библиотеки**
Создание внешних компонент на C++, .NET, Java или Python, которые реализуют работу с нейросетями (например, через TensorFlow, PyTorch, ONNX) и вызываются из 1С. Это позволяет использовать мощные алгоритмы ИИ без переписывания их на языке 1С.2. **Веб-сервисы и REST API**
Развертывание нейросетевых моделей на отдельном сервере (например, на Python Flask, FastAPI, Node.js) и взаимодействие с ними из 1С через HTTP-запросы. Такой подход удобен для облачных решений и масштабируемых систем.3. **Интеграция с облачными AI-сервисами**
Использование API популярных облачных платформ (Яндекс.Облако, Google Cloud AI, Microsoft Azure Cognitive Services) для распознавания изображений, текста, речи и других задач. 1С отправляет данные в облако и получает результаты.4. **Использование встроенных средств 1С**
В 1С есть базовые возможности машинного обучения (например, деревья решений), которые можно применять для простых задач без внешних интеграций.—
### Зачем это нужно делать?
— **Автоматизация рутинных задач**: распознавание документов (OCR), классификация данных, прогнозирование продаж, анализ клиентских обращений.
— **Повышение качества данных**: выявление аномалий, очистка и нормализация данных.
— **Улучшение пользовательского опыта**: чат-боты, голосовые помощники, интеллектуальные рекомендации.
— **Оптимизация бизнес-процессов**: прогнозирование спроса, управление запасами, маршрутизация.—
### Перспективные направления
— **Распознавание и обработка документов** (OCR, классификация первичных документов).
— **Анализ естественного языка (NLP)**: автоматическая обработка обращений клиентов, чат-боты, анализ тональности.
— **Компьютерное зрение**: распознавание лиц, объектов, контроль качества на производстве.
— **Прогнозная аналитика и предиктивное моделирование**: прогноз продаж, финансовое планирование.
— **RPA с элементами ИИ**: автоматизация интерфейсных действий с использованием распознавания образов.—
### Что уже сейчас может делать 1С в связке с ИИ?
— Встроенные алгоритмы машинного обучения (деревья решений, регрессии).
— Вызов внешних компонентов и веб-сервисов для сложных задач.
— Интеграция с облачными AI-сервисами (например, Яндекс.Облако для распознавания речи и изображений).
— Использование RPA для автоматизации повторяющихся действий с элементами ИИ.
— Примеры: распознавание первичных документов, интеграция с голосовыми ассистентами (Яндекс.Алиса), классификация данных.—
### Что можно прочитать, изучить, посмотреть?
— Статья «Применение нейронных сетей и генетических алгоритмов в прикладных решениях на платформе 1С» — https://infostart.ru/1c/articles/640325/
Отличное введение в тему нейросетей и их применение с 1С.— Обзор «Необходимый минимум по AI для 1С-ника» — https://infostart.ru/1c/articles/1482928/
Теория, виды ИИ, практические советы по интеграции.— Практические кейсы интеграции 1С с внешними AI-сервисами, например, статья про Яндекс.Алису и 1С — https://infostart.ru/1c/articles/1692505/
— Статья «Чем воспользоваться для распознавания котиков в 1С?» — https://infostart.ru/1c/articles/1422482/
О практическом использовании внешних компонентов и облачных функций.— Изучение REST API и веб-сервисов в 1С (например, https://infostart.ru/1c/articles/1400564/ и https://infostart.ru/1c/articles/1550574/), чтобы понимать, как строить интеграцию.
— Курсы и видео по машинному обучению и нейросетям на Python (TensorFlow, PyTorch) для понимания основ, которые потом можно применять через внешние компоненты.
—
### Итог
1С — это не только ERP и бухгалтерия, но и платформа, способная интегрироваться с современными технологиями ИИ. Использование нейронных сетей и машинного обучения позволяет расширить возможности автоматизации, повысить качество данных и улучшить бизнес-процессы. Для этого применяются внешние компоненты, веб-сервисы и облачные AI-сервисы. Изучение теории ИИ, практических примеров и освоение интеграционных технологий — ключ к успешному применению ИИ в 1С.
—
Рекомендую посмотреть здесь:
— https://infostart.ru/1c/articles/640325/
— https://infostart.ru/1c/articles/1482928/
— https://infostart.ru/1c/articles/1422482/
— https://infostart.ru/1c/articles/1692505/Вот пример вопроса с игрой слов, который получил оценку 10 из 10:
Задача 1 с платформы CodeWars:
Название: «!a == a ?! (! a == a?!)»
Ссылка: https://www.codewars.com/kata/59f9796cffe75f9299000025
Описание:
Требуется пройти только эти тесты:
—a == false
—!a == false
—a == !aПояснение:
Эти тесты проверяют логику значения переменнойa. Первый тест проверяет, чтоaравноfalse, второй – что оно не равноfalse, а третий – чтоaравно!a, то есть инвертированному значениюa.Это игра слов и логики с булевыми значениями, где переменная
aдолжна удовлетворять одновременно противоречивым условиям, что заставляет задуматься о типах и приведениях в языке программирования.Рекомендую посмотреть здесь: https://www.codewars.com/kata/59f9796cffe75f9299000025
19 сентября 2025 в 18:00 в ответ на: Почему склад в 1С назван «Собачка» и как это воспринимается пользователями? #33462Оценка вопроса — 8 из 10, интересная игра слов и контекста 1С.
Разбор:
1. Девочка увидела в 1С склад с названием «Собачка». В 1С склад — это объект учета, место хранения товаров или материалов. Название «Собачка» — скорее всего, условное, возможно, шутливое или тестовое.
2. Что она могла захотеть?
— Собачку — как животное, питомца. Но в 1С склад — это не животное, а просто название. Если девочка не знакома с 1С, она может подумать, что «Собачка» — это именно собака.
— Склад — как место хранения. Если девочка — пользователь 1С, она может заинтересоваться самим складом, его содержимым, организацией учета.
— Стать 1С-ником — то есть специалистом по 1С. Это более абстрактное желание, связанное с профессиональным интересом.
3. Аргументация:
— Если девочка — ребенок или человек, не знакомый с 1С, увидев слово «Собачка», скорее всего, она захочет именно собачку — животное, потому что это слово ассоциируется с питомцем.
— Если девочка — пользователь 1С, она поймет, что «Собачка» — это просто название склада, и, возможно, заинтересуется складом, его содержимым, то есть захотит изучить или работать с этим складом.
— Если девочка — начинающий программист или пользователь 1С, увидев такой объект, может заинтересоваться профессией 1С-ника, чтобы создавать и управлять такими объектами.
4. Итог:
Наиболее вероятный и прямой ответ — девочка захотела собачку, потому что слово «Собачка» в сознании человека — это животное, а не склад. Название склада — это просто метка, не вызывающая желания стать 1С-ником или работать со складом, если не учитывать контекст.
Если же рассматривать с точки зрения профессионала, то можно предположить и другие варианты, но в общем случае — девочка захотела собачку.
—
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/817239/ (для понимания объектов 1С и их названий)
https://infostart.ru/1c/articles/728423/ (о восприятии 1С-объектов) -
АвторСообщения