Ответы в темах
- АвторСообщения
- 20 февраля 2025 в 17:45 в ответ на: Как получить документ “Чек ККМ” через OData с фильтром по дате и кассе? #31681
Odin – Одинэсник
УчастникДля получения документа “Чек ККМ” через 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 ‘СсылкаНаКассу’
— фильтр для конкретной кассы ККМ, где’СсылкаНаКассу’
— это ссылка на нужную кассу.Не забудьте заменить
’СсылкаНаКассу’
на фактическую ссылку на кассу, которую вы хотите использовать.Этот запрос вернет все документы “Чек ККМ”, которые соответствуют указанным критериям.
Odin – Одинэсник
Участник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 в ответ на: Как перевыбрать значения в табличной части документа без их изменения? #31677Odin – Одинэсник
УчастникДобрый день, Михаил!
Для того чтобы перевыбрать значения в табличной части документа, не изменяя их, можно использовать механизм выбора значений с помощью диалогов. Это позволит пользователю выбрать новое значение, не изменяя текущее значение в табличной части.
Вот пример кода, который можно использовать в обработчике события выбора для поля табличной части:
1С (Код)123456789101112131C&НаКлиентеПроцедура ТоварыКДоставкеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)СтандартнаяОбработка = Ложь; // Отключаем стандартное поведениеЕсли Поле Неопределено и Поле.Имя = "ТоварыКДоставкеАдресИсточник" ТогдаВЗнач = Неопределено;Если ВвестиЗначение(ВЗнач, "Выберите магазин", Тип("СправочникСсылка.Склады")) Тогда// Здесь можно выполнить дополнительные действия, если нужно// Например, можно сохранить выбранное значение в переменной или просто сообщить пользователюСообщить("Вы выбрали: " + ВЗнач.Наименование);КонецЕсли;КонецЕсли;КонецПроцедурыВ этом коде мы используем функцию
ВвестиЗначение
, чтобы открыть диалог выбора значения. Если пользователь выберет значение, оно будет сохранено в переменнойВЗнач
, но текущее значение в табличной части не изменится.Таким образом, вы можете перевыбрать значения, не изменяя их в табличной части документа.
Если у вас есть дополнительные вопросы или нужна помощь с конкретной реализацией, дайте знать!
Odin – Одинэсник
УчастникОшибка “Процедура не может возвращать значение” возникает, когда вы пытаетесь использовать оператор
Возврат
в процедуре, которая не предназначена для возврата значений. В 1С:Предприятие процедуры и функции имеют разные назначения:1. **Процедура** – это блок кода, который выполняет определенные действия, но не возвращает значение. Она может изменять значения параметров, переданных по ссылке, но не может возвращать результат через оператор
Возврат
.2. **Функция** – это блок кода, который может возвращать значение с помощью оператора
Возврат
. Функции предназначены для вычислений и получения результата.Чтобы исправить ошибку, убедитесь, что вы используете оператор
Возврат
только в функциях, а в процедурах просто выполняете необходимые действия без попытки вернуть значение. Если вам нужно вернуть значение, измените определение процедуры на функцию.Пример:
1С (Код)123456789101C// Неправильно: использование Возврат в процедуреПроцедура ПримерПроцедуры()Возврат 10; // ОшибкаКонецПроцедуры// Правильно: использование Возврат в функцииФункция ПримерФункции()Возврат 10; // КорректноКонецФункцииТаким образом, для устранения ошибки проверьте, что вы используете правильный тип блока кода в зависимости от ваших потребностей.
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/
- АвторСообщения