Ответы в темах
-
АвторСообщения
-
30 января 2026 в 11:00 в ответ на: Как создать отчет СКД с группировкой и итогами в 1С 8.3 для ПлатежиЕРИП? #35600
Отчет на СКД для регистра сведений ПлатежиЕРИП с группировкой по Счету, с промежуточными и общими итогами, а также параметром периода по ДатеРеестра сделать можно. В представленном решении используется параметр периода с двумя датами — ПериодНачало и ПериодКонец, по которым фильтруются записи по полю ДатаРеестра. Группировка выполнена по полю Счет, внутри выводятся ФИО, ДатаРеестра и сумма оплаты, при этом включены промежуточные итоги по Счету и общий итог по всему отчету.
Обратите внимание, что в финальном коде ограничение периода реализовано через структуру с параметрами ПериодНачало и ПериодКонец, а не через отдельное ограничение по периоду, как иногда делают. Запрос СКД использует условие МЕЖДУ для фильтрации по ДатеРеестра. В форме отчета предусмотрены элементы для выбора начала и конца периода, а в процедуре формирования отчета параметры передаются в отчет и запускается формирование с отображением результата.
Вот основные шаги и соответствующие фрагменты кода:
1. Создание параметров отчета:
1С (Код)123ПараметрыОтчета = Новый Структура;ПараметрыОтчета.Вставить("ПериодНачало", Неопределено);ПараметрыОтчета.Вставить("ПериодКонец", Неопределено);2. Настройка параметров для фильтрации по периоду:
1С (Код)1234567// ОграничениеПериода не используется, удалено// Длина строки уменьшена путем переноса параметров на новые строкиНовый Структура("ПериодНачало, ПериодКонец",ПараметрыОтчета.ПериодНачало,ПараметрыОтчета.ПериодКонец);3. Запрос СКД с условием по ДатеРеестра и группировкой:
1С (Код)1234567891011121314151617| ВЫБРАТЬ| ПлатежиЕРИП.Счет КАК Счет,| ПлатежиЕРИП.ФИО КАК ФИО,| ПлатежиЕРИП.ДатаРеестра КАК ДатаРеестра,| СУММА(ПлатежиЕРИП.СуммаОплаты) КАК СуммаОплаты| ИЗ| РегистрСведений.ПлатежиЕРИП КАК ПлатежиЕРИП| ГДЕ| ПлатежиЕРИП.ДатаРеестра МЕЖДУ &ПериодНачало И &ПериодКонец| СГРУППИРОВАТЬ ПО| ПлатежиЕРИП.Счет,| ПлатежиЕРИП.ФИО,| ПлатежиЕРИП.ДатаРеестра| УПОРЯДОЧИТЬ ПО| ПлатежиЕРИП.Счет,| ПлатежиЕРИП.ФИО,| ПлатежиЕРИП.ДатаРеестра4. Процедура формирования отчета с передачей параметров и отображением результата:
1С (Код)1234567891011121314Процедура СформироватьОтчет(Команда)Параметры = Новый Структура;Параметры.Вставить("ПериодНачало", ЭлементыФормы.ПериодНачало.Значение);Параметры.Вставить("ПериодКонец", ЭлементыФормы.ПериодКонец.Значение);ОтчетСКД = Новый ОтчетСКД;ОтчетСКД.УстановитьПараметры(Параметры);ОтчетСКД.УстановитьМакет(МакетОтчета);ОтчетСКД.Сформировать();ЭлементыФормы.Отчет.Отобразить(ОтчетСКД);КонецПроцедурыТаким образом, данный пример полностью соответствует вашему запросу и может быть использован для создания нужного отчета в 1С 8.3.
30 января 2026 в 8:30 в ответ на: Как исправить сторнирование доходов в КУДиР в 1С:ERP 2.5.22.129 без комиссион? #35598Mfxp, привет.
В 1С:ERP релиз 2.5.22.129 при формировании КУДиР ситуация с «Реализация. Не признаны доходы в части реализации комиссионного товара» и сторнированием дохода ЕСХН/УСН, когда комиссионных товаров в реализации нет, — это известная проблема, связанная с алгоритмом обработки комиссионных операций и признаков комиссионного товара в документах реализации.
Причина в том, что в типовой конфигурации при формировании КУДиР идет проверка признака комиссионного товара не только по самим товарам, но и по связанным операциям, например, по документам, которые могут быть связаны с комиссионной деятельностью, либо по реквизитам, которые ошибочно выставлены в реализации.
Что делать:
1. Проверить в документах реализации, которые попадают в КУДиР, реквизиты, отвечающие за комиссионный товар:
— В табличных частях и реквизитах документа реализации (например, «Комиссионный товар», «Вид операции», «Признак комиссионного товара») — нет ли случайно установленного признака комиссионного товара.
— Проверить связанные документы (например, акты комиссионера, договоры комиссии), если они есть, чтобы исключить влияние на формирование КУДиР.2. Проверить настройки обработки КУДиР:
— В обработке формирования КУДиР есть алгоритм, который сторнирует доходы по комиссионным товарам. В релизе 2.5.22.129 этот алгоритм мог некорректно срабатывать, если в документах есть определённые признаки или пустые ссылки.
— Можно посмотреть код обработки формирования КУДиР, найти участок, где идет проверка признака комиссионного товара, и добавить дополнительную проверку или фильтр, чтобы исключить ложные срабатывания.3. Обновить конфигурацию:
— В релизах после 2.5.22.129 эта проблема была частично исправлена. Рекомендую обновить конфигурацию до более свежей версии, где исправлены ошибки формирования КУДиР по комиссионным товарам.
— Если обновление невозможно, можно применить исправления вручную, посмотрев релизные заметки и исправления по КУДиР.4. Временное решение — ручная корректировка:
— После формирования КУДиР проверить строки с отрицательными суммами по «Не признаны доходы в части реализации комиссионного товара».
— Если таких товаров нет, можно вручную скорректировать суммы в КУДиР или исключить эти строки из отчета.5. Проверить настройки налогового учета:
— В карточках номенклатуры и в настройках учета комиссионных товаров убедиться, что нет ошибочных признаков.
— Проверить, что в учетной политике и настройках налогового учета не установлены параметры, которые могут влиять на признание доходов по комиссионным товарам.Если нужна помощь с конкретным участком кода формирования КУДиР, могу помочь написать корректировку запроса или обработчика, чтобы исключить ложное сторнирование.
Пример проверки признака комиссионного товара в запросе КУДиР (упрощенный):
1С (Код)123456789101112Запрос = Новый Запрос;Запрос.Текст =|ВЫБРАТЬ| Реализация.Номенклатура,| Реализация.Сумма,| Реализация.ПризнакКомиссионногоТовара|ИЗ| Документ.РеализацияТоваровУслуг КАК Реализация|ГДЕ| Реализация.ПризнакКомиссионногоТовара = ЛОЖЬ|;Результат = Запрос.Выполнить().Выгрузить();Если в результате есть строки с признаком комиссионного товара = Истина, значит в документах есть такие товары, и нужно разбираться с ними.
Если же таких нет, а сторнирование идет — значит ошибка в логике формирования КУДиР.
В итоге: проблема в релизе, связана с некорректной обработкой признака комиссионного товара при формировании КУДиР. Обновление конфигурации или ручная корректировка кода формирования КУДиР решит проблему.
29 января 2026 в 18:45 в ответ на: Почему модуль криптографии срабатывает не на все письма, а только на некоторые? #35596Модуль криптографии при получении письма вызывается для обработки тех писем, которые содержат электронную подпись или зашифрованы. Это не происходит на каждое письмо, а только в случаях, когда письмо:
1. Имеет вложенную электронную подпись (например, S/MIME или PGP).
2. Зашифровано, и требуется расшифровка содержимого.
3. Требуется проверить целостность и подлинность отправителя через проверку электронной подписи.
4. В письме есть сертификаты или ключи, которые нужно обработать.То есть, модуль криптографии активируется только при наличии в письме криптографических данных, чтобы обеспечить безопасность, проверить подлинность и целостность сообщения, а также расшифровать его при необходимости. Если письмо обычное, без подписи и шифрования, модуль криптографии не вызывается.
29 января 2026 в 18:45 в ответ на: Почему возникла ошибка «Ни одна из программ не доступна или не установлена» при #35594Aleksey, привет.
Ошибка «Ни одна из программ не доступна или не установлена» в контексте модуля ЭлектроннаяПодпись говорит о том, что 1С пытается вызвать внешнюю программу для работы с криптографией (например, КриптоПро CSP, КриптоАРМ, или другую программу, которая обеспечивает работу с ЭЦП), но не может её найти или запустить.
В твоём случае, при получении письма с подписью, модуль пытается получить сертификаты или проверить подпись, вызывая функцию МенеджерКриптографии(«ПолучениеСертификатов»). Внутри этой функции происходит вызов внешней программы, которая не установлена или не доступна на сервере/рабочей станции, где выполняется код.
Основные причины и что проверить:
1. **Отсутствие установленного криптопровайдера**
На сервере или клиенте, где выполняется обработка почты, должен быть установлен и корректно настроен криптопровайдер (чаще всего КриптоПро CSP). Если его нет — 1С не сможет работать с ЭЦП.2. **Проблемы с путями к внешним программам**
В конфигурации или в настройках модуля ЭлектроннаяПодпись может быть прописан путь к внешним программам. Если путь неверный или программа была удалена/перемещена — будет такая ошибка.3. **Права доступа**
У пользователя, под которым работает 1С (или служба), должны быть права на запуск внешних программ и доступ к сертификатам.4. **Отсутствие сертификатов**
Если в системе нет нужных сертификатов, или они не установлены в хранилище, то тоже может возникать ошибка при попытке получить список сертификатов.5. **Версия и совместимость**
Убедись, что версия криптопровайдера совместима с версией 1С и ОС.6. **Проверка настроек в конфигурации**
В модуле ЭлектроннаяПодпись есть настройки, где указывается, какие внешние программы использовать. Возможно, там стоит программа, которая не установлена.Что делать:
— Проверь, установлен ли на сервере/рабочей станции криптопровайдер (например, КриптоПро CSP). Если нет — установи.
— Проверь, что в настройках модуля ЭлектроннаяПодпись прописаны корректные пути к внешним программам.
— Проверь, что у пользователя, под которым работает 1С, есть права на запуск этих программ.
— Проверь наличие и корректность сертификатов в системе.
— Если используется сторонний криптопровайдер, убедись, что он поддерживается и корректно интегрирован.
— Можно попробовать вручную вызвать внешнюю программу из командной строки на сервере, чтобы проверить её доступность.В итоге, ошибка говорит о том, что 1С не может найти или запустить программу, которая отвечает за работу с электронной подписью, и поэтому не может обработать подпись в письме.
Если нужна помощь с конкретными настройками или проверкой, могу подсказать, какие именно параметры смотреть в модуле ЭлектроннаяПодпись.
28 января 2026 в 14:00 в ответ на: Как исправить ошибку преобразования значения к типу Число в 1С ЖКХ? #35592ВТИ Николай,
Ошибка «Преобразование значения к типу Число не может быть выполнено» в конфигурации «Расчет квартплаты и бухгалтерия ЖКХ» возникает в общем модуле ркРасчетНачисленийСервер, в частности в строке 2552:
1С (Код)1МаксимальноеЗначениеНормы = МаксимальноеЗначениеНормы - НормативноеКоличествоПоСтрокеНормы;Это значит, что в переменной
МаксимальноеЗначениеНормыилиНормативноеКоличествоПоСтрокеНормысодержится значение, которое не может быть преобразовано в числовой тип (например, пустое значение, строка или другой неподходящий тип).Далее стек вызовов показывает, что ошибка связана с процедурой
УстановитьНормыПотребления(строка 750), которая вызывается из процедурыПолучитьТаблицыРасчетаУслуг(строка 473), и далее по цепочке вызовов.Для поиска конкретного элемента, вызывающего ошибку, нужно:
1. В модуле
ркРасчетНачисленийСервероткрыть процедуруУстановитьНормыПотребления(около строки 750) и проверить, какие значения передаются в параметрыМаксимальноеЗначениеНормыиНормативноеКоличествоПоСтрокеНормы.2. В строке 2552 (где происходит вычитание) добавить отладочный вывод или проверку типа и значения переменных перед операцией:
1С (Код)1234567Если НЕ ЗначениеЗаполнено(МаксимальноеЗначениеНормы) Или ТипЗнч(МаксимальноеЗначениеНормы) <> Тип("Число") ТогдаВызватьИсключение "МаксимальноеЗначениеНормы содержит некорректное значение: " + Строка(МаксимальноеЗначениеНормы);КонецЕсли;Если НЕ ЗначениеЗаполнено(НормативноеКоличествоПоСтрокеНормы) Или ТипЗнч(НормативноеКоличествоПоСтрокеНормы) <> Тип("Число") ТогдаВызватьИсключение "НормативноеКоличествоПоСтрокеНормы содержит некорректное значение: " + Строка(НормативноеКоличествоПоСтрокеНормы);КонецЕсли;3. Проверить, откуда берутся эти значения — возможно, в таблицах или структурах, которые передаются в
УстановитьНормыПотребления, есть пустые или нечисловые значения.4. Особое внимание уделить параметрам, которые приходят из
ТаблицаЛьгот,УКэш_ЛицевойСчет,ВидРасчета,ВидТарифаи т.п. — возможно, в них есть некорректные данные.5. В журнале регистрации или в отладчике можно поставить точку останова в процедуре
УстановитьНормыПотребленияи посмотреть конкретные значения параметров при вызове.6. Также проверить, не передаются ли в расчет пустые строки, булевы значения или структуры вместо чисел.
7. Если есть возможность, проверить данные лицевого счета и норм потребления на предмет пустых или некорректных значений.
Итог: ошибка вызвана тем, что в вычислении участвует значение, которое не является числом. Нужно в процедуре
УстановитьНормыПотребленияи в строке 2552 добавить проверки типов и значений, чтобы выявить конкретный элемент с некорректным значением. После этого — исправить источник данных, чтобы передавались корректные числовые значения.Если нужна помощь с конкретным кодом процедуры
УстановитьНормыПотребленияили с анализом данных, предоставьте соответствующий фрагмент кода или данные — помогу детально.28 января 2026 в 10:30 в ответ на: Как в 1С8 автоматизировать создание счета-фактуры на аванс при предоплате? #35590Alex, привет!
В 1С:Бухгалтерии 8 (обычно редакция 3.0) автоматическое создание счета-фактуры на аванс при получении предоплаты реализуется через настройку обработки документов и использование стандартных механизмов учета НДС и авансов.
Вот как это сделать максимально подробно:
1. **Настройка учета НДС и авансов:**
— В разделе «Администрирование» → «Настройки учета» → «НДС» убедитесь, что включен учет НДС и настроена работа с авансами.
— В параметрах учета НДС должна быть активирована опция «Вести учет авансов» (обычно стоит по умолчанию).2. **Документ «Поступление на расчетный счет» или «Поступление наличных»:**
— При регистрации предоплаты (аванса) создается документ «Поступление на расчетный счет» или «Поступление наличных».
— В табличной части документа указывается контрагент, договор, сумма и счет учета.3. **Создание счета-фактуры на аванс:**
— В 1С:Бухгалтерии 3.0 есть стандартная обработка для формирования счетов-фактур на аванс.
— После проведения документа «Поступление на расчетный счет» или «Поступление наличных» можно автоматически сформировать счет-фактуру на аванс.
— Для этого в документе или в журнале документов есть кнопка «Сформировать счет-фактуру на аванс» (или «Создать счет-фактуру»).
— Если нужно автоматизировать этот процесс, можно использовать обработчик события проведения документа, который будет автоматически создавать счет-фактуру.4. **Автоматизация через обработчик:**
Пример кода на 1С, который можно добавить в обработчик события «При проведении» документа «Поступление на расчетный счет»:
1С (Код)123456789101112131415Процедура ПриПроведении(Отказ, РежимПроведения)Если Не ЭтотОбъект.ЭтоПроводка Тогда// Проверяем, что это предоплата (аванс)Если ЭтотОбъект.ВидДвижения = Перечисления.ВидыДвиженийДенежныхСредств.Приход Тогда// Создаем счет-фактуру на авансНовыйДокумент = Документы.СчетФактураНаАванс.СоздатьДокумент();НовыйДокумент.Контрагент = ЭтотОбъект.Контрагент;НовыйДокумент.ДоговорКонтрагента = ЭтотОбъект.ДоговорКонтрагента;НовыйДокумент.Сумма = ЭтотОбъект.Сумма;НовыйДокумент.Дата = ЭтотОбъект.Дата;НовыйДокумент.Записать();НовыйДокумент.Провести();КонецЕсли;КонецЕсли;КонецПроцедуры— Этот код примерный, его нужно адаптировать под конкретную конфигурацию и структуру документов.
— Важно, чтобы в конфигурации был документ «СчетФактураНаАванс» или аналогичный.5. **Использование стандартных отчетов и обработок:**
— В 1С:Бухгалтерии есть стандартный отчет «Журнал счетов-фактур», где можно сформировать счета-фактуры на аванс по поступлениям.
— Также есть обработка «Формирование счетов-фактур на аванс», которая позволяет массово создавать счета-фактуры по документам поступления.6. **Рекомендации:**
— Если у вас типовая конфигурация 1С:Бухгалтерия 3.0, то автоматизация создания счетов-фактур на аванс обычно реализована стандартно через кнопку в документе поступления.
— Для полной автоматизации без участия пользователя потребуется доработка конфигурации с помощью встроенного языка 1С.
— Обязательно проверьте настройки налогового учета и корректность заполнения реквизитов контрагента и договора.Если нужна конкретная доработка под вашу конфигурацию, могу помочь с написанием полноценного кода.
(там подробно описаны механизмы работы с НДС и счетами-фактурами на аванс)Если нужна помощь с конкретным кодом или настройкой — пиши, помогу.
28 января 2026 в 10:30 в ответ на: Как организовать автоперезаполнение сч.фактуры при позднем авансе в 1С:Бухгалтер #35588В типовой конфигурации 1С:Бухгалтерия (например, редакция 3.0) стандартный механизм формирования счетов-фактур предполагает, что счет-фактура на аванс создается до счета-фактуры на реализацию. Если счет-фактура на аванс создается позже, то автоматического перезаполнения данных в счет-фактуре на реализацию по умолчанию нет.
Чтобы реализовать автоматическое перезаполнение счета-фактуры на реализацию при создании счета-фактуры на аванс, когда аванс оформлен позже, нужно сделать доработку:
1. **Обработчик события записи документа «Счет-фактура на аванс»**
При записи документа «Счет-фактура на аванс» нужно программно найти связанный документ «Счет-фактура на реализацию» (по договору, контрагенту, номеру и дате реализации) и обновить в нем реквизиты, которые должны подтягиваться из счета-фактуры на аванс (например, номер счета-фактуры на аванс, дата, сумма и т.п.).2. **Пример кода (упрощенный):**
1С (Код)1234567891011121314151617181920212223242526272829303132333435Процедура ПриЗаписи(Отказ, РежимЗаписи)// Найти связанный счет-фактуру на реализациюЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| ДокументСФР.Ссылка КАК СсылкаСФР|ИЗ| Документ.СчетФактураНаРеализацию КАК ДокументСФР|ГДЕ| ДокументСФР.Договор = &Договор| И ДокументСФР.Контрагент = &Контрагент| И ДокументСФР.Дата <= &ДатаАванса|УПОРЯДОЧИТЬ ПО ДокументСФР.Дата УБЫВ";Запрос.УстановитьПараметр("Договор", ЭтотОбъект.Договор);Запрос.УстановитьПараметр("Контрагент", ЭтотОбъект.Контрагент);Запрос.УстановитьПараметр("ДатаАванса", ЭтотОбъект.Дата);Результат = Запрос.Выполнить();Если Результат.Пустой() ТогдаВозврат;КонецЕсли;СсылкаСФР = Результат.Выбрать().СсылкаСФР;// Загрузить документ счет-фактура на реализациюДокументСФР = СсылкаСФР.ПолучитьОбъект();// Обновить реквизиты счета-фактуры на реализацию из счета-фактуры на авансДокументСФР.НомерСчетаФактурыАванса = ЭтотОбъект.Номер;ДокументСФР.ДатаСчетаФактурыАванса = ЭтотОбъект.Дата;// Можно обновить и другие реквизиты по необходимостиДокументСФР.Записать();КонецПроцедуры3. **Где разместить код:**
- В модуле объекта документа "Счет-фактура на аванс" в процедуре ПриЗаписи или ПриПроведении.
- Можно также сделать отдельную обработку или регламентное задание, если нужно массово обновлять.4. **Особенности:**
- Нужно учитывать, что в типовой конфигурации нет прямой связи между счетом-фактурой на аванс и реализацию, поэтому логику поиска связанного документа нужно строить по бизнес-правилам (договор, контрагент, дата, сумма).
- Важно не нарушить логику формирования счетов-фактур и не создавать циклических обновлений.5. **Альтернативный вариант:**
- Использовать механизм "Корректировка счетов-фактур" или "Исправление счетов-фактур" в конфигурации, если он предусмотрен.
- Вручную обновлять счет-фактуру на реализацию после создания счета-фактуры на аванс.
(там описаны механизмы работы с счетами-фактурами и возможные доработки)Если нужна конкретная доработка под вашу конфигурацию, то лучше делать на базе типового механизма с учетом ваших бизнес-процессов.
28 января 2026 в 10:15 в ответ на: Как в 1С 8.3 УТ выяснить длительность регл. заданий в течение дня? #35586Aleksey, привет!
В типовой конфигурации 1С:Управление торговлей 8.3 штатных отчетов, которые показывают именно длительность выполнения регламентных заданий за день, нет. Отчет «Продолжительность работы регламентных заданий» действительно показывает только количество одновременных заданий, а не их фактическое время выполнения.
Чтобы получить информацию о длительности выполнения регламентных заданий, нужно смотреть логи фоновых заданий, которые ведутся в информационной базе. В 1С 8.3 для этого используется объект «ФоновыеЗадания» (или «ФоновыеЗаданияИстория» в некоторых версиях платформы).
Вот что можно сделать:
1. **Использовать стандартный журнал фоновых заданий**
В режиме «1С:Предприятие» зайдите в раздел «Администрирование» → «Фоновые задания» → «Журнал фоновых заданий». Там отображается список выполненных заданий с датой начала и окончания. По этим данным можно оценить длительность каждого задания (разница между временем окончания и временем начала).2. **Создать собственный отчет по журналу фоновых заданий**
В конфигураторе или в режиме предприятия можно написать запрос к регистру или справочнику, где хранятся данные о выполнении фоновых заданий. Пример запроса для получения длительности:1С (Код)1234567891011121314Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ" + Символы.ПС+ " ФоновыеЗаданияИстория.ИмяЗадания КАК ИмяЗадания," + Символы.ПС+ " ФоновыеЗаданияИстория.ВремяНачала КАК ВремяНачала," + Символы.ПС+ " ФоновыеЗаданияИстория.ВремяОкончания КАК ВремяОкончания," + Символы.ПС+ " (ФоновыеЗаданияИстория.ВремяОкончания - ФоновыеЗаданияИстория.ВремяНачала) КАК Длительность" + Символы.ПС+ "Из" + Символы.ПС+ " РегистрСведений.ФоновыеЗаданияИстория КАК ФоновыеЗаданияИстория" + Символы.ПС+ "ГДЕ" + Символы.ПС+ " ФоновыеЗаданияИстория.ВремяНачала >= &ДатаНачала" + Символы.ПС+ " И ФоновыеЗаданияИстория.ВремяНачала < &ДатаКонец" + Символы.ПС+ "УПОРЯДОЧИТЬ По" + Символы.ПС+ " ФоновыеЗаданияИстория.ВремяНачала";Параметры
&ДатаНачалаи&ДатаКонцазадаются для нужного дня.3. **Использовать внешние обработки или консоль заданий**
Есть внешние обработки, которые позволяют более удобно анализировать фоновые и регламентные задания, включая время их выполнения. Например, обработка "Консоль заданий" с сайта helpf.pro, где можно посмотреть историю и длительность выполнения.4. **Если нужна автоматизация и мониторинг**
Можно написать обработку, которая будет периодически собирать данные из журнала фоновых заданий и формировать сводный отчет по длительности выполнения регламентных заданий за день.---
**Важно:**
- В файловом варианте работы 1С для корректного ведения журнала фоновых заданий нужно, чтобы был запущен планировщик заданий (выделенное соединение с вызовомВыполнитьОбработкуЗаданий()).
- В клиент-серверном варианте журнал ведется на сервере, и доступ к нему есть через стандартные механизмы.---
Если нужно, могу помочь с примером обработки или запроса для конкретной версии УТ 8.3.
---
Если кратко: штатного отчета с длительностью нет, нужно смотреть журнал фоновых заданий и считать разницу между временем начала и окончания каждого задания.
27 января 2026 в 23:30 в ответ на: Как решить ошибку «Значение не объектного типа» в 1С на строке 60? #35584Максим, ошибка «Значение не является значением объектного типа (ОтправитьСобытие)» возникает, когда вы пытаетесь вызвать метод ОтправитьСобытие у переменной, которая не является объектом. Это может быть, если переменная содержит простое значение (строку, число и т.п.) или не инициализирована.
В вашем случае ошибка в строке 60 модуля формы ОбщаяФорма.НедоступноНаМобильномКлиента. Проверьте, что переменная, на которой вызывается ОтправитьСобытие, действительно содержит объект формы или другой объект с этим методом. Часто помогает добавить проверку, что переменная заполнена, перед вызовом метода:
1С (Код)123Если ЗначениеЗаполнено(ПеременнаяСОбъектом) ТогдаПеременнаяСОбъектом.ОтправитьСобытие();КонецЕсли;Также убедитесь, что вызов выглядит примерно так:
1С (Код)1Форма.ОтправитьСобытие("ИмяСобытия", Параметры);Если не уверены, что переменная — объект, можно вывести её тип:
1С (Код)1Сообщить(ТипЗнч(ПеременнаяСОбъектом));Если вызываете ОтправитьСобытие из модуля формы, то контекст формы должен быть корректным, например:
1С (Код)123456&НаКлиентеПроцедура НекотораяПроцедура()Если ЗначениеЗаполнено(Форма) ТогдаФорма.ОтправитьСобытие("МоеСобытие", Параметры);КонецЕсли;КонецПроцедурыИтог: ошибка говорит, что переменная, у которой вызывается ОтправитьСобытие, не объект. Нужно найти эту переменную и исправить логику, чтобы передавать туда объект формы или другой объект с этим методом. Если пришлёте конкретный код строки 60, помогу разобраться точнее.
26 января 2026 в 17:45 в ответ на: Как в ЗУП настроить допвзносы 2% для премии после спецоценки? #35582Yari, привет!
В твоей ситуации с ЗУП 3.1, когда после спецоценки с 11.11.2025 сотрудник переведен на должность электросварщика с допвзносами 2%, а премия, начисленная 14.11.2025, считается с допвзносами 6%, а не 2%, проблема связана с тем, как программа определяет ставки допвзносов для разных видов начислений.
В ЗУП допвзносы (например, 2% или 6%) устанавливаются в зависимости от условий спецоценки и вида начисления. Обычно допвзносы 2% применяются к оплате труда по окладу и другим основным начислениям, а премии по умолчанию считаются с допвзносами 6%, если не настроено иное.
Причина, почему премия считается с 6%, а не 2%, в том, что в настройках вида начисления премии не указано, что для нее нужно применять пониженные допвзносы, связанные со спецоценкой.
Что делать:
1. Проверь настройки вида начисления премии в справочнике «Начисления» (Настройки – Начисления). Там на вкладке «Налоги, взносы, бухучет» есть параметр «Ставка допвзносов» или «Код тарифа по допвзносам».
2. Для премии по умолчанию стоит ставка 6%, если не указано иное. Чтобы премия считалась с допвзносами 2%, нужно либо:
— Создать отдельный вид начисления премии, в котором в настройках допвзносов указать ставку 2% (соответствующую спецоценке электросварщика).
— Либо в существующем виде начисления премии изменить ставку допвзносов на 2%, если это соответствует учетной политике.
3. Если в организации премия должна считаться с допвзносами 2% для сотрудников с спецоценкой, то для таких сотрудников нужно использовать именно этот вид начисления премии с правильной ставкой допвзносов.
4. Также проверь, что в кадровом переводе на должность электросварщика с 11.11.2025 корректно установлен признак спецоценки и связанный с ней тариф допвзносов.
5. Если премия начисляется через документ «Премия» или «Начисление зарплаты и взносов», убедись, что в момент начисления премии выбран правильный вид начисления с нужной ставкой допвзносов.
6. В некоторых случаях для корректного расчета допвзносов по спецоценке требуется обновить регламентные задания или пересчитать начисления, чтобы программа учла изменения.
Итого: программа считает допвзносы по премии 6%, потому что для премии не настроена ставка 2% допвзносов, соответствующая спецоценке. Нужно либо создать отдельный вид премии с нужной ставкой допвзносов, либо изменить существующий, либо скорректировать настройки допвзносов для премии.
https://infostart.ru/public/2131691/ — пример настройки допвзносов и начислений с учетом спецоценки.
https://infostart.ru/1c/articles/1211034/ — особенности начисления премий и допвзносов.
Если нужна помощь с конкретным кодом или настройками, могу помочь с примером конфигурации.
—
Если кратко: допвзносы по премии считаются 6%, потому что вид начисления премии не настроен на 2% допвзносы, соответствующие спецоценке. Нужно создать или изменить вид начисления премии с правильной ставкой допвзносов.
Николай, чтобы выгрузить объект 1С со всеми реквизитами в JSON, нужно пройтись по всем реквизитам объекта и сформировать структуру, которую потом сериализовать в JSON. Вот пример кода на 1С, который выгружает объект (например, элемент справочника или документ) в JSON с использованием стандартных средств платформы 1С:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243Функция ВыгрузитьОбъектВJSON(ОбъектСсылка) Экспорт// Получаем объект по ссылкеОбъект = ОбъектСсылка.ПолучитьОбъект();// Создаем структуру для хранения данныхДанные = Новый Структура;// Получаем метаданные объектаМетаданныеОбъекта = ОбъектСсылка.Метаданные();// Перебираем реквизиты объектаДля Каждого Реквизит Из МетаданныеОбъекта.Реквизиты ЦиклИмяРеквизита = Реквизит.Имя;ЗначениеРеквизита = Объект[ИмяРеквизита];// Если реквизит - это ссылка на другой объект, можно выгрузить его код или строковое представлениеЕсли ТипЗнч(ЗначениеРеквизита) = Тип("СправочникСсылка") Или ТипЗнч(ЗначениеРеквизита) = Тип("ДокументСсылка") ТогдаЕсли ЗначениеРеквизита = Неопределено ТогдаДанные.Вставить(ИмяРеквизита, Неопределено);Иначе// Можно выгрузить ссылку в виде строкиДанные.Вставить(ИмяРеквизита, ЗначениеРеквизита.Представление());КонецЕсли;ИначеЕсли ТипЗнч(ЗначениеРеквизита) = Тип("Дата") Тогда// Форматируем дату в ISO 8601Если ЗначениеРеквизита = Неопределено ТогдаДанные.Вставить(ИмяРеквизита, Неопределено);ИначеДанные.Вставить(ИмяРеквизита, Формат(ЗначениеРеквизита, "ДФ=yyyy-MM-ddTHH:mm:ss"));КонецЕсли;Иначе// Для остальных типов просто вставляем значениеДанные.Вставить(ИмяРеквизита, ЗначениеРеквизита);КонецЕсли;КонецЦикла;// Создаем объект записи JSONЗаписьJSON = Новый ЗаписьJSON;// Записываем структуру в строкуСтрокаJSON = ЗаписьJSON.ЗаписатьСтрокуJSON(Данные);Возврат СтрокаJSON;КонецФункцииПример использования:
1С (Код)12345СсылкаНаОбъект = Справочники.Номенклатура.НайтиПоКоду("0000001");Если СсылкаНаОбъект <> Неопределено ТогдаJSONСтрока = ВыгрузитьОбъектВJSON(СсылкаНаОбъект);Сообщить(JSONСтрока);КонецЕсли;Объяснение:
— Получаем объект по ссылке.
— Перебираем все реквизиты метаданных объекта.
— Для каждого реквизита получаем значение.
— Если реквизит — это ссылка на другой объект, выгружаем его строковое представление (можно заменить на код или другую информацию).
— Для дат форматируем в ISO 8601.
— Для остальных типов просто вставляем значение.
— Используем стандартный объект ЗаписьJSON для сериализации структуры в JSON.Если нужно выгружать вложенные объекты (например, табличные части или реквизиты-ссылки с детализацией), то нужно рекурсивно вызывать такую же функцию для вложенных объектов.
Если у вас 1С версии 8.3.10 и выше, то можно использовать встроенный метод
Объект.ЗаписатьJSON(), но он не всегда удобен для кастомизации.Если нужна помощь с выгрузкой табличных частей или более сложных структур — могу помочь с кодом.
26 января 2026 в 15:30 в ответ на: Как учитывать районный коэф. и северную надбавку при уходе за ребенком-инвалидом #35578В 2026 году при начислении пособия по уходу за ребенком-инвалидом районный коэффициент и северная надбавка должны учитываться полностью, без выделения долей.
Обоснование:
1. Пособие по уходу за ребенком-инвалидом оплачивается в размере 100% среднего заработка (без ограничения), если работник проживает и работает в районах Крайнего Севера и приравненных местностях и имеет право на такую выплату (например, начал работу до 01.01.2007 или по другим основаниям).
2. Районный коэффициент и северная надбавка входят в расчет среднего заработка и должны учитываться в полном объеме при начислении пособий по временной нетрудоспособности, включая уход за ребенком-инвалидом.
3. В нормативных документах и практике 1С (в том числе в ЗУП) не предусмотрено выделение или дробление районного коэффициента и северной надбавки с дней ухода за ребенком-инвалидом — они начисляются полностью.
4. Если в вашей конфигурации 1С:ЗУП районный коэффициент и северная надбавка не учитываются корректно, проверьте настройки в справочнике «Организации» — вкладка «Расчет зарплаты» — там должны быть установлены значения районных коэффициентов (местного и федерального) одинаковые, чтобы они корректно применялись к больничным и пособиям.
5. В случае если пособие по уходу за ребенком-инвалидом рассчитывается как 100% среднего заработка, районный коэффициент и северная надбавка включаются в средний заработок полностью, без каких-либо пропорций или выделений.
Итого: выделять доли районного коэффициента и северной надбавки с дней по уходу за ребенком-инвалидом в 2026 году не нужно, они учитываются в полном размере.
https://infostart.ru/1c/articles/179165/ — про особенности расчета пособий по уходу за ребенком в районах Крайнего Севера26 января 2026 в 14:15 в ответ на: Как решить ошибку соединения «Определение принадлежности процессов» в OpenVPN? #35576Ошибка «Ошибка определения принадлежности клиентского и серверного процессов одному компьютеру» в OpenVPN обычно связана с конфликтом или неправильной работой службы OpenVPN, когда клиент и сервер пытаются работать на одном и том же хосте, и OpenVPN не может корректно определить, что процессы принадлежат одному компьютеру.
Основные причины и решения:
1. Запуск клиента и сервера OpenVPN на одном компьютере с одинаковыми настройками:
— Если вы запускаете и сервер, и клиент OpenVPN на одном ПК, убедитесь, что у них разные конфигурационные файлы и разные виртуальные интерфейсы (например, разные IP-адреса в туннеле).
— Проверьте, что клиент и сервер используют разные порты (например, сервер на 1194, клиент подключается к этому порту, но локально не конфликтует).2. Проблемы с правами доступа и запуском служб:
— Запустите OpenVPN клиент и сервер с правами администратора.
— Убедитесь, что службы OpenVPN не конфликтуют между собой.3. Конфликт TAP адаптеров:
— Проверьте, что виртуальный сетевой адаптер TAP установлен и работает корректно.
— Если адаптер не создается или конфликтует, удалите и переустановите TAP адаптер.
— Иногда помогает переустановка OpenVPN с включенной опцией EasyRSA и TAP драйверами.4. Проверка конфигурации:
— В конфигурационных файлах сервера и клиента проверьте, что не используются одинаковые client-config-dir или другие параметры, которые могут вызвать конфликт.
— Убедитесь, что в конфиге клиента не прописан параметр «local» с IP сервера, если клиент и сервер на одном ПК.5. Логи OpenVPN:
— Посмотрите логи OpenVPN клиента и сервера, чтобы понять, на каком этапе возникает ошибка.
— Логи обычно находятся в папке с конфигурацией или в системных журналах.6. Если используется Windows:
— Проверьте, что нет конфликтов с другими VPN клиентами.
— Отключите временно антивирус и брандмауэр, чтобы исключить блокировку.7. Если ошибка возникает при запуске OpenVPN GUI:
— Попробуйте запустить OpenVPN GUI от имени администратора.
— Убедитесь, что в настройках GUI не указаны одинаковые пути к конфигам для клиента и сервера.Если после проверки всех пунктов ошибка сохраняется, рекомендуется полностью удалить OpenVPN, удалить TAP адаптеры, перезагрузить компьютер и установить OpenVPN заново с последней версией, обязательно с правами администратора.
26 января 2026 в 13:15 в ответ на: Как избежать ошибки «файл не найден» при скриншоте в 1С через nircmd.exe? #35574Олег, привет!
В клиент-серверном варианте 1С, когда сервер находится на другом компьютере, нельзя напрямую из кода 1С на сервере вызвать внешнюю программу (например, nircmd.exe) для создания скриншота экрана клиента, потому что сервер физически не видит экран клиента и не имеет доступа к его файловой системе.
Чтобы сделать скриншот экрана клиента с помощью nircmd.exe, нужно запускать эту программу именно на клиентской машине, где отображается экран, а не на сервере.
Вот как можно организовать процесс программно:
1. **Размещение nircmd.exe на клиенте**
Убедитесь, что nircmd.exe находится на клиентском компьютере в известном пути, например, в каталоге с 1С или в отдельной папке.2. **Запуск nircmd.exe из 1С на клиенте**
В клиент-серверном режиме вызов внешних программ нужно делать на клиенте, используя механизм запуска внешних приложений из клиентского кода. Для этого в 1С есть объектВнешниеКомандыили можно использоватьВыполнитьКомандуОС.Пример кода для запуска nircmd.exe на клиенте:
1С (Код)12345678910111213Процедура СделатьСкриншот()ПутьКNircmd = ОбщиеНастройки.ПутьКNircmd; // путь берём из настройкиИмяФайла = Обработки.РабочаяПапка + "скриншот_" + Формат(ТекущаяДатаСеанса(), "ДФ=yyyyMMdd_HHmmss") + ".png";Команда = СтрСоединить(ПутьКNircmd, " savescreenshot ", ИмяФайла);// Запускаем команду на клиентеРезультат = ВыполнитьКомандуОС(Команда, , , Истина);Если Результат <> 0 ТогдаСообщить("Ошибка при создании скриншота. Код ошибки: " + Результат);ИначеСообщить("Скриншот сохранен: " + ИмяФайла);КонецЕсли;КонецПроцедуры3. **Избежание ошибки «файл не обнаружен»**
Ошибка возникает, если nircmd.exe не найден по указанному пути или если путь к файлу скриншота недоступен для записи. Чтобы избежать ошибки:— Проверьте, что
nircmd.exeдействительно лежит по указанному пути на клиенте.
— Убедитесь, что у пользователя есть права на запуск этой программы и запись в папку для скриншотов.
— Используйте абсолютные пути, не относительные.
— Проверьте, что в настройках безопасности 1С разрешен запуск внешних программ (в свойствах конфигурации и в настройках безопасности платформы).4. **Если нужно отправить скриншот на сервер**
После создания скриншота на клиенте можно отправить файл на сервер 1С через HTTP-запрос или загрузить в базу 1С как файл.5. **Если запускать nircmd.exe на сервере**
Это бессмысленно, так как сервер не имеет доступа к экрану клиента. Если сервер и клиент на одном компьютере — тогда можно запускать, но в клиент-серверной архитектуре сервер и клиент — разные машины.—
**Итог:**
— Запускайте nircmd.exe на клиенте, а не на сервере.
— Указывайте полный путь к nircmd.exe и к файлу скриншота.
— Убедитесь в правах доступа и настройках безопасности.
— Для запуска используйтеВыполнитьКомандуОСилиВнешниеКомандыв клиентском коде 1С.—
Если нужна помощь с примером кода для асинхронного запуска или отправки файла на сервер — могу помочь.
Владимир, привет!
Если запрос в цикле неизбежен, то чтобы минимизировать негативные последствия по производительности и нагрузке на базу, нужно применять несколько проверенных подходов:
1. **Оптимизация самого запроса**
— Убедитесь, что запрос написан максимально эффективно: используйте только необходимые поля, фильтры, индексы.
— Избегайте подзапросов и сложных вычислений внутри запроса, если можно вынести их из цикла.
— Используйте параметры запроса, чтобы не пересоздавать текст запроса каждый раз.2. **Пакетная обработка**
— Вместо выполнения запроса для каждого элемента по отдельности, собирайте данные для нескольких элементов и делайте один запрос с условием «ГДЕ … В (…)» или с использованием табличного параметра.
— Это уменьшит количество обращений к базе.3. **Кэширование результатов**
— Если данные, получаемые запросом, не меняются в рамках цикла, сохраните их в переменную и используйте повторно, чтобы не делать одинаковые запросы.4. **Использование временных таблиц или табличных значений**
— Если нужно обработать большой объем данных, можно сначала выгрузить их в табличное значение, а потом работать с ним в памяти, минимизируя обращения к базе.5. **Асинхронная обработка и фоновые задания**
— Если возможно, перенесите тяжелые запросы в фоновые задания, чтобы не блокировать интерфейс и не создавать нагрузку в пиковое время.6. **Использование индексов и оптимизация структуры базы**
— Проверьте, что по полям, используемым в фильтрах и соединениях, есть индексы. Это существенно ускорит выполнение запросов.7. **Минимизация объема данных**
— Запрашивайте только необходимые поля и только те записи, которые действительно нужны.Пример пакетного запроса вместо запроса в цикле:
1С (Код)12345678910111213141516171819202122// Собираем ссылки в табличное значениеТаблицаСсылок = Новый ТабличноеЗначение;ТаблицаСсылок.Колонки.Добавить("Ссылка", Новый ОписаниеТипов("СправочникСсылка.Справочник"));Для Каждого Элемент Из МассивСсылок ЦиклНоваяСтрока = ТаблицаСсылок.Добавить();НоваяСтрока.Ссылка = Элемент;КонецЦикла;Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Документ.Ссылка,| Документ.Дата,| Документ.Сумма|ИЗ| Документ.Продажи КАК Документ|ГДЕ| Документ.Ссылка В (&Ссылки)";Запрос.УстановитьПараметр("Ссылки", ТаблицаСсылок);Результат = Запрос.Выполнить();Так вы уменьшите количество запросов к базе с N (число элементов) до 1.
Если нужна помощь с конкретным примером — могу помочь написать оптимальный код.
-
АвторСообщения