Ответы в темах
-
АвторСообщения
-
29 июля 2025 в 8:15 в ответ на: Какая процедура получает объект расчетов в приходном кассовом ордере? #33088
Привет, Максим!
В конфигурации «Управление торговлей» 11 для получения объекта расчетов в документе «Приходный кассовый ордер» используется процедура `ПолучитьОбъектРасчетов()`. Эта процедура отвечает за инициализацию и получение данных о расчетах, связанных с документом.
Если у тебя есть дополнительные вопросы по этой конфигурации или другим аспектам 1С, не стесняйся спрашивать!
28 июля 2025 в 23:15 в ответ на: Как программно задать параметры отчета БСП при открытии формы? #33085Для программного заполнения параметров отчета в стандартной форме отчета БСП (Библиотека стандартных процедур) в событии «ПриОткрытии» формы, вы можете использовать обработчик события «ПередЗагрузкойПользовательскихНастроекНаСервере». В этом обработчике вы сможете установить значения параметров, которые будут использоваться при формировании отчета.
Вот пример кода, который можно использовать в модуле формы:
1C &НаСервере Процедура ПередЗагрузкойПользовательскихНастроекНаСервере(Настройки) // Устанавливаем значение параметра НачалоПериода Настройки.Элементы[0].Значение = НачалоМесяца(ТекущаяДата()); // Устанавливаем значение параметра КонецПериода Настройки.Элементы[1].Значение = КонецМесяца(ТекущаяДата()); // Если есть другие параметры, их можно установить аналогично КонецПроцедуры Процедура ПриОткрытии() // Устанавливаем флаг для автоматического формирования отчета ПараметрыСформироватьПриОткрытии = Истина; // Вызываем стандартный обработчик СтандартнаяОбработка = Ложь; КонецПроцедурыВ этом примере мы устанавливаем значения для параметров «НачалоПериода» и «КонецПериода» в зависимости от текущей даты. Вы можете адаптировать этот код для установки других параметров, которые вам нужны.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1100185/
28 июля 2025 в 20:30 в ответ на: Как создать парсер журналов регистрации для NoSQL баз данных? #33083Привет, Александр!
Создание парсера журналов регистрации для NoSQL баз данных может быть выполнено в несколько этапов. Вот подробное руководство:
### 1. Определение формата журнала
Сначала необходимо определить формат журнала регистрации, который вы собираетесь парсить. Это может быть текстовый файл, JSON, XML или другой формат. Например, если ваш журнал в формате JSON, это упростит процесс парсинга.### 2. Выбор NoSQL базы данных
Выберите NoSQL базу данных, в которую вы будете загружать данные. Это может быть MongoDB, Couchbase, Cassandra и т.д. Убедитесь, что у вас установлены необходимые драйверы для работы с выбранной базой данных.### 3. Разработка парсера
Создайте парсер, который будет считывать журнал и извлекать необходимые данные. Пример на Python для парсинга JSON:python import json def 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 это может выглядеть так:python from pymongo import MongoClient client = MongoClient('mongodb://localhost:27017/') db = client['your_database'] collection = db['your_collection']### 5. Запись данных в NoSQL базу
После парсинга данных, запишите их в NoSQL базу данных:python for entry in parse_log('path_to_log_file.json'): collection.insert_one(entry) # Вставляем запись в коллекцию### 6. Обработка ошибок
Не забудьте добавить обработку ошибок, чтобы ваш парсер мог справляться с некорректными записями или проблемами с подключением к базе данных.### 7. Тестирование
Протестируйте парсер на небольшом объеме данных, чтобы убедиться, что он работает корректно и данные загружаются в базу данных.### 8. Оптимизация
Если объем данных большой, рассмотрите возможность пакетной вставки данных для повышения производительности:python batch_size = 1000 batch = [] 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 баз данных требует понимания формата данных и особенностей работы с выбранной базой данных. Следуя вышеописанным шагам, вы сможете разработать эффективный парсер.Если у вас есть дополнительные вопросы или нужна помощь с конкретной реализацией, дайте знать!
Чтобы запустить программу свернутой в PowerShell, вы можете использовать параметр `-WindowStyle` в команде `Start-Process`. Вот как можно изменить ваш скрипт, чтобы запускать Notepad свернутым:
powershell $processName = "notepad" # Укажите имя процесса, который нужно проверять $processPath = "C:Windowsnotepad.exe" # Укажите полный путь к исполняемому файлу while ($true) { # Проверяем, запущен ли процесс $proc = Get-Process -Name $processName -ErrorAction SilentlyContinue if (-not $proc) { # Если процесс не запущен, запускаем его свернутым Start-Process $processPath -WindowStyle Minimized } # Ждем 60 секунд перед следующей проверкой Start-Sleep -Seconds 60 }В этом измененном скрипте добавлен параметр `-WindowStyle Minimized`, который указывает, что окно должно быть запущено свернутым.
Привет! Чтобы запустить программу, если она не запущена, с регулярной проверкой, можно использовать PowerShell. Вот пример скрипта, который будет проверять, запущен ли процесс, и если нет, то запускать его:
powershell $processName = "notepad" # Укажите имя процесса, который нужно проверять $processPath = "C:Windowsnotepad.exe" # Укажите полный путь к исполняемому файлу while ($true) { # Проверяем, запущен ли процесс $proc = Get-Process -Name $processName -ErrorAction SilentlyContinue if (-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/
Сергей, да, в 1С можно получить остаток товара, который видит касса, подключенная к системе kassa.by. Для этого вам нужно использовать API, предоставляемый системой kassa.by, если он доступен.
Вот общий алгоритм действий:
1. **Изучите документацию API kassa.by**: Убедитесь, что у вас есть доступ к API и что он поддерживает запросы на получение остатков товаров.
2. **Создайте обработку в 1С**: Вам нужно будет создать внешнюю обработку или модуль, который будет отправлять HTTP-запросы к API kassa.by.
3. **Формируйте запрос**: В запросе укажите необходимые параметры, такие как идентификатор товара или его код.
4. **Обработка ответа**: После получения ответа от API, обработайте его и извлеките информацию об остатках товара.
Пример кода для отправки HTTP-запроса в 1С:
1C Процедура ПолучитьОстатокТовара(КодТовара) Запрос = Новый HTTPЗапрос("https://api.kassa.by/get_stock"); Запрос.УстановитьЗаголовок("Content-Type", "application/json"); // Формируем тело запроса ТелоЗапроса = Новый Структура; ТелоЗапроса.Вставить("код", КодТовара); Запрос.УстановитьТело(ТелоЗапроса); Ответ = HTTPСоединение.Отправить(Запрос); Если Ответ.КодСостояния = 200 Тогда Данные = Ответ.ПолучитьТело(); // Обработка данных Сообщить("Остаток товара: " + Данные.Остаток); Иначе Сообщить("Ошибка получения данных: " + Ответ.КодСостояния); КонецЕсли; КонецПроцедурыОбратите внимание, что вам нужно будет адаптировать код в зависимости от структуры API и формата данных, которые он возвращает.
Рекомендую посмотреть здесь: https://kassa.by/api-docs.
Для создания набора программно с помощью Библиотеки стандартных подсистем (БСП) в конфигурации «Управление нашей фирмой» (УНФ) версии 1.6, вам нужно использовать стандартные методы и процедуры, предоставляемые БСП. Вот пример, как это можно сделать:
1. **Создание нового набора**:
Вы можете создать новый набор, используя класс `Наборы`. Например, создадим набор «НовыйНабор»:1C Процедура СоздатьНабор() Набор = Наборы.Добавить(); Набор.Имя = "НовыйНабор"; Набор.Описание = "Описание нового набора"; Набор.Записать(); КонецПроцедуры2. **Добавление элементов в набор**:
После создания набора, вы можете добавлять в него элементы. Например, добавим в набор несколько документов:1C Процедура ДобавитьЭлементыВНабор(Набор) Документ = Документы.Продажа.СоздатьДокумент(); Набор.Элементы.Добавить(Документ); Документ = Документы.Закупка.СоздатьДокумент(); Набор.Элементы.Добавить(Документ); Набор.Записать(); КонецПроцедуры3. **Вызов процедур**:
Теперь вы можете вызвать эти процедуры в нужном месте вашего кода, например, в обработчике события или в модуле.1C Процедура ПриОбработке() Набор = СоздатьНабор(); ДобавитьЭлементыВНабор(Набор); КонецПроцедурыЭтот код создает новый набор и добавляет в него документы. Убедитесь, что вы используете правильные имена объектов и классов, соответствующие вашей конфигурации.
Также, если вам нужно использовать специфические функции БСП, вы можете обратиться к документации БСП для получения более детальной информации о доступных методах и их использовании.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1671296/
Для создания набора для справочника «Номенклатура» в 1С, выполните следующие шаги:
1. **Откройте конфигуратор**: Запустите 1С в режиме конфигуратора.
2. **Перейдите в раздел «Объекты»**: Найдите и откройте раздел «Справочники».
3. **Выберите справочник «Номенклатура»**: Найдите справочник «Номенклатура» в списке объектов.
4. **Создайте новый набор**:
— В панели инструментов выберите «Создать» и выберите «Набор».
— Укажите имя набора, например, «НаборНоменклатуры».5. **Настройте набор**:
— В свойствах набора укажите необходимые реквизиты, такие как «Наименование», «Код», «Единица измерения» и другие, которые будут использоваться для элементов набора.
— Убедитесь, что набор будет связан с нужными элементами справочника.6. **Сохраните изменения**: После настройки всех необходимых параметров, сохраните изменения.
7. **Закройте конфигуратор**: После завершения настройки, закройте конфигуратор и запустите 1С в режиме «1С:Предприятие».
Теперь у вас есть набор для справочника «Номенклатура», который можно использовать для группировки и управления элементами номенклатуры.
Если вам нужно более детальное руководство или примеры кода, дайте знать!
26 июля 2025 в 20:15 в ответ на: Как добавить доп. реквизиты в справочник «Номенклатура» в 1С УНФ 1.6? #33051Привет, Шура! Вот пример кода для добавления дополнительных реквизитов и свойств в справочник «Номенклатура» в 1С УНФ 1.6 с использованием БСП и проверкой их существования:
1C &НаСервере Процедура ДобавитьДополнительныеРеквизитыИСвойства() // Получаем справочник Номенклатура СправочникНоменклатура = Справочники.Номенклатура; // Проверяем, существует ли реквизит "ДополнительныйРеквизит" Если Не СправочникНоменклатура.Реквизиты.Найти("ДополнительныйРеквизит") Тогда // Добавляем новый реквизит НовыйРеквизит = СправочникНоменклатура.Реквизиты.Добавить(); НовыйРеквизит.Имя = "ДополнительныйРеквизит"; НовыйРеквизит.Тип = Тип("Строка"); НовыйРеквизит.Описание = "Дополнительный реквизит для номенклатуры"; КонецЕсли; // Проверяем, существует ли свойство "ДополнительноеСвойство" Если Не УправлениеСвойствами.ПолучитьСвойство("ДополнительноеСвойство") Тогда // Добавляем новое свойство УправлениеСвойствами.ДобавитьСвойство("ДополнительноеСвойство", "Строка", "Дополнительное свойство для номенклатуры"); КонецЕсли; // Сохраняем изменения СправочникНоменклатура.Записать(); КонецПроцедурыЭтот код проверяет наличие реквизита «ДополнительныйРеквизит» и свойства «ДополнительноеСвойство» в справочнике «Номенклатура». Если они не существуют, то добавляет их. Не забудьте адаптировать имена реквизитов и свойств под ваши нужды.
Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать!
22 июля 2025 в 12:30 в ответ на: Какие поля заполняет метод ЗагрузитьНастройки() компоновщика? #32994Метод `ЗагрузитьНастройки()` компоновщика настроек заполняет следующие поля:
1. **Параметры** — загружает значения параметров, которые были сохранены в пользовательских настройках.
2. **Отбор** — заполняет элементы отбора, которые были сохранены в пользовательских настройках.
3. **Условное оформление** — загружает правила условного оформления, если они были сохранены.
4. **Сортировка** — устанавливает порядок сортировки, если он был сохранен.
5. **Группировка** — загружает настройки группировки, если они были сохранены.
6. **Пользовательские настройки** — заполняет пользовательские настройки, которые были сохранены для данного отчета.Эти поля позволяют восстановить состояние компоновки данных, которое было сохранено ранее, обеспечивая пользователю возможность продолжить работу с теми же настройками.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1458589/
22 июля 2025 в 12:30 в ответ на: Почему `ЗагрузитьНастройки()` не заполняет поля отбора компоновки? #32992Метод компоновщика настроек `ЗагрузитьНастройки()` может не заполнять доступные поля отбора из настроек системы компоновки данных по нескольким причинам:
1. **Отсутствие настроек**: Если в объекте компоновщика настроек нет предварительно загруженных настроек, метод не сможет заполнить доступные поля отбора.
2. **Неправильная инициализация**: Если компоновщик настроек не был правильно инициализирован с источником доступных настроек, это может привести к тому, что поля отбора не будут загружены.
3. **Проблемы с совместимостью**: Если структура данных, используемая в настройках, не соответствует структуре, ожидаемой компоновщиком, это может привести к тому, что поля не будут загружены.
4. **Фильтрация полей**: В некоторых случаях, если поля отбора были отключены или скрыты в настройках, они не будут отображаться в доступных полях.
5. **Ошибки в коде**: Возможны ошибки в коде, которые могут препятствовать корректной загрузке настроек.
Для диагностики проблемы рекомендуется проверить логику инициализации компоновщика, убедиться, что настройки загружаются корректно, и проверить, есть ли какие-либо ограничения на уровне прав доступа или конфигурации, которые могут влиять на доступность полей.
21 июля 2025 в 12:45 в ответ на: Как проверить наличие файлов в сетевой папке перед копированием с помощью батник #32990bat @echo on setlocal set "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% /delete echo ready endlocalВ этом измененном батнике добавлена проверка на наличие файлов в сетевой папке перед выполнением команды `xcopy`. Если файлов нет, выводится сообщение, и существующие локальные файлы не удаляются.
21 июля 2025 в 11:45 в ответ на: Как подключиться к HTTP-сервису с логином и отправить JSON на 1С? #32988Для подключения к HTTP-сервису с вводом логина и пароля и отправки POST данных в формате JSON на языке 1С, можно использовать следующий пример кода:
1C // Определяем переменные 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"); // Сериализуем данные в JSON JSONДанные = Записать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, логин, пароль и данные для отправки.
21 июля 2025 в 11:45 в ответ на: Как подключиться к HTTP и выгрузить данные в JSON на языке 1С? #32986Привет, Николай!
Для подключения к HTTP и выгрузки данных в формате JSON на встроенном языке 1С:Предприятия можно использовать следующий пример кода:
1C &НаСервере Функция ВыгрузитьДанныеВJSON() // Создаем объект HTTPЗапрос Запрос = Новый HTTPЗапрос; // Устанавливаем URL для запроса Запрос.УстановитьURL("https://example.com/api/data"); // Устанавливаем метод запроса (GET или POST) Запрос.УстановитьМетод("GET"); // Устанавливаем заголовки, если необходимо Запрос.ДобавитьЗаголовок("Content-Type", "application/json"); // Отправляем запрос и получаем ответ Ответ = Новый HTTPОтвет; Ответ = HTTPСоединение.Отправить(Запрос); // Проверяем статус ответа Если Ответ.КодСостояния = 200 Тогда // Читаем тело ответа ТелоОтвета = Ответ.ПолучитьТелоКакСтроку(); // Десериализуем JSON в структуру СтруктураДанных = ПрочитатьЗначениеJSON(ТелоОтвета); // Возвращаем структуру данных Возврат СтруктураДанных; Иначе Сообщить("Ошибка при получении данных: " + Ответ.КодСостояния); Возврат Неопределено; КонецЕсли; КонецФункцииВ этом примере мы создаем HTTP-запрос, устанавливаем URL и метод, отправляем запрос и обрабатываем ответ. Если ответ успешный (код состояния 200), мы читаем тело ответа и десериализуем его из формата JSON в структуру.
Обратите внимание, что для работы с HTTP необходимо настроить соединение и, возможно, добавить обработку ошибок.
Если у вас есть дополнительные вопросы или нужна помощь с конкретными аспектами, дайте знать!
Здравствуйте, Геннадий!
Чтобы перенести журнал транзакций SQL Server на другой диск, выполните следующие шаги:
1. **Определите текущее местоположение файла журнала транзакций**:
sql USE [ИмяВашейБазыДанных]; GO EXEC sp_helpfile;
2. **Остановите использование журнала транзакций**:
Для этого необходимо отключить базу данных:sql ALTER DATABASE [ИмяВашейБазыДанных] SET OFFLINE;
3. **Переместите файл журнала транзакций**:
Скопируйте файл журнала (обычно с расширением `.ldf`) на новый диск. Например, если вы хотите переместить его на диск D, выполните команду в командной строке Windows:bash MOVE "C:PathToYourDatabase.ldf" "D:NewPathYourDatabase.ldf"
4. **Обновите путь к файлу журнала в SQL Server**:
После перемещения файла необходимо указать SQL Server новый путь к файлу:sql USE master; GO ALTER DATABASE [ИмяВашейБазыДанных] MODIFY FILE (NAME = [ИмяВашейБазыДанных_log], FILENAME = 'D:NewPathYourDatabase.ldf');
5. **Верните базу данных в онлайн-режим**:
sql ALTER DATABASE [ИмяВашейБазыДанных] SET ONLINE;
6. **Проверьте, что все работает корректно**:
Убедитесь, что база данных функционирует нормально и журнал транзакций находится в новом месте.Эти шаги помогут вам успешно перенести журнал транзакций на другой диск.
Рекомендую посмотреть здесь: https://docs.microsoft.com/en-us/sql/sql-server/sql-server-technical-documentation?view=sql-server-ver15
-
АвторСообщения