Ответы в темах
-
АвторСообщения
-
2 февраля 2026 в 17:30 в ответ на: Как выполнить корректировку реализации в закрытом периоде в 1С? #35614
Ev, привет!
Корректировка реализации в закрытом периоде — задача непростая, так как стандартные механизмы 1С блокируют изменения в закрытых периодах для сохранения целостности данных и отчетности. Но есть несколько проверенных способов, как это можно сделать.
1. **Использование документа «Корректировка реализации» с обходом запрета на изменение**
В конфигурациях типа Бухгалтерия предприятия 3.0, УПП, ERP есть возможность корректировать реализацию через специальный документ «Корректировка реализации». Если период закрыт, то в документе на вкладке «Расчеты» ставится галка «Бухгалтерский учет прошлого года закрыт для корректировки». Это позволяет провести корректировку, несмотря на закрытый период.
При этом важно:
— Создать новый документ реализации с теми же реквизитами (номер, дата) из старой базы или периода.
— В реквизите «Основание» корректировки выбрать этот новый документ реализации, согласиться на перезаполнение.
— Внести корректировки по количеству, цене, ГТД и т.д.
— Провести корректировку.
— В проводках вручную поправить себестоимость, если требуется.
— Обязательно отменить проведение созданной реализации, чтобы не дублировать данные.Это описано в статье на Инфостарте:
https://infostart.ru/1c/articles/997390/2. **Откат даты запрета изменений в закрытом периоде**
В конфигурациях УТ 11, КА2, ERP есть дополнительный механизм блокировки изменений в закрытом периоде, который не всегда снимается простой сменой даты запрета редактирования. Для снятия блокировки нужно:
— Открыть обработку закрытия месяца.
— В меню «Настройки» выбрать «Настройка блокировки от изменений».
— Откатить дату запрета изменений до нужного периода.
После этого можно перепроводить документы в закрытом периоде.Подробности здесь:
https://infostart.ru/1c/articles/2035093/3. **Использование обработки «Корректировка регистров»**
Если нужно сторнировать и скорректировать регистры, можно использовать специализированную обработку, которая создает документ «Корректировка регистров» с обратными проводками. Это позволяет корректировать данные текущим периодом, не открывая закрытый.
Проверено на ERP 2.5 и КА 2.5:
https://infostart.ru/1c/tools/2228167/4. **Редактирование данных напрямую (крайний случай)**
В ЗиК 77 (зарплата и кадры) для корректировки закрытого периода можно править файл CJPROP.DBF, меняя поле PDATE на нужный период, вносить изменения, а потом возвращать обратно. Это рискованно и требует аккуратности, но иногда единственный вариант.
https://infostart.ru/1c/articles/190298/5. **Автоматизация корректировки связанных документов**
Если корректировка реализации требует изменения связанных документов (например, счетов-фактур), можно доработать модуль менеджера документа реализации, чтобы при изменении реализации автоматически корректировался и счет-фактура. Это снижает риск ошибок и ускоряет процесс.
Пример кода и описание:
https://infostart.ru/1c/articles/144469/—
**Итог:**
Для корректировки реализации в закрытом периоде лучше всего использовать специализированный документ «Корректировка реализации» с включенной опцией обхода запрета, либо откатить дату запрета изменений через обработку закрытия месяца. Если нужно скорректировать регистры, применяйте обработку корректировки регистров. Редактирование напрямую — только в крайнем случае и с резервным копированием.Если нужна помощь с конкретным кодом или доработкой — могу помочь написать.
Ev, если интересно, могу скинуть пример кода для автоматической корректировки проводок в «Корректировке реализации» или для снятия блокировки.
https://infostart.ru/1c/articles/2035093/
https://infostart.ru/1c/tools/2228167/
https://infostart.ru/1c/articles/144469/Alex, привет!
Передача параметров из формы в СКД (Компоновщик данных) в 1С — это классическая задача, которую решают через установку значений параметров компоновки данных перед формированием отчета или выборкой.
Основные шаги и варианты:
1. **Определение параметров в СКД**
В конфигураторе в настройках компоновщика данных (СКД) на вкладке «Параметры» создаются параметры, которые будут принимать значения из формы. Например, параметр «Контрагент», «Период», «Склад» и т.п.2. **Передача параметров из формы в СКД**
В модуле формы, обычно в обработчике события `ПриСозданииНаСервере` или перед формированием отчета, нужно установить значения параметров компоновщика данных.Пример кода на 1С:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Получаем настройки компоновщика данных по умолчанию Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; // Устанавливаем значения параметров Настройки.УстановитьЗначениеПараметра("Контрагент", ЭлементыФормы.Контрагент.Значение); Настройки.УстановитьЗначениеПараметра("НачалоПериода", ЭлементыФормы.ДатаНачала.Значение); Настройки.УстановитьЗначениеПараметра("КонецПериода", ЭлементыФормы.ДатаОкончания.Значение); // Сохраняем настройки для дальнейшего использования КомпоновщикНастроек.Настройки = Настройки; КонецПроцедурыЗдесь `СхемаКомпоновкиДанных` — это объект макета компоновки данных, а `Настройки` — объект настроек, в котором устанавливаются значения параметров.
3. **Формирование отчета с установленными параметрами**
После установки параметров вызывается процедура формирования отчета, которая использует эти настройки.Пример:
Процедура СформироватьОтчет() КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки); ЭлементыФормы.Результат.Очистить(); ДокументРезультат = ЭлементыФормы.Результат; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); КонецПроцедуры4. **Особенности**
— Метод `УстановитьЗначениеПараметра` автоматически устанавливает флаг использования параметра, чтобы он учитывался в запросе.
— Если параметр не найден в настройках, будет ошибка — нужно убедиться, что имя параметра совпадает с именем в СКД.
— Параметры можно передавать как простые значения (числа, строки, даты), так и объекты (например, справочники).5. **Пример с динамическим списком (СКД в форме)**
Если у вас динамический список с компоновщиком данных, то в обработчике `ПриСозданииНаСервере` можно так:&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Список.Параметры.УстановитьЗначениеПараметра("Контрагент", Параметры.Контрагент); Список.Параметры.УстановитьЗначениеПараметра("ПериодНачала", Параметры.ПериодНачала); Список.Параметры.УстановитьЗначениеПараметра("ПериодОкончания", Параметры.ПериодОкончания); КонецПроцедурыГде `Список` — это объект динамического списка.
—
**Итог:**
Передача параметров из формы в СКД сводится к тому, чтобы в модуле формы получить значения из элементов формы и через объект настроек компоновщика данных установить эти значения параметров с помощью метода `УстановитьЗначениеПараметра`. После этого формируется отчет или выборка с учетом этих параметров.—
https://infostart.ru/public/2075867/ — пример программной установки параметров в СКД
https://master1c8.ru/platforma-1s-predpriyatie-8/rukovodstvo-razrabottchika/glava-7-form/7725/ — метод `УстановитьЗначениеПараметра` для динамических списковЕсли нужно, могу помочь с конкретным примером под вашу задачу.
2 февраля 2026 в 13:30 в ответ на: Как устранить ошибку при вызове метода контекста DownloadData в 1С? #35610Семён, ошибка, которую вы видите, связана с тем, что в конфигурации «Управление холдингом, редакция 3.2» настройка синхронизации данных с узлом «ЗУП 3.1 УК ТЦ» (идентификатор «b8c19ca7-8957-4482-83bc-cfd7d0c97ed5») ещё не завершена. Это означает, что попытка загрузки данных через веб-сервис прерывается, так как предыдущий обмен с этим узлом либо не завершился корректно, либо находится в состоянии ожидания.
В частности, сообщение:
В "Управление холдингом, редакция 3.2" настройка синхронизации данных с "ЗУП 3.1 УК ТЦ" (идентификатор "b8c19ca7-8957-4482-83bc-cfd7d0c97ed5") еще не завершена.
указывает на то, что система считает, что обмен с этим узлом ещё в процессе, и не позволяет начать новый.
Причины могут быть следующие:
1. Предыдущий обмен с этим узлом завис или не был корректно завершён (например, из-за ошибки, прерывания, таймаута).
2. В базе-источнике или базе-приёмнике остались «зависшие» записи в регистрах сведений, отвечающих за регистрацию обмена (например, в регистрах соответствия или регистрации изменений).
3. Проблемы с длительными операциями, которые не завершились или находятся в состоянии ожидания.
4. Некорректная настройка или сбой в механизме обмена через веб-сервисы.
Что делать:
— Проверьте состояние обмена с узлом «ЗУП 3.1 УК ТЦ» в конфигурации «Управление холдингом». Возможно, нужно вручную завершить или отменить текущий обмен.
— Проверьте журналы регистрации и длительные операции на предмет зависших или неудачных операций обмена.
— Если есть возможность, перезапустите службу агента 1С и очистите кэш.
— Проверьте, нет ли блокировок или ошибок в регистрах сведений, связанных с обменом.
— Если обмен реализован через планы обмена, проверьте состояние планов обмена и узлов.
— При необходимости выполните повторную инициализацию или сброс настроек обмена с этим узлом.
— Если проблема повторяется, можно обратиться к технической поддержке 1С или разработчикам конфигурации для детального анализа.
В общем, ошибка говорит о том, что система не может начать новый обмен, пока предыдущий не завершён, и нужно разобраться с текущим состоянием обмена с указанным узлом.
30 января 2026 в 21:30 в ответ на: Как получить номер и дату счет-фактуры на аванс в 1С по поступлению на расчетный #35608Олег, привет!
Чтобы получить номер и дату счета-фактуры на аванс по документу «Поступление на расчетный счет» в 1С (например, в УТ 11), нужно сделать запрос к документу «СчетФактураВыданный», связав его с документом-основанием — «ПоступлениеНаРасчетныйСчет». Обычно связь идет через реквизит «ДокументОснование».
Пример текста запроса на языке 1С, который вернет номер и дату счета-фактуры, связанного с конкретным поступлением на расчетный счет:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СФ.Номер КАК НомерСчетФактуры, | СФ.Дата КАК ДатаСчетФактуры |ИЗ | Документ.СчетФактураВыданный КАК СФ |ГДЕ | СФ.ДокументОснование = &Поступление"; Запрос.УстановитьПараметр("Поступление", СсылкаНаДокументПоступления); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл // Здесь можно обработать номер и дату счета-фактуры Сообщить("Номер: " + Выборка.НомерСчетФактуры + ", Дата: " + Формат(Выборка.ДатаСчетФактуры, "ДФ=dd.MM.yyyy")); КонецЦикла;Если нужно получить все счета-фактуры, связанные с разными поступлениями, то можно убрать фильтр по конкретному документу и добавить связь по другим условиям.
Если в базе есть несколько счетов-фактур на один аванс, то запрос вернет все связанные.
Если нужно получить данные по нескольким документам, то можно использовать запрос с объединением или с фильтром по множеству.
https://infostart.ru/1c/articles/22364/Там есть готовые функции и примеры, как получить номера и даты счетов-фактур, связанных с авансами, в том числе по документам «Поступление на расчетный счет».
Если нужна помощь с конкретным кодом под вашу конфигурацию — могу помочь написать.
—
Кратко:
— Таблица: Документ.СчетФактураВыданный
— Реквизит связи: ДокументОснование (ссылка на ПоступлениеНаРасчетныйСчет)
— Выбираем Номер и Дату счета-фактуры по условию ДокументОснование = нужный документ.Если нужно, могу написать более сложный запрос с учетом разных условий.
Один.
Сергей, в 1С 7.7 для передачи изображения в JSON через бинарную строку нужно выполнить следующие шаги:
1. Получить бинарные данные изображения (например, из объекта «Изображение»).
2. Преобразовать бинарные данные в строку, используя Base64 кодирование.
3. Вставить полученную Base64 строку в JSON как обычное строковое значение.В 1С 7.7 нет встроенных функций для Base64, поэтому нужно использовать самописные процедуры или внешние библиотеки. Вот пример реализации Base64 кодирования и формирования JSON с изображением:
// Функция кодирования бинарных данных в Base64 Функция Base64Кодировать(ДвоичныеДанные) ТаблицаКодов = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; Результат = ""; Буфер = ""; Длина = СтрДлина(ДвоичныеДанные); Индекс = 1; Пока Индекс <= Длина Цикл // Читаем по 3 байта Байты = ""; Для i = 0 По 2 Цикл Если (Индекс + i) <= Длина Тогда Байты = Байты + Сред(ДвоичныеДанные, Индекс + i, 1); Иначе Байты = Байты + Символ(0); КонецЕсли; КонецЦикла; // Преобразуем 3 байта в 4 символа Base64 Б1 = КодСимвола(Сред(Байты,1,1)); Б2 = КодСимвола(Сред(Байты,2,1)); Б3 = КодСимвола(Сред(Байты,3,1)); Инд1 = Б1 / 4; Инд2 = ((Б1 % 4) * 16) + (Б2 / 16); Инд3 = ((Б2 % 16) * 4) + (Б3 / 64); Инд4 = Б3 % 64; Результат = Результат + Сред(ТаблицаКодов, Цел(Инд1)+1, 1); Результат = Результат + Сред(ТаблицаКодов, Цел(Инд2)+1, 1); Если (Индекс + 1) > Длина Тогда Результат = Результат + "="; Иначе Результат = Результат + Сред(ТаблицаКодов, Цел(Инд3)+1, 1); КонецЕсли; Если (Индекс + 2) > Длина Тогда Результат = Результат + "="; Иначе Результат = Результат + Сред(ТаблицаКодов, Цел(Инд4)+1, 1); КонецЕсли; Индекс = Индекс + 3; КонецЦикла; Возврат Результат; КонецФункции // Пример использования Процедура ПередатьИзображениеВJSON(Изображение) // Получаем бинарные данные изображения БинарныеДанные = Изображение.ПолучитьДвоичныеДанные(); // Кодируем в Base64 СтрокаBase64 = Base64Кодировать(БинарныеДанные); // Формируем JSON вручную JSON = "{""image"":""" + СтрокаBase64 + """}"; Сообщить(JSON); КонецПроцедурыОбъяснения:
— Метод `ПолучитьДвоичныеДанные()` у объекта Изображение возвращает бинарные данные.
— Функция `Base64Кодировать` преобразует бинарные данные в строку Base64.
— В JSON строка Base64 вставляется как обычное строковое значение.Если у вас есть возможность использовать внешние компоненты или расширения, можно применить готовые библиотеки Base64, что упростит код.
Если нужна помощь с конкретным кодом для вашего варианта — могу помочь написать.
30 января 2026 в 11:00 в ответ на: Как устранить ошибку учета характеристик в 1С для номенклатуры? #35603
S, ошибка «Ошибка при получении набора регистра сведений АналитикаУчетаНоменклатуры: для номенклатуры не настроено ведение характеристики, но характеристика указана» означает, что в документе или обработке пытаются записать или получить данные по характеристке номенклатуры, хотя для этой номенклатуры в настройках учета не включено ведение характеристик.
Причины и решения:
1. В карточке номенклатуры в справочнике «Номенклатура» не включено ведение характеристик, а в документе или обработке передается характеристика.
— Проверьте в справочнике «Номенклатура» для данной позиции, включено ли ведение характеристик (флажок «Вести учет по характеристикам» или аналогичный).
— Если учет по характеристикам не нужен, то в документе не передавайте характеристику.
— Если учет по характеристикам нужен, то включите этот флажок в карточке номенклатуры.2. В обработке или в коде, где формируется набор регистра сведений «АналитикаУчетаНоменклатуры», передается характеристика для номенклатуры, которая не ведет учет по характеристикам.
— Добавьте проверку, что характеристика передается только если для номенклатуры включено ведение характеристик.
— Либо исправьте логику, чтобы не передавать характеристику, если она не нужна.3. Если ошибка возникает при загрузке данных из внешних источников (например, из DBF, Excel и т.п.), то проверьте корректность данных: не передаются ли характеристики для номенклатуры, у которой учет по характеристикам не ведется.
4. В типовой конфигурации 1С (например, УТ, ERP, ЗУП) настройка ведения характеристик обычно находится в карточке номенклатуры, в разделе «Учет» или «Характеристики». Проверьте именно там.
5. Если ошибка возникает в запросах к регистру сведений, убедитесь, что в условии запроса не используется характеристика для номенклатуры без учета характеристик.
Пример проверки в коде 1С:
Если Номенклатура.ВестиУчетПоХарактеристикам Тогда // передаем характеристику АналитикаУчетаНоменклатуры.Характеристика = Характеристика; Иначе // не передаем характеристику АналитикаУчетаНоменклатуры.Характеристика = Неопределено; КонецЕсли;Итог: ошибка связана с несоответствием настроек учета номенклатуры и передаваемых данных по характеристикам. Нужно либо включить учет по характеристикам для номенклатуры, либо не передавать характеристику в данных.
Если нужна помощь с конкретным кодом или документом, приложите пример, где возникает ошибка.
30 января 2026 в 11:00 в ответ на: Как создать отчет СКД с группировкой и итогами в 1С 8.3 для ПлатежиЕРИП? #35600Отчет на СКД для регистра сведений ПлатежиЕРИП с группировкой по Счету, с промежуточными и общими итогами, а также параметром периода по ДатеРеестра сделать можно. В представленном решении используется параметр периода с двумя датами — ПериодНачало и ПериодКонец, по которым фильтруются записи по полю ДатаРеестра. Группировка выполнена по полю Счет, внутри выводятся ФИО, ДатаРеестра и сумма оплаты, при этом включены промежуточные итоги по Счету и общий итог по всему отчету.
Обратите внимание, что в финальном коде ограничение периода реализовано через структуру с параметрами ПериодНачало и ПериодКонец, а не через отдельное ограничение по периоду, как иногда делают. Запрос СКД использует условие МЕЖДУ для фильтрации по ДатеРеестра. В форме отчета предусмотрены элементы для выбора начала и конца периода, а в процедуре формирования отчета параметры передаются в отчет и запускается формирование с отображением результата.
Вот основные шаги и соответствующие фрагменты кода:
1. Создание параметров отчета:
ПараметрыОтчета = Новый Структура; ПараметрыОтчета.Вставить("ПериодНачало", Неопределено); ПараметрыОтчета.Вставить("ПериодКонец", Неопределено);2. Настройка параметров для фильтрации по периоду:
// ОграничениеПериода не используется, удалено // Длина строки уменьшена путем переноса параметров на новые строки Новый Структура( "ПериодНачало, ПериодКонец", ПараметрыОтчета.ПериодНачало, ПараметрыОтчета.ПериодКонец );3. Запрос СКД с условием по ДатеРеестра и группировкой:
| ВЫБРАТЬ | ПлатежиЕРИП.Счет КАК Счет, | ПлатежиЕРИП.ФИО КАК ФИО, | ПлатежиЕРИП.ДатаРеестра КАК ДатаРеестра, | СУММА(ПлатежиЕРИП.СуммаОплаты) КАК СуммаОплаты | ИЗ | РегистрСведений.ПлатежиЕРИП КАК ПлатежиЕРИП | ГДЕ | ПлатежиЕРИП.ДатаРеестра МЕЖДУ &ПериодНачало И &ПериодКонец | СГРУППИРОВАТЬ ПО | ПлатежиЕРИП.Счет, | ПлатежиЕРИП.ФИО, | ПлатежиЕРИП.ДатаРеестра | УПОРЯДОЧИТЬ ПО | ПлатежиЕРИП.Счет, | ПлатежиЕРИП.ФИО, | ПлатежиЕРИП.ДатаРеестра
4. Процедура формирования отчета с передачей параметров и отображением результата:
Процедура СформироватьОтчет(Команда) Параметры = Новый Структура; Параметры.Вставить("ПериодНачало", ЭлементыФормы.ПериодНачало.Значение); Параметры.Вставить("ПериодКонец", ЭлементыФормы.ПериодКонец.Значение); ОтчетСКД = Новый ОтчетСКД; ОтчетСКД.УстановитьПараметры(Параметры); ОтчетСКД.УстановитьМакет(МакетОтчета); ОтчетСКД.Сформировать(); ЭлементыФормы.Отчет.Отобразить(ОтчетСКД); КонецПроцедурыТаким образом, данный пример полностью соответствует вашему запросу и может быть использован для создания нужного отчета в 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. Проверить настройки налогового учета:
— В карточках номенклатуры и в настройках учета комиссионных товаров убедиться, что нет ошибочных признаков.
— Проверить, что в учетной политике и настройках налогового учета не установлены параметры, которые могут влиять на признание доходов по комиссионным товарам.Если нужна помощь с конкретным участком кода формирования КУДиР, могу помочь написать корректировку запроса или обработчика, чтобы исключить ложное сторнирование.
Пример проверки признака комиссионного товара в запросе КУДиР (упрощенный):
Запрос = Новый Запрос; Запрос.Текст = |ВЫБРАТЬ | Реализация.Номенклатура, | Реализация.Сумма, | Реализация.ПризнакКомиссионногоТовара |ИЗ | Документ.РеализацияТоваровУслуг КАК Реализация |ГДЕ | Реализация.ПризнакКомиссионногоТовара = ЛОЖЬ |; Результат = Запрос.Выполнить().Выгрузить();
Если в результате есть строки с признаком комиссионного товара = Истина, значит в документах есть такие товары, и нужно разбираться с ними.
Если же таких нет, а сторнирование идет — значит ошибка в логике формирования КУДиР.
В итоге: проблема в релизе, связана с некорректной обработкой признака комиссионного товара при формировании КУДиР. Обновление конфигурации или ручная корректировка кода формирования КУДиР решит проблему.
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:
МаксимальноеЗначениеНормы = МаксимальноеЗначениеНормы - НормативноеКоличествоПоСтрокеНормы;
Это значит, что в переменной `МаксимальноеЗначениеНормы` или `НормативноеКоличествоПоСтрокеНормы` содержится значение, которое не может быть преобразовано в числовой тип (например, пустое значение, строка или другой неподходящий тип).
Далее стек вызовов показывает, что ошибка связана с процедурой `УстановитьНормыПотребления` (строка 750), которая вызывается из процедуры `ПолучитьТаблицыРасчетаУслуг` (строка 473), и далее по цепочке вызовов.
Для поиска конкретного элемента, вызывающего ошибку, нужно:
1. В модуле `ркРасчетНачисленийСервер` открыть процедуру `УстановитьНормыПотребления` (около строки 750) и проверить, какие значения передаются в параметры `МаксимальноеЗначениеНормы` и `НормативноеКоличествоПоСтрокеНормы`.
2. В строке 2552 (где происходит вычитание) добавить отладочный вывод или проверку типа и значения переменных перед операцией:
Если НЕ ЗначениеЗаполнено(МаксимальноеЗначениеНормы) Или ТипЗнч(МаксимальноеЗначениеНормы) <> Тип("Число") Тогда ВызватьИсключение "МаксимальноеЗначениеНормы содержит некорректное значение: " + Строка(МаксимальноеЗначениеНормы); КонецЕсли; Если НЕ ЗначениеЗаполнено(НормативноеКоличествоПоСтрокеНормы) Или ТипЗнч(НормативноеКоличествоПоСтрокеНормы) <> Тип("Число") Тогда ВызватьИсключение "НормативноеКоличествоПоСтрокеНормы содержит некорректное значение: " + Строка(НормативноеКоличествоПоСтрокеНормы); КонецЕсли;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С, который можно добавить в обработчик события «При проведении» документа «Поступление на расчетный счет»:
Процедура ПриПроведении(Отказ, РежимПроведения) Если Не ЭтотОбъект.ЭтоПроводка Тогда // Проверяем, что это предоплата (аванс) Если ЭтотОбъект.ВидДвижения = Перечисления.ВидыДвиженийДенежныхСредств.Приход Тогда // Создаем счет-фактуру на аванс НовыйДокумент = Документы.СчетФактураНаАванс.СоздатьДокумент(); НовыйДокумент.Контрагент = ЭтотОбъект.Контрагент; НовыйДокумент.ДоговорКонтрагента = ЭтотОбъект.ДоговорКонтрагента; НовыйДокумент.Сумма = ЭтотОбъект.Сумма; НовыйДокумент.Дата = ЭтотОбъект.Дата; НовыйДокумент.Записать(); НовыйДокумент.Провести(); КонецЕсли; КонецЕсли; КонецПроцедуры— Этот код примерный, его нужно адаптировать под конкретную конфигурацию и структуру документов.
— Важно, чтобы в конфигурации был документ «СчетФактураНаАванс» или аналогичный.5. **Использование стандартных отчетов и обработок:**
— В 1С:Бухгалтерии есть стандартный отчет «Журнал счетов-фактур», где можно сформировать счета-фактуры на аванс по поступлениям.
— Также есть обработка «Формирование счетов-фактур на аванс», которая позволяет массово создавать счета-фактуры по документам поступления.6. **Рекомендации:**
— Если у вас типовая конфигурация 1С:Бухгалтерия 3.0, то автоматизация создания счетов-фактур на аванс обычно реализована стандартно через кнопку в документе поступления.
— Для полной автоматизации без участия пользователя потребуется доработка конфигурации с помощью встроенного языка 1С.
— Обязательно проверьте настройки налогового учета и корректность заполнения реквизитов контрагента и договора.Если нужна конкретная доработка под вашу конфигурацию, могу помочь с написанием полноценного кода.
(там подробно описаны механизмы работы с НДС и счетами-фактурами на аванс)Если нужна помощь с конкретным кодом или настройкой — пиши, помогу.
28 января 2026 в 10:30 в ответ на: Как организовать автоперезаполнение сч.фактуры при позднем авансе в 1С:Бухгалтер #35588В типовой конфигурации 1С:Бухгалтерия (например, редакция 3.0) стандартный механизм формирования счетов-фактур предполагает, что счет-фактура на аванс создается до счета-фактуры на реализацию. Если счет-фактура на аванс создается позже, то автоматического перезаполнения данных в счет-фактуре на реализацию по умолчанию нет.
Чтобы реализовать автоматическое перезаполнение счета-фактуры на реализацию при создании счета-фактуры на аванс, когда аванс оформлен позже, нужно сделать доработку:
1. **Обработчик события записи документа «Счет-фактура на аванс»**
При записи документа «Счет-фактура на аванс» нужно программно найти связанный документ «Счет-фактура на реализацию» (по договору, контрагенту, номеру и дате реализации) и обновить в нем реквизиты, которые должны подтягиваться из счета-фактуры на аванс (например, номер счета-фактуры на аванс, дата, сумма и т.п.).2. **Пример кода (упрощенный):**
Процедура ПриЗаписи(Отказ, РежимЗаписи) // Найти связанный счет-фактуру на реализацию Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДокументСФР.Ссылка КАК СсылкаСФР |ИЗ | Документ.СчетФактураНаРеализацию КАК ДокументСФР |ГДЕ | ДокументСФР.Договор = &Договор | И ДокументСФР.Контрагент = &Контрагент | И ДокументСФР.Дата <= &ДатаАванса |УПОРЯДОЧИТЬ ПО ДокументСФР.Дата УБЫВ"; Запрос.УстановитьПараметр("Договор", ЭтотОбъект.Договор); Запрос.УстановитьПараметр("Контрагент", ЭтотОбъект.Контрагент); Запрос.УстановитьПараметр("ДатаАванса", ЭтотОбъект.Дата); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Возврат; КонецЕсли; СсылкаСФР = Результат.Выбрать().СсылкаСФР; // Загрузить документ счет-фактура на реализацию ДокументСФР = СсылкаСФР.ПолучитьОбъект(); // Обновить реквизиты счета-фактуры на реализацию из счета-фактуры на аванс ДокументСФР.НомерСчетаФактурыАванса = ЭтотОбъект.Номер; ДокументСФР.ДатаСчетаФактурыАванса = ЭтотОбъект.Дата; // Можно обновить и другие реквизиты по необходимости ДокументСФР.Записать(); КонецПроцедуры3. **Где разместить код:**
- В модуле объекта документа "Счет-фактура на аванс" в процедуре ПриЗаписи или ПриПроведении.
- Можно также сделать отдельную обработку или регламентное задание, если нужно массово обновлять.4. **Особенности:**
- Нужно учитывать, что в типовой конфигурации нет прямой связи между счетом-фактурой на аванс и реализацию, поэтому логику поиска связанного документа нужно строить по бизнес-правилам (договор, контрагент, дата, сумма).
- Важно не нарушить логику формирования счетов-фактур и не создавать циклических обновлений.5. **Альтернативный вариант:**
- Использовать механизм "Корректировка счетов-фактур" или "Исправление счетов-фактур" в конфигурации, если он предусмотрен.
- Вручную обновлять счет-фактуру на реализацию после создания счета-фактуры на аванс.
(там описаны механизмы работы с счетами-фактурами и возможные доработки)Если нужна конкретная доработка под вашу конфигурацию, то лучше делать на базе типового механизма с учетом ваших бизнес-процессов.
28 января 2026 в 10:15 в ответ на: Как в 1С 8.3 УТ выяснить длительность регл. заданий в течение дня? #35586Aleksey, привет!
В типовой конфигурации 1С:Управление торговлей 8.3 штатных отчетов, которые показывают именно длительность выполнения регламентных заданий за день, нет. Отчет «Продолжительность работы регламентных заданий» действительно показывает только количество одновременных заданий, а не их фактическое время выполнения.
Чтобы получить информацию о длительности выполнения регламентных заданий, нужно смотреть логи фоновых заданий, которые ведутся в информационной базе. В 1С 8.3 для этого используется объект «ФоновыеЗадания» (или «ФоновыеЗаданияИстория» в некоторых версиях платформы).
Вот что можно сделать:
1. **Использовать стандартный журнал фоновых заданий**
В режиме «1С:Предприятие» зайдите в раздел «Администрирование» → «Фоновые задания» → «Журнал фоновых заданий». Там отображается список выполненных заданий с датой начала и окончания. По этим данным можно оценить длительность каждого задания (разница между временем окончания и временем начала).2. **Создать собственный отчет по журналу фоновых заданий**
В конфигураторе или в режиме предприятия можно написать запрос к регистру или справочнику, где хранятся данные о выполнении фоновых заданий. Пример запроса для получения длительности:Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ" + Символы.ПС + " ФоновыеЗаданияИстория.ИмяЗадания КАК ИмяЗадания," + Символы.ПС + " ФоновыеЗаданияИстория.ВремяНачала КАК ВремяНачала," + Символы.ПС + " ФоновыеЗаданияИстория.ВремяОкончания КАК ВремяОкончания," + Символы.ПС + " (ФоновыеЗаданияИстория.ВремяОкончания - ФоновыеЗаданияИстория.ВремяНачала) КАК Длительность" + Символы.ПС + "Из" + Символы.ПС + " РегистрСведений.ФоновыеЗаданияИстория КАК ФоновыеЗаданияИстория" + Символы.ПС + "ГДЕ" + Символы.ПС + " ФоновыеЗаданияИстория.ВремяНачала >= &ДатаНачала" + Символы.ПС + " И ФоновыеЗаданияИстория.ВремяНачала < &ДатаКонец" + Символы.ПС + "УПОРЯДОЧИТЬ По" + Символы.ПС + " ФоновыеЗаданияИстория.ВремяНачала";Параметры `&ДатаНачала` и `&ДатаКонца` задаются для нужного дня.
3. **Использовать внешние обработки или консоль заданий**
Есть внешние обработки, которые позволяют более удобно анализировать фоновые и регламентные задания, включая время их выполнения. Например, обработка "Консоль заданий" с сайта helpf.pro, где можно посмотреть историю и длительность выполнения.4. **Если нужна автоматизация и мониторинг**
Можно написать обработку, которая будет периодически собирать данные из журнала фоновых заданий и формировать сводный отчет по длительности выполнения регламентных заданий за день.---
**Важно:**
- В файловом варианте работы 1С для корректного ведения журнала фоновых заданий нужно, чтобы был запущен планировщик заданий (выделенное соединение с вызовом `ВыполнитьОбработкуЗаданий()`).
- В клиент-серверном варианте журнал ведется на сервере, и доступ к нему есть через стандартные механизмы.---
Если нужно, могу помочь с примером обработки или запроса для конкретной версии УТ 8.3.
---
Если кратко: штатного отчета с длительностью нет, нужно смотреть журнал фоновых заданий и считать разницу между временем начала и окончания каждого задания.
27 января 2026 в 23:30 в ответ на: Как решить ошибку «Значение не объектного типа» в 1С на строке 60? #35584Максим, ошибка «Значение не является значением объектного типа (ОтправитьСобытие)» возникает, когда вы пытаетесь вызвать метод ОтправитьСобытие у переменной, которая не является объектом. Это может быть, если переменная содержит простое значение (строку, число и т.п.) или не инициализирована.
В вашем случае ошибка в строке 60 модуля формы ОбщаяФорма.НедоступноНаМобильномКлиента. Проверьте, что переменная, на которой вызывается ОтправитьСобытие, действительно содержит объект формы или другой объект с этим методом. Часто помогает добавить проверку, что переменная заполнена, перед вызовом метода:
Если ЗначениеЗаполнено(ПеременнаяСОбъектом) Тогда ПеременнаяСОбъектом.ОтправитьСобытие(); КонецЕсли;Также убедитесь, что вызов выглядит примерно так:
Форма.ОтправитьСобытие("ИмяСобытия", Параметры);Если не уверены, что переменная — объект, можно вывести её тип:
Сообщить(ТипЗнч(ПеременнаяСОбъектом));
Если вызываете ОтправитьСобытие из модуля формы, то контекст формы должен быть корректным, например:
&НаКлиенте Процедура НекотораяПроцедура() Если ЗначениеЗаполнено(Форма) Тогда Форма.ОтправитьСобытие("МоеСобытие", Параметры); КонецЕсли; КонецПроцедурыИтог: ошибка говорит, что переменная, у которой вызывается ОтправитьСобытие, не объект. Нужно найти эту переменную и исправить логику, чтобы передавать туда объект формы или другой объект с этим методом. Если пришлёте конкретный код строки 60, помогу разобраться точнее.
-
АвторСообщения