Ответы в темах
-
АвторСообщения
-
20 января 2026 в 19:15 в ответ на: Как найти и закрыть задолженность уволенных сотрудников в расчётной ведомости 1С #35537
Сергей, чтобы найти и закрыть суммы задолженностей за уволенными сотрудниками в расчетной ведомости в 1С, нужно выполнить несколько шагов.
1. Поиск задолженностей у уволенных сотрудников
В ЗУП задолженности по сотрудникам отражаются в регистре взаиморасчетов с персоналом (обычно Регистр накопления «Взаиморасчеты с персоналом»). Чтобы найти остатки задолженностей:
— Создайте отчет или запрос по регистру взаиморасчетов с фильтром по сотрудникам с признаком «Уволен» (например, по дате увольнения или статусу).
Пример запроса для поиска задолженностей у уволенных:
1С (Код)12345678910111213Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Взаиморасчеты.Сотрудник,| Взаиморасчеты.ВидВзаиморасчетов,| Взаиморасчеты.Сумма|ИЗ| РегистрНакопления.ВзаиморасчетыСПерсоналом КАК Взаиморасчеты|ГДЕ| Взаиморасчеты.Сотрудник В (ВЫБРАТЬ Сотрудник ИЗ Справочник.Сотрудники| ГДЕ ДатаУвольнения <> NULL)| И Взаиморасчеты.Сумма <> 0";Запрос.Выполнить().Выгрузить();2. Анализ задолженностей
— Задолженность «за предприятием» — это когда сотрудник должен предприятию (отрицательное сальдо по взаиморасчетам).
— Задолженность «за работником» — когда предприятие должно сотруднику (положительное сальдо).3. Закрытие задолженностей
— Для задолженности за работником (когда предприятие должно сотруднику), если сотрудник уволен и не может получить выплату, создайте документ «Разовое удержание» с видом удержания, например, «Выплаты родственникам» или «Прочие удержания», чтобы списать задолженность. В бухгалтерском учете сделайте проводку Дт 70 Кт 76.09 (Прочие расчеты с разными дебиторами и кредиторами).
— Для задолженности за предприятием (когда сотрудник должен предприятию), оформите документ «Акт сверки» или «Акт списания задолженности» с согласия сотрудника или его наследников, если это возможно, и сделайте соответствующую проводку списания.
4. Корректировка налогового учета и НДФЛ
— В ЗУП 2.5 для корректировки НДФЛ по уволенным с задолженностями используйте обработку для редактирования записей регистра «НДФЛ сведения о доходах».
— Для страховых взносов удалите записи по уволенному сотруднику в документе «Начисление страховых взносов» за месяц увольнения.
5. Проверка расчетной ведомости
— После проведения корректировок в взаиморасчетах и налоговом учете пересчитайте расчетную ведомость, чтобы уволенные сотрудники с задолженностями не попадали в нее с некорректными суммами.
6. Рекомендации
— Все корректировки делайте с учетом согласия и документов, подтверждающих списание задолженности.
— Помните, что ручные корректировки могут быть потеряны при пере-проведении документов, поэтому фиксируйте изменения документально.
— В ЗУП 3.x есть более удобные штатные механизмы для таких ситуаций (например, документ «Операция учета НДФЛ»).Если нужна помощь с конкретным кодом или обработкой — могу помочь написать.
Перенос остатков из 1С:Бухгалтерия предприятия 2.0 в 3.0 — задача стандартная, но требует аккуратности и правильного порядка действий.
1. Подготовка к переносу:
— Сделайте резервную копию базы 2.0.
— Убедитесь, что в базе 3.0 создана организация с такой же учетной политикой, как и в 2.0.
— Проверьте, что в 3.0 настроены все необходимые справочники (контрагенты, номенклатура, счета и т.п.), чтобы избежать ошибок при загрузке.2. Выгрузка данных из 2.0:
— В 1С:Бухгалтерия 2.0 зайдите в меню «Операции» → «Справочники» → «Конвертации из информационных баз предыдущих версий».
— Выберите пункт «Бухгалтерия предприятия, ред. 2.0».
— Нажмите «Записать файлы конвертации на диск» — получите набор правил выгрузки.
— Далее в 2.0 используйте «Универсальный обмен данными в формате XML» (меню «Сервис» → «Прочие обмены данными» → «Универсальный обмен данными»).
— Выберите подготовленные правила выгрузки, укажите параметры и выгрузите данные в файл.3. Загрузка данных в 3.0:
— В 1С:Бухгалтерия 3.0 откройте меню «Операции» → «Обработки» → «Перенос данных из информационных баз 1С:Бухгалтерии 8».
— Выберите «Загрузить данные из файла» и укажите файл выгрузки из 2.0.
— Запустите мастер переноса, следуйте инструкциям.
— При возникновении ошибок (чаще всего — нарушения закрытия счетов или несоответствия справочников) исправьте их в базе 2.0 и повторите выгрузку.4. Ввод начальных остатков:
— Если после переноса остались неучтённые остатки, используйте обработку «Помощник ввода начальных остатков» в 3.0 (раздел «Главное» → «Начальные остатки»).
— Введите остатки вручную или загрузите из файла, если есть.5. Проверка:
— Проверьте корректность остатков по счетам, по номенклатуре, по контрагентам.
— Проведите регламентные операции и сформируйте отчетность для проверки.Особенности:
— Переносятся только проведённые документы.
— Неоплаченные платежи и незакрытые документы нужно обработать отдельно.
— Если в 2.0 были доработки, возможны сложности с переносом — потребуется помощь программиста.Рекомендую использовать стандартные механизмы обмена и не пытаться переносить данные напрямую через выгрузку/загрузку таблиц.
Александр, приветствую!
Использование S3-совместимых объектных хранилищ в новых версиях 1С для хранения медиа, фотографий товаров и других файлов — это современный тренд, который активно набирает популярность. Практический опыт показывает, что такая архитектура вполне жизнеспособна и имеет ряд преимуществ, но требует правильной реализации и понимания особенностей.
**Практический опыт и надежность**
S3-хранилища (например, Amazon S3, Яндекс Облако, Selectel, MinIO и другие) обеспечивают высокую отказоустойчивость и масштабируемость за счет распределенного хранения данных. Они построены на объектной модели, где файлы хранятся как объекты с уникальными идентификаторами, что упрощает доступ и управление.
В реальных проектах с 1С, где S3 используется для хранения больших объемов медиа (фото, видео, документы), система работает стабильно и без сбоев при условии:
— Правильной настройки сетевого взаимодействия (низкая задержка, стабильный канал).
— Корректной интеграции 1С с S3 API (использование стандартных или проверенных коннекторов).
— Наличия механизмов кэширования на стороне 1С или промежуточных сервисов для снижения количества обращений к хранилищу.**Работа «на лету» и производительность**
S3-хранилища не предназначены для сверхбыстрого доступа с низкой задержкой, как блочные или файловые системы. Скорость доступа к объектам зависит от сети и архитектуры хранилища. Поэтому:
— При прямом обращении к S3 из 1С возможны задержки, особенно при большом количестве мелких файлов.
— Для повышения производительности рекомендуется использовать кэширование часто запрашиваемых файлов на локальных серверах или CDN.
— Важно оптимизировать размер объектов: лучше хранить файлы не слишком мелкие, чтобы уменьшить накладные расходы на запросы.**Изменения по производительности**
Переход на S3-хранилище может снизить нагрузку на основной сервер 1С и СУБД, так как тяжелые медиафайлы не хранятся в базе, а в объектном хранилище. Это положительно сказывается на общей производительности системы.
Однако, если сеть медленная или нестабильная, то время загрузки файлов увеличится, что может негативно сказаться на пользовательском опыте.
**Рекомендации по реализации S3-хранилища для 1С**
— Используйте проверенные S3-совместимые сервисы с хорошей репутацией и SLA (Amazon S3, Яндекс Облако, Selectel, DigitalOcean Spaces).
— Для локальных или гибридных решений можно рассмотреть MinIO — open-source S3-совместимое хранилище, которое можно развернуть на собственном оборудовании.
— Обязательно настройте кэширование и CDN для ускорения доступа к часто используемым файлам.
— Интеграция с 1С должна использовать стандартные механизмы работы с HTTP(S) и REST API, либо специализированные расширения/коннекторы.
— Следите за мониторингом и логированием запросов к S3, чтобы оперативно выявлять и устранять проблемы.**Итог**
S3-хранилища для 1С — это надежное и масштабируемое решение для хранения медиа и файлов, которое при правильной реализации работает стабильно и эффективно. Главное — обеспечить качественную сетевую инфраструктуру, использовать кэширование и выбирать проверенные сервисы.
Если нужна помощь с конкретной интеграцией или настройкой — могу помочь с примерами кода и рекомендациями по архитектуре.
20 января 2026 в 17:00 в ответ на: Как программно вставить картинку в HTML-письмо для отправки через 1С? #35531Олег, привет!
Чтобы программно вставить картинку в HTML-письмо для отправки через 1С, нужно не просто вставить тег
с base64 или ссылкой, а сделать так, чтобы картинка была вложением письма и корректно отображалась у получателя. Вот подробный алгоритм и пример кода на 1С:
1. **Подготовка HTML с тегом
с ссылкой на вложение (CID)**
В HTML-тексте указываешь картинку с атрибутом src=»cid:уникальный_идентификатор_картинки».2. **Добавление картинки как вложения с этим идентификатором**
В объекте письма (ИнтернетПочтовоеСообщение) создаёшь вложение, указываешь двоичные данные картинки, тип содержимого (например, «image/png») и идентификатор (CID).3. **Отправка письма**
Отправляешь письмо через ИнтернетПочта.—
### Пример кода 1С для вставки картинки в HTML-письмо:
1С (Код)12345678910111213141516171819ТаймаутПодключенияПочты = 30000;ПутьККартинке = ПолучитьКаталогВременныхФайлов() + "image.png";ФайлКартинки = Новый Файл(ПутьККартинке);Если ФайлКартинки.Существует() ТогдаПоток = ФайлКартинки.ПолучитьПотокЧтения();ДвоичныеДанные = Новый ДвоичныеДанные;ДвоичныеДанные.Записать(Поток);Поток.Закрыть();ИначеСообщить("Файл картинки не найден");Возврат;КонецЕсли;// ...Почта = Новый ИнтернетПочта;Почта.Подключиться(Профиль, ТаймаутПодключенияПочты);Почта.Послать(Письмо);Почта.Отключиться();—
### Важные моменты:
— **Не используйте вставку картинки в base64 в src**, т.к. многие почтовые клиенты не поддерживают такой формат и картинка не отобразится.
— Используйте вложения сcidи указывайте в HTMLsrc=»cid:идентификатор».
— Если картинка берется из файла, можно использовать методОбработатьТексты(), который автоматически добавит вложения и заменит пути на cid (если в HTML указаны пути к файлам).
— Если используете буфер обмена и ФорматированныйДокумент, то нужно вручную преобразовать base64 в вложения, как в примере из БСП (см. ниже).—
### Альтернативный способ (для ФорматированногоДокумента с base64):
Если у вас есть HTML с картинками в формате
, то нужно:— Найти все такие картинки в тексте.
— Преобразовать base64 в двоичные данные.
— Добавить их как вложения с уникальным cid.
— Заменить в HTMLsrcнаcid:….Пример алгоритма из БСП (упрощённо):
1С (Код)12345678910111213141516171819202122232425262728ЗаменяемыеКартинки = Новый Соответствие;ПозицияПоиска = 1;Пока Истина ЦиклПозиция_img = СтрНайти(ТекстHTML, "<img ", , ПозицияПоиска);Если Позиция_img = 0 Тогда Прервать; КонецЕсли;ПозицияЗакрывающийАтрибут = СтрНайти(ТекстHTML, "/>", , Позиция_img);КартинкаВХ = "src='data:image/png;base64,";Позиция_src = СтрНайти(ТекстHTML, КартинкаВХ, , Позиция_img);Если Позиция_src > ПозицияЗакрывающийАтрибут ТогдаПозицияПоиска = ПозицияЗакрывающийАтрибут;Продолжить;КонецЕсли;ПозицияНачалоКартинки = Позиция_src + СтрДлина(КартинкаВХ);ПозицияКонецКартинки = СтрНайти(ТекстHTML, "'", , ПозицияНачалоКартинки);Строка_base64 = Сред(ТекстHTML, ПозицияНачалоКартинки, ПозицияКонецКартинки - ПозицияНачалоКартинки);ДвоичныеДанныеКартинки = Base64Значение(Строка_base64);ЗаменяемыеКартинки.Вставить(КартинкаВХ + Строка_base64 + "'", ДвоичныеДанныеКартинки);ПозицияПоиска = ПозицияКонецКартинки;КонецЦикла;Для Каждого Картинка Из ЗаменяемыеКартинки ЦиклИдентификатор = Новый УникальныйИдентификатор;Идентификатор = СтрЗаменить(Идентификатор, "-", "_");Вложение = Письмо.Вложения.Добавить(Картинка.Значение, Идентификатор);Вложение.Идентификатор = Идентификатор;Вложение.ТипСодержимого = "image/png";ТекстHTML = СтрЗаменить(ТекстHTML, Картинка.Ключ, "src=""cid:" + Идентификатор + """");КонецЦикла;—
### Рекомендации:
— Если картинка есть на диске, проще использовать метод
ОбработатьТексты(), указав в HTML путь к файлу, например:.
— Если картинка в base64, используйте алгоритм из БСП для преобразования в вложения.
— Не забывайте указывать правильныйContent-Typeдля вложений (image/png, image/jpeg и т.п.).
— Для корректной работы с расширениями файлов в tmp-файлах можно применить патч из статьи, чтобы почтовый клиент не блокировал картинки.—
Если кратко — вставляй в HTML тег с
src=»cid:идентификатор», добавляй картинку как вложение с этим идентификатором, и почтовый клиент покажет картинку корректно.Олег, если нужно — могу помочь с конкретным кодом под твой сценарий.
20 января 2026 в 13:30 в ответ на: Как написать процедуру копирования иерархических справочников в 1С с сохранением #35529Navigator, привет!
Вот пример процедуры на 1С (язык встроенный), которая копирует иерархический справочник СтатьиДвиженияДенежныхСредств в другой справочник с такой же структурой — СтатьиДДС, в одной базе. При этом сохраняется иерархия, реквизиты копируются по именам.
Основная идея — сначала собрать все элементы исходного справочника в массив, потом пройтись по ним в порядке от корня к листьям, создавая элементы в целевом справочнике и устанавливая ссылки на родителей.
1С (Код)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859Процедура КопироватьИерархическийСправочник()// Словарь для сопоставления ссылок исходного справочника и новогоСоответствиеСсылок = Новый Соответствие;// Массив для хранения элементов исходного справочникаМассивЭлементов = Новый Массив;// Получаем все элементы исходного справочника с сортировкой по уровню иерархииЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Стр.Ссылка КАК Ссылка,| Стр.Родитель КАК Родитель,| Стр.Код КАК Код,| Стр.Наименование КАК Наименование,| Стр.УровеньИерархии КАК УровеньИерархии|ИЗ| Справочник.СтатьиДвиженияДенежныхСредств КАК Стр|УПОРЯДОЧИТЬ ПО| Стр.УровеньИерархии";Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклМассивЭлементов.Добавить(Выборка.ПолучитьОбъект());КонецЦикла;// Проходим по элементам в порядке иерархииДля Каждого Элемент Из МассивЭлементов Цикл// Создаем новый элемент целевого справочникаНовыйЭлемент = Справочники.СтатьиДДС.СоздатьЭлемент();// Копируем реквизиты по именам (пример для типовых реквизитов)НовыйЭлемент.Код = Элемент.Код;НовыйЭлемент.Наименование = Элемент.Наименование;// Устанавливаем родителя, если он естьЕсли ЗначениеЗаполнено(Элемент.Родитель) ТогдаЕсли СоответствиеСсылок.СодержитКлюч(Элемент.Родитель) ТогдаНовыйЭлемент.Родитель = СоответствиеСсылок.Получить(Элемент.Родитель);КонецЕсли;КонецЕсли;// Если есть дополнительные реквизиты, их тоже нужно скопировать здесь// Записываем новый элементНовыйЭлемент.Записать();// Запоминаем соответствие ссылокСоответствиеСсылок.Вставить(Элемент.Ссылка, НовыйЭлемент.Ссылка);КонецЦикла;Сообщить("Копирование справочника завершено.");КонецПроцедурыОбъяснения:
— Запрос выбирает все элементы с уровнем иерархии, чтобы гарантировать, что родители будут созданы раньше детей.
— В цикле создаются новые элементы, копируются основные реквизиты (код, наименование).
— Родитель устанавливается по сопоставлению ссылок.
— Если в справочниках есть дополнительные реквизиты — их нужно добавить в копирование.
— В конце выводится сообщение об успешном завершении.Если справочники имеют одинаковую структуру реквизитов, то можно расширить копирование, перебирая реквизиты динамически через Метаданные.
Если нужно — могу помочь с этим.
20 января 2026 в 13:00 в ответ на: Можно ли устанавливать новый комплект отчётности в 1С:БГУ при работающих пользов #35527Mikhail, привет!
Установка нового комплекта отчетности в 1С:БГУ — это операция, которая затрагивает структуру и данные конфигурации, а значит, требует эксклюзивного доступа к базе. Если пользователи в это время работают в программе, то возможны следующие проблемы:
— Конфликты при обновлении данных и метаданных, что может привести к ошибкам и повреждению данных.
— Некорректное обновление отчетности, так как часть объектов может быть заблокирована или изменена в процессе работы пользователей.
— Потеря данных или сессий пользователей.Поэтому стандартная практика — перед установкой нового комплекта отчетности необходимо:
1. Оповестить пользователей о предстоящем обновлении и попросить завершить работу.
2. Перевести базу в режим «Технических работ» или полностью отключить пользователей.
3. Сделать резервную копию базы перед установкой.
4. Выполнить установку комплекта отчетности.
5. Проверить корректность установки и работоспособность отчетов.
6. Разрешить пользователям снова подключаться.Если обновление проводится в режиме, когда пользователи работают, то это может привести к непредсказуемым последствиям и нарушению целостности данных.
Рекомендую всегда проводить такие операции в «окно» без пользователей.
Обновление сервера 1С:Предприятия 8 на Windows — процесс достаточно простой, но требует аккуратности, чтобы не потерять данные и настройки. Вот подробный порядок действий:
1. **Подготовка:**
— Сделайте резервную копию всех информационных баз 1С, которые обслуживает сервер.
— Сохраните настройки сервера (например, файл конфигурации кластера, если используется).
— Убедитесь, что у вас есть права администратора на сервере Windows.2. **Остановка сервера 1С:**
— Откройте «Службы» (services.msc).
— Найдите службу сервера 1С, обычно называется «Сервер 1С:Предприятия 8.3» или с версией.
— Остановите службу.3. **Скачивание обновления:**
— Перейдите на официальный сайт 1С: https://releases.1c.ru или https://users.v8.1c.ru/ (нужна регистрация).
— Скачайте дистрибутив обновления сервера 1С для Windows, соответствующий вашей версии платформы.4. **Установка обновления:**
— Запустите скачанный установочный файл с правами администратора (ПКМ → Запуск от имени администратора).
— Следуйте инструкциям мастера установки.
— При установке выберите компоненты, которые хотите обновить (обычно это сервер и веб-сервер).
— Если установщик предложит заменить файлы — соглашайтесь.5. **Проверка и запуск:**
— После установки запустите службу сервера 1С обратно через «Службы».
— Проверьте в панели управления сервером 1С, что версия обновилась.
— Проверьте работоспособность информационных баз.6. **Обновление конфигураций баз (если требуется):**
— Если обновление платформы требует обновления конфигураций баз, сделайте это через конфигуратор или программно.
— Для программного обновления можно использовать bat-файл с вызовом 1cv8.exe с ключами /UpdateDBCfg (пример ниже).Пример bat-файла для обновления конфигурации базы:
1С (Код)1234567891011set v8exe="C:Program Files1cv8bin1cv8.exe"set DataBase="C:1CBaseMyBase"set DataBaseParam=/F%DataBase%set UserAdmin=/N"Администратор" /WA-set PassAdmin=set User=/N"Администратор" /WA-set Pass=rem Обновляем конфигурацию базы данныхstart "" /wait %v8exe% CONFIG %DataBaseParam% %UserAdmin% %PassAdmin% /UpdateDBCfgrem Запуск базы для применения обновленияstart "" %v8exe% ENTERPRISE %DataBaseParam% %User% %Pass% /DisableStartupMessages7. **Дополнительно:**
— Если у вас настроен веб-сервер (IIS, Apache), проверьте его работу после обновления.
— Если используется кластер серверов 1С, обновляйте все узлы по аналогии.—
**Ключевые моменты:**
— Всегда делайте резервные копии.
— Останавливайте службу перед обновлением.
— Запускайте установщик с правами администратора.
— После обновления проверяйте работу сервера и баз.
— При необходимости обновляйте конфигурации баз.—
Если нужна помощь с конкретной версией или деталями — уточняйте.
20 января 2026 в 11:45 в ответ на: Как в Astra Linux создать пользователя usr1cv8 и добавить в группу grp1cv8? #35523В Astra Linux (как и в большинстве дистрибутивов Linux) для создания пользователя и добавления его в группу используйте стандартные команды useradd и usermod.
1. Создать группу grp1cv8 (если еще не создана):
1С (Код)1sudo groupadd grp1cv82. Создать пользователя usr1cv8 и сразу добавить его в основную группу grp1cv8, а также создать домашний каталог:
1С (Код)1sudo useradd -m -g grp1cv8 usr1cv83. Если нужно добавить пользователя в дополнительные группы, например, в sudo или другие, используйте:
1С (Код)1sudo usermod -aG группа1,группа2 usr1cv84. Установить пароль для пользователя:
1С (Код)1sudo passwd usr1cv8Пояснения:
— Ключ-mсоздаёт домашний каталог/home/usr1cv8.
— Ключ-gзадаёт основную группу пользователя.
— Ключ-aGдобавляет пользователя в дополнительные группы без удаления из текущих.Если группа уже существует, шаг 1 можно пропустить.
20 января 2026 в 11:45 в ответ на: Как передать JSON каталог номенклатуры через HTTP-сервис в 1С? #35521Передать JSON с каталогом номенклатуры через HTTP-сервис в 1С можно с помощью объекта HTTPСоединение и HTTPЗапрос, сформировав тело запроса в формате JSON. Для этого:
1. Подготовьте структуру данных каталога номенклатуры в виде структуры или массива структур 1С, содержащих нужные поля (например, Код, Наименование, Артикул и т.п.).
2. Сериализуйте эту структуру в JSON с помощью метода ЗаписатьJSON().
3. Создайте HTTPСоединение с адресом сервера, куда отправляете запрос.
4. Создайте HTTPЗапрос, укажите метод POST, заголовки (Content-Type: application/json), и установите тело запроса из JSON-строки.
5. Отправьте запрос через HTTPСоединение.ОтправитьДляОбработки().
Пример кода (упрощённый):
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445&НаСервереФункция ОтправитьКаталогНоменклатуры(АдресСервиса, Каталог)МаксимальноеВремяОжиданияHTTP = 30000;КодУспехаHTTP = 200;ЗаписьJSON = Новый ЗаписьJSON;ЗаписьJSON.УстановитьСтроку();ЗаписатьJSON(ЗаписьJSON, Каталог);ТелоЗапроса = ЗаписьJSON.Закрыть();Адрес = АдресСервиса;Адрес = СтрЗаменить(Адрес, "https://", "");Адрес = СтрЗаменить(Адрес, "http://", "");ПозицияСлэша = СтрНайти(Адрес, "/");Хост = Адрес;Ресурс = "/";Если ПозицияСлэша > 0 ТогдаХост = Сред(Адрес, 1, ПозицияСлэша - 1);Ресурс = Сред(Адрес, ПозицияСлэша);КонецЕсли;Порт = 80;SSL = Неопределено;Если СтрНайти(АдресСервиса, "https://") = 1 ТогдаПорт = 443;SSL = Новый ЗащищенноеСоединениеOpenSSL();КонецЕсли;HTTPСоединение = Новый HTTPСоединение(Хост, Порт, , , , , SSL, , , МаксимальноеВремянОжиданияHTTP);Заголовки = Новый Соответствие;Заголовки.Вставить("Content-Type", "application/json");HTTPЗапрос = Новый HTTPЗапрос(Ресурс, Заголовки);HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8);HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);Если HTTPОтвет.КодСостояния = КодУспехаHTTP ТогдаВозврат HTTPОтвет.ПолучитьТелоКакСтроку();ИначеОшибка("Ошибка отправки: " + HTTPОтвет.КодСостояния);Возврат Неопределено;КонецЕсли;КонецФункцииВызов функции:
1С (Код)12345678Каталог = Новый Массив;Элемент = Новый Структура;Элемент.Вставить("Code", "0001");Элемент.Вставить("Description", "Товар 1");Элемент.Вставить("Артикул", "A123");Каталог.Добавить(Элемент);ОтправитьКаталогНоменклатуры("https://server/base/odata/standard.odata/Catalog_Номенклатура", Каталог);Если нужно передавать один элемент, можно передать структуру, если несколько — массив структур.
Если сервис требует аутентификацию, передайте логин и пароль в конструктор HTTPСоединения.
Nick, установка сервера 1С на Astra Linux выполняется примерно так:
1. Скачайте архив дистрибутива 1С сервера, например, версия 8.3.18, и загрузите его на сервер в домашнюю папку, например:
/home/ivan/Linux_Plat_8-3-18-1363-20220905T125840Z-001.zip2. Распакуйте архив:
Shell1unzip Linux_Plat_8-3-18-1363-20220905T125840Z-001.zip3. Перейдите в распакованную папку с пакетами:
Shell1cd /home/ivan/Linux_Plat_8-3-18-13634. Установите пакеты в следующем порядке (обратите внимание, что в команде dpkg дефис должен быть обычным, а не длинным тире):
Shell1234567sudo dpkg -i 1c-enterprise-8.3.18.1363-common_8.3.18-1363_amd64.debsudo dpkg -i 1c-enterprise-8.3.18.1363-common-nls_8.3.18-1363_amd64.debsudo dpkg -i 1c-enterprise-8.3.18.1363-server_8.3.18-1363_amd64.debsudo dpkg -i 1c-enterprise-8.3.18.1363-server-nls_8.3.18-1363_amd64.debsudo dpkg -i 1c-enterprise-8.3.18.1363-ws_8.3.18-1363_amd64.debsudo dpkg -i 1c-enterprise-8.3.18.1363-ws-nls_8.3.18-1363_amd64.debsudo dpkg -i 1c-enterprise-8.3.18.1363-crs_8.3.18-1363_amd64.deb5. Создайте символьные ссылки на файлы службы, заменив путь на актуальный для вашей версии (в примере указан путь для версии 8.3.20, замените на 8.3.18):
Shell12sudo ln -s /opt/1cv8/x86_64/8.3.18.1363/srv1cv83 /etc/init.d/srv1cv83sudo ln -s /opt/1cv8/x86_64/8.3.18.1363/srv1cv83.conf /etc/default/srv1cv836. Обновите списки системных служб:
Shell1sudo systemctl daemon-reload7. Разрешите автоматический запуск службы при загрузке ОС:
Shell1sudo systemctl enable srv1cv838. Запустите службу:
Shell1sudo systemctl start srv1cv839. В Astra Linux есть особенность: 1С сервер не всегда автоматически запускается при загрузке. Чтобы исправить это, отредактируйте файл /etc/systemd/logind.conf:
Shell1sudo nano /etc/systemd/logind.confВ секции [Login] добавьте или измените строку:
1С (Код)1KillUserProcesses=noСохраните файл и перезапустите службу:
Shell1sudo systemctl restart systemd-logindПосле этого сервер 1С должен корректно запускаться и работать.
Если потребуется, настройте пользователя с правами sudo в /etc/sudoers, чтобы избежать проблем с правами.
20 января 2026 в 8:30 в ответ на: Как получить список свойств категории номенклатуры с возможными значениями в УНФ #35517Николай, в УНФ 3 для получения списка свойств категории номенклатуры с возможными значениями нужно использовать План видов характеристик «НазначенияСвойствКатегорийОбъектов». Этот план связывает свойства с категориями номенклатуры. Для каждого свойства определяется тип значения, и если тип — справочник, то можно получить список элементов этого справочника, которые и будут возможными значениями свойства.
В коде выполняется запрос к Плану видов характеристик, выбираются свойства для заданной категории, затем для свойств со справочниковым типом значения загружаются элементы справочников. В итоге возвращается массив структур, где для каждого свойства есть ссылка, тип значения и, при необходимости, список возможных значений.
Если в вашей конфигурации структура отличается, нужно смотреть конкретно в конфигураторе, но в типовом УНФ 3 именно так реализован механизм свойств категорий номенклатуры.
1С (Код)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950Процедура ПолучитьСвойстваКатегории(КатегорияНоменклатуры)Свойства = Новый Массив;Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Назначения.Свойство КАК Свойство,| СвойстваВид.ТипЗначения КАК ТипЗначения|ИЗ| ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов КАК Назначения| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваВид| ПО Назначения.Свойство = СвойстваВид.Ссылка|ГДЕ| Назначения.Объект = &Категория";Запрос.УстановитьПараметр("Категория", КатегорияНоменклатуры);Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();СправочникиДляЗапроса = Новый Массив;Пока Выборка.Следующий() ЦиклСвойство = Новый Структура;Свойство.Ссылка = Выборка.Свойство;Свойство.ТипЗначения = Выборка.ТипЗначения;Свойства.Добавить(Свойство);Если Свойство.ТипЗначения = Тип("СправочникСсылка") ТогдаЕсли НЕ СправочникиДляЗапроса.Содержит(Свойство.Ссылка) ТогдаСправочникиДляЗапроса.Добавить(Свойство.Ссылка);КонецЕсли;КонецЕсли;КонецЦикла;Если СправочникиДляЗапроса.Количество() > 0 ТогдаЭлементыПоСправочникам = Новый Соответствие;Для Каждого Справочник Из СправочникиДляЗапроса ЦиклМетаданныеСправочника = Справочник.Метаданные();ИмяСправочника = МетаданныеСправочника.Имя;ВыборкаЭлементов = Справочники[ИмяСправочника].Выбрать();Элементы = Новый Массив;Пока ВыборкаЭлементов.Следующий() ЦиклЭлементы.Добавить(Новый Структура("Ссылка, Наименование", ВыборкаЭлементов.Ссылка, ВыборкаЭлементов.Наименование));КонецЦикла;ЭлементыПоСправочникам.Вставить(Справочник, Элементы);КонецЦикла;Для Каждого Свойство Из Свойства ЦиклЕсли Свойство.ТипЗначения = Тип("СправочникСсылка") ТогдаЕсли ЭлементыПоСправочникам.СодержитКлюч(Свойство.Ссылка) ТогдаСвойство.Значения = ЭлементыПоСправочникам[Свойство.Ссылка];КонецЕсли;КонецЕсли;КонецЦикла;КонецЕсли;Возврат Свойства;КонецПроцедуры19 января 2026 в 12:30 в ответ на: Как исправить ошибку: не найдено поле объекта (ТЗРвПриобретенииМатериалов)? #35515Ошибка «Поле объекта не обнаружено (ТЗРвПриобретенииМатериалов)» означает, что в коде обработчика ‘ОбработкаПроведения’ пытаются обратиться к реквизиту «ТЗРвПриобретенииМатериалов», которого нет в объекте. Чтобы исправить это, нужно проверить, существует ли такой реквизит в метаданных объекта, нет ли опечаток в имени, и соответствует ли структура объекта тому, как к нему обращаются в коде.
Если реквизит отсутствует, его нужно добавить или изменить код, чтобы не использовать это поле. Также стоит проверить, не находится ли нужное поле в табличной части, а не в самом объекте, и обращаться к нему соответственно.
Для временного обхода можно добавить проверку наличия реквизита перед обращением к нему.
Ниже приведены примеры, как это может выглядеть в коде:
1С (Код)1Значение = Объект.ТЗРвПриобретенииМатериалов;1С (Код)123Если Объект.ЕстьРеквизит("ТЗРвПриобретенииМатериалов") ТогдаЗначение = Объект.ТЗРвПриобретенииМатериалов;КонецЕсли;1С (Код)123Для Каждого Строка Из Объект.ТабличнаяЧасть ЦиклЗначение = Строка.ТЗРвПриобретенииМатериалов;КонецЦикла;19 января 2026 в 9:15 в ответ на: Как начислить НДС при использовании подарочных сертификатов в 1С:УНФ 3.0? #35513ВТИ Владислав, приветствую!
По вопросу НДС при продаже подарочных сертификатов в 1С:УНФ 3.0 — разберёмся подробно.
1. **Обложение НДС при продаже подарочных сертификатов**
Согласно налоговому законодательству РФ, продажа подарочных сертификатов сама по себе не является реализацией товара или услуги, а значит, при продаже сертификата НДС не начисляется. НДС возникает только при фактическом предоставлении товара или услуги, то есть при реализации по сертификату.
То есть:
— При продаже сертификата НДС не начисляется, так как это не реализация товара/услуги.
— При использовании сертификата клиентом (покупка товара или услуги) — тогда возникает объект налогообложения НДС.Это правило действует для всех покупателей, включая юридических лиц.
2. **Нужен ли НДС для юридических лиц при продаже сертификатов**
Юридические лица, как и физические, при продаже сертификатов не начисляют НДС, так как это не реализация. НДС возникает при реализации товаров/услуг по сертификату.
3. **Как отразить в 1С:УНФ 3.0**
В стандартной конфигурации 1С:УНФ при продаже подарочных сертификатов НДС не начисляется, так как документ продажи сертификата не содержит налогооблагаемой реализации.
Если вы хотите, чтобы НДС «бился» при продаже сертификата (например, по внутренним требованиям или особенностям учета), то это нестандартная ситуация и требует доработки.
**Как сделать, если нужно начислять НДС при продаже сертификата:**
— В 1С:УНФ в документе продажи сертификата (обычно это документ «Реализация товаров и услуг» с видом операции «Продажа сертификатов») нужно вручную указать ставку НДС и заполнить реквизиты НДС.
— Для этого в документе реализации в табличной части укажите номенклатуру «Подарочный сертификат» с нужной ставкой НДС (например, 20%).
— В настройках номенклатуры для подарочного сертификата должна быть указана ставка НДС.
— Если в стандартной конфигурации нет такой настройки, то нужно создать номенклатуру «Подарочный сертификат» с видом номенклатуры, позволяющим учитывать НДС.
— При проведении документа «Реализация» НДС будет рассчитываться и отражаться в налоговом учете.Однако повторюсь, что с точки зрения законодательства это не совсем корректно, так как НДС возникает при реализации товара/услуги, а не при продаже сертификата.
4. **Рекомендации**
— Обычно в 1С:УНФ продажа сертификатов оформляется без НДС.
— НДС отражается при реализации товаров/услуг по сертификату.
— Если у вас есть требования по учету НДС при продаже сертификатов, лучше проконсультироваться с налоговым консультантом и, возможно, сделать доработку конфигурации.—
**Кратко:**
— Продажа подарочного сертификата — НДС не начисляется.
— НДС возникает при реализации товаров/услуг по сертификату.
— Для юридических лиц правила те же.
— В 1С:УНФ стандартно НДС при продаже сертификата не бьётся.
— Если нужно, вручную укажите НДС в документе реализации сертификата, создав соответствующую номенклатуру.—
https://infostart.ru/public/285565/ — агентские услуги и НДС, см. особенности учета НДС в разных ситуацияхЕсли нужна помощь с конкретным кодом или настройками в 1С:УНФ — могу помочь с примером.
18 января 2026 в 19:15 в ответ на: Как в 1С УТ11 получить номер телефона из справочника Физлица? #35511В 1С:Управление торговлей 11 (УТ11) для получения номера телефона из справочника «Физлица» можно использовать несколько подходов в зависимости от того, где именно хранится телефон.
Если телефон хранится в реквизите «Телефон» самого элемента справочника, то достаточно обратиться к этому реквизиту напрямую.
Если телефоны хранятся в табличной части «КонтактнаяИнформация» справочника, то нужно пройтись по этой табличной части и выбрать нужный тип и вид телефона, например, мобильный.
Если же в вашей конфигурации телефоны не хранятся ни в реквизите, ни в табличной части, а используются регистры сведений «КонтактнаяИнформация», то для получения телефона нужно выполнить запрос к этому регистру, указав физлицо, тип и вид телефона.
Таким образом, самый простой способ — проверить наличие реквизита «Телефон» у физлица и взять его. Если его нет, то смотреть в табличной части или регистре сведений.
Примеры кода для каждого варианта:
1. Получение телефона из реквизита:
1С (Код)123Функция ПолучитьТелефон(Физлицо)Возврат Физлицо.Телефон;КонецФункции2. Поиск мобильного телефона в табличной части «КонтактнаяИнформация»:
1С (Код)1234567Для Каждого Строка Из Физлицо.КонтактнаяИнформация ЦиклЕсли Строка.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон ТогдаЕсли Строка.Вид = Перечисления.ВидыТелефонов.Мобильный ТогдаПрервать;КонецЕсли;КонецЕсли;КонецЦикла;3. Запрос к регистру сведений «КонтактнаяИнформация» для получения мобильного телефона:
1С (Код)1234567891011121314151617181920Запрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| КонтактнаяИнформация.Представление КАК Представление|ИЗ| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация|ГДЕ| КонтактнаяИнформация.Объект = &Физлицо| И КонтактнаяИнформация.Тип = &Тип| И КонтактнаяИнформация.Вид = &Вид";Запрос.УстановитьПараметр("Физлицо", Физлицо);Запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Телефон);Запрос.УстановитьПараметр("Вид", Перечисления.ВидыТелефонов.Мобильный);Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Если Выборка.Следующий() ТогдаПредставление = Выборка.Представление;КонецЕсли;Если нужно, могу помочь с конкретным кодом под вашу конфигурацию.
Сергей, привет!
Вот пример создания внешней печатной формы «Счет клиента» под управляемое приложение 1С, с нуля, без использования шаблонов, с регистрацией в системе и базовой структурой. Я дам тебе полный каркас обработки с основными моментами, чтобы ты мог быстро адаптировать под свои нужды.
—
### 1. Создаем внешнюю обработку (например, «СчетКлиентаВнешний.epf»)
### 2. В модуле обработки создаем экспортную функцию регистрации:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;// Вид обработки - печатная формаПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");// Назначение - для какого объекта будет доступна печатная формаПараметрыРегистрации.Вставить("Назначение", Новый Массив({"Документ.ЗаказКлиента"}));// Наименование печатной формы в спискеПараметрыРегистрации.Вставить("Наименование", "Счет клиента (внешний)");// Версия обработкиПараметрыРегистрации.Вставить("Версия", "1.0");// Краткая информацияПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма Счет клиента");// Безопасный режим (лучше Истина)ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);// Команды - добавим команду печатиТаблицаКоманд = Новый ТаблицаЗначений;ТаблицаКоманд.Колонки.Добавить("Представление");ТаблицаКоманд.Колонки.Добавить("Идентификатор");ТаблицаКоманд.Колонки.Добавить("Использование");ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение");ТаблицаКоманд.Колонки.Добавить("Модификатор");НоваяКоманда = ТаблицаКоманд.Добавить();НоваяКоманда.Представление = "Печать счета клиента";НоваяКоманда.Идентификатор = "ПечатьСчета";НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; // вызов процедуры Печать на клиентеНоваяКоманда.ПоказыватьОповещение = Истина;НоваяКоманда.Модификатор = "";ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);Возврат ПараметрыРегистрации;КонецФункции—
### 3. Создаем форму обработки (управляемая форма)
— Добавляем реквизит формы типа «Ссылка» на объект «Документ.ЗаказКлиента» — назовем его
СсылкаНаОбъект.
— Добавляем кнопку «Печать» с командой «Печать».—
### 4. В модуле формы пишем процедуру печати:
1С (Код)1234567891011&НаКлиентеПроцедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт// Открываем форму с параметрами для печатиПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды;ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = МассивОбъектов;ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);КонецПроцедуры—
### 5. В модуле объекта обработки (модуль обработки) создаем экспортную функцию формирования табличного документа:
1С (Код)1234567891011Функция ПечатьСчетКлиента(МассивОбъектов) ЭкспортТабДок = Новый ТабличныйДокумент;ТабДок.ВывестиСтроку("Счет клиента");ТабДок.ВывестиСтроку("Документ: " + МассивОбъектов[0].Номер + " от " + Формат(МассивОбъектов[0].Дата, "ДФ=dd.MM.yyyy"));ТабДок.ВывестиСтроку("");ТабДок.ВывестиСтроку("Покупатель: " + МассивОбъектов[0].Контрагент.Наименование);ТабДок.ВывестиСтроку("Сумма: " + Формат(МассивОбъектов[0].СуммаДокумента, "ЧГ=2"));// Здесь можно добавить вывод табличной части, реквизитов и т.д.Возврат ТабДок;КонецФункции—
### 6. В модуле формы добавляем вызов печати из объекта:
1С (Код)1234567891011&НаСервереФункция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) ЭкспортТабДок = ПечатьСчетКлиента(МассивОбъектов);УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"СчетКлиента","Счет клиента",ТабДок);Возврат ТабДок;КонецФункции—
### 7. В модуле формы добавляем кнопку «Печать» с обработчиком:
1С (Код)1234567&НаКлиентеПроцедура ПечатьНаКлиенте(Команда)МассивОбъектов = Новый Массив;МассивОбъектов.Добавить(СсылкаНаОбъект);ТабДок = РеквизитФормыВЗначение("Объект").ПечатьСчетКлиента(МассивОбъектов);ТабДок.Показать("Счет клиента");КонецПроцедуры—
### Итог:
— Внешняя печатная форма зарегистрирована и доступна в списке дополнительных печатных форм для документа «Заказ клиента».
— При вызове печати открывается стандартная форма БСП «ПечатьДокументов» с вашим табличным документом.
— Можно отлаживать форму, открывая обработку напрямую и передавая ссылку на документ.—
Если хочешь, могу скинуть готовый пример обработки, но этот каркас — основа для создания внешних печатных форм в 1С под управляемое приложение.
—
Если нужно, могу помочь с конкретным кодом под твою конфигурацию.
Удачи!
-
АвторСообщения
