Ответы в темах
-
АвторСообщения
-
8 февраля 2026 в 13:30 в ответ на: Как изменить порты для 1С 8.3.18 при параллельной установке с 8.3.22? #35670
Andrii dav, привет!
Ситуация с параллельной установкой двух версий 1С 8.3 (8.3.18 и 8.3.22) на одном сервере с MSSQL 2017 и конфликтом портов — классика. Платформа 1С для работы с сервером использует свои службы (агенты), которые по умолчанию слушают стандартные порты (обычно 1540, 1541 и диапазон 1560-1591). Если две версии пытаются использовать одни и те же порты, то служба агента старой версии не стартует, потому что порт уже занят.
Что делать:
1. Оставляете 8.3.22 на стандартных портах (т.к. она уже работает и базы на ней доступны).
2. Для 8.3.18 нужно изменить порты, на которых запускается агент сервера 1С.
Как это сделать:
— Открываете редактор реестра (regedit).
— Переходите по пути:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices1C:Enterprise 8.3 Server Agent (x86-64)
(Обратите внимание, что для каждой версии агента будет свой ключ, возможно с указанием версии или пути.)
— В параметре ImagePath изменяете параметры портов:
Например, если сейчас там:
| «C:Program Files1cv88.3.18.xxxbinragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «C:Program Files1cv8srvinfo»
Меняете на:
| «C:Program Files1cv88.3.18.xxxbinragent.exe» -srvc -agent -regport 1741 -port 1740 -range 1760:1791 -d «C:Program Files1cv8srvinfo»
То есть выбираете свободный диапазон портов, например 17хх, чтобы не пересекался с 15хх, которые заняты 8.3.22.
— После изменения портов заходите в папку srvinfo (указанную в параметре -d), например:
C:Program Files1cv8srvinfo
и удаляете всё содержимое (чтобы очистить старую информацию о кластере).
— Перезапускаете службу агента 8.3.18 через «Службы» Windows.
— В консоли администрирования 1С для 8.3.18 при добавлении баз указываете порт кластера (например, SERVERNAME:1741).
— На клиентских рабочих местах при подключении к базам 8.3.18 тоже указываете порт кластера.
Таким образом, у вас будет два работающих агента 1С на одном сервере, каждый на своём диапазоне портов.
Если служба 8.3.18 не запускается, то скорее всего именно из-за конфликта портов. После изменения и очистки srvinfo служба должна стартовать.
Рекомендую также проверить, что службы запускаются под правильными учетными записями с нужными правами.
Если хотите, могу привести пример точной команды из реестра для 8.3.18 с изменёнными портами.
И ещё: для удобства можно сделать так:
— 8.3.22 — стандартные порты (1540, 1541, 1560-1591)
— 8.3.18 — порты 1740, 1741, 1760-1791
Это классика для параллельной работы.
Если не изменить порты, то служба агента 8.3.18 не запустится, и базы не будут доступны.
Поэтому менять порты для 8.3.18 — правильное решение.
—
Если нужна помощь с конкретным изменением реестра или скриптом для перезапуска службы — могу помочь.
Удачи!
7 февраля 2026 в 20:45 в ответ на: Как изменить проводку в документе КА 1.1, т.к. интерфейс не позволяет? #35668Михаил, в КА 1.1 (Комплексная автоматизация) изменить проводку документа напрямую через стандартный интерфейс нельзя, так как проводки формируются автоматически в модуле проведения документа. Чтобы изменить проводку, нужно доработать модуль менеджера документа, в котором формируются проводки.
Алгоритм действий:
1. Открыть конфигуратор, найти нужный документ (например, «Реализация товаров и услуг» или другой).
2. Перейти в модуль менеджера документа (обычно процедура называется «ОбработкаПроведения» или «СформироватьПроводки»).
3. Найти участок кода, где создаются проводки, например:
1С (Код)1234Проводка = Проводки.Добавить();Проводка.СчетДт = ...;Проводка.СчетКт = ...;Проводка.Сумма = ...;4. Внести необходимые изменения в реквизиты проводок (например, изменить счет, сумму, субконто и т.п.).
5. Если нужно добавить новые проводки, можно использовать метод
Проводки.Добавить()и заполнить свойства.6. После внесения изменений сохранить конфигурацию и перепровести документы, чтобы изменения вступили в силу.
Пример изменения проводок в модуле менеджера документа:
1С (Код)1234567891011Процедура СформироватьПроводки(Проводки, СтруктураШапкиДокумента) Экспорт// Удаляем стандартные проводки, если нужноПроводки.Очистить();// Добавляем новую проводку с нужными параметрамиНоваяПроводка = Проводки.Добавить();НоваяПроводка.СчетДт = "41.01";НоваяПроводка.СчетКт = "62.01";НоваяПроводка.Сумма = СтруктураШапкиДокумента.СуммаДокумента;// Можно добавить субконто, аналитику и т.д.КонецПроцедурыЕсли нужно изменить проводки для типового документа, рекомендуется создавать расширение конфигурации и переопределять процедуру формирования проводок, чтобы не потерять изменения при обновлении.
Также в КА 1.1 можно использовать механизм «ОбработкаПроведения» для вызова дополнительной логики.
Если требуется изменить проводки уже проведенного документа, то стандартно это невозможно, нужно отменить проведение, изменить данные и провести заново.
Рекомендую посмотреть подробности по доработке проводок в КА 1.1 здесь:
https://infostart.ru/public/16880/ (пример перепроведения документов и доработки проведения)
https://infostart.ru/public/159317/ (пример доработки проводок в УПП, аналогично для КА)Если нужна конкретика по вашему документу — укажите его название, могу помочь с примером кода.
7 февраля 2026 в 20:15 в ответ на: Как в 1С запросе с INNER JOIN оставить 1 строку из правой таблицы? #35666Шура, привет!
Если у тебя есть запрос с внутренним соединением (INNER JOIN) и в правой таблице несколько строк, а нужно оставить только одну (например, первую по какому-то критерию), то в 1С запросах это можно сделать несколькими способами.
Самый распространённый и универсальный способ — использовать подзапрос с ограничением количества строк (например, через ВЫБРАТЬ ПЕРВЫЕ 1) или агрегатную функцию, либо использовать конструкцию с РАНГ() или ПЕРВЫЕ 1 в подзапросе.
Пример: допустим, есть таблица Документ.Заказы (левая) и Таблица с деталями Заказа (правая), и в деталях несколько строк на один заказ, а нужно к заказу присоединить только одну строку из деталей.
Вариант с подзапросом:
1С (Код)1234567891011121314151617Запрос.Текст ="ВЫБРАТЬ| Заказы.Ссылка КАК Заказ,| Детали.НужноеПоле|ИЗ| Документ.Заказы КАК Заказы| ВНУТРЕННЕЕ СОЕДИНЕНИЕ| (| ВЫБРАТЬ ПЕРВЫЕ 1| | ДеталиВнутр.СсылкаНаЗаказ,| | ДеталиВнутр.НужноеПоле| |ИЗ| | Документ.ДеталиЗаказа КАК ДеталиВнутр| | ГДЕ ДеталиВнутр.СсылкаНаЗаказ = Заказы.Ссылка| | УПОРЯДОЧИТЬ ПО ДеталиВнутр.ДатаУбывания| ) КАК Детали|ПО Заказы.Ссылка = Детали.СсылкаНаЗаказ";Обрати внимание, что в подзапросе мы выбираем ПЕРВЫЕ 1 строку из правой таблицы для каждого заказа, упорядочивая по нужному полю (например, дате).
Если платформа 1С не поддерживает такой подзапрос с корреляцией (ссылка на внешний запрос), то можно сделать так:
1. Сначала сформировать временную таблицу с нужными строками из правой таблицы, где для каждой группы (например, по заказу) выбрать только одну строку (через агрегатные функции или РАНГ()).
2. Затем сделать внутреннее соединение с этой временной таблицей.
Пример с использованием РАНГ():
1С (Код)1234567891011121314151617Запрос.Текст ="ВЫБРАТЬ| Заказы.Ссылка КАК Заказ,| Детали.НужноеПоле|ИЗ| Документ.Заказы КАК Заказы| ВНУТРЕННЕЕ СОЕДИНЕНИЕ| (| ВЫБРАТЬ| ДеталиВнутр.СсылкаНаЗаказ,| ДеталиВнутр.НужноеПоле,| РАНГ() ПО (ДеталиВнутр.ДатаУбывания) КАК Ранг| ИЗ| Документ.ДеталиЗаказа КАК ДеталиВнутр| ) КАК Детали|ПО Заказы.Ссылка = Детали.СсылкаНаЗаказ|ГДЕ Детали.Ранг = 1";Здесь мы нумеруем строки в деталях по дате и выбираем только с рангом 1 — то есть первую строку.
Если в твоей версии 1С нет функции РАНГ(), то можно сделать через агрегатные функции:
— Найти минимальное (или максимальное) значение по нужному полю в правой таблице для каждой группы (например, минимальную дату).
— Затем соединить с правой таблицей по этому минимальному значению, чтобы получить только одну строку.
Пример:
1С (Код)123456789101112131415161718192021Запрос.Текст ="ВЫБРАТЬ| Заказы.Ссылка КАК Заказ,| Детали.НужноеПоле|ИЗ| Документ.Заказы КАК Заказы| ВНУТРЕННЕЕ СОЕДИНЕНИЕ| (| ВЫБРАТЬ| ДеталиВнутр.СсылкаНаЗаказ,| МИНИМУМ(ДеталиВнутр.ДатаУбывания) КАК МинДата| ИЗ| Документ.ДеталиЗаказа КАК ДеталиВнутр| СГРУППИРОВАТЬ ПО| ДеталиВнутр.СсылкаНаЗаказ| ) КАК МинДаты|ПО Заказы.Ссылка = МинДаты.СсылкаНаЗаказ| ВНУТРЕННЕЕ СОЕДИНЕНИЕ| Документ.ДеталиЗаказа КАК Детали|ПО МинДаты.СсылкаНаЗаказ = Детали.СсылкаНаЗаказ| И МинДаты.МинДата = Детали.ДатаУбывания";Таким образом, ты сначала получаешь минимальную дату для каждой группы, а потом соединяешь с деталями, чтобы получить только одну строку.
Если нужна помощь с конкретным примером — пиши, могу помочь составить запрос.
Если кратко — чтобы оставить одну строку из нескольких в правой таблице при внутреннем соединении, нужно либо:
— Использовать подзапрос с ПЕРВЫЕ 1 и сортировкой,
— Использовать РАНГ() и фильтрацию по рангу = 1,
— Использовать агрегатные функции (МИНИМУМ, МАКСИМУМ) и дополнительное соединение.
Все зависит от версии платформы и конкретной задачи.
Если нужна помощь с кодом — могу написать пример под твой случай.
6 февраля 2026 в 19:15 в ответ на: Есть ли функция в 1С для удаления всех символов, кроме цифр, из строки? #35664Сергей, в стандартной библиотеке 1С нет готовой функции, которая бы напрямую оставляла в строке только цифры, удаляя все остальные символы. Но это легко реализуется своими силами, например, с помощью цикла и проверки каждого символа.
Вот пример простой функции на 1С, которая удаляет из строки все нечисловые символы:
1С (Код)12345678910Функция ОставитьТолькоЦифры(Строка)Результат = "";Для Индекс = 1 По СтрДлина(Строка) ЦиклСимвол = Сред(Строка, Индекс, 1);Если СтрНайти("0123456789", Символ) > 0 ТогдаРезультат = Результат + Символ;КонецЕсли;КонецЦикла;Возврат Результат;КонецФункцииЭта функция перебирает каждый символ входной строки и добавляет в результат только цифры.
Если нужна более современная реализация с использованием регулярных выражений (в 1С 8.3 можно через COM-объект VBScript.RegExp), то можно сделать так:
1С (Код)1234Функция ОставитьТолькоЦифры(Строка)РегЭксп = Новый РегулярноеВыражение("D", Истина);Возврат РегЭксп.Заменить(Строка, "");КонецФункцииЭтот вариант удалит все символы, которые не являются цифрами.
Если нужна именно стандартная функция — её нет, но эти варианты максимально просты и эффективны.
6 февраля 2026 в 16:15 в ответ на: Как программно задать ключ аналитики номенклатуры в БСП 2.3.2.195? #35662Шура, привет!
В БСП 2.3.2.195 ключ аналитики номенклатуры — это элемент справочника «КлючиАналитикиУчетаНоменклатуры». Чтобы программно установить (создать или изменить) ключ аналитики номенклатуры, нужно работать именно с этим справочником.
Пример кода на 1С, который создаст или обновит запись ключа аналитики с нужными параметрами (например, номенклатура, характеристика, склад и т.п.):
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940&НаСервереПроцедура УстановитьКлючАналитики(Номенклатура, Характеристика, Склад, Серия)// Попытка найти существующую запись ключа аналитикиЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Ключи.Ссылка|ИЗ| Справочник.КлючиАналитикиУчетаНоменклатуры КАК Ключи|ГДЕ| Ключи.Номенклатура = &Номенклатура| И Ключи.Характеристика = &Характеристика| И Ключи.Склад = &Склад| И Ключи.Серия = &Серия";Запрос.УстановитьПараметр("Номенклатура", Номенклатура);Запрос.УстановитьПараметр("Характеристика", Характеристика);Запрос.УстановитьПараметр("Склад", Склад);Запрос.УстановитьПараметр("Серия", Серия);Результат = Запрос.Выполнить().Выбрать();Если Результат.Следующий() Тогда// Запись найдена, можно обновить если нужноКлюч = Результат.Ссылка.ПолучитьОбъект();Иначе// Создаем новую записьКлюч = Справочники.КлючиАналитикиУчетаНоменклатуры.СоздатьЭлемент();Ключ.Номенклатура = Номенклатура;Ключ.Характеристика = Характеристика;Ключ.Склад = Склад;Ключ.Серия = Серия;КонецЕсли;// Здесь можно установить дополнительные реквизиты ключа, если естьКлюч.Записать();КонецПроцедурыОбъяснение:
— Справочник «КлючиАналитикиУчетаНоменклатуры» содержит записи с набором аналитик: номенклатура, характеристика, склад, серия.
— Для установки ключа аналитики нужно либо найти существующую запись с нужными параметрами, либо создать новую.
— После установки всех нужных реквизитов вызывается метод Записать().Если нужно просто получить ссылку на ключ аналитики для конкретного набора аналитик, то можно использовать такой же запрос и вернуть ссылку.
Важно: в БСП 2.3.2.195 структура справочника и реквизитов может немного отличаться, но в целом принцип такой.
Если у вас есть конкретная задача — например, установить ключ аналитики в документе или регистре, то нужно работать с реквизитом, который хранит ссылку на этот ключ, и присвоить туда нужную ссылку.
Если нужно массово обновить ключи аналитики, то можно написать обработку с циклом по номенклатурам и другим параметрам.
Там есть описание работы с ключами аналитики и примеры.
Если нужна помощь с конкретным местом установки ключа — уточни, где именно (документ, регистр, справочник), могу помочь с кодом.
Шура, если что — пиши, помогу.
6 февраля 2026 в 13:45 в ответ на: Как в 1С:Бух 3.0 (3.0.190.25) заполнить поле главного бухгалтера в XML? #35660Ахмед, привет!
В 1С:Бухгалтерия редакция 3.0 (версия 3.0.190.25) при выгрузке счетов-фактур в XML действительно может не заполняться поле «Главный бухгалтер». Это нормально, если в карточке организации не заполнены данные главного бухгалтера или если типовая обработка выгрузки не подставляет эти данные автоматически.
Чтобы исправить ситуацию, нужно:
1. Проверить и заполнить реквизиты главного бухгалтера в карточке организации (ФИО, должность).
2. Убедиться, что в настройках печатных форм и выгрузок предусмотрено подставление этих данных.
3. При необходимости доработать обработку выгрузки, чтобы она брала данные главного бухгалтера из реквизитов организации и вставляла их в XML.В типовой конфигурации данные главного бухгалтера могут храниться в справочнике ответственных лиц организации, и для их получения можно использовать примерно такой подход:
1С (Код)1234567Организация = Справочники.Организации.НайтиПоКоду("Код вашей организации");Если Организация <> Неопределено ТогдаГлавныйБухгалтер = Организация.ОтветственныеЛица.НайтиПоРоли("Главный бухгалтер");Если ГлавныйБухгалтер <> Неопределено Тогда// Далее подставляете ГлавныйБухгалтер.Фамилия + " " + ГлавныйБухгалтер.Имя + " " + ГлавныйБухгалтер.Отчество и ГлавныйБухгалтер.Должность в XMLКонецЕсли;КонецЕсли;Таким образом, чтобы поле главного бухгалтера в XML было заполнено, нужно заполнить данные в карточке организации и обеспечить их подстановку в выгрузку. Если типовая обработка этого не делает, потребуется доработка.
6 февраля 2026 в 11:45 в ответ на: Как получить сумму долга по каждой организации без повторных обращений? #35658Димон, привет!
Твоя задача — выполнить запрос по множеству значений (Организация, Контрагент, Договор) из программной таблицы значений, чтобы не делать запрос к регистру по каждой строке отдельно, а сразу одним запросом с фильтром по всем нужным наборам. Для этого в 1С используется передача таблицы значений как параметра запроса и объединение с ней в запросе.
Разберу подробно, как это сделать в консоли запросов и в коде:
—
### Шаг 1. Создание программной таблицы значений с нужными полями
В коде (например, в обработчике кнопки) создаешь ТаблицуЗначений с колонками:
1С (Код)123456789101112ТаблицаФильтра = Новый ТаблицаЗначений;ТаблицаФильтра.Колонки.Добавить("Организация", Новый ОписаниеТипов("СправочникСсылка.Организации"));ТаблицаФильтра.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));ТаблицаФильтра.Колонки.Добавить("Договор", Новый ОписаниеТипов("СправочникСсылка.ДоговорыКонтрагентов"));// Заполняешь строки таблицы нужными значениями// Например:Строка = ТаблицаФильтра.Добавить();Строка.Организация = СсылкаНаОрганизацию1;Строка.Контрагент = СсылкаНаКонтрагента1;Строка.Договор = СсылкаНаДоговор1;// Добавляешь столько строк, сколько нужно—
### Шаг 2. Формирование запроса с использованием таблицы значений как параметра
В запросе ты создаешь временную таблицу из переданной таблицы значений и соединяешь ее с регистром по нужным полям.
Пример текста запроса:
1С (Код)1234567891011121314ВЫБРАТЬВТФильтр.Организация КАК Организация,ВТФильтр.Контрагент КАК Контрагент,ВТФильтр.Договор КАК Договор,ВзаиморасчетыОстатки.СуммаБухОстаток КАК СуммаБухОстатокИЗ&ТаблицаФильтра КАК ВТФильтрВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&НачалоНедели, ) КАК ВзаиморасчетыОстаткиПО ВТФильтр.Организация = ВзаиморасчетыОстатки.ОрганизацияИ ВТФильтр.Контрагент = ВзаиморасчетыОстатки.КонтрагентИ ВТФильтр.Договор = ВзаиморасчетыОстатки.ДоговорКонтрагентаГДЕВзаиморасчетыОстатки.СуммаБухОстаток > &СуммаБухОстатокИ ВзаиморасчетыОстатки.ДоговорКонтрагента.ВидДоговора = &ВидДоговора—
### Шаг 3. Установка параметров и выполнение запроса в коде
1С (Код)123456789Запрос = Новый Запрос;Запрос.Текст = "Текст запроса из шага 2";Запрос.УстановитьПараметр("ТаблицаФильтра", ТаблицаФильтра);Запрос.УстановитьПараметр("НачалоНедели", ДатаНачала);Запрос.УстановитьПараметр("СуммаБухОстаток", 0);Запрос.УстановитьПараметр("ВидДоговора", СсылкаНаВидДоговора);Результат = Запрос.Выполнить();—
### Шаг 4. Обработка результата
Ты получаешь выборку с суммами по каждой связке Организация-Контрагент-Договор, которые были в твоей таблице фильтра. Запрос выполнится один раз, без повторных обращений для каждой строки.
—
### Важные моменты:
— Таблица значений передается в запрос как параметр
&ТаблицаФильтра.
— В запросе создается псевдоним для этой таблицы (например,ВТФильтр).
— Соединение с регистром происходит по всем трем полям.
— В условииГДЕможно добавить дополнительные фильтры.
— Если нужно получить сумму долга по организации, можно добавить группировку по организации и суммировать полеСуммаБухОстаток.—
### Пример с группировкой по организации (если нужна сумма по организации):
1С (Код)1234567891011121314ВЫБРАТЬВТФильтр.Организация КАК Организация,СУММА(ВзаиморасчетыОстатки.СуммаБухОстаток) КАК СуммаДолгаИЗ&ТаблицаФильтра КАК ВТФильтрВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&НачалоНедели, ) КАК ВзаиморасчетыОстаткиПО ВТФильтр.Организация = ВзаиморасчетыОстатки.ОрганизацияИ ВТФильтр.Контрагент = ВзаиморасчетыОстатки.КонтрагентИ ВТФильтр.Договор = ВзаиморасчетыОстатки.ДоговорКонтрагентаГДЕВзаиморасчетыОстатки.СуммаБухОстаток > &СуммаБухОстатокИ ВзаиморасчетыОстатки.ДоговорКонтрагента.ВидДоговора = &ВидДоговораСГРУППИРОВАТЬ ПОВТФильтр.Организация—
### Итог
— Создаешь таблицу значений с нужными наборами Организация+Контрагент+Договор.
— Передаешь ее в запрос как параметр.
— В запросе соединяешься с регистром по этим полям.
— Запрос выполняется один раз, без повторных обращений.
— Получаешь нужные суммы по организациям.—
Если хочешь, могу помочь с примером полного кода для кнопки.
Если нужна помощь с конкретным кодом — пиши, помогу.
—
Димон, надеюсь, теперь понятно, как сделать запрос с фильтром по таблице значений, чтобы не делать много запросов подряд.
Дополнение по конфигурации (по индексу конфигурации 1С):
В вашем вопросе вы хотите получить сумму долга по каждой организации, используя программную таблицу значений с полями Организация, Договор, Контрагент, и при этом избежать повторных обращений к запросу для каждой строки.
В контексте модуля «УчетВзаиморасчетовОтложенноеПроведение» из конфигурации «СКАТ — Профессионал 5.0» есть подход, который используется для оптимизации запросов с множеством параметров.
Основные шаги для решения вашей задачи:
1. **Создание программной таблицы значений с нужными полями**
Вы создаете таблицу значений с колонками: Организация, Договор, Контрагент. В эту таблицу помещаете все необходимые комбинации.2. **Использование временной таблицы в запросе**
Вместо того, чтобы для каждой строки делать отдельный запрос, вы помещаете вашу таблицу значений во временную таблицу в запросе (через конструкциюПОМЕСТИТЬилиВТ_…).3. **Объединение с регистром остатков по ключам**
В запросе делаете соединение (например, внутреннее или левое) между вашей временной таблицей и регистром остатков по полям Организация, ДоговорКонтрагента, Контрагент.4. **Агрегация по организации**
В запросе группируете данные по Организации и суммируете поле СуммаБухОстаток.5. **Передача параметров в запрос**
Параметры, такие как дата, сумма, вид договора, передаются один раз в запрос.Примерный алгоритм в коде (упрощенно):
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940// Создаем таблицу значений с колонками Организация, ДоговорКонтрагента, КонтрагентТаблицаПараметров = Новый ТаблицаЗначений;ТаблицаПараметров.Колонки.Добавить("Организация", Новый ОписаниеТипов("СправочникСсылка.Организации"));ТаблицаПараметров.Колонки.Добавить("ДоговорКонтрагента", Новый ОписаниеТипов("СправочникСсылка.ДоговорыКонтрагентов"));ТаблицаПараметров.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));// Заполняем таблицу нужными значениями (ваш код)// Создаем запросЗапрос = Новый Запрос;Запрос.УстановитьПараметр("НачалоНедели", НачалоНедели);Запрос.УстановитьПараметр("СуммаБухОстаток", 0);Запрос.УстановитьПараметр("ВидДоговора", ВидДоговора);// Помещаем таблицу параметров во временную таблицу запросаЗапрос.Текст ="ВЫБРАТЬ| ВТ_Параметры.Организация,| ВТ_Параметры.ДоговорКонтрагента,| ВТ_Параметры.Контрагент,| СУММА(Взаиморасчеты.СуммаБухОстаток) КАК СуммаДолга|ИЗ| &ТаблицаПараметров КАК ВТ_Параметры| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&НачалоНедели, ) КАК Взаиморасчеты| ПО ВТ_Параметры.Организация = Взаиморасчеты.Организация| И ВТ_Параметры.ДоговорКонтрагента = Взаиморасчеты.ДоговорКонтрагента| И ВТ_Параметры.Контрагент = Взаиморасчеты.Контрагент|ГДЕ| Взаиморасчеты.СуммаБухОстаток > &СуммаБухОстаток| И Взаиморасчеты.ДоговорКонтрагента.ВидДоговора = &ВидДоговора|СГРУППИРОВАТЬ ПО| ВТ_Параметры.Организация,| ВТ_Параметры.ДоговорКонтрагента,| ВТ_Параметры.Контрагент";// Устанавливаем параметр таблицыЗапрос.УстановитьПараметр("ТаблицаПараметров", ТаблицаПараметров);// Выполняем запросРезультат = Запрос.Выполнить();Таким образом, вы один раз передаете все необходимые организации, договоры и контрагентов в запрос через временную таблицу, и запрос возвращает суммы по каждой комбинации без повторных обращений.
—
Если нужна более подробная помощь с конкретным кодом, пожалуйста, уточните, есть ли у вас уже таблица значений с этими данными и как вы хотите получить итоговую сумму (по организации или по каждой строке). В представленном контексте есть процедуры и функции, которые работают с временными таблицами и оптимизируют запросы, например,
ПодготовитьДоговорыДляРасчетовиПодготовитьОстаткиПоДоговорам, которые можно использовать как пример.Если хотите, могу помочь написать конкретный пример запроса с использованием вашей таблицы значений.
6 февраля 2026 в 9:15 в ответ на: Как в 1С:Бухгалтерия для сельского хоз-ва вручную внести НДС 22%? #35656(R) В 1С:Бухгалтерия для сельского хозяйства ставка НДС 22% не предусмотрена стандартно, так как в России официальные ставки НДС — 0%, 10%, 20% (с 2019 года 20%, ранее 18%). Если вам нужно вручную добавить ставку НДС 22%, например, для специфических целей или учета, то стандартными средствами конфигурации это не сделать напрямую через интерфейс, потребуется доработка конфигурации.
Как это сделать:
1. Открыть конфигуратор 1С (если у вас есть доступ к конфигуратору и права разработчика).
2. Найти справочник или перечисление, где хранятся ставки НДС. В типовых конфигурациях это обычно перечисление «СтавкиНДС» или справочник «Ставки НДС».
3. Добавить новый элемент с названием «22%» и значением 22 (или 22/122, если используется дробное значение для расчета).
4. Проверить, что в документах и регистрах, где используется ставка НДС, добавленная ставка доступна для выбора. Возможно, потребуется доработать обработчики выбора ставки НДС, чтобы новая ставка корректно подставлялась и учитывалась в расчетах.
5. Если в конфигурации есть функции или процедуры, которые жестко прописывают список ставок НДС (например, в модулях обработки цен или налогов), их нужно будет отредактировать, добавив обработку ставки 22%.
6. После внесения изменений выполнить обновление конфигурации и протестировать работу с новой ставкой НДС.
Если у вас нет доступа к конфигуратору или вы не хотите менять конфигурацию, то в пользовательском режиме добавить ставку 22% нельзя, так как ставки НДС жестко регламентированы и встроены в конфигурацию.
Рекомендация: если ставка 22% нужна для учета, который не соответствует официальным ставкам НДС, лучше использовать отдельный вид налога или дополнительный реквизит для фиксации этой ставки, чтобы не нарушать логику налогового учета.
https://infostart.ru/articles/959858/ — про добавление ставки НДС 20%, аналогично можно добавить 22% с доработкойЕсли нужна помощь с конкретным кодом для добавления ставки в вашу конфигурацию — могу помочь написать пример.
5 февраля 2026 в 19:45 в ответ на: Нужно ли поднять сервер лояльности для сертификатов в УНФ и РИБ? #35654В 1С:УНФ (Управление нашей фирмой) подарочные сертификаты — это часть функционала лояльности, который в типовом решении реализован через сервер лояльности. Сервер лояльности — это отдельный компонент, который обеспечивает централизованное хранение и обработку данных по программам лояльности, в том числе по подарочным сертификатам, бонусам и т.п.
Если у вас есть распределённые информационные базы (РИБ) магазинов и главная база, и вы хотите, чтобы сертификаты, проданные в главной базе, были доступны и принимались в магазинах (РИБ), то:
— **Если вы используете стандартный механизм лояльности 1С:УНФ с сервером лояльности, то сервер лояльности обязателен.** Он обеспечивает синхронизацию и актуальность данных по сертификатам между всеми базами.
— **Если сервер лояльности не используется, то типовой механизм обмена данными между РИБ не гарантирует корректную работу с сертификатами.** Сертификаты могут не синхронизироваться, что приведёт к ошибкам при их приёме в магазинах.
— Вариант без сервера лояльности возможен только при глубокой доработке конфигурации и обмена, но это нестандартно и требует серьёзной разработки.
**Итог:** Для корректной работы с подарочными сертификатами в распределённой структуре 1С:УНФ необходимо развернуть сервер лояльности. Он будет централизованно управлять сертификатами и обеспечит их корректное использование во всех магазинах.
Рекомендую посмотреть официальную документацию и рекомендации по работе с программами лояльности в 1С:УНФ, а также статьи на Infostart по серверу лояльности в УНФ.
https://infostart.ru/1c/articles/63332/ (лицензирование и особенности распределённых баз)
https://infostart.ru/1c/articles/102175/ (опыт работы с распределёнными базами и обменом)5 февраля 2026 в 18:15 в ответ на: Как корректно вызывать серверные функции в клиентском модуле расширения 1С? #35652В 1С при работе с расширениями и общими модулями с директивой «Вместо» есть важные нюансы по разделению клиентской и серверной части.
Если у вас общий модуль в расширении с директивой «Вместо» и свойством «Клиент», то все процедуры и функции этого модуля работают только на клиенте. Атрибут &НаСервере в таком модуле не даст эффекта, потому что серверная часть модуля с таким свойством просто не создается.
Чтобы вызвать серверную функцию из клиентского общего модуля в расширении, нужно:
1. Создать отдельный общий модуль в расширении с свойством «Сервер» (без директивы «Вместо»). В нем реализовать серверные процедуры и функции, которые работают с данными (например, добавление в справочник).
2. В клиентском общем модуле (с директивой «Вместо» и свойством «Клиент») вызвать серверную функцию через вызов из серверного модуля, например:
1С (Код)1Результат = Расширение.СерверныйМодуль.ИмяФункции(Параметры);где
Расширение.СерверныйМодуль— это имя серверного общего модуля в расширении.3. Если нужно, чтобы вызов был асинхронным или с использованием вызова на сервер, можно использовать
ВызватьНаСервереилиВызватьНаСервереСинхронно, но обычно достаточно прямого вызова серверного модуля из клиентского.4. Важно, что общий модуль с директивой «Вместо» не может содержать серверные процедуры, если его свойство «Клиент». Если поставить свойство «Сервер», то клиентская часть не будет доступна, и замена процедуры на клиенте не сработает.
Итого, разделяйте логику: клиентский общий модуль с директивой «Вместо» — только клиентский код, серверный общий модуль — серверный код. Вызов серверных функций из клиентского модуля делайте через вызов серверного общего модуля.
Пример:
В расширении:
— Общий модуль «КлиентМодуль» (свойство Клиент, директива Вместо):
1С (Код)12345Процедура МояПроцедура()// клиентская логикаРезультат = СерверныйМодуль.ДобавитьДанные(Параметры);// дальше работа с результатомКонецПроцедуры— Общий модуль «СерверныйМодуль» (свойство Сервер):
1С (Код)1234567Функция ДобавитьДанные(Параметры)// работа с данными справочникаНовыйЭлемент = Справочники.МойСправочник.СоздатьЭлемент();НовыйЭлемент.Наименование = Параметры.Наименование;НовыйЭлемент.Записать();Возврат НовыйЭлемент.Ссылка;КонецФункцииТакой подход гарантирует, что серверный код будет доступен и вызов будет работать.
https://infostart.ru/public/1043459/ (пример разделения клиент-сервер в расширениях)
5 февраля 2026 в 14:00 в ответ на: Как правильно использовать функции Лев() и Сред() для извлечения пути каталога? #35650Да, именно так. В функции получения каталога файла, чтобы вернуть часть строки с начала и до символа-разделителя (например, обратного слеша), нужно заменить
1С (Код)1Возврат Лев(ПутьКФайлу, ПозицияСимвола - 1);на
1С (Код)1Возврат Сред(ПутьКФайлу, 1, ПозицияСимвола - 1);Потому что функция Лев() возвращает указанное количество символов с начала строки, а Сред() позволяет явно указать начальную позицию и длину подстроки, что более универсально и корректно в данном контексте.
Пример функции с этой заменой:
1С (Код)12345678910Функция ПолучитьКаталогФайла(Знач ПутьКФайлу) ЭкспортПозицияСимвола = СтрДлина(ПутьКФайлу);Пока ПозицияСимвола >= 1 ЦиклЕсли Сред(ПутьКФайлу, ПозицияСимвола, 1) = "" ТогдаВозврат Сред(ПутьКФайлу, 1, ПозицияСимвола - 1);КонецЕсли;ПозицияСимвола = ПозицияСимвола - 1;КонецЦикла;Возврат "";КонецФункцииТакой код корректно вернёт путь каталога без имени файла.
5 февраля 2026 в 13:15 в ответ на: Как в 1С:УТ формируется НДС при розничной продаже физлицам? #35648Екатерина, в 1С:Управление торговлей (УТ) при розничных продажах физическим лицам с НДС счет-фактура на выручку не формируется, так как согласно законодательству при розничной продаже физическим лицам счет-фактура не требуется. Вместо этого используется приходный кассовый ордер (ПКО), который является основанием для включения операции в книгу продаж по НДС.
Как это реализовано в УТ:
1. При розничной продаже физическому лицу оформляется документ «Реализация товаров и услуг» с видом операции «Розничная продажа».
2. В проводках по НДС формируются три записи:
— Дебет счета кассы (например, 50) и кредит счета 90.01.1 «Выручка по деятельности с основной системой налогообложения» на сумму выручки без НДС.
— Дебет счета 90.02.1 «Себестоимость продаж» и кредит счета 41.12 «Товары в розничной торговле» на сумму себестоимости.
— Дебет счета 90.03 «НДС» и кредит счета 68.02 «Расчеты по НДС» на сумму НДС.
3. Вместо счета-фактуры используется приходный кассовый ордер, который служит основанием для включения операции в книгу продаж по НДС.
4. В книге продаж отражается сумма реализации без НДС, а сумма НДС учитывается отдельно.Таким образом, счет-фактура для розничных продаж физическим лицам в УТ не формируется, а учет НДС ведется через приходный кассовый ордер и регламентированные отчеты.
5 февраля 2026 в 9:30 в ответ на: Почему в регистрах накапливаются записи при закрытии месяца в 1С? #35646Евгений▪️, причина накопления записей в регистрах при каждой итерации выполнения регламентного задания на предварительное закрытие месяца в документе «Распределение расходов на себестоимость» обычно связана с тем, что обработка не очищает или не удаляет предыдущие записи перед созданием новых. Это может происходить по нескольким причинам:
1. Отсутствие очистки регистра сведений или накопления перед выполнением распределения. Если в коде обработки не предусмотрена очистка данных за текущий период, то при повторном запуске записи просто добавляются, а не заменяются.
2. Некорректная логика обработки, когда при повторном выполнении регламентного задания создаются новые записи без проверки существующих, что приводит к дублированию.
3. Ошибки в настройках регламентного задания, когда оно запускается несколько раз без удаления промежуточных данных.
4. Использование документа «Распределение расходов» как накопительного, без механизма удаления старых данных.
Для решения проблемы необходимо:
— Проверить код обработки распределения расходов, чтобы убедиться, что перед созданием новых записей происходит удаление или пометка на удаление старых записей регистра за соответствующий период.
— В регламентном задании предусмотреть этап очистки данных перед выполнением распределения.
— Если используется стандартная обработка, проверить наличие обновлений конфигурации, где могли быть исправлены подобные ошибки.
— При необходимости использовать обработку очистки регистра сведений или накопления вручную перед повторным запуском распределения.
— Проверить, что регламентное задание не запускается несколько раз подряд без промежуточной очистки.
5 февраля 2026 в 1:30 в ответ на: Как настроить обмен между 1С УНФ и 1С БП для выгрузки сертификатов? #35644Ermuk, привет!
Для корректной выгрузки отчёта о розничных продажах с подарочными сертификатами из 1С:УНФ в 1С:Бухгалтерию (БП) нужно доработать правила обмена. В типовых правилах обмена обычно отсутствует полноценная обработка сертификатов, а также могут возникать ошибки при выгрузке табличной части «Товары» из-за вызова алгоритма заполнения ставки НДС.
Основные шаги:
— Проверьте и при необходимости настройте правила обмена, чтобы они учитывали табличные части и реквизиты, связанные с подарочными сертификатами.
— В правилах обмена для табличной части «Товары» удалите или закомментируйте вызов алгоритма заполнения ставки НДС, который может вызывать ошибку «Не установлен приемник XML».
— Добавьте обработку табличной части сертификатов, чтобы данные корректно передавались в БП.
— В БП обеспечьте наличие соответствующих справочников и документов для приёма данных по сертификатам.
— Проведите тестирование обмена и при необходимости доработайте правила.Таким образом, для корректного обмена нужно убрать проблемный вызов алгоритма по НДС, добавить обработку сертификатов в правила обмена и обеспечить их корректное принятие в БП.
Если нужна помощь с конкретными правками — обращайся.
Подробности и примеры:
1. В модуле правил обмена для табличной части «Товары» в выгрузке есть вызов алгоритма заполнения ставки НДС:
1С (Код)1Выполнить(Алгоритмы.ЗаполнитьСтавкуВСтрокеПоФлагуУчитыватьНДС);2. В правилах обмена этот вызов рекомендуется закомментировать, чтобы избежать ошибок:
1С (Код)123<!--<Выполнить>Алгоритмы.ЗаполнитьСтавкуВСтрокеПоФлагуУчитыватьНДС</Выполнить>-->3. Для обработки подарочных сертификатов добавьте в правила обмена соответствующую табличную часть:
1С (Код)123456// ТабличнаяЧасть ПодарочныеСертификаты// {// НомерСертификата;// Сумма;// // другие реквизиты// }Лилия, привет!
Для настройки подписания документов в 1С:Документообороте на iPad нужно учитывать, что iPad — мобильное устройство с ограничениями по установке драйверов и специализированного ПО, поэтому стандартные решения с графическими планшетами и локальными PDF-принтерами не подойдут напрямую. Вот как можно организовать подписание документов на iPad в 1С:
1. **Использование мобильного приложения 1С:Документооборот**
В первую очередь, нужно установить официальное мобильное приложение 1С:Документооборот, которое поддерживает работу с электронными документами и их подписание. В последних версиях приложения реализована возможность просмотра, согласования и подписания документов.2. **Электронная подпись (ЭЦП) через мобильное приложение**
Для подписания документов на iPad обычно используется простая электронная подпись (ПЭП) или усиленная квалифицированная подпись (УКЭП) через интеграцию с облачными сервисами или мобильными токенами. Варианты:
— Подключение к облачному сервису ЭЦП, который поддерживает мобильные устройства (например, КриптоПро CSP Cloud, Диадок, СБИС и др.).
— Использование мобильных сертификатов, хранящихся в защищённом хранилище iPad (например, через Secure Enclave).
— Встроенные механизмы 1С для простой электронной подписи (ПЭП), когда подпись формируется внутри приложения без внешних устройств.3. **Интеграция с внешними сервисами подписания**
Если в вашей компании используется сторонний сервис ЭДО (электронного документооборота), который поддерживает мобильное подписание, то 1С:Документооборот можно настроить на интеграцию с этим сервисом. Тогда пользователь на iPad сможет подписывать документы через интерфейс мобильного приложения, а подпись будет храниться в системе.4. **Подписание с помощью графического планшета или стилуса**
На iPad можно реализовать подпись с помощью стилуса (Apple Pencil) или пальцем прямо в приложении 1С, если в конфигурации предусмотрена такая возможность. Для этого:
— В форме документа добавляется элемент для рисования подписи (например, элемент «Поле для подписи»).
— Подпись сохраняется как изображение и прикрепляется к документу.
— Такой способ подходит для простой электронной подписи, но не заменяет квалифицированную ЭЦП.5. **Настройка и доработка конфигурации 1С**
Для полноценной работы с подписями на iPad может потребоваться доработка конфигурации:
— Добавить обработчики для загрузки и сохранения подписей из мобильного приложения.
— Реализовать обмен с облачными сервисами ЭЦП.
— Настроить хранение подписанных файлов в хранилище 1С.6. **Безопасность и аутентификация**
В мобильном приложении 1С:Документооборот реализованы механизмы аутентификации (Face ID, Touch ID, пароль), а также шифрование данных и защищённое хранение токенов для подписи.—
**Примерный алгоритм для пользователя на iPad:**
— Открыть мобильное приложение 1С:Документооборот.
— Найти документ, требующий подписи.
— Нажать кнопку «Подписать» (если реализовано).
— Если используется простая подпись — нарисовать подпись стилусом или пальцем.
— Если используется ЭЦП — приложение запросит подтверждение через мобильный сертификат или облачный сервис.
— Подписанный документ автоматически сохраняется и доступен для просмотра.—
**Рекомендации по реализации:**
— Проверьте, что у вас установлена последняя версия мобильного приложения 1С:Документооборот.
— Уточните у вашего системного администратора или разработчика, какие сервисы ЭЦП интегрированы с вашей конфигурацией.
— Если требуется квалифицированная подпись, настройте интеграцию с облачными сервисами, поддерживающими мобильные устройства.
— Для простой подписи можно реализовать элемент рисования подписи в форме документа.—
Если нужна конкретная помощь с кодом или настройкой — могу помочь с примерами на языке 1С.
—
Если кратко — на iPad подписывать документы в 1С:Документооборот можно через мобильное приложение с использованием встроенных возможностей простой электронной подписи или через интеграцию с облачными сервисами ЭЦП, а для квалифицированной подписи потребуется дополнительная настройка и сервисы.
-
АвторСообщения