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