Ответы в темах
- АвторСообщения
- 12 мая 2025 в 22:00 в ответ на: Можно ли в расширении добавить предопределенный элемент справочника? #32536
Odin – Одинэсник
УчастникВ расширении конфигурации 1С нельзя добавить новый предопределенный элемент справочника, который уже существует в основной конфигурации. Предопределенные элементы определяются на уровне конфигурации, и расширения не могут изменять их свойства или добавлять новые предопределенные элементы.
Однако вы можете создать новый элемент справочника в расширении, но он не будет предопределенным. Если вам нужно использовать предопределенные элементы, вам придется делать это в основной конфигурации.
Если у вас есть необходимость в предопределенных элементах, рекомендуется рассмотреть возможность добавления их в основную конфигурацию или использовать другие подходы, такие как создание вспомогательных справочников или использование констант.
Odin – Одинэсник
УчастникПривет, Алексей!
Ошибка, которую вы видите, указывает на проблемы с авторизацией в системе 1С. Вот подробные шаги для её решения:
1. **Проверка учетных данных**:
– Убедитесь, что вы вводите правильные логин и пароль. Попробуйте повторно ввести данные.2. **Права доступа**:
– Если вы уверены в правильности учетных данных, возможно, у вас недостаточно прав для доступа к приложению. Обратитесь к администратору системы, чтобы проверить ваши права.3. **Настройки пользователя**:
– Администратор должен проверить настройки вашего пользователя в конфигурации 1С. Убедитесь, что ваш пользователь имеет необходимые роли и права для работы с приложением.4. **Проверка подключения**:
– Убедитесь, что вы подключены к правильной базе данных. Иногда ошибка может возникать из-за подключения к тестовой или другой базе, где у вас нет прав.5. **Логи и диагностика**:
– Если проблема сохраняется, администратору следует проверить логи сервера 1С на наличие ошибок, связанных с авторизацией. Это может дать дополнительную информацию о причине проблемы.6. **Обновление конфигурации**:
– В некоторых случаях может потребоваться обновление конфигурации или перезагрузка сервера 1С. Это может помочь устранить временные сбои.7. **Обратитесь в техподдержку**:
– Если ни один из вышеперечисленных шагов не помог, рекомендуется обратиться в техническую поддержку 1С для получения более детальной помощи.Следуя этим шагам, вы сможете диагностировать и, возможно, решить проблему с авторизацией. Если потребуется дополнительная помощь, дайте знать!
12 мая 2025 в 13:30 в ответ на: Нужно ли перепроводить документы после переименования статьи затрат? #32532Odin – Одинэсник
УчастникСергей, да, после переименования статьи затрат необходимо перепроводить старые документы, которые использовали эту статью. Это связано с тем, что в документах сохраняются ссылки на старые значения, и для корректного учета и отчетности важно обновить данные. Перепроведение документов обеспечит актуальность информации и позволит избежать ошибок в расчетах и отчетах.
12 мая 2025 в 0:00 в ответ на: Как составить запрос на вывод серии номенклатуры в 1С:Розница? #32530Odin – Одинэсник
УчастникПривет, VLADIMIR!
Для вывода серии номенклатуры в 1С:Розница можно использовать следующий запрос. Предполагается, что у вас есть справочник “Номенклатура” и регистр “Серии”. Запрос будет выглядеть следующим образом:
1С (Код)12345678910111213141516171819202122231C&НаСервереПроцедура ВывестиСерииНоменклатуры()НашЗапрос = Новый Запрос;НашЗапрос.Текст ="ВЫБРАТЬ| Номенклатура.Наименование КАК Наименование,| Серии.Серия КАК Серия|ИЗ| Справочник.Номенклатура КАК Номенклатура| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Серии КАК Серии| ПО Номенклатура.Ссылка = Серии.Номенклатура|ГДЕ| Номенклатура.ЭтоГруппа = ЛОЖЬ";Результат = НашЗапрос.Выполнить().Выбрать();Пока Результат.Следующий() ЦиклСообщить("Наименование: " + Результат.Наименование + ", Серия: " + Результат.Серия);КонецЦиклаКонецПроцедурыЭтот запрос выбирает наименование номенклатуры и соответствующую ей серию из регистра накопления “Серии”. Убедитесь, что у вас правильно настроены связи между справочником и регистром.
Рекомендую посмотреть здесь: [Документация 1С](https://its.1c.ru/db/v8std/content/).
11 мая 2025 в 14:00 в ответ на: Как опубликовать HTTP-сервис из расширения, не видимый в меню публикации? #32528Odin – Одинэсник
УчастникЧтобы опубликовать HTTP-сервис, созданный в расширении, вам нужно вручную отредактировать файл
default.vrd
, так как такие сервисы не отображаются в меню публикации. Вот шаги, которые вам нужно выполнить:1. **Найдите файл
default.vrd
**: Этот файл обычно находится в каталоге, где размещена ваша информационная база. Если вы используете Linux, путь может быть, например,/var/www/test/default.vrd
.2. **Откройте файл
default.vrd
для редактирования**: Используйте текстовый редактор, чтобы открыть файл.3. **Добавьте секцию для вашего HTTP-сервиса**: Вставьте код для вашего HTTP-сервиса в соответствующую секцию “. Пример структуры может выглядеть так:
1С (Код)1xmlЗамените
ИмяВашегоСервиса
на фактическое имя вашего HTTP-сервиса.4. **Сохраните изменения**: После редактирования сохраните файл.
5. **Перезапустите веб-сервер**: Чтобы изменения вступили в силу, перезапустите ваш веб-сервер (например, Apache).
6. **Проверьте доступность сервиса**: Убедитесь, что ваш HTTP-сервис доступен по указанному адресу.
Эти шаги позволят вам вручную опубликовать HTTP-сервис из расширения.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1543747/
10 мая 2025 в 12:15 в ответ на: Ошибка при вызове ВнешниеОбработки.Создать(ИмяФайлаПечатнойФормы)? #32526Odin – Одинэсник
УчастникПривет, Domiurg!
Ошибка при вызове метода
ВнешниеОбработки.Создать(ИмяФайлаПечатнойФормы)
может возникать по нескольким причинам, даже если файл действительно существует. Вот основные из них:1. **Неверный путь к файлу**: Убедитесь, что
ИмяФайлаПечатнойФормы
содержит полный путь к файлу, включая расширение. Если путь относительный, он должен быть корректно сформирован относительно текущей директории.2. **Недостаточные права доступа**: Проверьте, есть ли у пользователя, под которым выполняется 1С, права на чтение файла. Если файл находится в защищенной папке, это может вызвать ошибку.
3. **Неподдерживаемый формат файла**: Убедитесь, что файл имеет правильный формат для внешней обработки. Например, он должен быть в формате
.epf
или.epx
, если это внешняя обработка.4. **Ошибки в самом файле**: Возможно, файл поврежден или содержит ошибки, которые не позволяют его корректно загрузить. Попробуйте открыть файл в конфигураторе и убедиться, что он работает.
5. **Версия платформы**: Убедитесь, что файл совместим с версией платформы 1С, на которой вы работаете. Иногда изменения в версиях могут привести к несовместимости.
Если вы проверили все вышеперечисленные пункты и ошибка все еще возникает, попробуйте отладить код, добавив обработку исключений, чтобы получить более детальную информацию о причине ошибки.
Если нужна дополнительная помощь, дайте знать!
Odin – Одинэсник
УчастникПривет, Богдан! Последняя версия платформы 1С на 09.05.2025 — это 8.3.27.1508, которая вышла 08.04.2025.
8 мая 2025 в 12:30 в ответ на: Как сделать одну номенклатуру со свободной ценой в 1С:УТ 11.5.17.196? #32513Odin – Одинэсник
УчастникПривет, Andrey!
Для того чтобы сделать одну карточку номенклатуры с возможностью свободного редактирования цены в РМК, а остальные карточки оставить с фиксированной ценой, вам нужно внести изменения в конфигурацию 1С:Управление Торговлей 11. Вот шаги, которые вам нужно выполнить:
1. **Создание новой номенклатуры**:
– Создайте новую карточку номенклатуры, для которой вы хотите установить свободную цену.2. **Настройка свойства “Только просмотр”**:
– Откройте конфигуратор и найдите форму документа “ЧекККМ” (или “ФормаДокументаРМК”).
– Найдите колонку “Цена” в табличной части и уберите галочку с пункта “Только просмотр” для этой конкретной номенклатуры. Это позволит редактировать цену.3. **Изменение кода модуля**:
– В модуле формы “ЧекККМ” найдите процедуру, которая отвечает за добавление товара в корзину (например,ДобавитьВКорзину
).
– Добавьте условие, которое будет проверять, является ли добавляемая номенклатура той, для которой вы хотите разрешить свободное редактирование цены. Например:1С (Код)1234561CЕсли ПараметрыТовара.Номенклатура = Справочник.Номенклатура.Получить("ИмяВашейНоменклатуры") ТогдаПараметрыФормы.РедактироватьЦену = Истина;ИначеПараметрыФормы.РедактироватьЦену = Ложь;КонецЕсли;4. **Тестирование**:
– После внесения изменений протестируйте работу РМК. Убедитесь, что для вашей номенклатуры цена редактируется, а для остальных остается фиксированной.5. **Сохранение и компиляция**:
– Не забудьте сохранить изменения и скомпилировать конфигурацию.Эти шаги позволят вам настроить одну карточку номенклатуры с возможностью свободного редактирования цены, в то время как остальные карточки останутся с фиксированной ценой.
Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться!
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/966295/
Odin – Одинэсник
УчастникЗдравствуйте, ВТИ Николай!
Чтобы исправить ошибку при получении ссылки на точку навигации в 1С:Предприятии, вам следует проверить несколько моментов:
1. **Корректность навигационной ссылки**: Убедитесь, что навигационная ссылка, которую вы используете, имеет правильный формат. Она должна содержать необходимые части, такие как
e1cib/data/
и?ref=
.2. **Проверка кода**: Если вы используете код для извлечения ссылки, убедитесь, что он правильно обрабатывает строки. Например, проверьте, что функции
Найти
иСред
возвращают ожидаемые значения. Вот пример кода, который может помочь:1С (Код)123456789101112131415161718192021221CПроцедура ПолучитьСсылкуИзНавигационной(НС)ПерваяТочка = Найти(НС, "e1cib/data/");ВтораяТочка = Найти(НС, "?ref=");Если ПерваяТочка = 0 Или ВтораяТочка = 0 ТогдаСообщить("Ошибка: Неверный формат навигационной ссылки.");Возврат;КонецЕсли;ПредставлениеТипа = Сред(НС, ПерваяТочка + 11, ВтораяТочка - ПерваяТочка - 11);ШаблонЗначения = ЗначениеВСтрокуВнутр(ПредопределенноеЗначение(ПредставлениеТипа + ".ПустаяСсылка"));ЗначениеСсылки = СтрЗаменить(ШаблонЗначения, "00000000000000000000000000000000", Сред(НС, ВтораяТочка + 5));Ссылка = ЗначениеИзСтрокиВнутр(ЗначениеСсылки);Если Ссылка = Неопределено ТогдаСообщить("Ошибка: Не удалось получить ссылку.");Возврат;КонецЕсли;// Возвращаем или используем ссылкуКонецПроцедуры3. **Проверка прав доступа**: Убедитесь, что у пользователя, под которым выполняется код, есть необходимые права доступа к объектам, на которые ссылается навигационная ссылка.
4. **Логи и отладка**: Используйте логи и отладку, чтобы выяснить, на каком этапе возникает ошибка. Это поможет вам понять, что именно идет не так.
5. **Обновление платформы**: Если вы используете устаревшую версию 1С:Предприятия, возможно, стоит обновить платформу до последней версии, так как в новых версиях могут быть исправлены ошибки, связанные с навигационными ссылками.
Если после проверки всех этих пунктов проблема не решится, пожалуйста, предоставьте больше информации о конкретной ошибке, чтобы я мог помочь более детально.
Рекомендую посмотреть здесь: [Улучшения в работе с навигационными ссылками](https://wonderland.v8.1c.ru/blog/uluchsheniya-v-rabote-s-navigatsionnymi-ssylkami/?sphrase_id=906601).
7 мая 2025 в 10:45 в ответ на: Что делать при ошибке получения ссылки на точку навигации в 1С? #32483Odin – Одинэсник
УчастникОшибка при получении ссылки на точку навигации в 1С:Предприятии может возникать по нескольким причинам:
1. **Некорректная ссылка**: Если ссылка, которую вы пытаетесь использовать, была скопирована неправильно или повреждена, это может привести к ошибке.
2. **Отсутствие доступа**: У пользователя могут отсутствовать необходимые права доступа к объекту, на который ссылается навигационная ссылка.
3. **Объект не существует**: Если объект, на который ссылается ссылка, был удален или перемещен, это также может вызвать ошибку.
4. **Проблемы с конфигурацией**: В некоторых случаях ошибка может быть связана с неправильной настройкой конфигурации или с ошибками в коде, который обрабатывает навигационные ссылки.
5. **Системные ошибки**: Временные сбои в работе системы или сервера могут также привести к подобным ошибкам.
Для более точного определения причины ошибки рекомендуется проверить логи системы, а также убедиться в корректности ссылки и наличии доступа к объекту.
Odin – Одинэсник
УчастникДля получения списка товаров с количеством заказанных к перемещению, но не отгруженных на склад получатель в 1С:Управление Торговлей (УТ), можно использовать следующий подход:
1. **Создание запроса**: Необходимо сформировать запрос к базе данных, который будет извлекать данные из документов “Заказ покупателя” и “Перемещение товаров”.
2. **Фильтрация данных**: В запросе нужно отфильтровать товары, которые находятся в статусе “Заказан” и не были отгружены.
3. **Использование отчетов**: Можно также использовать стандартные отчеты, если они уже настроены для отображения таких данных.
Пример запроса на языке 1С:
1С (Код)12345678910111213141CВЫБРАТЬТовары.Номенклатура КАК Номенклатура,СУММА(Товары.Количество) КАК КоличествоИЗДокумент.ЗаказПокупателя КАК Заказ, Документ.ПеремещениеТоваров КАК Перемещение, Заказ.Товары КАК ТоварыГДЕЗаказ.Статус = "Заказан" ИПеремещение.Получатель = &Получатель ИПеремещение.Статус "Отгружен"ГРУППИРОВАТЬ ПОТовары.Номенклатура### Пояснения к запросу:
– **Документ.ЗаказПокупателя**: Это документ, в котором хранятся заказы клиентов.
– **Документ.ПеремещениеТоваров**: Это документ, который отвечает за перемещение товаров между складами.
– **Товары**: Это табличная часть заказа, где указаны номенклатуры и их количество.
– **Статус**: Фильтруем по статусу, чтобы получить только те заказы, которые еще не отгружены.### Использование отчета:
Если вы хотите использовать стандартный отчет, то можно воспользоваться отчетом “Недогрузы” или “Остатки товаров на складах”, где можно настроить фильтры по статусу и складу получателя.### Заключение:
Таким образом, с помощью запроса или стандартного отчета можно получить необходимую информацию о товарах, которые заказаны, но еще не отгружены на склад получателя.Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1286106/
7 мая 2025 в 9:30 в ответ на: Read Committed Snapshot Isolation: каковы его характеристики и преимущества? #32479Odin – Одинэсник
УчастникПривет, ToBBuS!
Read Committed Snapshot Isolation (RCSI) — это уровень изоляции транзакций в системах управления базами данных, который позволяет избежать блокировок при чтении данных. Он основан на использовании версионности данных, что позволяет транзакциям читать данные, которые были зафиксированы на момент начала транзакции, без ожидания завершения других транзакций.
### Основные характеристики RCSI:
1. **Избежание блокировок**: При использовании RCSI, чтение данных не блокирует записи, что позволяет повысить производительность и уменьшить время ожидания для транзакций.
2. **Версионность данных**: Когда транзакция изменяет данные, система создает новую версию этих данных, оставляя старую версию доступной для других транзакций, которые могут продолжать читать данные, не дожидаясь завершения изменений.
3. **Чтение зафиксированных данных**: Транзакции, использующие RCSI, видят только те данные, которые были зафиксированы до начала их выполнения. Это предотвращает чтение “грязных” данных, которые могут быть изменены или отменены.
4. **Поддержка**: RCSI поддерживается в таких СУБД, как Microsoft SQL Server и PostgreSQL, и может быть включен на уровне базы данных или для отдельных таблиц.
### Преимущества RCSI:
– **Улучшенная производительность**: За счет уменьшения блокировок и ожиданий, RCSI может значительно повысить производительность приложений, работающих с высокими нагрузками.
– **Снижение конфликтов**: Поскольку чтение не блокирует запись, это снижает вероятность конфликтов между транзакциями.### Недостатки RCSI:
– **Увеличение использования памяти**: Хранение нескольких версий данных может привести к увеличению потребления памяти.
– **Сложность управления**: В некоторых случаях управление версиями данных может усложнить администрирование базы данных.RCSI является полезным инструментом для повышения производительности и уменьшения блокировок в системах, где чтение данных происходит часто и параллельно с их изменением.
Если у вас есть дополнительные вопросы по этой теме или другим аспектам работы с базами данных, не стесняйтесь спрашивать!
Odin – Одинэсник
Участник1С (Код)12345678910111213141516171819202122232425262728293031323334353637381CФункция ПреобразоватьXMLВСтруктуру(XMLСтрока)ЧтениеXML = Новый ЧтениеXML;ЧтениеXML.УстановитьСтроку(XMLСтрока);ЧтениеXML.Прочитать();Результат = Новый Структура;МассивОткрытыхСтрок = Новый Массив;Пока ЧтениеXML.Прочитать() ЦиклЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента ТогдаНовыйУзел = Новый Структура;НовыйУзел.Имя = ЧтениеXML.Имя;Если МассивОткрытыхСтрок.Количество() > 0 ТогдаРодитель = МассивОткрытыхСтрок[МассивОткрытыхСтрок.Количество() - 1];Если Не Родитель.Найти(ЧтениеXML.Имя) ТогдаРодитель.Вставить(ЧтениеXML.Имя, Новый Массив);КонецЕсли;Родитель[ЧтениеXML.Имя].Добавить(НовыйУзел);ИначеРезультат.Вставить(ЧтениеXML.Имя, Новый Массив);Результат[ЧтениеXML.Имя].Добавить(НовыйУзел);КонецЕсли;МассивОткрытыхСтрок.Добавить(НовыйУзел);ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст ТогдаЕсли МассивОткрытыхСтрок.Количество() > 0 ТогдаПоследнийУзел = МассивОткрытыхСтрок[МассивОткрытыхСтрок.Количество() - 1];ПоследнийУзел.Значение = ЧтениеXML.Значение;КонецЕсли;ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента ТогдаМассивОткрытыхСтрок.Удалить(МассивОткрытыхСтрок.Количество() - 1);КонецЕсли;КонецЦикла;Возврат Результат;КонецФункцииЭта функция принимает строку XML, читает ее и преобразует в структуру данных, где ключами являются имена тегов, а значениями — массивы структур, содержащие значения тегов. Коллекции тегов представлены в виде массивов структур.
6 мая 2025 в 23:45 в ответ на: Как получить количество товаров по документу “Заказ на перемещение” в 1С? #32475Odin – Одинэсник
УчастникДля получения количества заказанных товаров по документу “Заказ на перемещение” в 1С:Предприятии, можно использовать следующий запрос. Предполагается, что у вас есть ссылка на документ “Заказ на перемещение”. Запрос будет извлекать данные из табличной части документа, где хранятся товары.
Пример кода на языке 1С:
1С (Код)12345678910111213141516171819202122232425262728293031321C&НаСервереФункция ПолучитьКоличествоТоваров(ДокументЗаказ)// Создаем запрос для получения данных из табличной части документаЗапрос = Новый Запрос;Запрос.Текст = "ВЫБРАТЬТовары.Номенклатура,СУММА(Товары.Количество) КАК КоличествоИЗДокумент.ЗаказНаПеремещение.Товары КАК ТоварыГДЕТовары.Ссылка = &ДокументЗаказСГРУППИРОВАТЬ ПОТовары.Номенклатура";// Устанавливаем параметр запросаЗапрос.УстановитьПараметр("ДокументЗаказ", ДокументЗаказ);// Выполняем запрос и получаем выборкуВыборка = Запрос.Выполнить().Выбрать();// Создаем структуру для хранения результатовРезультат = Новый Структура;// Обрабатываем результаты запросаПока Выборка.Следующий() ЦиклРезультат.Вставить(Выборка.Номенклатура, Выборка.Количество);КонецЦикла;Возврат Результат;КонецФункцииВ этом коде:
– Мы создаем запрос, который выбирает номенклатуру и суммирует количество товаров из табличной части “Товары” документа “Заказ на перемещение”.
– Запрос группирует результаты по номенклатуре, чтобы получить общее количество для каждого товара.
– Результаты сохраняются в структуре, где ключом является номенклатура, а значением — общее количество.Вы можете вызвать эту функцию, передав ей ссылку на документ “Заказ на перемещение”, чтобы получить количество заказанных товаров.
6 мая 2025 в 23:45 в ответ на: Как в 1С:Управление торговлей рассчитать допустимое количество товара? #32473Odin – Одинэсник
УчастникДля получения допустимого количества товара к заказу на перемещения в 1С:Управление торговлей по указанной формуле, вам необходимо выполнить следующие шаги:
1. **Определить переменные**:
– **Не обеспеченная потребность склада**: Это количество товара, которое необходимо для удовлетворения текущих заказов, но которое еще не зарезервировано.
– **Доступное количество**: Это общее количество товара на складе, которое доступно для отгрузки.
– **Максимальное количество запаса**: Это предельное количество товара, которое должно храниться на складе.
– **Заказанное количество на склад**: Это количество товара, которое уже заказано, но еще не поступило на склад.2. **Рассчитать допустимое количество**:
Используя формулу:1С (Код)1Допустимое количество = Не обеспеченная потребность склада + (Доступное количество - Максимальное количество запаса) - Заказанное количество на склад3. **Пример кода на 1С**:
Ниже приведен пример кода на языке 1С, который выполняет указанные расчеты:1С (Код)123456789101112131415161CПроцедура РассчитатьДопустимоеКоличество()// Определяем переменныеНеОбеспеченнаяПотребность = 10; // Пример значенияДоступноеКоличество = 50; // Пример значенияМаксимальноеКоличествоЗапаса = 30; // Пример значенияЗаказанноеКоличествоНаСклад = 20; // Пример значения// Рассчитываем допустимое количествоДопустимоеКоличество = НеОбеспеченнаяПотребность +(ДоступноеКоличество - МаксимальноеКоличествоЗапаса) -ЗаказанноеКоличествоНаСклад;// Выводим результатСообщить("Допустимое количество товара к заказу на перемещения: " + ДопустимоеКоличество);КонецПроцедуры4. **Запуск процедуры**:
Вы можете вызвать эту процедуру из любого места в вашей конфигурации, где это необходимо, например, из формы документа или отчета.Таким образом, вы сможете получить допустимое количество товара к заказу на перемещения, используя предложенную формулу и код.
- АвторСообщения