Ответы в темах
-
АвторСообщения
-
24 февраля 2025 в 20:00 в ответ на: Как ограничить просмотр операций только для авторов в 1С? #317061С (Код)12345678910111213141516171819202122232425262728293031323334353637383940411C// Функция для проверки прав доступа менеджера по продажам на просмотр операцийФункция ПроверкаПравДоступа(Ответственный) Экспорт// Получаем текущего пользователяТекущийПользователь = Пользователи.ТекущийПользователь();// Если ответственный не заполнен, разрешаем просмотрЕсли Не ЗначениеЗаполнено(Ответственный) ТогдаВозврат Истина;КонецЕсли;// Если текущий пользователь является ответственным, разрешаем просмотрЕсли Ответственный = ТекущийПользователь ТогдаВозврат Истина;КонецЕсли;// Запрос для проверки, является ли текущий пользователь автором операцииЗапрос = Новый Запрос;Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1Операции.Ссылка КАК СсылкаИЗДокумент.ЗаказПокупателя КАК ОперацииГДЕОперации.Ответственный = &ТекущийПользовательИ Операции.Ссылка = &Ответственный";Запрос.УстановитьПараметр("ТекущийПользователь", ТекущийПользователь);Запрос.УстановитьПараметр("Ответственный", Ответственный);// Выполняем запросРезультат = Запрос.Выполнить();// Если запрос вернул результат, разрешаем просмотрЕсли Результат.Количество() > 0 ТогдаВозврат Истина;КонецЕсли;// В противном случае запрещаем просмотрВозврат Ложь;КонецФункции
Данная функция проверяет, является ли текущий пользователь автором операции. Если да, то доступ на просмотр разрешен. Если нет, то доступ запрещен.
24 февраля 2025 в 19:00 в ответ на: В чем различие модулей с пометкой «локализация» и «переопределяемый» в БСП? #31704Привет, Илья!
В БСП (Библиотека стандартных подсистем) модули с пометкой «локализация» и «переопределяемый» имеют разные назначения и функционал:
1. **Локализация**:
— Модули, содержащие слово «локализация», предназначены для адаптации типовой конфигурации к специфическим требованиям определенной страны или региона. Они могут включать в себя изменения в отчетности, правилах учета, интерфейсе и других аспектах, которые могут отличаться в зависимости от местных норм и стандартов.
— Эти модули могут содержать специфические настройки, которые не влияют на основную логику конфигурации, но необходимы для соответствия местным требованиям.2. **Переопределяемый**:
— Переопределяемые модули предназначены для того, чтобы разработчики могли изменять или дополнять их функциональность без изменения исходного кода типовой конфигурации. Это позволяет создавать расширения и модификации, которые могут быть легко обновлены при выходе новых версий конфигурации.
— Переопределяемые модули могут содержать методы и процедуры, которые можно переопределить в пользовательских расширениях, что дает гибкость в настройке и доработке функционала.Таким образом, основное отличие заключается в том, что модули «локализация» фокусируются на адаптации к местным требованиям, а «переопределяемые» модули предоставляют возможность для изменения и расширения функциональности без изменения исходного кода.
Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать!
24 февраля 2025 в 17:00 в ответ на: Как захватить корень конфигурации 1С, подключенной к хранилищу? #31702Чтобы захватить корень конфигурации 1С, когда конфигурация подключена к хранилищу конфигураций, выполните следующие шаги:
1. Откройте конфигуратор 1С, подключенный к вашей базе данных, которая уже связана с хранилищем конфигураций.
2. Перейдите в меню «Конфигурация».
3. Выберите пункт «Захватить в хранилище».
4. В открывшемся окне выберите корневой элемент конфигурации (обычно это «Конфигурация» или «Корень»).
5. Убедитесь, что установлен флажок «Рекурсивно», чтобы захватить все изменения, включая подчиненные элементы.
6. Нажмите «ОК» для выполнения операции.После этого все изменения, сделанные в конфигурации, будут захвачены в хранилище. Убедитесь, что у вас есть необходимые права доступа для выполнения этой операции.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/63841/
24 февраля 2025 в 14:45 в ответ на: Как настроить маркетинговую акцию в 1С:Розница 2.3 для продажи товара по нулевой #31700Привет, Rus!
Для настройки маркетинговой акции в 1С:Розница 2.3, которая позволит продавать товар по нулевой цене через РМК и отображать это в чеке, выполните следующие шаги:
1. **Создание условия предоставления скидки**:
— Перейдите в раздел «Маркетинг» и выберите «Условия предоставления скидок».
— Создайте новое условие, укажите, что скидка будет предоставляться при покупке определенного товара или группы товаров.
— Установите значение скидки на 100%, чтобы итоговая цена товара стала равной нулю.2. **Создание скидки**:
— В разделе «Маркетинг» выберите «Скидки (наценки, ограничения)».
— Создайте новую скидку, укажите ее название и тип (например, «Скидка 100%»).
— Привяжите созданное ранее условие предоставления скидки к этой скидке.3. **Создание маркетинговой акции**:
— Перейдите в раздел «Маркетинг» и выберите «Маркетинговые акции».
— Создайте новую акцию, добавьте к ней созданную скидку.
— Убедитесь, что акция активна и имеет нужные даты начала и окончания.4. **Проверка настроек**:
— Откройте РМК и выполните продажу товара, который попадает под действие созданной акции.
— Убедитесь, что при расчете итоговой суммы цена товара отображается как нулевая, и это фиксируется в чеке.5. **Настройка отображения в чеке**:
— Убедитесь, что в настройках печати чека предусмотрено отображение скидок и итоговой суммы. Это можно проверить в настройках формата чека.После выполнения этих шагов, вы сможете продавать товар по нулевой цене через РМК, и это будет отображаться в чеке.
Если возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться!
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/753997/
24 февраля 2025 в 14:30 в ответ на: Как запретить изменение ЗРДС при отправке на согласование в 1С:ERP? #31698Для запрета изменения документа «Заявка на расход денежных средств» (ЗРДС), отправленного на согласование в документ «Договор» (ДО) в конфигурации 1С:ERP, можно использовать механизм подписки на событие «ПередЗаписью» в модуле документа ЗРДС.
Вот примерный алгоритм действий:
1. **Создайте обработчик события**:
В модуле документа ЗРДС добавьте обработчик события «ПередЗаписью».2. **Проверьте статус согласования**:
В обработчике проверьте, находится ли документ в состоянии, когда он уже отправлен на согласование. Это можно сделать, проверив реквизит, который отвечает за статус согласования.3. **Запретите запись**:
Если документ отправлен на согласование, установите параметрОтказв значениеИстина, чтобы запретить его изменение.Пример кода для обработчика:
1С (Код)12345671CПроцедура ПередЗаписью(Отказ)Если ЭтотОбъект.СтатусСогласования = Перечисления.СтатусыСогласования.Отправлено ТогдаОтказ = Истина;Сообщить("Изменение документа запрещено, так как он отправлен на согласование.");КонецЕсли;КонецПроцедуры4. **Тестирование**:
После внесения изменений протестируйте функциональность, чтобы убедиться, что документ не может быть изменен после отправки на согласование.Таким образом, вы сможете запретить изменения в ЗРДС, которые были отправлены на согласование в ДО.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/147074/
Привет, Денис!
Для чтения файла CSV и записи его данных в таблицу «Товары» в 1С, можно использовать следующий подход. Предположим, что файл имеет разделитель «;» и содержит заголовки. Вот пример кода, который выполняет эту задачу:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445461CПроцедура ЗагрузитьТоварыИзCSV(ИмяФайла)// Создаем объект для чтения текстаЧтениеТекста = Новый ЧтениеТекста();ЧтениеТекста.Открыть(ИмяФайла);// Создаем таблицу значений для хранения данныхТаблицаТоваров = Новый ТаблицаЗначений;// Читаем заголовкиЗаголовки = ЧтениеТекста.ПрочитатьСтроку();МассивЗаголовков = СтрРазделить(Заголовки, ";");// Добавляем колонки в таблицу значенийДля Каждого Заголовок Из МассивЗаголовков ЦиклТаблицаТоваров.Колонки.Добавить(Заголовок);КонецЦикла;// Читаем данные из файлаПока Истина ЦиклТекСтрока = ЧтениеТекста.ПрочитатьСтроку();Если ТекСтрока = Неопределено Тогдаbreak; // Выход из цикла, если достигнут конец файлаКонецЕсли;МассивДанных = СтрРазделить(ТекСтрока, ";");НоваяСтрока = ТаблицаТоваров.Добавить();Для Индекс = 0 По МассивДанных.Количество() - 1 ЦиклЕсли Индекс < ТаблицаТоваров.Колонки.Количество() ТогдаНоваяСтрока[Индекс] = МассивДанных[Индекс];КонецЕсли;КонецЦикла;КонецЦикла;ЧтениеТекста.Закрыть();// Теперь записываем данные в таблицу "Товары"Для Каждого Товар Из ТаблицаТоваров ЦиклНовыйТовар = Справочники.Товары.СоздатьЭлемент();НовыйТовар.Наименование = Товар[0]; // Предположим, что наименование в первой колонкеНовыйТовар.Цена = Товар[1]; // Предположим, что цена во второй колонке// Заполните остальные поля по необходимостиНовыйТовар.Записать();КонецЦикла;КонецПроцедурыВ этом коде:
1. Мы открываем файл CSV для чтения.
2. Читаем заголовки и создаем колонки в таблице значений.
3. Читаем строки из файла и заполняем таблицу значений.
4. После этого записываем данные в справочник «Товары».Не забудьте заменить индексы в
НоваяСтрока[Индекс]на соответствующие поля вашей таблицы «Товары».Если у вас есть дополнительные вопросы или нужна помощь с конкретными полями, дайте знать!
22 февраля 2025 в 20:30 в ответ на: Как заполнить табличную часть документа по остаткам на складе в 1С? #31693Привет, Николай!
Чтобы заполнить табличную часть документа по остаткам на складе в 1С:Предприятии, вам нужно выполнить несколько шагов. Вот примерный алгоритм:
1. **Создание документа**: Откройте документ, в который вы хотите добавить табличную часть с остатками.
2. **Получение остатков**: Используйте запрос к регистру накопления или регистру сведений, чтобы получить данные об остатках товаров на складе. Например, вы можете использовать следующий запрос:
1С (Код)12345678910111213141CЗапрос = Новый Запрос;Запрос.Текст = "ВЫБРАТЬНоменклатура,Сумма(Количество) КАК КоличествоИЗРегистрНакопления.ЗапасыГДЕСклад = &СкладСГРУППИРОВАТЬ ПОНоменклатура";Запрос.УстановитьПараметр("Склад", ВашСклад);Результат = Запрос.Выполнить();3. **Заполнение табличной части**: После получения остатков, переберите результат и добавьте строки в табличную часть документа. Пример кода:
1С (Код)1234561CДля каждого Строка Из Результат ЦиклНоваяСтрока = Объект.ТабличнаяЧасть.Добавить();НоваяСтрока.Номенклатура = Строка.Номенклатура;НоваяСтрока.Количество = Строка.Количество;КонецЦикла;4. **Проверка и сохранение**: После заполнения табличной части проверьте данные на корректность и сохраните документ.
Этот алгоритм можно адаптировать под конкретные требования вашей конфигурации. Если у вас есть дополнительные условия или особенности, дайте знать, и я помогу с их реализацией.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1106456/
Привет, Роман!
Ошибка формата потока в 1С:Предприятие — это сообщение об ошибке, которое возникает при попытке работы с информационной базой, когда система не может корректно интерпретировать данные. Это может происходить по различным причинам, включая повреждение данных, некорректное обновление конфигурации, сбои в работе оборудования или программного обеспечения, а также проблемы с совместимостью версий.
Основные причины возникновения ошибки формата потока:
1. Повреждение файлов конфигурации или данных.
2. Ошибки при обновлении конфигурации.
3. Наличие некорректных символов в строковых данных.
4. Проблемы с сетевым подключением или оборудованием.
5. Нехватка дискового пространства на сервере.Для устранения ошибки рекомендуется:
— Проверить целостность базы данных с помощью утилиты chdbfl.exe.
— Удалить и заново добавить базу в список.
— Очистить кэш конфигурации.
— Проверить наличие обновлений для платформы 1С.
— В случае необходимости, восстановить базу из резервной копии.Если ошибка возникает при работе с конкретными отчетами или объектами, стоит проверить их на наличие повреждений и, при необходимости, удалить или заменить.
Рекомендую посмотреть здесь: [HelpF.pro](https://helpf.pro/faq/view/616.html).
22 февраля 2025 в 11:30 в ответ на: Как организовать перемещение товаров с учетом заказов в 1С:Предприятие? #31688Для организации перемещения товаров в одном документе с учетом заказов в 1С:Предприятие можно использовать механизм внутреннего заказа и документа «Перемещение товаров». Вот пошаговая инструкция:
1. **Создание внутреннего заказа**:
— Откройте документ «Внутренний заказ».
— Заполните шапку документа, указав склад, который делает запрос на перемещение товаров.
— В табличной части укажите товары, которые необходимо переместить, и их количество.2. **Резервирование товаров**:
— На основании внутреннего заказа создайте документ «Резервирование товаров».
— Убедитесь, что товары, указанные в внутреннем заказе, доступны для резервирования.
— Заполните документ, указав склад, на котором будет производиться резервирование.3. **Создание документа «Перемещение товаров»**:
— На основании внутреннего заказа создайте документ «Перемещение товаров».
— Укажите склад-отправитель и склад-получатель.
— В табличной части автоматически подгрузятся товары из внутреннего заказа.4. **Проведение перемещения**:
— Проведите документ «Перемещение товаров» после фактической отгрузки товаров со склада-отправителя.
— Убедитесь, что все движения корректно отразились в учете.5. **Закрытие внутреннего заказа**:
— После завершения всех операций по перемещению товаров, закройте внутренний заказ, если он больше не нужен.Таким образом, вы сможете организовать перемещение товаров в одном документе с учетом заказов, что позволит эффективно управлять запасами и контролировать движение товаров между складами.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/240877/
22 февраля 2025 в 11:30 в ответ на: В каких конфигурациях 1С возможно перемещение товаров между складами? #31686Перемещение товаров между складами возможно в большинстве конфигураций 1С, которые поддерживают учет товаров и складской учет. Вот некоторые из них:
1. **1С: Управление торговлей** — одна из самых распространенных конфигураций для учета товаров и управления складом.
2. **1С: Бухгалтерия** — поддерживает учет товаров и может использоваться для перемещения между складами.
3. **1С: Учет в торговле** — специализированная конфигурация для учета торговых операций, включая перемещение товаров.
4. **1С: ERP** — более комплексное решение, которое также включает функционал для управления складскими запасами и перемещения товаров.
5. **1С: Управление производственным предприятием** — поддерживает учет материалов и готовой продукции, включая перемещение между складами.
6. **1С: Розница** — для учета товаров в розничной торговле, включая перемещение между складами.Каждая из этих конфигураций имеет свои особенности и может быть настроена для учета перемещения товаров в зависимости от потребностей бизнеса.
В 1С формат 1.10 и 1.1 не равны из-за особенностей представления чисел с плавающей запятой и форматирования.
1. **Числовое представление**: В 1С числа с плавающей запятой могут храниться с фиксированным количеством знаков после запятой. Формат 1.10 подразумевает наличие двух знаков после запятой, тогда как 1.1 имеет только один. Это приводит к тому, что 1.10 воспринимается как 1.10, а 1.1 как 1.10, но с учетом формата, они могут быть представлены по-разному.
2. **Сравнение строк**: Если сравнивать эти значения как строки, то «1.10» и «1.1» будут различаться, так как строковое представление учитывает количество символов.
3. **Форматирование**: При выводе значений в интерфейсе или при использовании в расчетах, форматирование может влиять на то, как числа воспринимаются и отображаются.
Таким образом, в зависимости от контекста, в котором используются эти значения, они могут восприниматься как разные.
20 февраля 2025 в 17:45 в ответ на: Как получить документ «Чек ККМ» через OData с фильтром по дате и кассе? #31681Для получения документа «Чек ККМ» через OData с отбором по дате и кассе ККМ, вам нужно использовать соответствующий URL для запроса. Пример запроса может выглядеть следующим образом:
1С (Код)12httpGET /odata/Документ.ЧекККМ?$filter=Дата ge 2025-02-01 and Дата le 2025-02-20 and КассаККМ/Ссылка eq 'СсылкаНаКассу'В этом запросе:
—Дата ge 2025-02-01— фильтр для начала диапазона дат.
—Дата le 2025-02-20— фильтр для конца диапазона дат.
—КассаККМ/Ссылка eq ‘СсылкаНаКассу’— фильтр для конкретной кассы ККМ, где’СсылкаНаКассу’— это ссылка на нужную кассу.Не забудьте заменить
’СсылкаНаКассу’на фактическую ссылку на кассу, которую вы хотите использовать.Этот запрос вернет все документы «Чек ККМ», которые соответствуют указанным критериям.
1С (Код)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465661CДанные = Новый Структура;Данные.Вставить("action", "UPDATE");Данные.Вставить("objectName", "PurchaseOrder");// Создаем массив для данныхМассивДанных = Новый Массив;// Создаем структуру для элемента данныхЭлементДанных = Новый Структура;ЭлементДанных.Вставить("id", 604030);ЭлементДанных.Вставить("udf_date1", "2025-02-20T15:09:00");ЭлементДанных.Вставить("code", "00000095");// Создаем структуру для контрагентаКонтрагент = Новый Структура;Контрагент.Вставить("id", 428823);Контрагент.Вставить("key", "428823");Контрагент.Вставить("objectName", "Contractor");ЭлементДанных.Вставить("contractor", Контрагент);// Создаем структуру для контрактаКонтракт = Новый Структура;Контракт.Вставить("id", 429565);Контракт.Вставить("key", "429565");Контракт.Вставить("objectName", "Contract");ЭлементДанных.Вставить("contract", Контракт);// Создаем структуру для складаСклад = Новый Структура;Склад.Вставить("id", 206201);Склад.Вставить("key", "206201");Склад.Вставить("objectName", "Warehouse");ЭлементДанных.Вставить("stockNode", Склад);// Создаем структуру для сайтаСайт = Новый Структура;Сайт.Вставить("id", 206020);Сайт.Вставить("key", "206020");Сайт.Вставить("objectName", "Site");ЭлементДанных.Вставить("site", Сайт);// Создаем структуру для валютыВалюта = Новый Структура;Валюта.Вставить("id", 87850);Валюта.Вставить("key", "87850");Валюта.Вставить("objectName", "Currency");ЭлементДанных.Вставить("currency", Валюта);// Вставляем остальные поляЭлементДанных.Вставить("registrationDate", "2025-01-16T10:09:00");ЭлементДанных.Вставить("isOutsource", Ложь);ЭлементДанных.Вставить("createdFrom", "MANUAL");ЭлементДанных.Вставить("isVatIncluded", Истина);ЭлементДанных.Вставить("overheadAmount", "0");ЭлементДанных.Вставить("key", "604030");// Добавляем элемент данных в массивМассивДанных.Добавить(ЭлементДанных);// Вставляем массив данных в основную структуруДанные.Вставить("data", МассивДанных);// Преобразуем структуру в JSONСтрокаJSON = JSON(Данные);Возврат СтрокаJSON;Этот код создаст нужную структуру JSON, как вы указали.
20 февраля 2025 в 13:30 в ответ на: Как перевыбрать значения в табличной части документа без их изменения? #31677Добрый день, Михаил!
Для того чтобы перевыбрать значения в табличной части документа, не изменяя их, можно использовать механизм выбора значений с помощью диалогов. Это позволит пользователю выбрать новое значение, не изменяя текущее значение в табличной части.
Вот пример кода, который можно использовать в обработчике события выбора для поля табличной части:
1С (Код)123456789101112131C&НаКлиентеПроцедура ТоварыКДоставкеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)СтандартнаяОбработка = Ложь; // Отключаем стандартное поведениеЕсли Поле Неопределено и Поле.Имя = "ТоварыКДоставкеАдресИсточник" ТогдаВЗнач = Неопределено;Если ВвестиЗначение(ВЗнач, "Выберите магазин", Тип("СправочникСсылка.Склады")) Тогда// Здесь можно выполнить дополнительные действия, если нужно// Например, можно сохранить выбранное значение в переменной или просто сообщить пользователюСообщить("Вы выбрали: " + ВЗнач.Наименование);КонецЕсли;КонецЕсли;КонецПроцедурыВ этом коде мы используем функцию
ВвестиЗначение, чтобы открыть диалог выбора значения. Если пользователь выберет значение, оно будет сохранено в переменнойВЗнач, но текущее значение в табличной части не изменится.Таким образом, вы можете перевыбрать значения, не изменяя их в табличной части документа.
Если у вас есть дополнительные вопросы или нужна помощь с конкретной реализацией, дайте знать!
Ошибка «Процедура не может возвращать значение» возникает, когда вы пытаетесь использовать оператор
Возвратв процедуре, которая не предназначена для возврата значений. В 1С:Предприятие процедуры и функции имеют разные назначения:1. **Процедура** — это блок кода, который выполняет определенные действия, но не возвращает значение. Она может изменять значения параметров, переданных по ссылке, но не может возвращать результат через оператор
Возврат.2. **Функция** — это блок кода, который может возвращать значение с помощью оператора
Возврат. Функции предназначены для вычислений и получения результата.Чтобы исправить ошибку, убедитесь, что вы используете оператор
Возвраттолько в функциях, а в процедурах просто выполняете необходимые действия без попытки вернуть значение. Если вам нужно вернуть значение, измените определение процедуры на функцию.Пример:
1С (Код)123456789101C// Неправильно: использование Возврат в процедуреПроцедура ПримерПроцедуры()Возврат 10; // ОшибкаКонецПроцедуры// Правильно: использование Возврат в функцииФункция ПримерФункции()Возврат 10; // КорректноКонецФункцииТаким образом, для устранения ошибки проверьте, что вы используете правильный тип блока кода в зависимости от ваших потребностей.
-
АвторСообщения