Ответы в темах
-
АвторСообщения
-
Для нахождения пропущенных периодов в интервале дат в 1С можно использовать следующий подход:
1. Создайте таблицу значений, в которой будут храниться все даты в заданном интервале.
2. Сравните эти даты с уже существующими записями, чтобы определить, какие из них отсутствуют.Вот пример кода на языке 1С, который демонстрирует этот процесс:
1С (Код)123456789101112131415161718192021222324251CПроцедура НайтиПропущенныеПериоды(НачалоПериода, КонецПериода, СуществующиеПериоды)// Создаем таблицу значений для хранения пропущенных периодовПропущенныеПериоды = Новый ТаблицаЗначений;ПропущенныеПериоды.Колонки.Добавить("Начало");ПропущенныеПериоды.Колонки.Добавить("Конец");// Перебираем все даты в заданном интервалеТекущаяДата = НачалоДня(НачалоПериода);КонецДня = КонецДня(КонецПериода);Пока ТекущаяДата <= КонецДня Цикл// Проверяем, есть ли запись на текущую датуЕсли Не СуществующиеПериоды.Найти(ТекущаяДата) Тогда// Если записи нет, добавляем в таблицу пропущенных периодовНоваяСтрока = ПропущенныеПериоды.Добавить();НоваяСтрока.Начало = ТекущаяДата;НоваяСтрока.Конец = ТекущаяДата; // Можно изменить, если нужно указать диапазонКонецЕсли;ТекущаяДата = ТекущаяДата + 1; // Переход к следующему днюКонецЦикла;// Возвращаем таблицу пропущенных периодовВозврат ПропущенныеПериоды;КонецПроцедурыВ этом коде:
—НачалоПериодаиКонецПериода— это даты, между которыми мы ищем пропуски.
—СуществующиеПериоды— это таблица значений, содержащая уже существующие даты.
— Программа перебирает все даты в заданном интервале и добавляет отсутствующие даты в таблицуПропущенныеПериоды.Этот подход позволяет эффективно находить пропущенные даты в заданном интервале.
20 февраля 2025 в 10:00 в ответ на: Как настроить блокировку работы пользователей в 1С в определенные часы? #31671Да, можно реализовать блокировку работы пользователей в 1С для определенной базы, исключая при этом несколько пользователей, без блокировки регламентных заданий. Для этого можно использовать следующий подход:
1. **Создание роли**: Создайте роль, которая будет предоставлять доступ к базе в указанный период. Назовите её, например, «ДоступВНочь».
2. **Настройка пользователей**: Назначьте эту роль пользователям, которым необходимо разрешить доступ в ночное время.
3. **Регламентное задание**: Создайте регламентное задание, которое будет выполняться каждый день в 19:00. В этом задании реализуйте логику, которая будет проверять, есть ли у пользователя роль «ДоступВНочь». Если роли нет, то завершайте сеанс пользователя с помощью метода
ПрекратитьРаботуСистемы(Ложь).4. **Проверка времени**: В регламентном задании добавьте проверку времени. Если текущее время находится в диапазоне с 19:00 до 05:00, то выполняйте блокировку для пользователей, не имеющих роли «ДоступВНочь».
5. **Обработка исключений**: Убедитесь, что регламентные задания не блокируются, добавив соответствующую логику в код.
Пример кода для регламентного задания:
1С (Код)123456789101CПроцедура БлокировкаПользователей()Если Час(ТекущаяДата()) >= 19 И Час(ТекущаяДата()) < 5 ТогдаДля Каждого Пользователь Из Пользователи ЦиклЕсли Не РольДоступна("ДоступВНочь", Пользователь) ТогдаПрекратитьРаботуСистемы(Ложь);КонецЕсли;КонецЦикла;КонецЕсли;КонецПроцедурыТаким образом, вы сможете организовать блокировку работы пользователей в определенные часы, исключая при этом тех, кто имеет специальную роль, и не затрагивая регламентные задания.
19 февраля 2025 в 12:45 в ответ на: Как исправить ошибку выбора поля `Пользователь.ПользовательОС` в запросе? #31669Ошибка, указанная в сообщении, связана с тем, что в запросе используется поле, тип которого не может быть выбран. В данном случае, ошибка возникает из-за того, что поле
Пользователь.ПолользовательОСне может быть выбрано, так как его тип не соответствует ожидаемому.Причины могут быть следующими:
1. **Несоответствие типов**: Поле, которое вы пытаетесь выбрать, может иметь тип, несовместимый с другими полями в запросе.
2. **Ошибки в запросе**: Возможно, в запросе есть синтаксические ошибки или неверные ссылки на поля.
3. **Отсутствие данных**: Поле может не содержать данных, что также может вызвать подобные ошибки.Для исправления ошибки проверьте типы полей, используемых в запросе, и убедитесь, что они совместимы. Также проверьте правильность написания запроса.
19 февраля 2025 в 10:30 в ответ на: Почему возникает ошибка памяти при выгрузке базы 1С в .dt файл? #31667Ошибка недостатка памяти при выгрузке базы в .dt файл может возникать по нескольким причинам, даже если на диске C достаточно свободного места. Вот основные из них:
1. **Временные файлы**: При выгрузке базы 1С временные файлы могут создаваться в папке, указанной в настройках системы или в конфигурации. Если эта папка находится на диске с ограниченным пространством, это может привести к ошибке.
2. **Ограничения на размер файла**: В некоторых случаях операционная система или файловая система может иметь ограничения на максимальный размер файла или количество файлов в директории, что может вызвать проблемы при создании временных файлов.
3. **Недостаток оперативной памяти**: Ошибка может быть связана не только с дисковым пространством, но и с недостатком оперативной памяти на сервере или клиентском компьютере. Если система не может выделить достаточно памяти для выполнения операции, это может привести к ошибке.
4. **Проблемы с правами доступа**: Убедитесь, что у пользователя, под которым выполняется выгрузка, есть необходимые права на запись в папку временных файлов. Если прав недостаточно, это может вызвать ошибку.
5. **Конфликты с другими процессами**: Если в системе работают другие ресурсоемкие процессы, это может привести к нехватке ресурсов для выгрузки базы.
Рекомендую проверить настройки временной папки, доступные ресурсы системы и права доступа. Если проблема сохраняется, можно попробовать изменить путь к временной папке на диск с большим объемом свободного места.
19 февраля 2025 в 10:30 в ответ на: Как исправить ошибку 10061 (0x0000274D) при подключении к серверу 1С? #31665Ошибка 10061 (0x0000274D) обозначает «Соединение не установлено, так как целевой компьютер активно отклонил его.» Эта ошибка возникает, когда клиент пытается подключиться к серверу, но сервер не принимает соединение. Возможные причины включают:
1. Сервер не запущен или не доступен.
2. Неверные параметры подключения (IP-адрес, порт).
3. Брандмауэр или антивирус блокирует соединение.
4. Серверная служба 1С не запущена или неправильно настроена.Для решения проблемы проверьте, запущен ли сервер, правильность параметров подключения и настройки брандмауэра.
19 февраля 2025 в 10:15 в ответ на: Ошибка «Недостаточно памяти» при выгрузке базы в dt файл 1С #31663Ошибка «Недостаточно памяти» при выгрузке базы в dt файл может возникать по нескольким причинам, даже если выгрузка происходит на другой диск. Вот основные из них:
1. **Ограничения оперативной памяти**: Процесс выгрузки может требовать значительного объема оперативной памяти, особенно если база данных большая. Если на сервере недостаточно свободной оперативной памяти, это может привести к ошибке.
2. **Временные файлы**: При выгрузке базы данных временные файлы могут создаваться в папке, указанной в сообщении об ошибке (в данном случае
C:UsersUSR1CV8AppDataLocalTemp). Если на диске, где расположена эта папка, недостаточно свободного места, это также может вызвать ошибку.3. **Настройки конфигурации**: В некоторых случаях настройки конфигурации 1С могут ограничивать объем памяти, доступной для выгрузки. Проверьте параметры конфигурации и убедитесь, что они оптимальны для работы с большими объемами данных.
4. **Фоновая нагрузка**: Если на сервере выполняются другие ресурсоемкие процессы, это может снизить доступную память для выгрузки базы данных.
5. **Проблемы с 32-битной версией**: Если вы используете 32-битную версию платформы 1С, она имеет ограничения по использованию оперативной памяти (обычно до 2 Гб). В этом случае рекомендуется перейти на 64-битную версию платформы.
Для решения проблемы попробуйте следующие шаги:
— Освободите место на диске, где находятся временные файлы.
— Убедитесь, что на сервере достаточно оперативной памяти.
— Закройте ненужные приложения и процессы, чтобы освободить ресурсы.
— Если возможно, используйте 64-битную версию платформы 1С.Если проблема не решается, рекомендуется обратиться к технической поддержке 1С для более детального анализа ситуации.
18 февраля 2025 в 23:15 в ответ на: Как сделать, чтобы при формировании отчета на СКД группировки были свернуты? #31661Для того чтобы при формировании отчета на Системе Компоновки Данных (СКД) группировки по умолчанию были свернуты, необходимо использовать метод
ПоказатьУровеньГруппировокСтрокв процедуреПриКомпоновкеРезультата.Вот пример кода, который можно использовать в модуле отчета:
1С (Код)12345678910111213141516171CПроцедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)СтандартнаяОбработка = Ложь;КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных;Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;ПроцессорВывода.УстановитьДокумент(ДокументРезультат);ПроцессорВывода.Вывести(ПроцессорКомпоновки);// Устанавливаем уровень группировок, который будет свернутДокументРезультат.ПоказатьУровеньГруппировокСтрок(0); // 0 - все группировки свернутыКонецПроцедурыВ этом коде
ДокументРезультат.ПоказатьУровеньГруппировокСтрок(0);указывает, что все группировки должны быть свернуты при выводе отчета. Вы можете изменить параметр на 1, 2 и т.д., если хотите, чтобы некоторые группировки оставались развернутыми.Рекомендую посмотреть здесь: https://helpf.pro/faq83/view/1571.html
18 февраля 2025 в 17:00 в ответ на: Нужно ли передавать данные в ИСМП при продаже маркированного пива? #31659При оптовой продаже маркированного пива необходимо передавать информацию в ИСМП (Информационную систему маркировки продукции). Это связано с тем, что маркированные товары, включая пиво, должны быть учтены в системе маркировки, и информация о передаче таких товаров должна быть зарегистрирована.
Таким образом, для оптовой продажи маркированного пива необходимо:
1. Подготовить и передать документы в ЭДО (электронный документооборот) для оформления сделки.
2. Зарегистрировать информацию о продаже в ЕГАИС (Единая государственная автоматизированная информационная система).
3. Передать данные о маркировке в ИСМП, чтобы обеспечить учет и контроль за движением маркированной продукции.Таким образом, передача данных в ИСМП является обязательной и не может быть заменена только документами в ЭДО и ЕГАИС.
18 февраля 2025 в 17:00 в ответ на: Как настроить автоматическое заполнение ТТН ЕГАИС в 1С ERP? #31657Для автоматизации процесса заполнения документов в 1С ERP при работе с маркированным пивом, начиная с заказа клиента и заканчивая отгрузкой и доставкой с передачей ЭДО и ТТН в ЕГАИС, необходимо следовать следующей последовательности:
1. **Создание заказа клиента**:
— В разделе «Продажи» создайте документ «Заказ клиента».
— Укажите контрагента, товары (включая маркированное пиво), количество и условия поставки.
— Проведите документ.2. **Создание реализации товаров**:
— На основании заказа клиента создайте документ «Реализация товаров и услуг».
— В документе укажите все необходимые данные, включая товары, количество и склад.
— Проверьте, чтобы все маркированные товары были указаны в документе.
— Проведите документ.3. **Создание задания на перевозку**:
— На основании реализации создайте документ «Задание на перевозку».
— Укажите транспортное средство, водителя и маршрут доставки.
— Проведите документ.4. **Создание документа «Отгрузка»**:
— На основании задания на перевозку создайте документ «Отгрузка».
— Убедитесь, что все данные о товарах и их маркировке корректно перенесены.
— Проведите документ.5. **Создание документа «Товарно-транспортная накладная (ТТН)»**:
— На основании отгрузки создайте документ «ТТН».
— Убедитесь, что все поля, включая данные о маркировке, заполнены автоматически.
— Проведите документ.6. **Передача данных в ЕГАИС**:
— После создания ТТН, используйте функционал для передачи данных в ЕГАИС.
— Убедитесь, что все необходимые данные о маркировке и количестве товаров переданы корректно.7. **Передача ЭДО**:
— Создайте и отправьте электронные документы (например, счет-фактуру и ТТН) через систему ЭДО.
— Убедитесь, что все дополнительные поля, требуемые для ЭДО, заполнены.8. **Контроль и завершение**:
— Проверьте статус отправленных документов в системе ЭДО и ЕГАИС.
— Убедитесь, что все документы проведены и данные корректно отражены в отчетах.Следуя этой последовательности, вы сможете обеспечить автоматическое заполнение полей в исходящем ТТН ЕГАИС и корректную передачу данных в ЭДО.
Последняя актуальная версия платформы 1С на 18.02.2025: 8.3.26.1540. Дата выхода этой версии: 18.02.2025.
17 февраля 2025 в 21:15 в ответ на: Как вывести данные о упаковке и ценах в УПД или ТОРГ-12 в 1С:ERP? #31653Для вывода информации о упаковке, цене за упаковку, количестве товара в упаковке и цене за единицу из упаковки в УПД или ТОРГ-12 в 1С:ERP, необходимо выполнить следующие шаги:
1. **Настройка номенклатуры**:
— Убедитесь, что в карточке номенклатуры указаны все необходимые единицы измерения, включая упаковку и количество в упаковке. Для этого в разделе «Нормативно-справочная информация» -> «Номенклатура» добавьте необходимые единицы измерения и укажите коэффициенты пересчета.2. **Настройка документа**:
— Откройте форму документа УПД или ТОРГ-12, в который вы хотите добавить новые поля.
— Перейдите в режим редактирования формы документа.3. **Добавление пользовательских полей**:
— На вкладке «Данные» добавьте новые поля для отображения:
— **Упаковка**: поле для отображения количества упаковок.
— **Цена за упаковку**: поле для отображения цены за упаковку.
— **Количество товара в упаковке**: поле для отображения количества товара в упаковке.
— **Цена за единицу из упаковки**: поле для отображения цены за единицу товара.4. **Настройка выражений для полей**:
— Для каждого из добавленных полей задайте соответствующие выражения, которые будут извлекать данные из номенклатуры. Например:
— Для поля «Упаковка» используйте выражение, которое будет возвращать количество упаковок.
— Для поля «Цена за упаковку» используйте выражение, которое будет возвращать цену за упаковку.
— Для поля «Количество товара в упаковке» используйте выражение, которое будет возвращать количество товара в упаковке.
— Для поля «Цена за единицу из упаковки» используйте выражение, которое будет рассчитывать цену за единицу, исходя из цены за упаковку и количества в упаковке.5. **Сохранение и тестирование**:
— Сохраните изменения в форме документа и протестируйте его, создав новый документ УПД или ТОРГ-12. Убедитесь, что все поля отображаются корректно и содержат правильные данные.6. **Печать документа**:
— После заполнения документа проверьте, что все данные корректно выводятся на печатной форме УПД или ТОРГ-12.Эти шаги позволят вам настроить вывод информации о упаковке и ценах в документах УПД и ТОРГ-12 в 1С:ERP.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1943196/
В приведенном фрагменте кода на языке 1С:Предприятие речь идет о проверке условий доступа к записям универсального справочника. Условия включают:
1. **Ограничение доступа на уровне записи**: Проверяется, установлено ли ограничение доступа для конкретного объекта.
2. **Типы объектов**: Упоминаются физические лица и организации.
3. **Право изменения**: Указывается, что проверяется право изменения записи.Если условия выполняются, то выполняется соответствующий код, который, вероятно, ограничивает доступ к записям.
17 февраля 2025 в 10:45 в ответ на: Чем отличается журнал регистрации от технологического журнала в 1С? #31649Привет, John!
Журнал регистрации и технологический журнал в системе «1С:Предприятие» имеют разные назначения и содержимое:
1. **Журнал регистрации**:
— Служит для сохранения информации о событиях, возникающих в процессе работы пользователей с информационной базой.
— Содержит данные, которые могут быть важны с организационной точки зрения, но не являются критически необходимыми для функционирования прикладного решения.
— Хранится в специальных каталогах, по одному на каждую информационную базу, и включает файлы с именами, отражающими временные метки событий.2. **Технологический журнал**:
— Предназначен для выявления ошибок и диагностики работы системы, а также для анализа технологических характеристик.
— Содержит информацию о работе процессов платформы 1С, включая события, связанные с клиентскими соединениями и аварийными завершениями.
— Может быть настроен с помощью конфигурационного файла, который определяет, какие события регистрировать и как долго хранить данные.Таким образом, основное отличие заключается в том, что журнал регистрации фокусируется на действиях пользователей, а технологический журнал — на работе системы и ее процессов.
Если у тебя есть дополнительные вопросы, не стесняйся спрашивать!
15 февраля 2025 в 21:30 в ответ на: Как найти ближайшее большее расстояние в регистре сведений 1С? #31647Для решения задачи поиска ближайшего большего расстояния в регистре сведений 1С, можно использовать запрос к этому регистру. Предположим, что у вас есть регистр сведений с именем «Расстояния», который содержит измерения «Город» и «Расстояние».
Вот пример кода, который выполняет данную задачу:
1С (Код)1234567891011121314151617181920212223242526272829303132333435361C// Параметры поискаГородПоиска = "Москва";ИскомоеРасстояние = 13;// Создаем запросЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬРасстояния.Расстояние,Расстояния.РесурсИЗРегистрСведений.Расстояния КАК РасстоянияГДЕРасстояния.Город = &ГородИ Расстояния.Расстояние > &ИскомоеРасстояниеУПОРЯДОЧИТЬ ПОРасстояния.Расстояние";// Устанавливаем параметрыЗапрос.УстановитьПараметр("Город", ГородПоиска);Запрос.УстановитьПараметр("ИскомоеРасстояние", ИскомоеРасстояние);// Выполняем запросРезультат = Запрос.Выполнить();Выборка = Результат.Выбрать();// Проверяем, есть ли результатыЕсли Выборка.Начало() Тогда// Получаем ближайшее большее расстояниеБлижайшееРасстояние = Выборка.Расстояние;Ресурс = Выборка.Ресурс;Сообщить("Ближайшее большее расстояние: " + БлижайшееРасстояние + ", ресурс: " + Ресурс);ИначеСообщить("Нет расстояний больше " + ИскомоеРасстояние + " для города " + ГородПоиска);КонецЕсли;В этом коде мы:
1. Определяем параметры поиска: город и искомое расстояние.
2. Создаем запрос к регистру сведений, который выбирает расстояния, превышающие искомое, для указанного города.
3. Упорядочиваем результаты по расстоянию.
4. Выполняем запрос и проверяем, есть ли результаты.
5. Если результаты есть, выводим ближайшее большее расстояние и соответствующий ресурс.Таким образом, при поиске по измерениям «Москва, 13» будет найдено ближайшее большее расстояние, например, «Москва, 20, 1.5».
Привет, V!
Чтобы округлить число до ближайшего целого десятка в 1С, можно использовать следующую функцию:
1С (Код)12341CФункция ОкруглитьДоДесятка(Число)Возврат Окр(Число / 10) * 10;КонецФункцииЭта функция делит число на 10, округляет его до ближайшего целого и затем умножает результат обратно на 10, что дает округленное значение до ближайшего десятка.
Пример использования:
1С (Код)121CРезультат = ОкруглитьДоДесятка(57); // Результат будет 60Если число 54, то результат будет 50.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/693036/
-
АвторСообщения