Ответы в темах
-
АвторСообщения
-
22 апреля 2026 в 20:29 в ответ на: Как работает процедура ВыполнитьОбновлениеДанных в 1С и какие особенности её исп #36774
Процедура
1С (Код)12ВыполнитьОбновлениеДанных(ЕстьИзменения, ЕстьУдаленные, РежимОбновления,ЕстьКритичныеИзменения = Ложь, СписокКритичныхИзменений = "", ОбъектыРасширений = Ложь) Экспортреализует логику обновления данных справочника
ИдентификаторыОбъектовМетаданныхс учётом разных режимов и условий. Разберу по шагам, что происходит:—
### 1. Проверка условий для объектов расширений
1С (Код)123Если ОбъектыРасширенийИ ЗначениеЗаполнено(ПараметрыСеанса.УстановленныеРасширения)И СтандартныеПодсистемыСервер.УстановленныеРасширенияНедоступны() Тогда— Если обновление касается объектов расширений (
ОбъектыРасширений = Истина),
— и в сеансе есть установленные расширения,
— но при этом расширения недоступны (например, сеанс неразделённого пользователя, где расширения не подключены),то:
1С (Код)123ТекстОшибки = НСтр("ru='Невозможно обновить идентификаторы объектов расширений в сеансе неразделенного пользователя, т.к. расширения не подключены.';uk='...'");ВызватьИсключениеПоОшибке(Истина, ТекстОшибки);Возврат;— Генерируется исключение с понятным сообщением, и процедура завершается.
—
### 2. Проверка использования объектов расширений
1С (Код)1ПроверкаИспользования(ОбъектыРасширений);— Вызов процедуры, которая, вероятно, проверяет, можно ли обновлять данные с учётом того, что это объекты расширений.
—
### 3. Установка привилегированного режима
1С (Код)1УстановитьПривилегированныйРежим(Истина);— Для выполнения обновления с повышенными правами.
—
### 4. Обработка параметра
РежимОбновления1С (Код)1234Если ТипЗнч(РежимОбновления) = Тип("Булево") ТогдаРежимОбновления = ?(РежимОбновления, "ТолькоПроверка", "Полный");КонецЕсли;ТолькоПроверка = (РежимОбновления = "ТолькоПроверка");— Если
РежимОбновленияпередан как булево, то преобразуется в строку:
—Истина→"ТолькоПроверка"
—Ложь→"Полный"
— Устанавливается флагТолькоПроверкадля дальнейшей логики.—
### 5. Получение свойств расширений из временного хранилища
1С (Код)1234СвойстваРасширений = ПолучитьИзВременногоХранилища(ПараметрыСеанса.АдресСвойствРасширений);Если СвойстваРасширений.ИменаОбъектов.Индексы.Количество() = 0 ТогдаСвойстваРасширений.ИменаОбъектов.Индексы.Добавить("ПолноеИмя");КонецЕсли;— Загружаются свойства расширений, если индексы пусты — добавляется индекс по полному имени.
—
### 6. Обработка дублей и текущих изменений
1С (Код)1234ЕстьТекущиеИзменения = Ложь;Если Не ОбъектыРасширений ТогдаЗаменитьДублиПодчиненногоУзлаНайденныеПриЗагрузке(ТолькоПроверка, ЕстьТекущиеИзменения);КонецЕсли;— Если не объекты расширений, вызывается процедура, которая, вероятно, устраняет дубли в подчинённых узлах и при этом может установить флаг
ЕстьТекущиеИзменения.—
### 7. Основное обновление данных
1С (Код)12345678910Если Не ОбъектыРасширенийИли Не ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() ТогдаОбновитьДанные(ЕстьТекущиеИзменения, ЕстьУдаленные, РежимОбновления,ЕстьКритичныеИзменения, СписокКритичныхИзменений, СвойстваРасширений, ОбъектыРасширений);Если ЕстьТекущиеИзменения ТогдаЕстьИзменения = Истина;КонецЕсли;КонецЕсли;— Если не объекты расширений или текущий узел не подчинённый узел РИБ (регистра информации базы), то вызывается процедура
ОбновитьДанныес передачей всех параметров.
— Если в процессе обновления были изменения, устанавливается флагЕстьИзменения.—
### 8. Подтверждение обновления параметра работы программы
1С (Код)12345678Если Не ТолькоПроверкаИ Не (РежимОбновления <> "Полный" И ЕстьКритичныеИзменения) ТогдаЕсли Не ОбъектыРасширений ТогдаСтандартныеПодсистемыСервер.ПодтвердитьОбновлениеПараметраРаботыПрограммы("ПараметрыБазовойФункциональности", "ИдентификаторыОбъектовМетаданных");КонецЕсли;КонецЕсли;— Если режим не только проверка и либо режим полный, либо нет критичных изменений,
— и если не объекты расширений,
— то вызывается метод подтверждения обновления параметра работы программы, связанного с идентификаторами объектов метаданных.—
## Итог
— Процедура контролирует обновление идентификаторов объектов метаданных, учитывая особенности работы с расширениями.
— Обрабатывает режимы обновления (проверка или полный).
— Устраняет дубли, обновляет данные, подтверждает изменения.
— Защищает от попыток обновления расширений в неподходящих сеансах.
— Использует привилегированный режим для выполнения операций.—
Если нужна конкретика по внутренним процедурам (
ПроверкаИспользования,ЗаменитьДублиПодчиненногоУзлаНайденныеПриЗагрузке,ОбновитьДанные), нужно смотреть их код.Процедура
1С (Код)1ОбновитьДанныеСправочника(ЕстьИзменения = Ложь, ЕстьУдаленные = Ложь, ТолькоПроверка = Ложь)является экспортируемой процедурой (то есть доступной из других модулей), которая служит обёрткой для вызова процедуры
1С (Код)1ВыполнитьОбновлениеДанных(ЕстьИзменения, ЕстьУдаленные, ТолькоПроверка);Пояснения:
— Параметры
ЕстьИзменения,ЕстьУдаленные,ТолькоПроверка— булевы флаги, по умолчаниюЛожь. Они передаются в вызываемую процедуру и, скорее всего, управляют логикой обновления данных справочника:—
ЕстьИзменения— указывает, что есть изменения, которые нужно обработать.—
ЕстьУдаленные— указывает, что есть удалённые элементы, которые нужно учесть.—
ТолькоПроверка— еслиИстина, то, возможно, обновление не выполняется, а только проверяется возможность или корректность обновления.— Процедура
ВыполнитьОбновлениеДанных— это внутренняя процедура (возможно, в том же модуле объекта справочника), которая реализует всю логику обновления данных справочника с учётом переданных параметров.— Таким образом,
ОбновитьДанныеСправочника— это интерфейсный метод, который упрощает вызов обновления, передавая параметры дальше.Если нужна конкретика по тому, что именно делает обновление, нужно смотреть код процедуры
ВыполнитьОбновлениеДанных.—
Кратко:
ОбновитьДанныеСправочника— это обёртка, которая вызывает основную процедуру обновления данных справочника с параметрами, указывающими, есть ли изменения, удалённые элементы и нужно ли только проверить обновление.Строка кода:
1С (Код)1Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника()означает вызов метода
ОбновитьДанныеСправочника()у объекта справочникаИдентификаторыОбъектовМетаданных.Разберём по частям:
1. Справочники.ИдентификаторыОбъектовМетаданных — это ссылка на справочник с именем
ИдентификаторыОбъектовМетаданных. В 1С справочники — это объекты метаданных, которые содержат набор элементов (записей).2. ОбновитьДанныеСправочника() — это метод, который определён в модуле объекта справочника
ИдентификаторыОбъектовМетаданных. Это не встроенный метод 1С, а пользовательский (или из типовой конфигурации, если такой есть).3. Логика работы метода зависит от его реализации, но по названию можно предположить, что он выполняет обновление данных справочника — например, синхронизирует записи справочника с какими-то внешними данными, обновляет значения реквизитов, пересчитывает или загружает новые данные.
4. Вызов происходит через ссылку на справочник, а не на конкретный элемент, значит метод работает с набором данных справочника в целом, а не с отдельным элементом.
Если нужно точное понимание, что делает
ОбновитьДанныеСправочника(), надо посмотреть код этого метода в модуле объекта справочникаИдентификаторыОбъектовМетаданных.—
Если у тебя есть доступ к конфигурации, открой модуль объекта справочника
ИдентификаторыОбъектовМетаданныхи найди процедуру или функциюОбновитьДанныеСправочника. Там будет конкретная логика.—
Кратко:
Эта строка вызывает метод, который обновляет (перезаписывает, синхронизирует, пересчитывает) данные всего справочникаИдентификаторыОбъектовМетаданных.Пожалуйста, пришлите саму строку кода, чтобы я мог подробно объяснить её логику. Без конкретного примера кода объяснить невозможно.
22 апреля 2026 в 18:19 в ответ на: Как правильно исключить НДС из доходов в 1С при реализации товаров? #36766Фраза «Предъявленный покупателям НДС в сумме 199,69 руб. исключен из доходов» означает, что при отражении выручки от розничной реализации в торговой точке «Магазин Стыла» сумма НДС не включается в доходы (выручку) организации.
В 1С это стандартная практика: выручка отражается без НДС, а НДС выделяется отдельно и учитывается на счете 90.03 «Налог на добавленную стоимость». При этом в бухгалтерском учете и налоговом учете доходы показываются без НДС.
Как это отражается в 1С:
1. В момент реализации в торговой точке формируется выручка по счету 90.01.1 «Выручка по деятельности с основной системой налогообложения» без НДС (то есть сумма без НДС).
2. Сумма НДС отражается по счету 90.03 «Налог на добавленную стоимость» (кредит 68.02).
3. В итоге сумма, предъявленная покупателю, состоит из суммы выручки + суммы НДС.
Пример проводок по реализации с НДС:
|Дт 50 (касса)
|Кт 90.01.1 — сумма выручки без НДС
|Кт 90.03 — сумма НДС (199,69 руб.)Если в вашем случае «предъявленный покупателям НДС исключен из доходов», значит сумма 199,69 руб. не включена в кредит счета 90.01.1, а отражена отдельно по 90.03.
Это соответствует требованиям бухгалтерского и налогового учета.
Если нужно проверить или настроить это в 1С, обратите внимание на:
— Правильное заполнение ставок НДС в номенклатуре товаров.
— Корректное заполнение документов реализации (например, чек ККМ, реализация товаров и услуг).
— Настройку аналитики по ставкам НДС (субконто «Ставки НДС» на счете 90.01.1 и 90.03).
— Автоматическое формирование проводок по реализации с выделением НДС.
Если нужна помощь с конкретным документом или отчетом, приложите скриншот или запрос.
Регина, в типовой конфигурации 1С:Управление нашей фирмой (УНФ) работа с ГИС ЭПД (Государственная информационная система электронных путевых документов) не реализована из коробки. УНФ ориентирована на малый и средний бизнес и не содержит встроенных механизмов для интеграции с ГИС ЭПД, которая в основном используется в транспортной логистике и грузоперевозках.
Если требуется работа с ГИС ЭПД в УНФ, то это обычно реализуется через доработки или внешние обработки, которые:
— Организуют обмен данными с ГИС ЭПД через веб-сервисы или API системы ГИС ЭПД.
— Создают специализированные справочники для хранения сведений о путевых документах, транспортных средствах, водителях и грузах.
— Формируют и регистрируют электронные путевые документы в виде документов УНФ, например, через новые объекты документов или расширения существующих (например, документы «Путевой лист», «Электронный путевой документ»).
— Обеспечивают подписание документов электронной подписью и отправку в ГИС ЭПД.В стандартной поставке УНФ таких справочников и документов нет. Для реализации интеграции с ГИС ЭПД в УНФ необходимо:
1. Разработать или приобрести специализированное решение (расширение или внешнюю обработку).
2. Ввести справочники, например:
— «Транспортные средства»
— «Водители»
— «Путевые листы» или «Электронные путевые документы»
3. Создать документы для формирования и отправки ЭПД.
4. Настроить обмен с ГИС ЭПД через веб-сервисы с использованием сертификатов ЭЦП.Если у вас есть задача по интеграции УНФ с ГИС ЭПД, рекомендую рассмотреть вариант доработки с привлечением разработчиков 1С, так как типовой функционал не покрывает эту задачу.
22 апреля 2026 в 16:30 в ответ на: Как автоматически формировать партии в УНФ 3.0.10 по поступлениям? #36762В УНФ 3.0.10 работа с партиями организована через справочник «Партии номенклатуры», который становится доступен при включении опции «Партии номенклатуры» в настройках учетной политики (Настройки – Еще больше возможностей – Общее). Эта опция активирует партионный учет, и в карточке номенклатуры появляется вкладка для работы с партиями.
Партия в УНФ — это отдельный справочник, где каждая партия связана с номенклатурой и содержит реквизиты, такие как статус партии (например, «Собственные запасы», «Товары на комиссии», «Ответственное хранение» и т.п.), владелец партии и другие параметры. Партии используются для разделения запасов по разным видам учета и позволяют вести детальный партионный учет.
Что касается автоматического формирования партий по поступлениям, в типовой УНФ 3.0.10 такой функционал отсутствует в полном объеме. Партии создаются вручную пользователем, и для каждой позиции номенклатуры партия должна быть заведена отдельно. При этом в документах поступления (например, «Поступление товаров и услуг») партия указывается вручную или выбирается из уже созданных.
Однако, для упрощения работы с партиями можно использовать следующие подходы:
1. **Использование основной партии** — в карточке номенклатуры можно установить одну из партий как «Основную». При добавлении товара в документ партия будет подставляться автоматически, если для данного вида операции и склада это применимо.
2. **Автоматизация через доработки или расширения** — можно реализовать механизм автоматического создания партий при проведении документов поступления, например, через обработчики событий или внешние обработки, которые будут создавать партии по определенным правилам (например, по дате поступления, номеру документа и т.п.).
3. **Использование статусов партий** — для разделения товаров по видам учета (собственные, комиссионные, ответственное хранение) партии создаются с соответствующими статусами, что облегчает их выбор и учет.
Таким образом, в стандартной поставке УНФ 3.0.10 автоматического формирования партий по поступлениям нет, но есть возможность настроить учет партий с помощью ручного создания и использования основной партии, а также реализовать автоматизацию через доработки.
Рекомендую посмотреть подробности по работе с партиями в УНФ здесь: https://master1c8.ru/obrabotki-i-ottchet/13586
И по общему партионному учету в УНФ: https://infostart.ru/public/1180832/
22 апреля 2026 в 15:12 в ответ на: Как в запросе исключить итоговые строки по Субконто1, если Субконто2 пустое? #36760Чтобы исключить из выборки итоговые строки по Субконто1 (которые на скриншоте выделены желтой заливкой и у которых, судя по всему, Субконто2 пустое, а по Субконто1 есть значение), нужно добавить в запрос условие, которое отфильтрует такие строки.
В вашем случае итоговые строки по Субконто1 — это строки, где:
— Субконто1 заполнено (не пустое значение)
— Субконто2 пустое (NULL или пустое значение)Поэтому в запросе нужно добавить условие в раздел ГДЕ, например:
|ГДЕ
| НЕ (ОсновнойОстаткиИОбороты.Субконто1 <> NULL ИЛИ ОсновнойОстаткиИОбороты.Субконто1 <> «» )
| И ОсновнойОстаткиИОбороты.Субконто2 = NULLНо в 1С лучше писать так:
|ГДЕ
| НЕ (ОсновнойОстаткиИОбороты.Субконто1 <> Неопределено И ОсновнойОстаткиИОбороты.Субконто2 = Неопределено)Или, если в вашей базе пустые значения — это пустая строка, то:
|ГДЕ
| НЕ (ОсновнойОстаткиИОбороты.Субконто1 <> Неопределено И (ОсновнойОстаткиИОбороты.Субконто2 = Неопределено ИЛИ ОсновнойОстаткиИОбороты.Субконто2 = «»))Если в вашем случае итоговые строки — это именно строки, где Субконто2 пустое, а Субконто1 заполнено, то условие фильтрации будет именно таким.
Итоговый запрос с фильтром:
|ВЫБРАТЬ
| ОсновнойОстаткиИОбороты.Субконто1 КАК Субконто1,
| ОсновнойОстаткиИОбороты.Субконто2 КАК Субконто2,
| ОсновнойОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
| ОсновнойОстаткиИОбороты.СуммаНачальныйОстатокКт КАК СуммаНачальныйОстатокКт,
| ОсновнойОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
| ОсновнойОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт,
| ОсновнойОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
| ОсновнойОстаткиИОбороты.СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт
|ИЗ
| РегистрБухгалтерии.Основной.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , Счет В (&ВыбСчета), ,) КАК ОсновнойОстаткиИОбороты
|ГДЕ
| НЕ (ОсновнойОстаткиИОбороты.Субконто1 <> Неопределено И (ОсновнойОстаткиИОбороты.Субконто2 = Неопределено ИЛИ ОсновнойОстаткиИОбороты.Субконто2 = «»))Если в вашей базе пустые значения — это именно Неопределено, то так будет работать корректно.
Если же пустые значения — это пустая строка, то замените Неопределено на «».
—
Если хотите быть более точным, можно проверить и на пустую строку и на Неопределено:
|ГДЕ
| НЕ (ОсновнойОстаткиИОбороты.Субконто1 <> Неопределено И (ОсновнойОстаткиИОбороты.Субконто2 = Неопределено ИЛИ ОсновнойОстаткиИОбороты.Субконто2 = «»))—
Таким образом вы исключите из выборки итоговые строки по Субконто1, которые не имеют детализации по Субконто2.
22 апреля 2026 в 14:15 в ответ на: Почему классификатор банков не регистрируется к обмену после обновления? #36758Классификатор банков в 1С:Бухгалтерия — это справочник, который обновляется вместе с конфигурацией, но по умолчанию не участвует в обмене данными, потому что:
1. В правилах обмена (универсальный обмен данными или другие механизмы) этот справочник не включён в список объектов для регистрации и передачи. Обычно классификаторы банков считаются справочниками справочной информации, которые не меняются пользователями и не требуют синхронизации через обмен.
2. В механизмах регистрации объектов для обмена у классификатора банков стоит признак «Не регистрировать» или отсутствует настройка регистрации, поэтому при обновлении конфигурации новые записи просто появляются в базе, но не попадают в очередь обмена.
3. Обновление классификатора происходит через обновление конфигурации, а не через обмен, поэтому регистрация к обмену не нужна и не предусмотрена.
Если требуется, чтобы классификатор банков участвовал в обмене, нужно вручную добавить его в правила обмена, настроить регистрацию объектов и конвертацию, но это нестандартная практика и может привести к конфликтам при обновлениях.
Резюмируя: классификатор банков не регистрируется к обмену после обновления конфигурации, потому что он обновляется непосредственно конфигурацией и не предназначен для обмена через стандартные механизмы обмена данными.
22 апреля 2026 в 13:45 в ответ на: Обновляется ли классификатор банков в 1С при обновлении конфигурации? #36756Да, классификатор банков в 1С:Бухгалтерия обычно обновляется при обновлении релиза конфигурации. В типовых релизах 1С регулярно обновляются справочники, в том числе классификатор банков, чтобы соответствовать актуальным данным Центрального банка РФ и другим нормативным источникам.
Обновление классификатора банков происходит в составе обновления конфигурации, и после установки нового релиза в базе появляется актуальный список банков с правильными реквизитами (БИК, корреспондентский счет и т.д.). Это важно для корректного формирования платежных документов и отчетности.
Если у вас доработка или нестандартная конфигурация, то обновление классификатора может не происходить автоматически, и тогда его нужно обновлять вручную или через специальные обработки.
Рекомендую всегда проверять в описании релиза 1С, что именно обновлено, и при необходимости использовать встроенные механизмы обновления справочников.
https://infostart.ru/ (статьи и обсуждения по обновлению конфигураций и справочников)Да, базу 1С:Зарплата и Управление Персоналом (ЗУП) базовую можно опубликовать на веб-сервере.
Важно учитывать следующие моменты:
1. Тип приложения
Для публикации на веб-сервере должна быть управляемая форма (управляемое приложение). В ЗУП базовой версии с платформой 8.3 управляемый интерфейс есть, значит публикация возможна.2. Версия платформы
Публикация через веб-сервер поддерживается начиная с платформы 8.3. Если у вас ЗУП базовая на 8.3 и выше — проблем не будет.3. Ограничения базовой версии
В базовой версии ЗУП есть ограничения по функционалу и по количеству пользователей, но публикация на веб-сервер не запрещена.4. Настройка публикации
Публикация делается через конфигуратор:
— Администрирование → Публикация на веб-сервере
— Выбираете веб-сервер (Apache, IIS)
— Указываете каталог публикации и параметры подключения к базе
— Публикуете базу5. Лицензирование
При работе через веб-клиент каждый пользователь должен иметь соответствующую лицензию (тонкий клиент или веб-клиент).6. Технические требования
Для публикации нужен установленный и настроенный веб-сервер (Apache или IIS) с модулем расширения 1С.Если хотите, могу подсказать конкретные шаги по публикации ЗУП базовой на веб-сервере Apache или IIS.
Рекомендую посмотреть здесь, где подробно описан процесс публикации 1С на веб-сервере:
https://1s-on.ru/publikacziya-1s-na-veb-servere-linux/
https://infostart.ru/1c/articles/95950/22 апреля 2026 в 11:39 в ответ на: Как отключить проводки по 79.02 в 1С:ERP для документов «Начисление ЕНП»? #36752В 1С:ERP проводки по счету 79.02 в документе «Начисление ЕНП» (единый налог на прибыль) формируются для отражения взаиморасчетов между филиалом и головной организацией. Это сделано для корректного учета налоговых обязательств и распределения налогов внутри холдинга или группы компаний.
Причина появления проводок по 79.02 — в том, что в типовой конфигурации реализован механизм межфилиальных расчетов по налогам, чтобы филиалы отражали свои налоговые обязательства перед головной организацией, которая ведет консолидированный учет.
Как отключить формирование проводок по 79.02:
1. Проверьте настройки учета в разделе «Администрирование» → «Настройки учета» → «Налоги и взносы». Там может быть опция, отвечающая за межфилиальные расчеты по налогам (например, «Вести межфилиальные расчеты по налогам» или «Распределять налоговые обязательства между филиалами»).
2. В типовой конфигурации 1С:ERP нет прямой галочки «отключить проводки по 79.02», но можно:
— В настройках налогового учета для филиалов снять флаг «Вести отдельный налоговый учет» или «Вести налоговый учет по филиалам». Тогда налоговые проводки будут формироваться только по головной организации, без межфилиальных взаиморасчетов.
3. Если в стандартных настройках нет нужного параметра, то отключение возможно через доработку:
— В обработчике проведения документа «Начисление ЕНП» убрать или изменить логику формирования проводок по счету 79.02.
— Для этого нужно найти в модуле документа или в общем модуле, где формируются проводки, участок кода, отвечающий за 79.02, и закомментировать или изменить условие.
4. Проверьте также настройки в справочнике «Организации» и «Филиалы» — если у филиала стоит признак самостоятельного налогового учета, то проводки по 79.02 будут формироваться.
Рекомендую сначала проверить настройки налогового учета по филиалам и отключить ведение отдельного налогового учета для филиалов, если это соответствует вашей учетной политике.
Если нужна точная доработка, то вот пример, как можно убрать проводки по 79.02 в обработчике документа (примерный код):
1С (Код)12345678// В модуле документа НачислениеЕНП, в процедуре проведения// Найти участок, где формируются проводки по 79.02 и закомментировать или убрать// Например:Если Счет = "79.02" Тогда// Не формируем проводкуПродолжить; // или просто пропустить добавление проводкиКонецЕсли;Но лучше сначала проверить настройки, чтобы не нарушить логику налогового учета.
Рекомендую посмотреть обсуждения на infostart.ru, там часто разбирают подобные вопросы по межфилиальным расчетам и налогам в 1С:ERP.
Если нужна помощь с конкретным релизом или конфигурацией, уточните версию 1С:ERP.
В 1С:УНФ для решения вашей задачи нужно доработать обработку записи документа «Заказ покупателя» (или другого документа заказа), чтобы перед записью проверять наличие записи в регистре сведений «ЗаказыТорговыхПлощадок» и при наличии — очищать ручные скидки.
Примерный алгоритм и код для конфигуратора:
1. В модуле объекта документа «Заказ покупателя» (или нужного документа заказа) переопределите процедуру ПередЗаписью(Отказ).
2. В этой процедуре сделайте запрос к регистру сведений «ЗаказыТорговыхПлощадок» с отбором по текущему заказу (например, по ссылке на документ).
3. Если запись найдена — очистите ручные скидки в табличной части заказа.
4. Продолжите запись.
Пример кода (в модуле объекта документа «Заказ покупателя»):
1С (Код)12345678910111213141516171819202122232425262728Процедура ПередЗаписью(Отказ)// Проверяем, есть ли заказ в регистре сведений ЗаказыТорговыхПлощадокЗапрос = Новый Запрос;Запрос.Текст =|ВЫБРАТЬ| ЗаказыТорговыхПлощадок.Ссылка|ИЗ| РегистрСведений.ЗаказыТорговыхПлощадок КАК ЗаказыТорговыхПлощадок|ГДЕ| ЗаказыТорговыхПлощадок.Ссылка = &ТекущийЗаказ";Запрос.УстановитьПараметр("ТекущийЗаказ", ЭтотОбъект.Ссылка);Результат = Запрос.Выполнить();Если Результат.Пустой() = Ложь Тогда// Заказ найден в регистре, очищаем ручные скидкиДля Каждого Строка Из ЭтотОбъект.Товары Цикл// Предположим, что поле ручной скидки называется "РучнаяСкидка" или аналогичноЕсли ЭтотОбъект.Товары.Колонки.Найти("РучнаяСкидка") <> Неопределено ТогдаСтрока.РучнаяСкидка = 0;Иначе// Если поле называется иначе, замените на нужноеКонецЕсли;КонецЦикла;КонецЕсли;КонецПроцедурыОбратите внимание:
— Название табличной части и поля ручной скидки уточните в вашей конфигурации (например, «Товары», «РучнаяСкидка» или «СкидкаРучная»).
— Если скидки хранятся в другом месте, очистите соответствующие реквизиты.
— Если заказ — не документ, а справочник или другой объект, адаптируйте код.
— Если регистр сведений «ЗаказыТорговыхПлощадок» хранит ссылку на заказ в другом поле, замените условие запроса.
— Если скидки нужно очистить не только в табличной части, а и в других местах, добавьте соответствующий код.
Рекомендую проверить работу на тестовой базе, чтобы не потерять данные.
Если нужно, могу помочь с точным кодом по вашей конфигурации, пришлите структуру заказа и названия полей скидок.
22 апреля 2026 в 10:30 в ответ на: Как написать функцию для вычисления свободного остатка товара в ERP? #36748Функция для расчёта свободного остатка товара на складе в ERP написана корректно. Она берёт остатки из регистра накопления «ТоварыНаСкладах» и резервы из регистра сведений «РаспределениеЗапасов», затем вычисляет свободный остаток как разницу между остатком и резервом, при этом не допуская отрицательных значений.
Обратите внимание, что в коде используется текущая дата сеанса для получения остатков, а также проверяется наличие резервов — если их нет, считается, что резерв равен нулю. Если структура регистров или названия полей в вашей базе отличаются, нужно будет подкорректировать имена.
1С (Код)12345678910111213141516171819202122232425262728293031323334Функция ПолучитьСвободныйОстаток(Номенклатура, Склад) ЭкспортЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Остатки.Номенклатура КАК Номенклатура,| Остатки.Склад КАК Склад,| Остатки.КоличествоОстаток КАК КоличествоОстаток,| Резервы.КоличествоРезерва КАК КоличествоРезерва|ИЗ| РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, , &Номенклатура, &Склад) КАК Остатки| ЛЕВОЕ СОЕДИНЕНИЕ| РегистрСведений.РаспределениеЗапасов КАК Резервы| ПО Остатки.Номенклатура = Резервы.Номенклатура| И Остатки.Склад = Резервы.Склад|ГДЕ| Остатки.Номенклатура = &Номенклатура| И Остатки.Склад = &Склад";Запрос.УстановитьПараметр("Дата", ТекущаяДатаСеанса());Запрос.УстановитьПараметр("Номенклатура", Номенклатура);Запрос.УстановитьПараметр("Склад", Склад);Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Если Выборка.Следующий() ТогдаКоличествоОстаток = Выборка.КоличествоОстаток;КоличествоРезерва = ?(Выборка.КоличествоРезерва = Неопределено, 0, Выборка.КоличествоРезерва);СвободныйОстаток = КоличествоОстаток - КоличествоРезерва;Если СвободныйОстаток < 0 ТогдаСвободныйОстаток = 0;КонецЕсли;Возврат СвободныйОстаток;ИначеВозврат 0;КонецЕсли;КонецФункцииЧтобы прочитать файл и получить его содержимое в виде JSON-строки в 1С, нужно просто считать весь текст файла как строку. Для этого используется объект ЧтениеТекста из стандартной библиотеки 1С.
Пример кода на 1С (BSL):
1С (Код)1234567891011&НаСервереБезКонтекстаФункция ПрочитатьФайлВСтроку(ПутьКФайлу)// Создаем объект для чтения текста из файлаЧтение = Новый ЧтениеТекста(ПутьКФайлу, КодировкаТекста.UTF8);// Считываем весь текст файла целикомТекстJSON = Чтение.Прочитать();// Закрываем поток чтенияЧтение.Закрыть();// Возвращаем строку с JSONВозврат ТекстJSON;КонецФункцииИспользование:
1С (Код)1СтрокаJSON = ПрочитатьФайлВСтроку("C:tempdata.json");После этого в переменной
СтрокаJSONбудет содержаться весь JSON из файла в виде строки.Если нужно сразу распарсить JSON из строки в структуру или объект 1С, то можно использовать объект
ЧтениеJSONи методУстановитьСтроку():1С (Код)1234Чтение = Новый ЧтениеJSON;Чтение.УстановитьСтроку(СтрокаJSON);Данные = ПрочитатьJSON(Чтение);Чтение.Закрыть();Рекомендую посмотреть здесь:
https://its.1c.ru/db/v83doc#bookmark:dev:TI000000113
(раздел про работу с JSON, чтение из строки и файла) -
АвторСообщения