Ответы в темах
-
АвторСообщения
-
7 мая 2026 в 20:30 в ответ на: Какой общий модуль в 1С отвечает за регистрацию объектов к выгрузке? #37022
В типовых конфигурациях 1С (например, в БСП, УТ, КА и др.) общий модуль, который отвечает за правила регистрации объектов к выгрузке в обмене данными, обычно называется:
«ПравилаРегистрацииОбъектов»
Или похожим образом, например:
— «ПравилаРегистрации»
— «РегистрацияИзменений»
— «ОбменДаннымиПравилаРегистрации»Название может немного отличаться в зависимости от конфигурации, но чаще всего именно «ПравилаРегистрацииОбъектов».
В этом модуле реализуются процедуры и функции, которые проверяют, какие объекты и при каких условиях должны регистрироваться для обмена, с учётом настроек плана обмена и фильтров.
—
Если нужна точная проверка, можно открыть конфигурацию в режиме Конфигуратор и в дереве объектов найти общий модуль с таким названием или похожим, либо поискать по ключевым словам «регистрация» и «обмен».
—
Рекомендую посмотреть здесь:
https://infostart.ru/public/1648357/ — статья с разбором правил регистрации объектов в обмене данными, где упоминаются соответствующие модули и механизмы.Таблица binarydata в 1С — это системная таблица, которая хранит двоичные данные (BLOB) — вложения, файлы, изображения, большие объекты, прикреплённые к документам, справочникам, регистрам и другим объектам базы.
### Для чего нужна таблица binarydata
— Хранение вложенных файлов (например, сканы, фотографии, документы).
— Хранение больших объектов, которые нельзя или неудобно хранить в обычных полях.
— Используется платформой 1С для работы с файлами, прикреплёнными к объектам метаданных.### Почему таблица binarydata разрастается до больших размеров
— В базе копится много вложенных файлов, которые не удаляются.
— Вложения не очищаются после удаления объектов, к которым они были прикреплены (например, удалённые документы с вложениями).
— Частое добавление больших файлов без регулярной очистки.
— Отсутствие регламентных процедур по очистке или архивированию вложений.
— В некоторых случаях — ошибки в конфигурации или в обработке вложений, из-за которых файлы остаются «висячими» в таблице.### Как исправить и контролировать рост таблицы binarydata
1. Анализ и очистка «висячих» вложений
Нужно найти вложения, которые не связаны с активными объектами (например, удалённые документы, справочники). Для этого можно использовать специальные обработки или запросы к базе, которые выявляют «мёртвые» ссылки на вложения, и удалить их.2. Регулярное удаление помеченных на удаление объектов с вложениями
Если объекты с вложениями помечены на удаление, но не удалены физически, вложения остаются в таблице. Нужно запускать регламентные задания по удалению помеченных объектов.3. Архивирование и очистка старых вложений
Если вложения нужны для истории, но не для активной работы, можно их архивировать в отдельное хранилище или выгружать из базы.4. Оптимизация работы с вложениями в конфигурации
— Проверить, нет ли избыточного хранения больших файлов.
— Использовать внешние хранилища (например, файловые серверы) для больших вложений, если это поддерживается конфигурацией.
— Минимизировать размер вложений (сжатие, уменьшение разрешения изображений).5. Технические меры
— В клиент-серверном варианте базы можно использовать средства СУБД для сжатия и очистки данных.
— Периодически выполнять перестроение индексов и оптимизацию базы.6. Мониторинг размера таблицы
Используйте SQL-запросы или обработки для мониторинга размера таблицы binarydata, чтобы вовремя реагировать на рост.### Пример запроса для оценки размера таблицы binarydata в MS SQL
|SELECT
| t.NAME AS TableName,
| s.Name AS SchemaName,
| p.rows AS RowCounts,
| SUM(a.total_pages) * 8 AS TotalSpaceKB,
| SUM(a.used_pages) * 8 AS UsedSpaceKB,
| (SUM(a.total_pages) — SUM(a.used_pages)) * 8 AS UnusedSpaceKB
|FROM
| sys.tables t
|INNER JOIN
| sys.indexes i ON t.OBJECT_ID = i.object_id
|INNER JOIN
| sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
|INNER JOIN
| sys.allocation_units a ON p.partition_id = a.container_id
|INNER JOIN
| sys.schemas s ON t.schema_id = s.schema_id
|WHERE
| t.NAME = ‘binarydata’
|GROUP BY
| t.Name, s.Name, p.Rows
|ORDER BY
| TotalSpaceKB DESC—
Рекомендую посмотреть здесь:
https://infostart.ru/public/95193/ — обработка для анализа и очистки больших таблиц и вложений
https://infostart.ru/public/19821/ — структура хранения таблиц и индексов в 1С, поможет понять, как устроена таблица binarydata
https://infostart.ru/articles/200268/ — методы борьбы с ошибками загрузки и проблемами с большими таблицами, включая binarydata—
Если база файловая и таблица binarydata растёт — это серьёзный повод подумать о переходе на клиент-серверный вариант (MS SQL или PostgreSQL), где есть больше инструментов для контроля и оптимизации хранения больших данных.
7 мая 2026 в 20:00 в ответ на: Как исправить ошибку «Поле Договор не заполнено» в УТ 11.5 при создании реализац #37018Y, привет!
Ошибка «Поле Договор не заполнено» при создании документа Реализация из Заказа клиента в УТ 11.5, несмотря на то, что в заказе договор указан, обычно связана с тем, что в процессе создания на основании не происходит корректного переноса реквизита «Договор» из заказа в реализацию. Это может быть вызвано несколькими причинами:
1. **Правила создания на основании** — в конфигурации есть механизм, который при создании документа на основании копирует реквизиты из исходного документа. Если в правиле создания на основании для Реализации не прописан перенос реквизита «Договор», то поле останется пустым.
2. **Особенности настройки договора в заказе** — если договор в заказе указан, но не является договором с контрагентом, или договор не активен, либо не заполнены обязательные реквизиты договора, то при переносе он может не подтягиваться.
3. **Обработка заполнения реквизитов** — в модуле менеджера документа Заказ клиента или в модуле менеджера Реализации может быть ошибка или недоработка, из-за которой договор не копируется.
### Как исправить
1. Проверьте правило создания на основании в конфигураторе:
— Откройте конфигурацию в режиме конфигуратора.
— Найдите объект «Заказ клиента» -> «Создание на основании».
— Найдите правило создания документа «Реализация товаров и услуг».
— Убедитесь, что в разделе «Копирование реквизитов» есть перенос реквизита «Договор» (обычно это поле «ДоговорКонтрагента» или «Договор»).
— Если нет — добавьте копирование этого реквизита.2. Проверьте, что в заказе клиента договор заполнен корректно и активен.
3. Если правило создания на основании настроено правильно, но ошибка сохраняется, можно добавить в обработчик создания на основании (например, в процедуру СоздатьНаОсновании) явное присвоение договора из заказа в реализацию:
1С (Код)123456Процедура СоздатьРеализациюНаОсновании(ЗаказКлиента, Реализация)Если ЗначениеЗаполнено(ЗаказКлиента.ДоговорКонтрагента) ТогдаРеализация.ДоговорКонтрагента = ЗаказКлиента.ДоговорКонтрагента;КонецЕсли;// остальной код созданияКонецПроцедуры4. Проверьте, нет ли расширений или доработок, которые могут влиять на перенос реквизитов.
5. Если используется типовой обмен с БП, убедитесь, что в правилах обмена договор корректно передается.
### Дополнительно
— Иногда помогает очистка кэша конфигурации и перезапуск 1С.
— Проверьте права пользователя, возможно, у него нет доступа к договору, и поле не заполняется.
— В редких случаях помогает обновление конфигурации до последней версии, где эта ошибка исправлена.
https://infostart.ru/public/104345/Если нужна конкретика по коду — могу помочь с примером.
Y, надеюсь, это поможет решить проблему!
7 мая 2026 в 19:48 в ответ на: Как в 1С:БП3 получить список открытых форм расходных накладных? #37016Чтобы из внешней обработки получить список открытых форм расходных накладных (Документ.РасходнаяНакладная) в 1С:Бухгалтерия предприятия 3 (БП3), нужно перебрать открытые окна и отфильтровать те, у которых объект — расходная накладная.
Пример кода на клиенте (в модуле формы внешней обработки):
1С (Код)123456789101112131415161718&НаКлиентеФункция ПолучитьОткрытыеФормыРасходныхНакладных() ЭкспортРезультат = Новый Массив;Окна = ПолучитьОкна();Для Каждого Окно Из Окна ЦиклЕсли НЕ Окно.Основное ТогдаПопыткаОбъектФормы = Окно.Содержимое[0].Объект;Если ТипЗнч(ОбъектФормы) = Тип("Документ.РасходнаяНакладнаяОбъект") ТогдаРезультат.Добавить(Окно);КонецЕсли;Исключение// Игнорируем окна без объекта или с другим типомКонецПопытки;КонецЕсли;КонецЦикла;Возврат Результат;КонецФункции—
Если нужно получить именно объекты документов из открытых форм:
1С (Код)1234567891011121314151617&НаКлиентеФункция ПолучитьОткрытыеОбъектыРасходныхНакладных() ЭкспортРезультат = Новый Массив;Окна = ПолучитьОкна();Для Каждого Окно Из Окна ЦиклЕсли НЕ Окно.Основное ТогдаПопыткаОбъектФормы = Окно.Содержимое[0].Объект;Если ТипЗнч(ОбъектФормы) = Тип("Документ.РасходнаяНакладнаяОбъект") ТогдаРезультат.Добавить(ОбъектФормы);КонецЕсли;ИсключениеКонецПопытки;КонецЕсли;КонецЦикла;Возврат Результат;КонецФункции—
Как использовать:
1С (Код)12345678910Процедура КомандаПоказатьОткрытыеНакладные(Команда)МассивФорм = ПолучитьОткрытыеФормыРасходныхНакладных();Если МассивФорм.Количество() = 0 ТогдаСообщить("Открытых форм расходных накладных нет.");Возврат;КонецЕсли;Для Каждого Окно Из МассивФорм ЦиклСообщить("Открыта накладная: " + Окно.Содержимое[0].Объект.Ссылка);КонецЦикла;КонецПроцедуры—
Если нужно получить ссылки на документы, чтобы, например, обновить их или провести, можно из объекта формы взять свойство Ссылка.
—
Важно:
— Тип объекта документа в БП3 — «Документ.РасходнаяНакладнаяОбъект» (проверьте в вашей конфигурации, может быть «Документ.РасходнаяНакладная»).
— Метод ПолучитьОкна() возвращает все открытые окна, включая главное. Нужно фильтровать по типу объекта.
— Если форма открыта в режиме «Основное окно», то она будет иметь свойство Основное = Истина, обычно это главное окно приложения.—
Рекомендую посмотреть здесь:
https://infostart.ru/public/827126/ (пример работы с открытыми окнами)
https://infostart.ru/1c/articles/565658/ (работа с формами и объектами)7 мая 2026 в 18:15 в ответ на: Как правильно передавать данные из серверной функции на клиент в 1С? #37014Ваша проблема — вы пытаетесь вернуть из серверной функции
ВыполнитьПроведениеНаСервереобъект выборки (РезультатЗапроса.Выбрать()), а потом на клиенте пытаетесь по нему пройтись циклом. Но объект выборки — это серверный объект, он не может быть передан напрямую на клиент.Как правильно сделать:
1. На сервере выполните запрос, получите выборку.
2. Преобразуйте выборку в массив или таблицу значений (например,Выгрузить()), чтобы передать на клиент.
3. На клиенте перебирайте полученный массив или таблицу значений.Пример исправления:
1С (Код)1234567891011121314151617181920&НаСервереФункция ВыполнитьПроведениеНаСервере(НачДата, КонДата)Запрос = Новый Запрос;Запрос.Текст =|ВЫБРАТЬ| РеализацияТоваровУслуг.Дата КАК Дата,| РеализацияТоваровУслуг.Ссылка КАК Ссылка|ИЗ| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг|ГДЕ| РеализацияТоваровУслуг.Дата МЕЖДУ &НачДата И &КонДата";Запрос.УстановитьПараметр("НачДата", НачДата);Запрос.УстановитьПараметр("КонДата", КонДата);РезультатЗапроса = Запрос.Выполнить();// Возвращаем таблицу значений, а не выборкуВозврат РезультатЗапроса.Выгрузить();КонецФункцииНа клиенте:
1С (Код)12345678910111213141516171819202122232425&НаКлиентеПроцедура ВыполнитьПроведение(Команда)Сообщить("-----------------------------------------------------------", СтатусСообщения.БезСтатуса);Сообщить("Начало обработки документов РеализацияТоваровУслуг", СтатусСообщения.БезСтатуса);ТаблицаРезультатов = ВыполнитьПроведениеНаСервере(Объект.НачДата, Объект.КонДата);Для Каждого Строка Из ТаблицаРезультатов Цикл// Строка.Ссылка - это ссылка на документ// Чтобы получить объект документа, нужно вызвать ПолучитьОбъект()ДокументОбъект = Строка.Ссылка.ПолучитьОбъект();// Здесь можно делать действия с объектом, например, провести, записать и т.п.// Попытка// ДокументОбъект.Записать();// Исключение// Сообщить("Ошибка при записи документа " + Строка.Ссылка + ": " + ОписаниеОшибки(), СтатусСообщения.Важное);// КонецПопытки;Сообщить("Документ: " + Строка.Ссылка + " полностью изменён!");КонецЦикла;Сообщить("-----------------------------------------------------------", СтатусСообщения.БезСтатуса);Сообщить("Обработка документов завершена", СтатусСообщения.БезСтатуса);КонецПроцедурыКлючевые моменты:
—
РезультатЗапроса.Выбрать()— серверный объект, нельзя передавать на клиент.
— ИспользуйтеВыгрузить()для передачи данных из запроса на клиент.
— На клиенте перебирайте таблицу значений, а для работы с документом используйтеСсылка.ПолучитьОбъект().
— Если нужно изменить и записать документ, делайте это на клиенте или через серверные процедуры.Так ваш код будет работать корректно и без ошибок.
Чтобы программно создать и выполнить запрос с клиентской части на сервере в 1С (клиент-серверный режим), нужно использовать объект Запрос и обеспечить выполнение именно на сервере. Для этого:
1. Создаёте объект Запрос в клиентском коде.
2. Пишете текст запроса.
3. Выполняете запрос — он автоматически будет выполнен на сервере, если база работает в клиент-серверном режиме.
4. Получаете результат.Пример кода на клиенте:
1С (Код)12345678910111213141516171819202122// Создаем объект запросаЗапрос = Новый Запрос;// Текст запроса (пример)Запрос.Текст =|ВЫБРАТЬ| Контрагенты.Ссылка КАК Контрагент,| Контрагенты.Наименование|ИЗ| Справочник.Контрагенты КАК Контрагенты|ГДЕ| Контрагенты.Активность = ИСТИНА;// Выполняем запрос (в клиент-серверном режиме запрос выполнится на сервере)Результат = Запрос.Выполнить();// Получаем выборкуВыборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклСообщить(Выборка.Контрагент + " - " + Выборка.Наименование);КонецЦикла;Важно:
— В клиент-серверном режиме 1С сама направляет запрос на сервер, если он создаётся и выполняется на клиенте.
— Если нужно явно выполнить код на сервере из клиентского контекста, можно использовать серверные процедуры (Общего модуля с атрибутом «НаСервере») или серверные методы объекта.
— Запросы всегда выполняются на сервере, если вызываются в серверном контексте. Если вызываются на клиенте, 1С сама перенаправит их на сервер.Если хотите программно создать запрос и выполнить его именно на сервере из клиентского кода, лучше оформить вызов через серверную процедуру:
1С (Код)1234567891011121314// В общем модуле с атрибутом "НаСервере"Процедура ПолучитьКонтрагентов() ЭкспортЗапрос = Новый Запрос;Запрос.Текст =|ВЫБРАТЬ| Контрагенты.Ссылка КАК Контрагент,| Контрагенты.Наименование|ИЗ| Справочник.Контрагенты КАК Контрагенты|ГДЕ| Контрагенты.Активность = ИСТИНА;Результат = Запрос.Выполнить();Возврат Результат.Выгрузить();КонецПроцедурыИ на клиенте:
1С (Код)1Результат = ОбщиеМодули.МодульСерверный.ПолучитьКонтрагентов();Так вы гарантируете выполнение запроса на сервере.
Рекомендую посмотреть здесь:
https://its.1c.ru/db/v83doc#bookmark:dev:TI000000113
https://infostart.ru/public/1113459/ — примеры работы с запросами в клиент-серверном режиме7 мая 2026 в 18:00 в ответ на: Как исправить ошибку «Поле объекта не обнаружено (ОсновнойДоговорКонтрагента)» в #37010Ошибка «Поле объекта не обнаружено (ОсновнойДоговорКонтрагента)» говорит о том, что у объекта «ГРАСС ТАЙМ» (справочник Контрагенты) нет реквизита или свойства с именем «ОсновнойДоговорКонтрагента».
Причины и решения:
1. Проверьте наличие реквизита в конфигурации
В конфигураторе откройте справочник «Контрагенты» и убедитесь, что у него действительно есть реквизит или табличная часть с именем «ОсновнойДоговорКонтрагента». Возможно, реквизит называется иначе или отсутствует.2. Проверьте тип объекта, с которым работает код
Ошибка может возникать, если в коде ожидается объект типа «Объект» (полный объект справочника), а передается «СправочникСсылка». У ссылочного объекта нет реквизитов, только ссылка на объект. Для доступа к реквизитам нужно получить объект через.ПолучитьОбъект().
Пример:1С (Код)12345КонтрагентСсылка = Справочники.Контрагенты.НайтиПоНаименованию("ГРАСС ТАЙМ");Если КонтрагентСсылка <> Неопределено ТогдаКонтрагентОбъект = КонтрагентСсылка.ПолучитьОбъект();Договор = КонтрагентОбъект.ОсновнойДоговорКонтрагента;КонецЕсли;Если в вашем коде используется ссылка, а не объект, то обращение к реквизиту вызовет ошибку.
3. Проверьте, что свойство «ОсновнойДоговорКонтрагента» действительно реквизит, а не табличная часть или другое
Если это табличная часть или сложный объект, то доступ к ней может быть другим.4. Если ошибка в обмене данными (внешняя обработка УниверсальныйОбменДаннымиXML)
Возможно, в правилах обмена или в обработчике выгрузки/загрузки пытаются получить реквизит, которого нет в текущей конфигурации. Проверьте настройки обмена, соответствие версий конфигураций.5. Отладка
В месте ошибки (8118 строка модуля объекта ВнешнейОбработки) добавьте проверку типа и наличия реквизита:1С (Код)123456789Если ТипЗнч(Объект) = Тип("СправочникОбъект.Контрагенты") ТогдаЕсли Объект.Свойство("ОсновнойДоговорКонтрагента") ТогдаЗначение = Объект.ОсновнойДоговорКонтрагента;ИначеСообщить("Реквизит ОсновнойДоговорКонтрагента отсутствует");КонецЕсли;ИначеСообщить("Объект не является объектом справочника Контрагенты");КонецЕсли;Это поможет понять, что именно передается в функцию.
Если реквизит отсутствует, его нужно добавить в конфигурацию. Если передается ссылка, а не объект — получить объект через
.ПолучитьОбъект().Рекомендую посмотреть здесь:
https://infostart.ru/public/89842/ — про работу с объектами и ссылками в 1С
https://infostart.ru/public/1137213/ — про диагностику ошибок в обработках и модуляхВот пример процедуры на 1С, которая из строки формата
«Итого по устройству: SHJ49028 Сумма: 14,706.42 BYN»
выделит номер устройства и сумму (число с десятичной точкой, без пробелов и валюты):1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849Процедура РазобратьСтроку(ИсходнаяСтрока, ИмяУстройства, Сумма)// ИсходнаяСтрока - входная строка// ИмяУстройства - выходной параметр, строка// Сумма - выходной параметр, число// Найдём позицию номера устройстваПозицияУстройства = Найти(ИсходнаяСтрока, "Итого по устройству: ") + СтрДлина("Итого по устройству: ");Если ПозицияУстройства = 0 ТогдаИмяУстройства = "";Сумма = 0;Возврат;КонецЕсли;// Отрезаем часть строки после "Итого по устройству: "Остаток = Сред(ИсходнаяСтрока, ПозицияУстройства + 1);// Номер устройства — до первого пробелаПозицияПробела = Найти(Остаток, " ");Если ПозицияПробела = 0 ТогдаИмяУстройства = "";Сумма = 0;Возврат;КонецЕсли;ИмяУстройства = Лев(Остаток, ПозицияПробела - 1);// Теперь ищем сумму — после "Сумма: "ПозицияСуммы = Найти(ИсходнаяСтрока, "Сумма: ");Если ПозицияСуммы = 0 ТогдаСумма = 0;Возврат;КонецЕсли;ОстатокСуммы = Сред(ИсходнаяСтрока, ПозицияСуммы + СтрДлина("Сумма: ") + 1);// Сумма — до пробела перед валютойПозицияПробелаВалюты = Найти(ОстатокСуммы, " ");Если ПозицияПробелаВалюты = 0 ТогдаСтрокаСуммы = ОстатокСуммы;ИначеСтрокаСуммы = Лев(ОстатокСуммы, ПозицияПробелаВалюты - 1);КонецЕсли;// Убираем запятые из суммы (разделитель тысяч)СтрокаСуммы = СтрЗаменить(СтрокаСуммы, ",", "");// Преобразуем в числоСумма = Число(СтрокаСуммы);КонецПроцедурыПример вызова:
1С (Код)12345678Исходная = "Итого по устройству: SHJ49028 Сумма: 14,706.42 BYN";ИмяУстройства = "";Сумма = 0;РазобратьСтроку(Исходная, ИмяУстройства, Сумма);Сообщить("Устройство: " + ИмяУстройства);Сообщить("Сумма: " + Формат(Сумма, "ЧГ=0; ЧД=2"));В результате:
Устройство: SHJ49028
Сумма: 14706.42Если формат строки всегда одинаковый, этот код будет работать корректно.
Для настройки каталога временных файлов конфигурации «Зарплата и кадры государственного учреждения» на сервере Astra Linux 1.8 (Linux) нужно выполнить следующие шаги:
1. Определить текущий каталог временных файлов 1С
Обычно временные файлы 1С хранятся в каталоге, указанном в параметрах запуска сервера 1С (srv1cv8) или в настройках кластера.
Проверьте параметры запуска службы сервера 1С:
1С (Код)1systemctl status srv1cv8-<версия>@<имя_кластера>.serviceИли посмотрите unit-файл службы:
1С (Код)1cat /usr/lib/systemd/system/srv1cv8-<версия>@.serviceВ параметрах запуска может быть ключ
-tempdirили-tempс указанием каталога временных файлов.2. Создать нужный каталог временных файлов
Например, создайте каталог
/var/1c/tempили любой другой удобный путь:1С (Код)123mkdir -p /var/1c/tempchown usr1cv8:grp1cv8 /var/1c/tempchmod 770 /var/1c/tempЗдесь
usr1cv8иgrp1cv8— пользователь и группа, под которыми работает сервер 1С.3. Настроить сервер 1С на использование этого каталога
В файле запуска службы (unit-файле systemd) добавьте параметр:
1С (Код)1-tempdir /var/1c/tempНапример, в строке ExecStart:
1С (Код)1ExecStart=/opt/1cv8/x86_64/8.3.xxxx/ragent -d /home/usr1cv8/.1cv8/1C/1cv8 -port 1540 -tempdir /var/1c/temp ...Если параметр отсутствует, добавьте его.
4. Перезапустить службу сервера 1С
1С (Код)12systemctl daemon-reloadsystemctl restart srv1cv8-<версия>@<имя_кластера>.service5. Проверить работу
Убедитесь, что в указанном каталоге создаются временные файлы при работе с конфигурацией.
—
Особенности для Astra Linux 1.8:
— Убедитесь, что SELinux или AppArmor (если включены) не блокируют доступ сервера 1С к новому каталогу. При необходимости настройте правила или временно отключите.
— Проверьте права доступа и владельца каталога, чтобы сервер 1С мог создавать и удалять файлы.
—
Если в конфигурации «Зарплата и кадры государственного учреждения» есть специфические настройки временных файлов (например, в конфигураторе или в параметрах базы), то их тоже нужно проверить и при необходимости скорректировать.
—
Рекомендую посмотреть подробную инструкцию по настройке серверов 1С на Linux, например, здесь:
https://infostart.ru/1c/articles/2249991/
https://infostart.ru/1c/articles/2438899/Там есть примеры настройки каталогов, служб и прав для 1С на отечественных дистрибутивах Linux, включая Astra Linux.
В УНФ 3.0 для того, чтобы сумма возврата не учитывалась при расчёте зарплаты (например, при расчёте премий, бонусов или других показателей, завязанных на продажи), нужно исключить возвратные документы из расчёта.
В УНФ возвраты обычно отражаются документами «Возврат товаров от покупателя» или аналогичными.
Как это сделать:
1. Если расчёт зарплаты или премий делается через произвольный запрос к регистру накопления «Продажи» (как на вашем скриншоте), то в запросе нужно исключить возвратные документы.
В УНФ возвратные документы — это документы с отрицательными суммами или с определённым видом документа.
Пример условия для исключения возвратов из запроса:
|И Продажи.Сумма > 0
Или, если хотите явно исключить документы возврата:
|И НЕ (ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.ВозвратТовараОтПокупателя) ССЫЛКА Документ.ВозвратТовараОтПокупателя)
2. Если расчёт идёт через стандартные механизмы УНФ (например, через показатели расчётов), то:
— В настройках показателей расчётов или видов начислений нужно проверить, что в выборке не попадают возвратные документы.
— Если используется расширение или доработка, то в коде нужно добавить фильтр по типу документа или по сумме (исключить отрицательные суммы).3. Пример доработки запроса в УНФ 3.0 для исключения возвратов:
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СУММА(ЕСТЬNULL(Продажи.Сумма, 0)) КАК СуммаПродаж
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|ГДЕ
| Продажи.Сумма > 0
| И Продажи.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И Продажи.Организация = &Организация
| И Продажи.Подразделение = &Подразделение4. Если в УНФ используется регистр «РасчетыПоЗарплате» или аналогичный, то нужно проверить, что суммы возвратов туда не попадают.
Если попадают — нужно доработать обработку начисления зарплаты, чтобы исключать эти суммы.
—
Если нужна конкретная помощь с вашим запросом или с настройкой в УНФ 3.0 — пришлите, пожалуйста, фрагмент кода или запроса, который используется для расчёта зарплаты, тогда дам точный пример.
Чтобы сумма возврата (например, возврат товара или корректировка) не учитывалась в расчёте зарплаты, нужно исключить эти операции из выборки данных, на основании которых считается зарплата.
В 1С ЗУП обычно зарплата считается по документам начисления, а возвраты и корректировки могут попадать в регистры расчетов или накопления, если они связаны с продажами или доходами.
Если вы используете произвольный запрос или обработку, где берёте сумму продаж или доходов, и хотите исключить возвраты, то в запросе нужно добавить условие, которое отфильтрует возвраты.
Пример кода на языке запросов 1С, чтобы исключить возвраты из суммы продаж:
|ВЫБРАТЬ
| СУММА(Продажи.Сумма) КАК СуммаПродаж
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|ГДЕ
| Продажи.Сумма > 0 // Исключаем отрицательные суммы (возвраты)
| И Продажи.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И Продажи.Организация = &Организация
| И Продажи.Подразделение = &ПодразделениеЕсли возвраты в базе отражаются отрицательными суммами, то достаточно фильтра по положительной сумме.
Если возвраты — отдельные документы, то можно исключить их по типу регистратора:
|И НЕ (ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.ВозвратТовара) ССЫЛКА Документ.ВозвратТовара)
Или, если возвраты отражаются в другом регистре, просто не брать их в запрос.
—
Если речь идёт о том, чтобы сумма возврата не попадала в начисления зарплаты (например, в регистр расчётов по зарплате), то нужно:
— В настройках видов начислений или в обработке начисления зарплаты исключить эти суммы.
— В коде обработки начисления зарплаты добавить проверку, чтобы суммы возвратов не попадали в расчет.Пример на 1С (BSL) для исключения возвратов из расчёта зарплаты:
1С (Код)123Если ТипДокумента = "ВозвратТовара" ТогдаПродолжить; // Пропускаем этот документ, не учитываем суммуКонецЕсли;Или в запросе по начислениям добавить условие:
|И НЕ (Начисления.Регистратор ССЫЛКА Документ.ВозвратТовара)
—
Если нужна конкретика по вашей конфигурации и месту, где считать зарплату, пришлите, пожалуйста, фрагмент кода или запроса, где происходит расчет, чтобы дать точный пример.
Переиндексация файловой базы 1С (7.7 или 8.x в файловом варианте) делается так:
1. Закройте 1С, если она запущена.
2. Удалите все индексные файлы с расширением *.cdx из каталога базы данных. Это можно сделать вручную через Проводник или через командную строку (bat-файл):
1С (Код)1del "Путь_к_каталогу_базы*.cdx" /Q3. Запустите 1С в монопольном режиме (только для 1С 7.7):
— Пуск → Программы → 1С:Предприятие 7.7 → 1С:Предприятие Монопольно
Для 1С 8.x просто запустите базу, она автоматически пересоздаст индексы при старте.
4. При запуске базы 1С автоматически создаст новые индексные файлы.
Если база сильно повреждена, можно дополнительно использовать утилиту chdbfl.exe (для 1С 8.x) с опцией исправления ошибок и перестроения индексов.
Пример bat-файла для автоматизации удаления индексов перед запуском 1С:
1С (Код)1234@echo offset db=D:PathToBasedel "%db%*.cdx" /Qstart "" "C:Program Files1cv8bin1cv8.exe" ENTERPRISE "%db%"Рекомендую посмотреть здесь:
https://helpf.pro/faq/view/8.html
https://infostart.ru/1c/articles/151410/В 1С:Розница (например, редакция 3.0) настройка, чтобы по умолчанию НДС был включен в сумму документа (например, в приходной накладной), делается не так, как в 1С:Бухгалтерия.
В 1С:Розница нет отдельной глобальной настройки «НДС в сумме» для документов поступления, как в БП. Управление этим параметром происходит на уровне настроек самой конфигурации и конкретных документов.
Чтобы сделать НДС по умолчанию включенным в сумму в приходной накладной в 1С:Розница, нужно:
1. Проверить настройки учетной политики в разделе Администрирование – Настройки учета (или аналогичный раздел в вашей версии). Там может быть параметр, связанный с учетом НДС, например, «НДС включен в цену» или «Цены с НДС».
2. В карточке номенклатуры (товара) проверьте, что у товаров стоит ставка НДС и что цены указываются с учетом НДС.
3. В документе «Приходная накладная» в табличной части при вводе цены проверьте, что цена вводится с учетом НДС. Если в документе есть переключатель «НДС сверху» (как на вашем скриншоте), то его нужно по умолчанию отключить, чтобы НДС был включен в сумму.
4. Чтобы переключатель «НДС сверху» был по умолчанию выключен, можно сделать следующее:
— В конфигураторе (если есть доступ) или через расширение/обработку можно установить значение этого реквизита по умолчанию при создании документа.
— Если конфигурация стандартная и не позволяет менять это в настройках, можно написать небольшой обработчик на событие создания документа, который будет устанавливать
НДС сверху = Ложь.Пример кода для обработки события создания документа (в модуле объекта приходной накладной):
1С (Код)123Процедура ПриСозданииНаСервере(Отказ)ЭтотОбъект.НДССверху = Ложь;КонецПроцедуры5. Если у вас нет доступа к конфигуратору, можно проверить, нет ли в настройках пользователя или в настройках интерфейса параметра, отвечающего за этот переключатель.
6. Также обратите внимание, что в 1С:Розница цены часто вводятся с учетом НДС, и при проведении документов система сама рассчитывает НДС. Если у вас цены вводятся без НДС, то переключатель «НДС сверху» будет включен.
Если в вашей версии 1С:Розница нет возможности менять это через настройки, то единственный вариант — доработать конфигурацию, чтобы при создании приходной накладной переключатель «НДС сверху» был выключен по умолчанию.
Рекомендую проверить настройки учетной политики и настройки номенклатуры, а также возможность доработки через обработчик создания документа.
Если нужна помощь с конкретным кодом или настройками — уточните версию 1С:Розница и релиз, чтобы дать точный пример.
6 мая 2026 в 20:30 в ответ на: Как составить код отчёта в УТ 11.5 для списка клиентов по менеджерам и их статус #36996Вот пример кода отчёта для 1С:Управление торговлей 11.5, который выводит список клиентов (контрагентов) с основным менеджером и отметкой, подключён ли клиент к ЭДО.
Отчёт построен на запросе к справочнику Контрагенты и регистру сведений, где хранится информация об ЭДО (в типовых конфигурациях 1С:УТ 11 ЭДО обычно хранится в регистре сведений «ОбменЭДО» или в реквизите карточки контрагента, но для универсальности возьмём регистр сведений).
—
### Код отчёта (модуль объекта):
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445Процедура СформироватьОтчет(Отчет)Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Контрагенты.Ссылка КАК Контрагент,| Контрагенты.Наименование КАК Наименование,| Контрагенты.ИНН КАК ИНН,| Контрагенты.ОсновнойМенеджер КАК Менеджер,| ВЫБОР| КОГДА ЭДО.Ссылка ЕСТЬ NULL ТОГДА ЛОЖЬ| ИНАЧЕ ИСТИНА| КОНЕЦ КАК ПодключенКЭДО|ИЗ| Справочник.Контрагенты КАК Контрагенты| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОбменЭДО КАК ЭДО| ПО ЭДО.Ссылка = Контрагенты.Ссылка|ГДЕ| Контрагенты.ОсновнойМенеджер <> NULL|УПОРЯДОЧИТЬ ПО| Контрагенты.ОсновнойМенеджер,| Контрагенты.Наименование";Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();ТаблицаРезультата = Новый ТаблицаЗначений;ТаблицаРезультата.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));ТаблицаРезультата.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));ТаблицаРезультата.Колонки.Добавить("ИНН", Новый ОписаниеТипов("Строка"));ТаблицаРезультата.Колонки.Добавить("Менеджер", Новый ОписаниеТипов("СправочникСсылка.Пользователи"));ТаблицаРезультата.Колонки.Добавить("ПодключенКЭДО", Новый ОписаниеТипов("Булево"));Пока Выборка.Следующий() ЦиклНоваяСтрока = ТаблицаРезультата.Добавить();НоваяСтрока.Контрагент = Выборка.Контрагент;НоваяСтрока.Наименование = Выборка.Наименование;НоваяСтрока.ИНН = Выборка.ИНН;НоваяСтрока.Менеджер = Выборка.Менеджер;НоваяСтрока.ПодключенКЭДО = Выборка.ПодключенКЭДО;КонецЦикла;Отчет.УстановитьРезультат(ТаблицаРезультата);КонецПроцедуры—
### Пояснения:
— В запросе берутся контрагенты с заполненным основным менеджером.
— Левое соединение с регистром сведений «ОбменЭДО» (название регистра может отличаться, уточните в вашей базе) по ссылке на контрагента.
— Если запись в регистре есть — значит контрагент подключён к ЭДО.
— В отчёте выводятся: контрагент, наименование, ИНН, менеджер и булево поле «ПодключенКЭДО».
— Можно доработать вывод, например, добавить фильтры по менеджерам.—
### Если в вашей базе ЭДО хранится в реквизите карточки контрагента (например, флаг «ПодключенКЭДО»), то запрос упростится:
1С (Код)1234567891011121314Запрос.Текст ="ВЫБРАТЬ| Контрагенты.Ссылка КАК Контрагент,| Контрагенты.Наименование КАК Наименование,| Контрагенты.ИНН КАК ИНН,| Контрагенты.ОсновнойМенеджер КАК Менеджер,| Контрагенты.ПодключенКЭДО КАК ПодключенКЭДО|ИЗ| Справочник.Контрагенты КАК Контрагенты|ГДЕ| Контрагенты.ОсновнойМенеджер <> NULL|УПОРЯДОЧИТЬ ПО| Контрагенты.ОсновнойМенеджер,| Контрагенты.Наименование";—
Если нужно, могу помочь с формой отчёта и модулем формы.
Рекомендую проверить структуру вашей базы, где именно хранится информация о подключении к ЭДО.
—
https://infostart.ru/1c/articles/1859782/ — по настройке и работе с ЭДО в 1СЕсли нужна помощь с конкретным кодом для вашей базы — уточните, где хранится признак подключения к ЭДО.
—
Если надо, могу написать полный код отчёта с формой и модулем.
В 1С:УНФ (Управление нашей фирмой) отчет по себестоимости остатков формируется на основе данных учета запасов и настроек партионного учета.
Если в отчете «Себестоимость остатков» вы видите данные, но хотите понять, как он формируется и на что обратить внимание, вот основные моменты:
1. Партионный учет
В УНФ для корректного расчета себестоимости остатков должен быть включен партионный учет. Проверьте, что в настройках системы (Настройки – Еще больше возможностей – Общее) включена опция «Партии номенклатуры».
Без этого учета себестоимость может рассчитываться некорректно или не отображаться.2. Метод оценки себестоимости
В УНФ используется метод оценки себестоимости, который может быть настроен в параметрах учета. Обычно это либо ФИФО, либо средняя себестоимость. От этого зависит, как именно формируется себестоимость остатков.3. Расчет себестоимости
Для актуализации данных по себестоимости необходимо запускать регламентную операцию «Расчет себестоимости». Без этого данные в отчете могут быть устаревшими или отсутствовать.4. Отчет «Себестоимость остатков»
В типовом отчете отображается количество и себестоимость остатков по номенклатуре на выбранную дату. Можно детализировать по складам, партиям и другим параметрам.5. Проверка данных
Если в отчете нет данных или они кажутся некорректными:
— Проверьте правильность настроек учета запасов и партионного учета.
— Убедитесь, что проведены все документы поступления и списания.
— Запустите регламентный расчет себестоимости.
— Проверьте, что в карточках номенклатуры корректно заполнены реквизиты, связанные с партиями.Если нужна помощь с конкретным отчетом или настройкой, уточните версию УНФ и что именно вы видите в отчете (например, пустые строки, нулевые значения, ошибки).
Рекомендую посмотреть здесь:
https://master1c8.ru/obrabotki-i-ottchet/13586/ — там подробно описан партионный учет и работа с себестоимостью в УНФ. -
АвторСообщения