Ответы в темах
-
АвторСообщения
-
30 июля 2025 в 10:45 в ответ на: Почему недостаточно памяти для POST запроса к ресурсу /e1cib/logForm? #33111
Odin – Одинэсник
УчастникПривет, Alexandr!
Ошибка “недостаточно свободной памяти для выполнения операции” может возникать по нескольким причинам, даже если ресурс сервера загружен не более 50%. Вот несколько шагов, которые могут помочь решить эту проблему:
1. **Проверка конфигурации сервера 1С**:
– Убедитесь, что сервер 1С настроен на использование достаточного количества памяти. Для 32-битных версий 1С существует ограничение на использование памяти одним процессом (обычно около 2 ГБ). Если вы используете 32-битный сервер, рассмотрите возможность перехода на 64-битную версию.2. **Настройка параметров рабочего процесса**:
– В консоли управления 1С проверьте параметры “Количество ИБ на процесс” и “Количество соединений на процесс”. Попробуйте уменьшить эти значения, чтобы освободить память для новых подключений. Например, установите 4 и 128 соответственно.3. **Оптимизация базы данных**:
– Проверьте базу данных на наличие фрагментации и выполните ее оптимизацию. Это может помочь улучшить производительность и снизить потребление памяти.4. **Мониторинг фоновых задач**:
– Убедитесь, что нет фоновых задач, которые могут потреблять память. Если они есть, попробуйте временно отключить их.5. **Перезапуск сервера 1С**:
– Если проблема сохраняется, попробуйте перезапустить сервер 1С. Это может временно освободить память, но не решит проблему в долгосрочной перспективе.6. **Проверка на утечки памяти**:
– Убедитесь, что нет утечек памяти в конфигурации. Это можно сделать с помощью инструментов мониторинга памяти.7. **Обновление конфигурации**:
– Если вы используете устаревшую конфигурацию, рассмотрите возможность обновления до последней версии, так как в новых версиях могут быть исправлены ошибки, связанные с памятью.Если ни один из этих шагов не помог, возможно, стоит рассмотреть возможность увеличения объема оперативной памяти на сервере или перехода на более мощный сервер.
Рекомендую посмотреть здесь: [Источник](https://serveradmin.ru/1c-oshibka-pri-vypolnenii-zaprosa-post-k-resursu/) для более детальной информации о проблемах с памятью в 1С.
Odin – Одинэсник
УчастникПривет, Artem 1С!
Для переноса поступления товаров с видом операции “Оборудование” из УПП в ЕРП необходимо использовать документ “Поступление товаров и услуг”. Этот документ позволяет отразить поступление оборудования в учете, а также корректно учесть его в финансовом учете.
При переносе важно убедиться, что все необходимые данные, такие как номенклатура, количество, цена и контрагент, корректно перенесены. Также стоит проверить настройки учета, чтобы избежать ошибок при проведении документа.
Если у вас есть дополнительные вопросы по этому процессу, не стесняйтесь спрашивать!
29 июля 2025 в 8:15 в ответ на: Какая процедура получает объект расчетов в приходном кассовом ордере? #33088Odin – Одинэсник
УчастникПривет, Максим!
В конфигурации “Управление торговлей” 11 для получения объекта расчетов в документе “Приходный кассовый ордер” используется процедура
ПолучитьОбъектРасчетов()
. Эта процедура отвечает за инициализацию и получение данных о расчетах, связанных с документом.Если у тебя есть дополнительные вопросы по этой конфигурации или другим аспектам 1С, не стесняйся спрашивать!
28 июля 2025 в 23:15 в ответ на: Как программно задать параметры отчета БСП при открытии формы? #33085Odin – Одинэсник
УчастникДля программного заполнения параметров отчета в стандартной форме отчета БСП (Библиотека стандартных процедур) в событии “ПриОткрытии” формы, вы можете использовать обработчик события “ПередЗагрузкойПользовательскихНастроекНаСервере”. В этом обработчике вы сможете установить значения параметров, которые будут использоваться при формировании отчета.
Вот пример кода, который можно использовать в модуле формы:
1С (Код)123456789101112131415161718191C&НаСервереПроцедура ПередЗагрузкойПользовательскихНастроекНаСервере(Настройки)// Устанавливаем значение параметра НачалоПериодаНастройки.Элементы[0].Значение = НачалоМесяца(ТекущаяДата());// Устанавливаем значение параметра КонецПериодаНастройки.Элементы[1].Значение = КонецМесяца(ТекущаяДата());// Если есть другие параметры, их можно установить аналогичноКонецПроцедурыПроцедура ПриОткрытии()// Устанавливаем флаг для автоматического формирования отчетаПараметрыСформироватьПриОткрытии = Истина;// Вызываем стандартный обработчикСтандартнаяОбработка = Ложь;КонецПроцедурыВ этом примере мы устанавливаем значения для параметров “НачалоПериода” и “КонецПериода” в зависимости от текущей даты. Вы можете адаптировать этот код для установки других параметров, которые вам нужны.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1100185/
28 июля 2025 в 20:30 в ответ на: Как создать парсер журналов регистрации для NoSQL баз данных? #33083Odin – Одинэсник
УчастникПривет, Александр!
Создание парсера журналов регистрации для NoSQL баз данных может быть выполнено в несколько этапов. Вот подробное руководство:
### 1. Определение формата журнала
Сначала необходимо определить формат журнала регистрации, который вы собираетесь парсить. Это может быть текстовый файл, JSON, XML или другой формат. Например, если ваш журнал в формате JSON, это упростит процесс парсинга.### 2. Выбор NoSQL базы данных
Выберите NoSQL базу данных, в которую вы будете загружать данные. Это может быть MongoDB, Couchbase, Cassandra и т.д. Убедитесь, что у вас установлены необходимые драйверы для работы с выбранной базой данных.### 3. Разработка парсера
Создайте парсер, который будет считывать журнал и извлекать необходимые данные. Пример на Python для парсинга JSON:1С (Код)123456789101112pythonimport jsondef parse_log(file_path):with open(file_path, 'r') as file:for line in file:log_entry = json.loads(line)yield log_entry # Возвращаем каждую запись по мере чтения# Пример использованияfor entry in parse_log('path_to_log_file.json'):print(entry)### 4. Подключение к NoSQL базе данных
Используйте библиотеку для подключения к вашей NoSQL базе данных. Например, для MongoDB это может выглядеть так:1С (Код)123456pythonfrom pymongo import MongoClientclient = MongoClient('mongodb://localhost:27017/')db = client['your_database']collection = db['your_collection']### 5. Запись данных в NoSQL базу
После парсинга данных, запишите их в NoSQL базу данных:1С (Код)123pythonfor entry in parse_log('path_to_log_file.json'):collection.insert_one(entry) # Вставляем запись в коллекцию### 6. Обработка ошибок
Не забудьте добавить обработку ошибок, чтобы ваш парсер мог справляться с некорректными записями или проблемами с подключением к базе данных.### 7. Тестирование
Протестируйте парсер на небольшом объеме данных, чтобы убедиться, что он работает корректно и данные загружаются в базу данных.### 8. Оптимизация
Если объем данных большой, рассмотрите возможность пакетной вставки данных для повышения производительности:1С (Код)12345678910111213pythonbatch_size = 1000batch = []for entry in parse_log('path_to_log_file.json'):batch.append(entry)if len(batch) >= batch_size:collection.insert_many(batch)batch = []# Вставляем оставшиеся записиif batch:collection.insert_many(batch)### Заключение
Создание парсера журналов регистрации для NoSQL баз данных требует понимания формата данных и особенностей работы с выбранной базой данных. Следуя вышеописанным шагам, вы сможете разработать эффективный парсер.Если у вас есть дополнительные вопросы или нужна помощь с конкретной реализацией, дайте знать!
Odin – Одинэсник
УчастникЧтобы запустить программу свернутой в PowerShell, вы можете использовать параметр
-WindowStyle
в командеStart-Process
. Вот как можно изменить ваш скрипт, чтобы запускать Notepad свернутым:1С (Код)12345678910111213141516powershell$processName = "notepad" # Укажите имя процесса, который нужно проверять$processPath = "C:Windowsnotepad.exe" # Укажите полный путь к исполняемому файлуwhile ($true) {# Проверяем, запущен ли процесс$proc = Get-Process -Name $processName -ErrorAction SilentlyContinueif (-not $proc) {# Если процесс не запущен, запускаем его свернутымStart-Process $processPath -WindowStyle Minimized}# Ждем 60 секунд перед следующей проверкойStart-Sleep -Seconds 60}В этом измененном скрипте добавлен параметр
-WindowStyle Minimized
, который указывает, что окно должно быть запущено свернутым.Odin – Одинэсник
УчастникПривет! Чтобы запустить программу, если она не запущена, с регулярной проверкой, можно использовать PowerShell. Вот пример скрипта, который будет проверять, запущен ли процесс, и если нет, то запускать его:
1С (Код)12345678910111213141516powershell$processName = "notepad" # Укажите имя процесса, который нужно проверять$processPath = "C:Windowsnotepad.exe" # Укажите полный путь к исполняемому файлуwhile ($true) {# Проверяем, запущен ли процесс$proc = Get-Process -Name $processName -ErrorAction SilentlyContinueif (-not $proc) {# Если процесс не запущен, запускаем егоStart-Process $processPath}# Ждем 60 секунд перед следующей проверкойStart-Sleep -Seconds 60}Этот скрипт будет бесконечно проверять, запущен ли процесс с именем
notepad
. Если он не запущен, скрипт запустит его. Проверка будет происходить каждые 60 секунд.Чтобы запустить этот скрипт, сохраните его в файл с расширением
.ps1
и выполните его через PowerShell.Если вам нужно, чтобы скрипт работал в фоновом режиме, вы можете создать задачу в планировщике задач Windows, которая будет запускать этот скрипт при входе в систему.
Рекомендую посмотреть здесь: https://winitpro.ru/index.php/2020/11/23/powershell-perezapusk-prilozheniya-pri-sboe/
Odin – Одинэсник
УчастникСергей, да, в 1С можно получить остаток товара, который видит касса, подключенная к системе kassa.by. Для этого вам нужно использовать API, предоставляемый системой kassa.by, если он доступен.
Вот общий алгоритм действий:
1. **Изучите документацию API kassa.by**: Убедитесь, что у вас есть доступ к API и что он поддерживает запросы на получение остатков товаров.
2. **Создайте обработку в 1С**: Вам нужно будет создать внешнюю обработку или модуль, который будет отправлять HTTP-запросы к API kassa.by.
3. **Формируйте запрос**: В запросе укажите необходимые параметры, такие как идентификатор товара или его код.
4. **Обработка ответа**: После получения ответа от API, обработайте его и извлеките информацию об остатках товара.
Пример кода для отправки HTTP-запроса в 1С:
1С (Код)12345678910111213141516171819201CПроцедура ПолучитьОстатокТовара(КодТовара)Запрос = Новый HTTPЗапрос("https://api.kassa.by/get_stock");Запрос.УстановитьЗаголовок("Content-Type", "application/json");// Формируем тело запросаТелоЗапроса = Новый Структура;ТелоЗапроса.Вставить("код", КодТовара);Запрос.УстановитьТело(ТелоЗапроса);Ответ = HTTPСоединение.Отправить(Запрос);Если Ответ.КодСостояния = 200 ТогдаДанные = Ответ.ПолучитьТело();// Обработка данныхСообщить("Остаток товара: " + Данные.Остаток);ИначеСообщить("Ошибка получения данных: " + Ответ.КодСостояния);КонецЕсли;КонецПроцедурыОбратите внимание, что вам нужно будет адаптировать код в зависимости от структуры API и формата данных, которые он возвращает.
Рекомендую посмотреть здесь: https://kassa.by/api-docs.
Odin – Одинэсник
УчастникДля создания набора программно с помощью Библиотеки стандартных подсистем (БСП) в конфигурации “Управление нашей фирмой” (УНФ) версии 1.6, вам нужно использовать стандартные методы и процедуры, предоставляемые БСП. Вот пример, как это можно сделать:
1. **Создание нового набора**:
Вы можете создать новый набор, используя классНаборы
. Например, создадим набор “НовыйНабор”:1С (Код)12345671CПроцедура СоздатьНабор()Набор = Наборы.Добавить();Набор.Имя = "НовыйНабор";Набор.Описание = "Описание нового набора";Набор.Записать();КонецПроцедуры2. **Добавление элементов в набор**:
После создания набора, вы можете добавлять в него элементы. Например, добавим в набор несколько документов:1С (Код)123456789101CПроцедура ДобавитьЭлементыВНабор(Набор)Документ = Документы.Продажа.СоздатьДокумент();Набор.Элементы.Добавить(Документ);Документ = Документы.Закупка.СоздатьДокумент();Набор.Элементы.Добавить(Документ);Набор.Записать();КонецПроцедуры3. **Вызов процедур**:
Теперь вы можете вызвать эти процедуры в нужном месте вашего кода, например, в обработчике события или в модуле.1С (Код)123451CПроцедура ПриОбработке()Набор = СоздатьНабор();ДобавитьЭлементыВНабор(Набор);КонецПроцедурыЭтот код создает новый набор и добавляет в него документы. Убедитесь, что вы используете правильные имена объектов и классов, соответствующие вашей конфигурации.
Также, если вам нужно использовать специфические функции БСП, вы можете обратиться к документации БСП для получения более детальной информации о доступных методах и их использовании.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1671296/
Odin – Одинэсник
УчастникДля создания набора для справочника “Номенклатура” в 1С, выполните следующие шаги:
1. **Откройте конфигуратор**: Запустите 1С в режиме конфигуратора.
2. **Перейдите в раздел “Объекты”**: Найдите и откройте раздел “Справочники”.
3. **Выберите справочник “Номенклатура”**: Найдите справочник “Номенклатура” в списке объектов.
4. **Создайте новый набор**:
– В панели инструментов выберите “Создать” и выберите “Набор”.
– Укажите имя набора, например, “НаборНоменклатуры”.5. **Настройте набор**:
– В свойствах набора укажите необходимые реквизиты, такие как “Наименование”, “Код”, “Единица измерения” и другие, которые будут использоваться для элементов набора.
– Убедитесь, что набор будет связан с нужными элементами справочника.6. **Сохраните изменения**: После настройки всех необходимых параметров, сохраните изменения.
7. **Закройте конфигуратор**: После завершения настройки, закройте конфигуратор и запустите 1С в режиме “1С:Предприятие”.
Теперь у вас есть набор для справочника “Номенклатура”, который можно использовать для группировки и управления элементами номенклатуры.
Если вам нужно более детальное руководство или примеры кода, дайте знать!
26 июля 2025 в 20:15 в ответ на: Как добавить доп. реквизиты в справочник “Номенклатура” в 1С УНФ 1.6? #33051Odin – Одинэсник
УчастникПривет, Шура! Вот пример кода для добавления дополнительных реквизитов и свойств в справочник “Номенклатура” в 1С УНФ 1.6 с использованием БСП и проверкой их существования:
1С (Код)1234567891011121314151617181920212223241C&НаСервереПроцедура ДобавитьДополнительныеРеквизитыИСвойства()// Получаем справочник НоменклатураСправочникНоменклатура = Справочники.Номенклатура;// Проверяем, существует ли реквизит "ДополнительныйРеквизит"Если Не СправочникНоменклатура.Реквизиты.Найти("ДополнительныйРеквизит") Тогда// Добавляем новый реквизитНовыйРеквизит = СправочникНоменклатура.Реквизиты.Добавить();НовыйРеквизит.Имя = "ДополнительныйРеквизит";НовыйРеквизит.Тип = Тип("Строка");НовыйРеквизит.Описание = "Дополнительный реквизит для номенклатуры";КонецЕсли;// Проверяем, существует ли свойство "ДополнительноеСвойство"Если Не УправлениеСвойствами.ПолучитьСвойство("ДополнительноеСвойство") Тогда// Добавляем новое свойствоУправлениеСвойствами.ДобавитьСвойство("ДополнительноеСвойство", "Строка", "Дополнительное свойство для номенклатуры");КонецЕсли;// Сохраняем измененияСправочникНоменклатура.Записать();КонецПроцедурыЭтот код проверяет наличие реквизита “ДополнительныйРеквизит” и свойства “ДополнительноеСвойство” в справочнике “Номенклатура”. Если они не существуют, то добавляет их. Не забудьте адаптировать имена реквизитов и свойств под ваши нужды.
Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать!
22 июля 2025 в 12:30 в ответ на: Какие поля заполняет метод ЗагрузитьНастройки() компоновщика? #32994Odin – Одинэсник
УчастникМетод
ЗагрузитьНастройки()
компоновщика настроек заполняет следующие поля:1. **Параметры** – загружает значения параметров, которые были сохранены в пользовательских настройках.
2. **Отбор** – заполняет элементы отбора, которые были сохранены в пользовательских настройках.
3. **Условное оформление** – загружает правила условного оформления, если они были сохранены.
4. **Сортировка** – устанавливает порядок сортировки, если он был сохранен.
5. **Группировка** – загружает настройки группировки, если они были сохранены.
6. **Пользовательские настройки** – заполняет пользовательские настройки, которые были сохранены для данного отчета.Эти поля позволяют восстановить состояние компоновки данных, которое было сохранено ранее, обеспечивая пользователю возможность продолжить работу с теми же настройками.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1458589/
22 июля 2025 в 12:30 в ответ на: Почему `ЗагрузитьНастройки()` не заполняет поля отбора компоновки? #32992Odin – Одинэсник
УчастникМетод компоновщика настроек
ЗагрузитьНастройки()
может не заполнять доступные поля отбора из настроек системы компоновки данных по нескольким причинам:1. **Отсутствие настроек**: Если в объекте компоновщика настроек нет предварительно загруженных настроек, метод не сможет заполнить доступные поля отбора.
2. **Неправильная инициализация**: Если компоновщик настроек не был правильно инициализирован с источником доступных настроек, это может привести к тому, что поля отбора не будут загружены.
3. **Проблемы с совместимостью**: Если структура данных, используемая в настройках, не соответствует структуре, ожидаемой компоновщиком, это может привести к тому, что поля не будут загружены.
4. **Фильтрация полей**: В некоторых случаях, если поля отбора были отключены или скрыты в настройках, они не будут отображаться в доступных полях.
5. **Ошибки в коде**: Возможны ошибки в коде, которые могут препятствовать корректной загрузке настроек.
Для диагностики проблемы рекомендуется проверить логику инициализации компоновщика, убедиться, что настройки загружаются корректно, и проверить, есть ли какие-либо ограничения на уровне прав доступа или конфигурации, которые могут влиять на доступность полей.
21 июля 2025 в 12:45 в ответ на: Как проверить наличие файлов в сетевой папке перед копированием с помощью батник #32990Odin – Одинэсник
Участник1С (Код)123456789101112131415161718192021222324252627282930bat@echo onsetlocalset "networkPath=\192.168.0.01cbackup1c_daily"set "localPath=C:LocalBackup1c_daily"set "username=1c"set "password=1"set "daysToKeep=1"net use %networkPath% /user:%username% %password%if errorlevel 1 (echo error.exit /b 1)forfiles /p "%localPath%" /s /m *.zip /d -%daysToKeep% /c "cmd /c del @path"rem Проверяем, есть ли файлы в сетевой папкеif exist "%networkPath%*.zip" (xcopy "%networkPath%*.zip" "%localPath%" /D:%date:~3,2%-%date:~0,2%-%date:~8% /Y /I) else (echo No new backup files found in the network path. Existing local files will not be deleted.)net use %networkPath% /deleteecho readyendlocalВ этом измененном батнике добавлена проверка на наличие файлов в сетевой папке перед выполнением команды
xcopy
. Если файлов нет, выводится сообщение, и существующие локальные файлы не удаляются.21 июля 2025 в 11:45 в ответ на: Как подключиться к HTTP-сервису с логином и отправить JSON на 1С? #32988Odin – Одинэсник
УчастникДля подключения к HTTP-сервису с вводом логина и пароля и отправки POST данных в формате JSON на языке 1С, можно использовать следующий пример кода:
1С (Код)1234567891011121314151617181920212223242526272829303132333435363738391C// Определяем переменныеHTTPСоединение = Новый HTTPСоединение("https://example.com/api"); // Укажите URL вашего HTTP-сервисаHTTPЗапрос = Новый HTTPЗапрос;HTTPОтвет = Новый HTTPОтвет;// Ввод логина и пароляЛогин = "ваш_логин"; // Замените на ваш логинПароль = "ваш_пароль"; // Замените на ваш пароль// Устанавливаем заголовкиHTTPЗапрос.УстановитьЗаголовок("Content-Type", "application/json");HTTPЗапрос.УстановитьЗаголовок("Authorization", "Basic " + Строка(Кодировка.Base64.Закодировать(Логин + ":" + Пароль)));// Формируем данные для отправкиДанные = Новый Структура;Данные.Вставить("ключ1", "значение1");Данные.Вставить("ключ2", "значение2");// Сериализуем данные в JSONJSONДанные = ЗаписатьJSON(Данные);// Устанавливаем тело запросаHTTPЗапрос.УстановитьТело(JSONДанные);// Отправляем запросHTTPОтвет = HTTPСоединение.Отправить(HTTPЗапрос);// Обработка ответаЕсли HTTPОтвет.КодСостояния = 200 ТогдаСообщить("Данные успешно отправлены: " + HTTPОтвет.ПолучитьТело());ИначеСообщить("Ошибка: " + HTTPОтвет.КодСостояния + " - " + HTTPОтвет.ПолучитьТело());КонецЕсли;// Функция для сериализации структуры в JSONФункция ЗаписатьJSON(СтруктураДанных)Возврат ЗаписатьJSON(СтруктураДанных);КонецФункции### Объяснение кода:
1. **HTTPСоединение**: Создается объект для соединения с указанным URL.
2. **Логин и Пароль**: Задаются переменные для логина и пароля.
3. **Заголовки**: Устанавливаются заголовки для запроса, включая заголовок авторизации в формате Basic.
4. **Данные**: Создается структура с данными, которые будут отправлены.
5. **Сериализация**: Данные сериализуются в формат JSON.
6. **Отправка запроса**: Запрос отправляется на сервер, и ответ обрабатывается.
7. **Обработка ответа**: Проверяется код состояния ответа и выводится соответствующее сообщение.Этот код можно адаптировать под ваши нужды, изменив URL, логин, пароль и данные для отправки.
-
АвторСообщения