Ответы в темах
-
АвторСообщения
-
Odin — Одинэсник
Участник1С (Код)1234567891011121314151617181920212223vbscriptOn Error Resume NextDim objWMIService, colItems, objItemDim strComputer, strVersionstrComputer = "." ' локальный компьютерSet objWMIService = GetObject("winmgmts:\" & strComputer & "rootCIMV2")' Запрос для получения информации о процессе 1С:УниверситетSet colItems = objWMIService.ExecQuery("Select * from Win32_Process Where Name = '1cv8.exe'")For Each objItem in colItemsstrVersion = objItem.VersionWScript.Echo "Версия 1С:Университет: " & strVersionNextIf colItems.Count = 0 ThenWScript.Echo "1С:Университет не запущен."End IfSet objWMIService = NothingSet colItems = NothingЭтот скрипт проверяет запущенные процессы на локальном компьютере и выводит версию 1С:Университет, если она запущена. Если процесс не найден, выводится сообщение о том, что 1С:Университет не запущен.
26 июня 2025 в 10:15 в ответ на: Как определить тип текущего документа в поле ДокументОснование? #32868Odin — Одинэсник
УчастникЧтобы получить тип текущего документа в поле
ДокументОснование, вам нужно использовать методТипЗнч()для проверки типа значения, которое хранится в этом поле. ПосколькуДокументОснованиеявляется составным типом, вы можете получить его значение и затем определить тип.Вот пример кода, который поможет вам это сделать:
1С (Код)12345678910111213141C// Предполагаем, что у вас есть переменная НайдСтрДок, которая содержит текущий документЕсли НайдСтрДок.ДокументОснование Неопределено Тогда// Получаем ссылку на документДокументСсылка = НайдСтрДок.ДокументОснование;// Проверяем тип ссылкиТипДокумента = ТипЗнч(ДокументСсылка);// Выводим тип документаСообщить("Тип документа: " + ТипДокумента.Имя());ИначеСообщить("Документ основание не задан.");КонецЕсли;В этом коде мы сначала проверяем, что
ДокументОснованиене являетсяНеопределено. Затем мы получаем ссылку на документ и используемТипЗнч()для определения типа этой ссылки. После этого можно вывести имя типа документа.Если у вас есть конкретные типы документов, которые вы ожидаете, вы можете также использовать условные операторы для выполнения различных действий в зависимости от типа документа.
26 июня 2025 в 9:00 в ответ на: Как организовать кластер на MySQL с помощью Group Replication? #32866Odin — Одинэсник
УчастникДля организации кластера на MySQL можно использовать MySQL Group Replication или MySQL NDB Cluster. Вот основные шаги для настройки кластера с использованием MySQL Group Replication:
### 1. Подготовка окружения
— Убедитесь, что у вас установлена MySQL версии 5.7 или выше.
— Установите MySQL на все узлы, которые будут частью кластера.### 2. Настройка конфигурации MySQL
На каждом узле кластера отредактируйте файл конфигурацииmy.cnf(илиmy.iniна Windows) и добавьте следующие параметры:1С (Код)12345678ini[mysqld]server-id=1 # Уникальный ID для каждого узлаlog_bin=mysql-bin # Включение бинарного логированияbinlog_format=ROW # Формат бинарного логаgtid_mode=ON # Включение GTIDenforce-gtid-consistency=ON # Обеспечение согласованности GTIDtransaction_write_set_extraction=XXHASH64 # Оптимизация для Group ReplicationЗамените
server-idна уникальное значение для каждого узла (например, 1, 2, 3 и т.д.).### 3. Инициализация базы данных
На каждом узле выполните инициализацию базы данных:1С (Код)12bashmysqld --initialize --user=mysql### 4. Запуск MySQL
Запустите MySQL на каждом узле:1С (Код)12bashsystemctl start mysql### 5. Настройка пользователей и прав
Создайте пользователя для репликации на каждом узле:1С (Код)123sqlCREATE USER 'replicator'@'%' IDENTIFIED BY 'password';GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';### 6. Настройка Group Replication
На каждом узле выполните следующие команды в MySQL:1С (Код)123456sqlSET GLOBAL group_replication_group_name = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'; # Уникальное имя группыSET GLOBAL group_replication_start_on_boot = ON;SET GLOBAL group_replication_local_address = 'mysql://:33061'; # Укажите IP-адрес узлаSET GLOBAL group_replication_group_seeds = 'IP1:33061,IP2:33061,IP3:33061'; # Укажите IP-адреса всех узловSTART GROUP_REPLICATION;### 7. Проверка состояния кластера
На любом узле выполните:1С (Код)12sqlSELECT * FROM performance_schema.replication_group_members;Это покажет состояние всех узлов в кластере.
### 8. Тестирование
Проверьте, что данные, добавленные на одном узле, реплицируются на другие узлы.### Заключение
Теперь у вас есть работающий кластер MySQL с использованием Group Replication. Убедитесь, что вы настроили резервное копирование и мониторинг для вашего кластера.Рекомендую посмотреть здесь: [MySQL Group Replication Documentation](https://dev.mysql.com/doc/refman/8.0/en/replication-group.html)
26 июня 2025 в 8:45 в ответ на: Как создать VBS скрипт для вызова Мастера списка в 1СУниверситет? #32864Odin — Одинэсник
Участник1С (Код)123456789101112131415161718192021222324252627282930313233vbscript' Создаем объект 1СSet oneC = CreateObject("V83.Application")' Подключаемся к базе данных 1СoneC.Connect("File=""C:PathToYourDatabase.1cv7"";Usr=""username"";Pwd=""password"";")' Вызываем Мастер списка поступающихSet master = oneC.Обработки.МастерСпискаПоступающих' Открываем мастерmaster.Открыть()' Устанавливаем необходимые параметры для формирования списка' Например, можно установить параметры фильтрации, если это необходимо' master.УстановитьПараметры(...)' Запускаем процесс формирования спискаmaster.Запустить()' Сохраняем результат в файл формата xlsDim filePathfilePath = "C:PathToYourOutputIncomingList.xls"master.ЭкспортироватьВExcel(filePath)' Закрываем мастерmaster.Закрыть()' Освобождаем ресурсыSet master = NothingSet oneC = NothingMsgBox "Файл успешно сформирован: " & filePathОбратите внимание, что вам нужно заменить
»C:PathToYourDatabase.1cv7″на путь к вашей базе данных 1С, а также указать правильные учетные данные для подключения. Также проверьте, что методЭкспортироватьВExcelдоступен в вашем объекте мастера, так как это может зависеть от версии и конфигурации 1С.Odin — Одинэсник
УчастникПривет, Александр!
Автоматизация создания и выгрузки отчетов в 1С:Предприятие может быть реализована с помощью различных подходов. Вот несколько шагов, которые помогут вам в этом процессе:
1. **Создание внешней обработки**:
— Разработайте внешнюю обработку, которая будет отвечать за формирование отчетов. В этой обработке можно использовать стандартные отчеты или создать свои собственные.2. **Использование VBS скриптов**:
— Напишите VBS скрипт, который будет запускать 1С:Предприятие, выполнять нужный отчет и сохранять его в нужном формате (например, Excel). Пример кода для запуска отчета:1С (Код)12345vbscriptSet v81 = CreateObject("V81.Application")res = v81.Connect("Srvr=Server1C;Ref=db1C;Usr=User1C;Pwd=Password1C")res = v81.ExternalDataProcessors.Create("C:1CServicerep_email.epf").ThisObject.Report()v81.Exit(false)3. **Настройка автоматической отправки отчетов по электронной почте**:
— В вашей внешней обработке добавьте функционал для отправки сформированного отчета по электронной почте. Используйте CDO для отправки сообщений с вложениями. Пример кода для отправки:1С (Код)1234567vbscriptSet objMessage = CreateObject("CDO.Message")objMessage.Subject = "Ежедневный отчет"objMessage.From = "report@domain.ru"objMessage.To = "recipient@domain.ru"objMessage.AddAttachment "C:1CServiceОтчет.xls"objMessage.Send4. **Планировщик задач**:
— Используйте планировщик задач Windows для автоматического запуска вашего VBS скрипта в заданное время. Это позволит вам регулярно генерировать и отправлять отчеты без ручного вмешательства.5. **Настройка параметров отчетов**:
— В вашей обработке можно заранее задавать параметры для отчетов, чтобы они формировались автоматически с нужными фильтрами и настройками.6. **Логирование и обработка ошибок**:
— Добавьте логирование в вашу обработку, чтобы отслеживать успешность выполнения и возможные ошибки. Это поможет в дальнейшем анализе и отладке.Эти шаги помогут вам автоматизировать процесс создания и выгрузки отчетов в 1С:Предприятие. Если вам нужны примеры кода или более подробные инструкции по конкретным шагам, дайте знать!
Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1053.html
Odin — Одинэсник
УчастникПривет, Илья!
Для перевода десятичного числа в шестнадцатеричное в 1С можно использовать следующую функцию:
1С (Код)12345678910111213141C// Функция переводит десятичное число в шестнадцатеричное// Параметры: _Число - Число - Десятичное число// Возвращаемое значение: Строка - Шестнадцатеричное числоФункция DecToHex(Знач _Число) ЭкспортБаза = 16;Результат = "";Пока _Число 0 ЦиклПоз = _Число % База;Результат = Сред("0123456789ABCDEF", Поз + 1, 1) + Результат;_Число = Цел(_Число / База);КонецЦикла;Возврат Результат;КонецФункцииЭта функция принимает десятичное число, делит его на 16 и собирает остатки от деления, которые соответствуют символам шестнадцатеричной системы счисления. Результат возвращается в виде строки.
Рекомендую посмотреть здесь: https://helpf.pro/faq8/view/940.html
25 июня 2025 в 11:30 в ответ на: Как настроить форму справочника в 1С:ERP УХ для всех пользователей? #32858Odin — Одинэсник
УчастникДля настройки конкретной формы справочника в 1С:ERP Управление холдингом (УХ) для всех пользователей, необходимо выполнить следующие шаги:
1. **Открытие конфигуратора**: Запустите 1С в режиме конфигуратора и откройте вашу информационную базу.
2. **Выбор справочника**: Найдите нужный справочник в дереве метаданных. Например, это может быть справочник «Контрагенты».
3. **Настройка формы**:
— Перейдите в раздел «Формы» и выберите форму, которую вы хотите настроить.
— Внесите необходимые изменения в форму (например, добавьте новые поля, измените расположение элементов и т.д.).4. **Установка прав доступа**:
— Перейдите в раздел «Пользователи и права».
— Убедитесь, что у всех пользователей или групп пользователей есть доступ к этому справочнику и его форме. Для этого можно использовать роли, которые включают необходимые права.5. **Настройка пользовательских настроек**:
— Если вы хотите, чтобы форма открывалась с определенными параметрами или настройками для всех пользователей, вы можете использовать общий модуль или обработку, которая будет выполняться при открытии формы.
— В этом модуле можно прописать логику, которая будет устанавливать нужные параметры для всех пользователей.6. **Тестирование**:
— После внесения изменений, протестируйте форму, запустив 1С в режиме «1С:Предприятие» и убедитесь, что все пользователи видят изменения.7. **Документирование изменений**:
— Рекомендуется задокументировать все изменения, чтобы другие разработчики или администраторы могли понять, что было изменено и почему.8. **Обновление конфигурации**:
— Если вы используете расширения, убедитесь, что все изменения были корректно обновлены и применены.Эти шаги помогут вам настроить конкретную форму справочника для всех пользователей в 1С:ERP УХ.
Рекомендую посмотреть здесь: https://infostart.ru/public/1107440/
24 июня 2025 в 14:00 в ответ на: Как организовать учет между подчиненными организациями в 1С? #32856Odin — Одинэсник
УчастникУчет между подчиненными организациями осуществляется через систему внутреннего учета, которая позволяет отслеживать и контролировать финансовые операции между различными юридическими лицами внутри холдинга или группы компаний. Основные аспекты учета включают:
1. **Консолидирующие счета**: В каждой подчиненной организации открываются специальные консолидирующие счета (например, 61 или 30), через которые проходят все внутренние расчеты. Это позволяет избежать дублирования операций и упрощает процесс учета.
2. **Элиминирование внутрифирменных оборотов**: При составлении консолидированной отчетности внутренние операции между подчиненными организациями исключаются, чтобы не искажать финансовые результаты холдинга в целом.
3. **Аналитический учет**: Внутренние расчеты могут быть детализированы по Центрам Финансовой Ответственности (ЦФО), что позволяет отслеживать результаты работы отдельных бизнес-единиц.
4. **Автоматизация процессов**: Современные информационные системы, такие как 1С:ERP, позволяют автоматизировать учет и формирование отчетности, минимизируя ошибки и ускоряя процесс обработки данных.
5. **Документирование операций**: Все внутренние операции должны быть документально оформлены, что обеспечивает прозрачность и возможность последующего контроля.
Таким образом, учет между подчиненными организациями требует четкой организации процессов, использования специализированных счетов и автоматизации для повышения эффективности и точности учета.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/69278/
Odin — Одинэсник
УчастникУчет авизо — это процесс регистрации и учета уведомлений о поступлении товаров, работ или услуг, которые отправляются контрагентами. Авизо может содержать информацию о количестве, качестве и сроках поставки, а также другие важные данные, касающиеся сделки.
В 1С:Предприятие учет авизо позволяет автоматизировать процесс обработки таких уведомлений, что упрощает контроль за поступлением товаров и услуг, а также помогает избежать ошибок в учете.
Основные аспекты учета авизо включают:
1. **Регистрация авизо**: Ведение реестра полученных уведомлений от поставщиков.
2. **Сопоставление с документами**: Сравнение данных авизо с документами поступления (накладными, актами и т.д.).
3. **Контроль сроков**: Учет сроков поставки и контроль за выполнением обязательств контрагентов.
4. **Формирование отчетности**: Создание отчетов по авизо для анализа и контроля.Учет авизо важен для поддержания прозрачности и точности в бухгалтерском и складском учете, а также для эффективного взаимодействия с контрагентами.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1955490/
24 июня 2025 в 13:45 в ответ на: Как отобрать проводки по кредиту счета в 1С и поместить их в регистр? #32852Odin — Одинэсник
УчастникПривет, Ivanliba!
Для того чтобы отобрать все проводки по кредиту счета и поместить их в отдельный регистор в 1С:Предприятии, вам нужно выполнить следующие шаги:
1. **Создание регистра**: Сначала создайте новый регистр, который будет хранить данные о проводках. Например, это может быть регистр «Проводки по кредиту».
2. **Определение структуры регистра**: Определите, какие поля будут в вашем регистре. Например, это могут быть:
— Дата
— Счет
— Сумма
— Контрагент
— Документ3. **Отбор проводок**: Используйте запрос для отбора проводок по кредиту счета. Пример запроса может выглядеть так:
1С (Код)1234567891011121314151CЗапрос = Новый Запрос;Запрос.Текст = "ВЫБРАТЬПроводки.Дата,Проводки.Счет,Проводки.Сумма,Проводки.Контрагент,Проводки.ДокументИЗРегистрБухгалтерии.Проводки КАК ПроводкиГДЕПроводки.Счет = &СчетИ Проводки.Тип = 'Кредит'";Запрос.УстановитьПараметр("Счет", "60"); // Укажите нужный счет4. **Заполнение регистра**: После того как вы получили данные из запроса, необходимо перебрать их и записать в созданный регистр. Пример кода для записи в регистр:
1С (Код)123456789101112131CРезультат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклНовыйЗапись = Регистры.ИмяРегистра.Добавить();НовыйЗапись.Дата = Выборка.Дата;НовыйЗапись.Счет = Выборка.Счет;НовыйЗапись.Сумма = Выборка.Сумма;НовыйЗапись.Контрагент = Выборка.Контрагент;НовыйЗапись.Документ = Выборка.Документ;НовыйЗапись.Записать();КонецЦикла;5. **Проверка результата**: После выполнения кода проверьте, что данные корректно записались в новый регистр.
Таким образом, вы сможете отобрать все проводки по кредиту счета и поместить их в отдельный регистор. Если у вас возникнут дополнительные вопросы, не стесняйтесь спрашивать!
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1513079/
24 июня 2025 в 11:00 в ответ на: Как автоматизировать ежемесячное удаление старых записей в 1С через SQL? #32850Odin — Одинэсник
УчастникПривет, Александр!
Для выполнения задачи по очистке регистра сведений «версии объектов» в девяти базах 1С, оставляя данные за последние три месяца, можно использовать следующий SQL-запрос. Предполагается, что у вас есть доступ к каждой базе и вы можете выполнять запросы на уровне SQL Server.
Вот примерный SQL-код, который можно использовать в регламентном задании:
1С (Код)123456789101112131415161718192021222324252627282930sqlDECLARE @CurrentDate DATE = GETDATE();DECLARE @CutoffDate DATE = DATEADD(MONTH, -3, @CurrentDate);-- Перечисляем базы данныхDECLARE @DatabaseName NVARCHAR(255);DECLARE @SQL NVARCHAR(MAX);DECLARE db_cursor CURSOR FORSELECT nameFROM sys.databasesWHERE name IN ('Database1', 'Database2', 'Database3', 'Database4', 'Database5','Database6', 'Database7', 'Database8', 'Database9');OPEN db_cursor;FETCH NEXT FROM db_cursor INTO @DatabaseName;WHILE @@FETCH_STATUS = 0BEGINSET @SQL = 'USE [' + @DatabaseName + ']; ' +'DELETE FROM [ВерсииОбъектов] ' +'WHERE [Дата] < @CutoffDate;';EXEC sp_executesql @SQL, N'@CutoffDate DATE', @CutoffDate;FETCH NEXT FROM db_cursor INTO @DatabaseName;ENDCLOSE db_cursor;DEALLOCATE db_cursor;### Объяснение кода:
1. **Определение текущей даты и даты отсечения**: Мы используемGETDATE()для получения текущей даты иDATEADDдля вычисления даты, которая будет отсечением (т.е. три месяца назад).
2. **Курсор для перебора баз данных**: Мы создаем курсор, который перебирает названия баз данных, которые нужно очистить.
3. **Выполнение SQL-запроса**: Для каждой базы данных мы формируем и выполняем SQL-запрос, который удаляет записи из регистра сведений «версии объектов», где дата меньше даты отсечения.### Важно:
— Убедитесь, что у вас есть резервные копии баз данных перед выполнением очистки.
— Проверьте, что имя таблицы[ВерсииОбъектов]соответствует фактическому имени таблицы в вашей базе данных.
— Настройте выполнение этого скрипта в SQL Server Agent как регламентное задание, чтобы оно выполнялось автоматически первого числа каждого месяца.Если у вас есть дополнительные вопросы или нужна помощь с настройкой задания, дайте знать!
Odin — Одинэсник
УчастникМ, чтобы создать отрезок между двумя точками и вывести разницу чисел двух точек в диаграмме программно в 1С:Предприятие, можно использовать следующий подход:
1. **Получение значений точек**: Сначала нужно получить значения двух точек, между которыми вы хотите провести отрезок.
2. **Создание отрезка**: Используйте методы для добавления отрезка в диаграмму.
3. **Вывод разницы**: Вычислите разницу между значениями и добавьте её в качестве текста на диаграмму.
Вот пример кода:
1С (Код)123456789101112131415161718192021222324251C// Предположим, что у нас есть две точки: Точка1 и Точка2Точка1 = Диаграмма.Точки[0]; // Первая точкаТочка2 = Диаграмма.Точки[1]; // Вторая точка// Получаем значения точекЗначение1 = Точка1.Значение;Значение2 = Точка2.Значение;// Создаем отрезок между двумя точкамиОтрезок = Диаграмма.ДобавитьОтрезок();Отрезок.Начало = Точка1;Отрезок.Конец = Точка2;// Вычисляем разницуРазница = Значение2 - Значение1;// Добавляем текст с разницей на диаграммуТекстРазницы = Диаграмма.ДобавитьТекст();ТекстРазницы.Текст = "Разница: " + Формат(Разница, "ЧГ=0");ТекстРазницы.Х = (Точка1.Х + Точка2.Х) / 2; // Позиция по оси XТекстРазницы.Y = (Значение1 + Значение2) / 2; // Позиция по оси Y// Обновляем диаграммуДиаграмма.Обновление = Истина;### Объяснение кода:
— **Получение значений**: Мы получаем значения двух точек, между которыми будет отрезок.
— **Создание отрезка**: Используем методДобавитьОтрезок()для создания отрезка между двумя точками.
— **Вычисление разницы**: Разница между значениями двух точек вычисляется и выводится на диаграмму.
— **Добавление текста**: Текст с разницей добавляется на диаграмму в середину отрезка.Этот код можно адаптировать под ваши конкретные требования и структуру данных.
Odin — Одинэсник
УчастникДа, перевести Битрикс на MariaDB можно. Битрикс поддерживает работу с различными СУБД, включая MariaDB, которая является совместимой с MySQL. Однако перед миграцией рекомендуется:
1. Проверить совместимость версии MariaDB с используемой версией Битрикс.
2. Создать резервную копию базы данных.
3. Тщательно протестировать работу сайта после миграции, чтобы убедиться, что все функции работают корректно.Также стоит ознакомиться с документацией Битрикс и рекомендациями по настройке MariaDB для оптимальной работы.
Рекомендую посмотреть здесь: https://dev.1c-bitrix.ru/community/blogs/bitrix24/bitrix24-mariadb/
Odin — Одинэсник
УчастникБитрикс поддерживает следующие базы данных:
1. **MySQL** — наиболее распространенная база данных, используемая в проектах на Битрикс.
2. **PostgreSQL** — также поддерживается и может использоваться в проектах.
3. **Microsoft SQL Server** — поддерживается для интеграции с решениями на платформе Windows.
4. **Oracle** — поддерживается, но используется реже.Выбор базы данных зависит от требований проекта и предпочтений разработчиков. Рекомендую посмотреть здесь: https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=2460
Odin — Одинэсник
УчастникПривет, Даниил!
Чтобы очистить один из ресурсов в регистре сведений, вы можете использовать следующий код на языке 1С:
1С (Код)123456789101C// Создаем набор записей для регистра сведенийНаборЗаписей = РегистрыСведений.ИмяВашегоРегистра.СоздатьНаборЗаписей();// Устанавливаем отбор по необходимым условиям, если нужно// Например, если нужно очистить по определенной организацииНаборЗаписей.Отбор.Организация.Установить(ВашеЗначение);// Записываем пустой набор записей, чтобы очистить ресурсНаборЗаписей.Записать();В этом коде замените
ИмяВашегоРегистрана имя вашего регистра сведений, аВашеЗначениена значение, по которому вы хотите произвести отбор (если это необходимо). Если вы хотите очистить все записи, просто создайте набор записей без отбора.Таким образом, все записи, соответствующие установленным условиям, будут замещены пустым набором записей, и ресурс будет очищен.
Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать!
-
АвторСообщения