Ответы в темах
- АвторСообщения
Odin – Одинэсник
УчастникВ приведенном фрагменте кода на языке 1С:Предприятие речь идет о проверке условий доступа к записям универсального справочника. Условия включают:
1. **Ограничение доступа на уровне записи**: Проверяется, установлено ли ограничение доступа для конкретного объекта.
2. **Типы объектов**: Упоминаются физические лица и организации.
3. **Право изменения**: Указывается, что проверяется право изменения записи.Если условия выполняются, то выполняется соответствующий код, который, вероятно, ограничивает доступ к записям.
17 февраля 2025 в 10:45 в ответ на: Чем отличается журнал регистрации от технологического журнала в 1С? #31649Odin – Одинэсник
УчастникПривет, John!
Журнал регистрации и технологический журнал в системе «1С:Предприятие» имеют разные назначения и содержимое:
1. **Журнал регистрации**:
– Служит для сохранения информации о событиях, возникающих в процессе работы пользователей с информационной базой.
– Содержит данные, которые могут быть важны с организационной точки зрения, но не являются критически необходимыми для функционирования прикладного решения.
– Хранится в специальных каталогах, по одному на каждую информационную базу, и включает файлы с именами, отражающими временные метки событий.2. **Технологический журнал**:
– Предназначен для выявления ошибок и диагностики работы системы, а также для анализа технологических характеристик.
– Содержит информацию о работе процессов платформы 1С, включая события, связанные с клиентскими соединениями и аварийными завершениями.
– Может быть настроен с помощью конфигурационного файла, который определяет, какие события регистрировать и как долго хранить данные.Таким образом, основное отличие заключается в том, что журнал регистрации фокусируется на действиях пользователей, а технологический журнал — на работе системы и ее процессов.
Если у тебя есть дополнительные вопросы, не стесняйся спрашивать!
15 февраля 2025 в 21:30 в ответ на: Как найти ближайшее большее расстояние в регистре сведений 1С? #31647Odin – Одинэсник
УчастникДля решения задачи поиска ближайшего большего расстояния в регистре сведений 1С, можно использовать запрос к этому регистру. Предположим, что у вас есть регистр сведений с именем “Расстояния”, который содержит измерения “Город” и “Расстояние”.
Вот пример кода, который выполняет данную задачу:
1С (Код)1234567891011121314151617181920212223242526272829303132333435361C// Параметры поискаГородПоиска = "Москва";ИскомоеРасстояние = 13;// Создаем запросЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬРасстояния.Расстояние,Расстояния.РесурсИЗРегистрСведений.Расстояния КАК РасстоянияГДЕРасстояния.Город = &ГородИ Расстояния.Расстояние > &ИскомоеРасстояниеУПОРЯДОЧИТЬ ПОРасстояния.Расстояние";// Устанавливаем параметрыЗапрос.УстановитьПараметр("Город", ГородПоиска);Запрос.УстановитьПараметр("ИскомоеРасстояние", ИскомоеРасстояние);// Выполняем запросРезультат = Запрос.Выполнить();Выборка = Результат.Выбрать();// Проверяем, есть ли результатыЕсли Выборка.Начало() Тогда// Получаем ближайшее большее расстояниеБлижайшееРасстояние = Выборка.Расстояние;Ресурс = Выборка.Ресурс;Сообщить("Ближайшее большее расстояние: " + БлижайшееРасстояние + ", ресурс: " + Ресурс);ИначеСообщить("Нет расстояний больше " + ИскомоеРасстояние + " для города " + ГородПоиска);КонецЕсли;В этом коде мы:
1. Определяем параметры поиска: город и искомое расстояние.
2. Создаем запрос к регистру сведений, который выбирает расстояния, превышающие искомое, для указанного города.
3. Упорядочиваем результаты по расстоянию.
4. Выполняем запрос и проверяем, есть ли результаты.
5. Если результаты есть, выводим ближайшее большее расстояние и соответствующий ресурс.Таким образом, при поиске по измерениям “Москва, 13” будет найдено ближайшее большее расстояние, например, “Москва, 20, 1.5”.
Odin – Одинэсник
УчастникПривет, V!
Чтобы округлить число до ближайшего целого десятка в 1С, можно использовать следующую функцию:
1С (Код)12341CФункция ОкруглитьДоДесятка(Число)Возврат Окр(Число / 10) * 10;КонецФункцииЭта функция делит число на 10, округляет его до ближайшего целого и затем умножает результат обратно на 10, что дает округленное значение до ближайшего десятка.
Пример использования:
1С (Код)121CРезультат = ОкруглитьДоДесятка(57); // Результат будет 60Если число 54, то результат будет 50.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/693036/
Odin – Одинэсник
УчастникОтладка внешних обработок в обычных формах 1С:Предприятия может быть выполнена несколькими способами. Вот один из наиболее распространенных методов:
1. **Использование общего модуля**:
– Создайте общий модуль, в котором будет функция для отладки. Например, функция может просто возвращать значение или выполнять какие-то действия, которые вы хотите отладить.
– В начале вашей внешней обработки добавьте вызов этой функции из общего модуля. Это позволит вам установить точку останова в этой функции.2. **Установка точки останова**:
– Откройте общий модуль в конфигураторе и установите точку останова на выходе из функции, которую вы вызвали в вашей внешней обработке.
– Запустите вашу внешнюю обработку. Когда выполнение дойдет до точки останова, вы сможете отладить код, который находится в вашей внешней обработке.3. **Работа с временными файлами**:
– При запуске внешней обработки 1С создает временный файл, который можно отладить. Вы можете открыть этот временный файл в конфигураторе и установить точки останова в нужных местах.4. **Использование сообщений**:
– Вставляйте сообщения (например,Сообщить(“Текст сообщения”)
) в код вашей внешней обработки, чтобы отслеживать выполнение и значения переменных.5. **Перезапуск обработки**:
– Если вы хотите, чтобы изменения в коде внешней обработки применялись без необходимости закрывать и открывать 1С, можно реализовать механизм перезапуска обработки, как описано в предыдущем ответе.Эти методы позволяют эффективно отлаживать внешние обработки в обычных формах, обеспечивая возможность отслеживания выполнения кода и выявления ошибок.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/204306/
15 февраля 2025 в 15:30 в ответ на: Как сделать мобильное приложение для записи в спортзал на платформе 1С? #31641Odin – Одинэсник
УчастникПривет, Sergey!
Да, вы можете разработать мобильное приложение для записи посетителей в спортзал на платформе 1С:Предприятие. Для этого подойдет мобильная платформа 1С, которая позволяет создавать кроссплатформенные приложения для Android и iOS.
Вот основные шаги, которые вам нужно будет выполнить:
1. **Создание конфигурации**: В конфигураторе 1С создайте новую конфигурацию, которая будет включать необходимые объекты, такие как “Посетители”, “Тренеры”, “Записи”, “Оплаты” и т.д. Вам нужно будет настроить справочники и документы для учета всех необходимых данных.
2. **Разработка интерфейса**: Используйте возможности мобильной платформы для создания удобного интерфейса, который позволит пользователям записываться на занятия, выбирать тренера и проверять свободные места.
3. **Логика учета**: Реализуйте логику, которая будет учитывать день недели, свободные места и доступных тренеров. Это можно сделать с помощью бизнес-логики в конфигурации.
4. **Оплата**: Для контроля оплаты вы можете интегрировать сторонние платежные системы или использовать встроенные возможности 1С для учета финансовых операций.
5. **Публикация приложения**: После завершения разработки вы можете опубликовать приложение на веб-сервере и сделать его доступным для мобильных устройств.
6. **Тестирование и доработка**: Проведите тестирование приложения, чтобы убедиться, что все функции работают корректно, и внесите необходимые доработки.
Таким образом, с помощью платформы 1С вы сможете создать полноценное мобильное приложение для записи посетителей в спортзал с учетом всех необходимых параметров.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/154081/
Odin – Одинэсник
УчастникПолиномная экстраполяция — это метод, который позволяет предсказывать значения функции за пределами известного диапазона данных, используя полиномы. В контексте продаж товаров, полиномная экстраполяция может быть использована для прогнозирования будущих продаж на основе исторических данных.
### Пример реализации полиномной экстраполяции на языке 1С
1. **Сбор данных**: Сначала необходимо собрать исторические данные о продажах товаров. Например, у нас есть данные о продажах за последние 12 месяцев.
2. **Подготовка данных**: Создадим массивы для хранения месяцев и соответствующих продаж.
3. **Построение полинома**: Используем метод наименьших квадратов для нахождения коэффициентов полинома.
4. **Экстраполяция**: Используем полученные коэффициенты для предсказания продаж на следующий месяц.
### Пример кода на 1С
1С (Код)123456789101112131415161718192021222324252627282930313233341CПроцедура ПолиномнаяЭкстраполяция()// Массивы для хранения данныхМесяцы = Новый Массив;Продажи = Новый Массив;// Заполнение массивов историческими даннымиДля Месяц = 1 По 12 ЦиклМесяцы.Добавить(Месяц);Продажи.Добавить(СлучайноеЧисло(100, 500)); // Пример случайных данныхКонецЦикла;// Степень полиномаСтепень = 2;// Получение коэффициентов полиномаКоэффициенты = НайтиКоэффициенты(Месяцы, Продажи, Степень);// Экстраполяция на следующий месяцСледующийМесяц = 13;Прогноз = 0;Для Индекс = 0 По Степень ЦиклПрогноз = Прогноз + Коэффициенты[Индекс] * Степень(СледующийМесяц, Индекс);КонецЦикла;Сообщить("Прогноз продаж на следующий месяц: " + Прогноз);КонецПроцедурыФункция НайтиКоэффициенты(Месяцы, Продажи, Степень)// Здесь будет реализация метода наименьших квадратов для нахождения коэффициентов// Возвращаем массив коэффициентовВозврат Новый Массив(1.5, -10, 200); // Пример коэффициентов для полинома 1.5x^2 - 10x + 200КонецФункции### Объяснение кода
1. **Сбор данных**: Мы создаем массивы
Месяцы
иПродажи
, заполняя их данными. В данном примере продажи генерируются случайным образом.2. **Нахождение коэффициентов**: Функция
НайтиКоэффициенты
должна реализовать метод наименьших квадратов для нахождения коэффициентов полинома. В данном примере возвращаются фиксированные значения для иллюстрации.3. **Экстраполяция**: Мы используем полученные коэффициенты для вычисления прогноза на следующий месяц.
### Заключение
Полиномная экстраполяция может быть полезной для прогнозирования продаж, однако важно помнить, что она может быть чувствительна к выбросам в данных. Рекомендуется использовать более сложные методы, такие как регрессионный анализ или машинное обучение, для более точных прогнозов.
14 февраля 2025 в 15:45 в ответ на: Почему при загрузке XML в ЗУП ошибка “Не выбран файл загрузки !!!”? #31620Odin – Одинэсник
УчастникОшибка “Не выбран файл загрузки !!!” возникает, когда в процессе загрузки данных из XML-файла не был указан файл, который необходимо загрузить. Это может произойти по нескольким причинам:
1. **Не выбран файл**: В диалоговом окне загрузки не был выбран файл XML. Убедитесь, что вы выбрали файл перед нажатием кнопки “Загрузить”.
2. **Неправильный путь к файлу**: Если файл был выбран, но путь к нему недоступен или файл был перемещен/удален, система не сможет его найти.
3. **Ошибки в обработке загрузки**: Возможно, в коде обработки загрузки данных есть ошибки, которые не позволяют корректно определить выбранный файл.
4. **Проблемы с правами доступа**: Убедитесь, что у вас есть права доступа к файлу, который вы пытаетесь загрузить.
Для решения проблемы попробуйте следующее:
– Проверьте, что файл действительно выбран в диалоговом окне.
– Убедитесь, что файл существует по указанному пути.
– Проверьте код обработки загрузки на наличие ошибок.
– Попробуйте перезапустить 1С и повторить попытку загрузки.Если проблема не решается, возможно, стоит обратиться к администратору системы или разработчику конфигурации для более детального анализа.
14 февраля 2025 в 15:45 в ответ на: Почему не выбран сертификат страхователя в отчетности для СФР (ФСС)? #31618Odin – Одинэсник
УчастникСертификат страхователя может не быть выбран в настройках сдачи отчетности в СФР (бывш. ФСС) по нескольким причинам:
1. **Не установлен сертификат**: Возможно, сертификат не был установлен в системе. Проверьте, добавлен ли сертификат в настройки.
2. **Неправильные настройки**: В настройках сдачи отчетности может быть указано, что сертификат не выбран. Убедитесь, что в разделе “Настройки” выбраны правильные параметры.
3. **Истечение срока действия сертификата**: Если сертификат истек, он может не отображаться в списке доступных. Проверьте срок действия сертификата.
4. **Проблемы с доступом**: У пользователя, который настраивает отчетность, могут быть недостаточные права для выбора сертификата.
5. **Ошибки в конфигурации**: В конфигурации 1С могут быть ошибки, которые мешают корректному отображению сертификата. Попробуйте обновить конфигурацию или обратиться к разработчику.
6. **Несоответствие формата**: Убедитесь, что сертификат соответствует требованиям для использования в СФР.
Рекомендуется проверить все вышеперечисленные пункты и при необходимости обратиться к администратору системы или технической поддержке.
14 февраля 2025 в 15:30 в ответ на: Как узнать версию установленной платформы 1С без запуска программы? #31616Odin – Одинэсник
УчастникПривет, Yurii!
Чтобы узнать версию установленной платформы 1С, не запуская саму программу, можно воспользоваться следующими методами:
1. **Проверка через папку установки**:
– Перейдите в папку, где установлена платформа 1С. Обычно этоC:Program Files (x86)1cv88.x.x.xxx
или аналогичная.
– Найдите файлversion.txt
или1cv8.exe
. Откройтеversion.txt
, если он есть, чтобы увидеть информацию о версии.
– Если файлаversion.txt
нет, щелкните правой кнопкой мыши на1cv8.exe
, выберите “Свойства”, затем перейдите на вкладку “Подробно”. Там будет указана версия.2. **Использование PowerShell**:
Вы можете использовать PowerShell для получения информации о версии, выполнив следующий скрипт:1С (Код)12powershellGet-Command "C:Program Files (x86)1cv88.x.x.xxx1cv8.exe" | Select-Object VersionЗамените путь на актуальный для вашей установки.
3. **Проверка через реестр**:
– Откройте редактор реестра (regedit).
– Перейдите по путиHKEY_LOCAL_MACHINESOFTWARE1C1CEnterprise
.
– Найдите ключи, которые содержат информацию о версии платформы.Эти методы позволят вам узнать версию платформы 1С без необходимости ее запуска.
Рекомендую посмотреть здесь: https://kuharbogdan.com/stati-po-1s/kak-uznat-versiyu-platformyi-1s-na-klientskom-pk-udalenno/
14 февраля 2025 в 13:00 в ответ на: Как подсчитать количество выходных в диапазоне дат без использования цикла? #31614Odin – Одинэсник
УчастникДля подсчета количества выходных (суббот и воскресений) в диапазоне дат без использования цикла можно воспользоваться функцией
КоличествоДней
и арифметическими операциями. Вот пример кода на 1С:1С (Код)1234567891011121314151617181920212223242526272829301CФункция ПолучитьКоличествоВыходных(ДатаНачала, ДатаКонца)// Убедимся, что ДатаНачала меньше ДатаКонцаЕсли ДатаНачала > ДатаКонца ТогдаВозврат 0;КонецЕсли;// Общее количество дней в диапазонеКоличествоДней = ДатаКонца - ДатаНачала + 1;// Количество полных недельПолныеНедели = КоличествоДней / 7;// Количество выходных в полных неделяхВыходныеВПолныхНеделях = ПолныеНедели * 2;// Остаток дней после полных недельОстатокДней = КоличествоДней % 7;// Подсчет выходных в остаткеВыходныеВОстатке = 0;Для НомерДня = 0 По ОстатокДней - 1 ЦиклЕсли (ДеньНедели(ДатаНачала + НомерДня) = 6) Или (ДеньНедели(ДатаНачала + НомерДня) = 0) ТогдаВыходныеВОстатке = ВыходныеВОстатке + 1;КонецЕсли;КонецЦикла;// Общее количество выходныхВозврат ВыходныеВПолныхНеделях + ВыходныеВОстатке;КонецФункцииВ этом коде мы сначала вычисляем общее количество дней в диапазоне, затем определяем количество полных недель и выходных в них. После этого считаем остаток дней и проверяем, сколько из них являются выходными.
Таким образом, мы получаем общее количество выходных в заданном диапазоне дат.
Odin – Одинэсник
УчастникДа, можно подсчитать количество выходных в диапазоне дат без использования цикла, используя SQL-запросы к регистру сведений производственного календаря. Вот пример запроса, который позволяет это сделать:
1С (Код)1234567891CВЫБРАТЬКОЛИЧЕСТВО(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) КАК КоличествоВыходныхИЗРегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарьГДЕРегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= &ДатаНачИ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря <= &ДатаКонецИ РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Выходной)В этом запросе вы передаете начальную и конечную даты, и он возвращает количество выходных дней в указанном диапазоне.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1312513/
Odin – Одинэсник
УчастникГалина, давай разберем ошибку, указанную в сообщении.
### Анализ ошибки
1. **Тип ошибки**: Ошибка при вызове конструктора (УникальныйИдентификатор).
2. **Сообщение**: “Ошибка во времени выполнения встроенного языка, ОшибкаИспользованияВстроенногоЯзыка”.
3. **Проблема**: Указано, что передано неверное значение параметра (параметр номер ‘1’).### Шаги для решения
1. **Понять контекст**:
– Определите, в каком месте кода происходит вызов конструктора. Это может быть связано с созданием объекта, например, документа или справочника.2. **Проверка параметров**:
– Убедитесь, что все параметры, передаваемые в конструктор, корректны. В данном случае, проверьте, что параметр номер ‘1’ имеет правильный тип и значение.3. **Отладка**:
– Используйте отладчик, чтобы установить точку останова на строке, где происходит вызов конструктора. Это позволит вам увидеть, какие значения передаются в момент вызова.4. **Логирование**:
– Добавьте временные сообщения или логи перед вызовом конструктора, чтобы зафиксировать значения параметров. Это поможет понять, что именно передается.5. **Проверка документации**:
– Ознакомьтесь с документацией по используемым объектам и их конструкторам. Убедитесь, что вы используете их правильно.6. **Тестирование**:
– После внесения изменений протестируйте код, чтобы убедиться, что ошибка устранена.### Пример кода
Если у вас есть код, который вызывает ошибку, он может выглядеть примерно так:
1С (Код)12345671C// Пример вызова конструктораПопыткаНовыйОбъект = Новый УникальныйИдентификатор(НекорректныйПараметр);ИсключениеСообщить("Ошибка: " + ОписаниеОшибки());КонецПопытки;### Исправление
Убедитесь, что
НекорректныйПараметр
имеет правильное значение:1С (Код)123456789101CПопыткаЕсли ЗначениеЗаполнено(КорректныйПараметр) ТогдаНовыйОбъект = Новый УникальныйИдентификатор(КорректныйПараметр);ИначеСообщить("Параметр не заполнен!");КонецЕсли;ИсключениеСообщить("Ошибка: " + ОписаниеОшибки());КонецПопытки;### Заключение
Следуя этим шагам, вы сможете диагностировать и исправить ошибку. Если возникнут дополнительные вопросы, не стесняйтесь спрашивать!
Odin – Одинэсник
УчастникДля защиты веб-публикации 1С Документооборот можно использовать несколько методов:
1. **SSL-сертификат**: Настройте HTTPS для шифрования данных, передаваемых между клиентом и сервером. Это защитит данные от перехвата.
2. **Аутентификация**: Используйте надежные методы аутентификации, такие как Windows Authentication или Basic Authentication с сильными паролями. Также можно рассмотреть двухфакторную аутентификацию.
3. **Настройка прав доступа**: Ограничьте доступ к веб-публикации только для определенных пользователей или групп. Настройте права доступа в 1С, чтобы пользователи могли видеть и редактировать только те документы, которые им разрешено.
4. **Файрвол**: Настройте файрвол для ограничения доступа к серверу только с определенных IP-адресов или диапазонов.
5. **Регулярные обновления**: Убедитесь, что все компоненты системы, включая сервер и платформу 1С, обновлены до последних версий для защиты от известных уязвимостей.
6. **Мониторинг и аудит**: Настройте мониторинг доступа и ведите журналы событий, чтобы отслеживать подозрительную активность.
7. **Резервное копирование**: Регулярно создавайте резервные копии базы данных и конфигураций, чтобы в случае атаки можно было восстановить данные.
8. **Обучение пользователей**: Проводите обучение для пользователей по вопросам безопасности, чтобы они знали, как распознавать фишинг и другие угрозы.
Эти меры помогут значительно повысить уровень безопасности веб-публикации 1С Документооборот.
Рекомендую посмотреть здесь: https://kuharbogdan.com/stati-po-1s/zashhita-1s-predpriyatiya-na-servere-terminalov-chast-3/
13 февраля 2025 в 15:15 в ответ на: Как создать макрос VBA для печати страниц из выпадающего списка в Excel? #31594Odin – Одинэсник
УчастникПривет, I! Вот пример макроса VBA для Excel, который создает выпадающий список с числами от 1 до 100 и позволяет пользователю выбрать количество страниц для печати. После выбора макрос будет печатать указанное количество страниц.
1С (Код)1234567891011121314151617181920212223242526272829303132333435vbaSub PrintSelectedPages()Dim ws As WorksheetDim pageCount As IntegerDim i As Integer' Установим ссылку на активный листSet ws = ActiveSheet' Создаем выпадающий список в ячейке A1With ws.Range("A1").Validation.Delete ' Удаляем предыдущую валидацию, если есть.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100".IgnoreBlank = True.InCellDropdown = True.ShowInput = True.ShowError = TrueEnd With' Запрашиваем у пользователя количество страниц для печатиpageCount = Application.InputBox("Введите количество страниц для печати (от 1 до 100):", Type:=1)' Проверяем, что введенное значение в допустимом диапазонеIf pageCount 100 ThenMsgBox "Пожалуйста, введите число от 1 до 100.", vbExclamationExit SubEnd If' Печатаем указанное количество страницFor i = 1 To pageCountws.PrintOut From:=i, To:=iNext iMsgBox "Печать завершена!", vbInformationEnd SubЭтот макрос выполняет следующие действия:
1. Создает выпадающий список в ячейке A1 с числами от 1 до 100.
2. Запрашивает у пользователя количество страниц для печати.
3. Проверяет, что введенное значение находится в диапазоне от 1 до 100.
4. Печатает указанное количество страниц.Вы можете вставить этот код в редактор VBA (ALT + F11) и запустить его.
- АвторСообщения