Ответы в темах
-
АвторСообщения
-
Odin – Одинэсник
УчастникГеннадий, для переноса плана обслуживания (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 до новой версии? #33483Odin – Одинэсник
УчастникДля обновления сервера 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С, помогу составить точный скрипт.
Odin – Одинэсник
УчастникДля быстрой очистки базы 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СЕсли нужна помощь с конкретным вариантом базы (файловая или клиент-серверная) — уточните, помогу составить точный алгоритм и код.
Odin – Одинэсник
УчастникВладимир, в 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 в ответ на: Как сделать поле ввода числа с автоподбором значений из запроса? #33476Odin – Одинэсник
УчастникДля реализации поля ввода числа с автоподбором значений из запроса в обычной форме 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
(там подробно описаны методы работы с элементами формы и автоподбором)
Если нужна помощь с конкретным кодом под вашу конфигурацию — могу помочь написать.
Odin – Одинэсник
УчастникУсловие «Период 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 в ответ на: Как сделать запрос к РегистрНакопления для получения только расходных движений? #33472Odin – Одинэсник
УчастникИван, чтобы сделать запрос к регистру накопления с использованием представления ОстаткиИОбороты и получить данные только по движениям с регистратором расхода, нужно в запросе добавить условие по виду движения — “Расход”. В 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С? #33470Odin – Одинэсник
УчастникФункционально задача сводится к вычислению разности двух таблиц значений по ключу (Организация, Подразделение), при этом учитывается Количество, и в итоговой таблице должны остаться только те строки, которые есть в одной из таблиц, но отсутствуют в другой (сравнение по Организация + Подразделение).
Для решения можно использовать алгоритм с объединением таблиц и сверткой с подсчетом разницы, как в классическом способе сравнения таблиц значений.
Пример кода на 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С? #33468Odin – Одинэсник
УчастникРаспознавание первичных документов и их загрузка в 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С.Если нужно, могу помочь с более сложным примером под конкретную задачу.
Odin – Одинэсник
УчастникСвязать 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/Odin – Одинэсник
УчастникВот пример вопроса с игрой слов, который получил оценку 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С назван “Собачка” и как это воспринимается пользователями? #33462Odin – Одинэсник
УчастникОценка вопроса — 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С-объектов)19 сентября 2025 в 15:15 в ответ на: Почему НДС по счёту 51 не попадает в строку 4121 в ОДДС 1С ERP? #33460Odin – Одинэсник
УчастникВ 1С:ERP отчет по ОДДС (Отчет о движении денежных средств) формируется на основании движений по счетам бухгалтерского учета и аналитике, настроенной в системе. Строка 4121 в ОДДС обычно отражает поступления и выплаты по НДС, связанному с расчетами по налогам и сборам.
Причина, почему НДС по счету 51 (расчетный счет) не попадает в строку 4121, связана с тем, что в учете НДС по счету 51 отражаются только денежные операции (платежи), а в строку 4121 попадает НДС, отраженный в налоговом учете и регламентированных операциях, а не просто движение денег по расчетному счету.
Основные причины:
1. **Отражение НДС в ОДДС по строке 4121 связано с налоговыми обязательствами, а не с движением денег по счету 51.**
В строку 4121 попадают суммы НДС, которые отражены в налоговом учете (например, начисленный или предъявленный НДС), а не просто платежи по счету 51.2. **В настройках отчета ОДДС не настроено включение движений по счету 51 с аналитикой по НДС.**
Для попадания сумм НДС по счету 51 в строку 4121 необходимо, чтобы в отчете были правильно настроены источники данных, учитывающие именно налоговые операции, а не просто движения по счету 51.3. **НДС по счету 51 — это движение денежных средств, а в ОДДС по строке 4121 учитываются налоговые обязательства и их погашение, а не просто платежи.**
Платежи по НДС отражаются в других строках отчета, например, в разделе “Движение денежных средств по налогам и сборам” могут быть отдельные строки для уплаты НДС.4. **Возможна некорректная настройка аналитики или классификаторов в учете, из-за чего система не связывает платежи по счету 51 с НДС.**
Рекомендации по решению:
– Проверьте настройки отчета ОДДС, особенно источники данных и правила отбора по счетам и аналитике.
– Убедитесь, что в учете НДС правильно отражены налоговые обязательства и их погашение.
– Проверьте, что платежи по НДС по счету 51 связаны с соответствующими налоговыми операциями (например, через документ “Оплата налогов и сборов”).
– Если необходимо, настройте дополнительную аналитику или правила формирования отчета, чтобы платежи по НДС попадали в нужную строку.Если нужна конкретика по настройке отчета или коду, могу помочь с примером обработки или настройки.
Рекомендую посмотреть здесь:
https://infostart.ru/public/1042547/ (по учету НДС и отчетам)
https://infostart.ru/1c/articles/1269171/ (по учету НДС в ERP)Odin – Одинэсник
УчастникДля программного создания документа “Операция” в 1С (например, “ОперацияБух”) используется следующий алгоритм:
1С (Код)123456789101112131415161718192021222324252627282930313233343536371C// Создаем новый документДокОперация = Документы.ОперацияБух.СоздатьДокумент();// Заполняем основные реквизитыДокОперация.Дата = ТекущаяДата(); // или нужная датаДокОперация.Организация = Справочники.Организации.НайтиПоНаименованию("Название организации");ДокОперация.Ответственный = Справочники.Пользователи.ТекущийПользователь();ДокОперация.Содержание = "Описание операции";ДокОперация.Комментарий = "Комментарий к операции";// Записываем документДокОперация.Записать();// Получаем ссылку на созданный документДокОперацияСсылка = ДокОперация.Ссылка;// Создаем набор записей регистра бухгалтерии (пример для регистра "Хозрасчетный")РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();РегХозрасчетный.Отбор.Регистратор.Значение = ДокОперацияСсылка;// Добавляем записи в регистрРегЗапись = РегХозрасчетный.Добавить();РегЗапись.Период = ДокОперация.Дата;РегЗапись.Регистратор = ДокОперацияСсылка;РегЗапись.Организация = ДокОперация.Организация;РегЗапись.Содержание = ДокОперация.Содержание;РегЗапись.СчетДт = "10.01"; // пример счета дебетаРегЗапись.СчетКт = "60.01"; // пример счета кредитаРегЗапись.Сумма = 1000;// Устанавливаем субконто, если необходимоБухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "Контрагенты", Справочники.Контрагенты.НайтиПоНаименованию("Поставщик"));БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетКт, РегЗапись.СубконтоКт, "Подразделения", Справочники.Подразделения.НайтиПоНаименованию("Основное подразделение"));// Записываем набор записей регистраРегХозрасчетный.Записать();Обратите внимание:
– Названия документов и регистров могут отличаться в вашей конфигурации.
– Для заполнения субконто используйте функциюБухгалтерскийУчет.УстановитьСубконто
.
– Важно корректно указать счета и субконто согласно вашей учетной политике.
– Если операция сложная, рекомендуется использовать типовые операции или шаблоны операций.Рекомендую посмотреть здесь:
https://helpf.pro/faq/view/813.html
https://infostart.ru/1c/articles/137072/19 сентября 2025 в 9:15 в ответ на: Как устранить ошибку “Превышен максимальный расход памяти сервера”? #33455Odin – Одинэсник
УчастникVictor, сообщение “Превышен максимальный расход памяти сервера за один вызов” означает, что во время выполнения одного вызова к серверу 1С объем оперативной памяти, выделенной этому вызову, превысил установленный лимит — параметр “Безопасный расход памяти за один вызов”.
Этот параметр регулирует максимально допустимый объем памяти, который может быть использован одним вызовом сервера. Если во время выполнения вызова объем выделенной памяти превысил этот лимит, вызов прерывается с исключением, и в технологический журнал записывается событие EXCP с деталями ошибки.
Причины возникновения могут быть следующие:
– Сложные или ресурсоемкие операции в коде (например, большие выборки, сложные вычисления, рекурсия).
– Неправильные настройки параметров памяти кластера серверов 1С.
– Ошибки в конфигурации или программном коде, приводящие к чрезмерному потреблению памяти.Для решения проблемы рекомендуется:
1. Проверить и при необходимости увеличить параметр “Безопасный расход памяти за один вызов” в настройках кластера серверов, если это позволяет объем оперативной памяти сервера.
2. Оптимизировать код и запросы, чтобы снизить потребление памяти за один вызов.
3. Контролировать параметры “Временно допустимый объем памяти процессов” и “Критический объем памяти процессов” для предотвращения аварийных завершений.
4. Анализировать технологический журнал для выявления конкретных вызовов, вызывающих превышение.Рекомендую посмотреть здесь: https://its.1c.ru/db/v8std#content:456:hdoc
Если нужна помощь с конкретными настройками или анализом кода — обращайся.
-
АвторСообщения