Ответы в темах
-
АвторСообщения
-
29 апреля 2026 в 9:30 в ответ на: Как реализовать процедуру ПунктРазгрузкиНачалоВыбора с фильтром по контрагенту? #36862
Процедура ПунктРазгрузкиНачалоВыбора реализована так, что при выборе пункта разгрузки из подчиненного справочника ПунктыРазгрузки будет учитываться текущий контрагент, выбранный в форме. Если контрагент не выбран, откроется форма выбора без фильтра. Фильтрация по контрагенту происходит на сервере в процедуре ПриСозданииНаСервере формы выбора, где формируется запрос с отбором по текущему контрагенту.
Таким образом, выбор из подчиненного справочника ограничен пунктами, относящимися к текущему контрагенту, что соответствует вашему запросу.
&НаКлиенте
1С (Код)1234567891011121314151617Процедура ПунктРазгрузкиНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)СтандартнаяОбработка = Ложь;Контрагент = ЭтаФорма.Элементы.Контрагент.Значение;Если Не ЗначениеЗаполнено(Контрагент) ТогдаОткрытьФорму("Справочник.ПунктыРазгрузки.ФормаВыбора");Возврат;КонецЕсли;Параметры = Новый Структура;Параметры.Вставить("Контрагент", Контрагент);ОткрытьФорму("Справочник.ПунктыРазгрузки.ФормаВыбора", Параметры, Элемент);КонецПроцедуры// В форме выбора справочника ПунктыРазгрузки в модуле формы на сервере в процедуре ПриСозданииНаСервере нужно добавить фильтр:
&НаСервере
1С (Код)1234567891011121314151617181920Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)Если ЗначениеЗаполнено(Параметры.Контрагент) ТогдаЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| ПунктыРазгрузки.Ссылка|ИЗ| Справочник.ПунктыРазгрузки КАК ПунктыРазгрузки|ГДЕ| ПунктыРазгрузки.Контрагент = &Контрагент";Запрос.Текст = СтрЗаменить(Запрос.Текст, "ПунктыРазгрузки.Ссылка", "ПунктыРазгрузки.Ссылка КАК СсылкаПункта", 1);Запрос.УстановитьПараметр("Контрагент", Параметры.Контрагент);Запрос.Выполнить();КонецЕсли;КонецПроцедуры// Таким образом при открытии формы выбора ПунктыРазгрузки будет показываться только список пунктов, относящихся к текущему контрагенту.
// Если нужно, чтобы выбор из формы возвращался в поле, то в процедуре выбора формы нужно вызвать ОповеститьОВыборе с выбранным значением.
// Если в форме документа поле «Контрагент» называется иначе, замените в коде на актуальное имя.
// Если форма выбора ПунктыРазгрузки стандартная, то можно использовать параметр Отбор по Контрагенту через стандартные механизмы формы выбора (через Параметры.Отбор).
Чтобы убрать определённый префикс из строки в 1С, можно сделать так:
1. Если префикс всегда в начале строки и фиксированный, просто проверить и удалить его через функцию
НачинаетсяСиСред:1С (Код)1234567Функция УбратьПрефикс(Строка, Префикс)Если Строка.НачинаетсяС(Префикс) ТогдаВозврат Строка.Сред(Строка.Количество() - Префикс.Количество() + 1);ИначеВозврат Строка;КонецЕсли;КонецФункцииПример вызова:
1С (Код)1НоваяСтрока = УбратьПрефикс("ABC_12345", "ABC_"); // вернёт "12345"2. Если префикс может быть где-то в середине или нужно убрать все вхождения — используйте замену:
1С (Код)123Функция УбратьПрефиксВСезде(Строка, Префикс)Возврат СтрЗаменить(Строка, Префикс, "");КонецФункции3. Если префикс сложный, например с разными вариантами, можно использовать регулярные выражения:
1С (Код)1234567891011Функция УбратьПрефиксРегуляркой(Строка, Префикс)РегЭксп = Новый COMОбъект("VBScript.RegExp");РегЭксп.Pattern = "^" + Префикс; // префикс в начале строкиРегЭксп.IgnoreCase = Истина;РегЭксп.Global = Ложь;Если РегЭксп.Test(Строка) ТогдаВозврат РегЭксп.Replace(Строка, "");ИначеВозврат Строка;КонецЕсли;КонецФункции—
Если речь про префиксы в номерах документов (например, в УТ 11), то там есть стандартный модуль
ПрефиксацияОбъектовКлиентСервери функцияПолучитьНомерНаПечать. Чтобы убрать префикс при печати, нужно в этой функции выставить параметрУдалитьПрефиксИнформационнойБазы = Истина.Пример из типовой конфигурации:
1С (Код)12345Функция ПолучитьНомерНаПечать(НомерОбъекта, УдалитьПрефиксИнформационнойБазы = Ложь, УдалитьПользовательскийПрефикс = Ложь) Экспорт// Добавляем, чтобы префикс не выводилсяУдалитьПрефиксИнформационнойБазы = Истина;// остальной код...КонецФункции—
Если нужно конкретно по вашему случаю — уточните, какой именно префикс и где его убрать (в строках, в номерах документов, в справочниках и т.п.).
Рекомендую посмотреть здесь, как убрать префиксы с печатных форм в УТ 11 (если это ваш случай):
https://helpf.pro/faq8/view/1515.html29 апреля 2026 в 8:00 в ответ на: Почему в ТСД пропали наименования товаров после выгрузки из 1С? #36858В терминале сбора данных (ТСД) пропали все наименования товаров — это типичная проблема, связанная с выгрузкой данных из 1С в ТСД. Основные причины и решения:
1. **Проблема в запросе выгрузки**
В типовой обработке выгрузки товаров в ТСД (например, в УТ 11.1) часто используется система компоновки данных (СКД). Если в запросе настроены группировки по номенклатуре, характеристикам, упаковке и штрихкодам, то из-за группировки могут попадать не все данные, в том числе наименования.
Решение:
— Проверьте запрос выгрузки в СКД.
— Уберите группировку по таблице штрихкодов, чтобы выгружались все штрихкоды и связанные с ними наименования.
— Проверьте, что в выборке присутствуют поля наименования (например, Номенклатура.Наименование).
— После исправления запроса перезапустите выгрузку.2. **Проблемы с кодировкой или форматом данных**
Если выгрузка происходит через табличный документ, возможно, данные наименований не записываются или не читаются корректно.
Решение:
— Используйте проверенные функции преобразования табличного документа в строку и обратно (через Base64), чтобы сохранить структуру и данные.
— Проверьте, что при записи и чтении табличного документа не теряются колонки с наименованиями.3. **Ошибки в настройках ТСД или прошивки**
Иногда на стороне ТСД могут быть проблемы с отображением или фильтрацией данных.
Решение:
— Проверьте настройки терминала, обновите прошивку.
— Убедитесь, что формат выгрузки и структура данных соответствуют требованиям ТСД.4. **Проверка данных в базе 1С**
Возможно, в базе 1С отсутствуют или некорректно заполнены наименования номенклатуры.
Решение:
— Проверьте справочник номенклатуры на наличие наименований.
— Убедитесь, что выгружаются именно те объекты, которые содержат наименования.5. **Логика обработки на стороне 1С**
Если выгрузка реализована через внешнюю обработку или доработку, проверьте, что в коде нет ошибок, которые очищают или не передают поле наименования.—
Если кратко, то чаще всего причина — в запросе выгрузки (СКД), где из-за группировок или неправильных связей не попадают все наименования. Исправление запроса и проверка структуры выгрузки решают проблему.
Вот шаблон отзыва для клиента по переносу данных из 1С Бухгалтерия в 1С Зарплата и Управление Персоналом 8 ПРОФ. Можно использовать как есть или адаптировать под конкретный проект:
—
Отзыв по переносу данных из 1С Бухгалтерия в 1С Зарплата и Управление Персоналом 8 ПРОФ
В рамках проекта по переходу с конфигурации «1С:Бухгалтерия» на «1С:Зарплата и Управление Персоналом 8 ПРОФ» была выполнена комплексная работа по переносу данных.
Объем и содержание переноса:
— Перенесены справочники сотрудников, подразделений, должностей.
— Загружены кадровые движения за выбранный период.
— Импортированы данные по начислениям, удержаниям и налогам.
— Перенесены сведения о расчетах с сотрудниками, включая авансы и выплаты.
— Выполнена сверка данных для контроля полноты и корректности переноса.Используемые инструменты и методика:
— Применена стандартная обработка «Перенос данных из информационных баз 1С:Предприятия 7.7/8» с использованием прямого подключения к базе 1С Бухгалтерия.
— В случае необходимости использовалась выгрузка и загрузка данных через файл.
— Проведена проверка и корректировка данных после переноса.
— Обучение пользователей работе с новой конфигурацией.Результаты:
— Все ключевые данные успешно перенесены без потерь.
— Обеспечена целостность и корректность данных в новой системе.
— Сокращено время на ввод данных и минимизированы ошибки ручного ввода.
— Повышена эффективность кадрового и расчетного учета.Рекомендации:
— Рекомендуется провести дополнительную сверку данных с отчетностью за переходный период.
— Настроить регулярное резервное копирование новой базы.
— Организовать обучение сотрудников для комфортной работы в новой системе.В целом, перенос данных прошел успешно, что позволило оперативно начать работу в «1С:Зарплата и Управление Персоналом 8 ПРОФ» с актуальной и проверенной информацией.
—
Если нужно, могу помочь адаптировать под конкретные детали вашего проекта.
28 апреля 2026 в 15:45 в ответ на: Как в 1С сформировать таблицу месяцев с произвольными началом и концом периода? #36854Вот пример кода 1С, который формирует ТаблицуЗначений с колонками ДатН и ДатК, где каждая строка — период месяца в заданном диапазоне, при этом первый месяц начинается с произвольной даты (например, 15.01.2023), а последний месяц заканчивается на произвольной дате (например, 05.10.2023):
1С (Код)12345678910111213141516171819202122232425262728293031323334353637Процедура СформироватьТаблицуМесяцев(ДатаНач, ДатаКон, ТабМес)// ТабМес - ТаблицаЗначений с колонками "ДатН" и "ДатК"ТабМес.Очистить();ТекДатаНач = ДатаНач;ТекДатаКон = КонецМесяца(ТекДатаНач);Пока ТекДатаНач <= ДатаКон ЦиклНоваяСтрока = ТабМес.Добавить();НоваяСтрока.ДатН = ТекДатаНач;// Для последнего месяца ограничиваем ДатК датой окончания диапазонаЕсли ТекДатаКон > ДатаКон ТогдаНоваяСтрока.ДатК = ДатаКон;ИначеНоваяСтрока.ДатК = ТекДатаКон;КонецЕсли;// Переходим к следующему месяцуТекДатаНач = ТекДатаКон + 1;ТекДатаКон = КонецМесяца(ТекДатаНач);КонецЦикла;КонецПроцедуры// Пример вызова:ТабМес = Новый ТаблицаЗначений;ТабМес.Колонки.Добавить("ДатН", Новый ОписаниеТипов("Дата"));ТабМес.Колонки.Добавить("ДатК", Новый ОписаниеТипов("Дата"));СформироватьТаблицуМесяцев(Дата(2023,1,15), Дата(2023,10,5), ТабМес);// Теперь ТабМес содержит строки:// 1: ДатН = 15.01.2023, ДатК = 31.01.2023// 2: ДатН = 01.02.2023, ДатК = 28.02.2023// 3: ДатН = 01.03.2023, ДатК = 31.03.2023// ...// N: ДатН = 01.10.2023, ДатК = 05.10.2023Объяснение:
— Начинаем с заданной начальной даты (например, 15.01.2023).
— Для каждого месяца вычисляем конец месяца функцией КонецМесяца.
— Для последнего месяца, если конец месяца выходит за пределы конечной даты, ставим ДатК равной конечной дате.
— Переходим к следующему месяцу, устанавливая начало следующего периода на следующий день после текущего конца месяца.Такой подход универсален и позволяет задать любой произвольный диапазон с частичным первым и последним месяцем.
28 апреля 2026 в 15:45 в ответ на: Как в 1С:Предприятие 8.3 (толстый клиент) создать таблицу с разбивкой по месяцам #36852Да, в 1С:Предприятие 8.3 (толстый клиент) можно создать таблицу значений с разбивкой по месяцам между двумя датами Дн и Дк. Для этого нужно определить первый месяц как начало месяца от Дн, затем в цикле добавлять по одному месяцу, пока не достигнете Дк, и в каждую строку таблицы записывать дату начала месяца.
Если нужно, можно дополнительно добавить в таблицу колонку с представлением месяца в удобном формате.
Пример реализации этого подхода показан ниже.
1С (Код)12345678910111213141516171819// Исходные датыДн = '2023-01-15'; // пример начальной датыДк = '2023-05-10'; // пример конечной даты// Создаем таблицу значений с одним реквизитом "Месяц"ТаблМесяцев = Новый ТаблицаЗначений;ТаблМесяцев.Колонки.Добавить("Месяц", Новый ОписаниеТипов("Дата"));// Начинаем с начала месяца ДнТекМесяц = НачалоМесяца(Дн);Пока ТекМесяц <= Дк ЦиклНоваяСтрока = ТаблМесяцев.Добавить();НоваяСтрока.Месяц = ТекМесяц;// Переходим к следующему месяцуТекМесяц = ДобавитьМесяц(ТекМесяц, 1);КонецЦикла;// Теперь ТаблМесяцев содержит строки с датами начала каждого месяца в диапазонеДля расширения таблицы и добавления представления месяца используйте следующий код:
1С (Код)12345678910Процедура ЗаполнитьТаблицуМесяцев()ТаблМесяцев.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));Пока ТекМесяц <= Дк ЦиклНоваяСтрока = ТаблМесяцев.Добавить();НоваяСтрока.Месяц = ТекМесяц;НоваяСтрока.Представление = Формат(ТекМесяц, "ДФ='ММММ гггг'");ТекМесяц = ДобавитьМесяц(ТекМесяц, 1);КонецЦикла;КонецПроцедурыТаким образом, вы получите таблицу значений с разбивкой по месяцам от Дн до Дк.
28 апреля 2026 в 10:26 в ответ на: Где настроить таймауты пользовательских сеансов в кластере 1С? #36850По вашим настройкам кластера 1С:
— В настройках таймаутов сеансов здесь ничего не видно — в этом окне они не настраиваются. Это параметры самого кластера, связанные с управлением рабочих процессов и мониторингом.
— Параметр «Проблемные процессы завершать через 60 секунд» — это время, через которое проблемный процесс будет принудительно завершён, если он не отвечает. Это не таймаут сеанса пользователя.
— Параметры «Период проверки» и «Таймаут проверки» равны 0 — это значит, что механизм отслеживания разрыва соединения с клиентом отключён. Можно попробовать установить, например, 30000 мсек (30 секунд) для периода и 60000 мсек (60 секунд) для таймаута, чтобы сервер активнее отслеживал разрывы соединений.
—
### Где настраивать таймауты сеансов пользователя
Таймауты сеансов настраиваются не в параметрах кластера, а в свойствах рабочих серверов кластера:
1. В окне управления кластером выберите вкладку Серверы кластера.
2. Выберите нужный рабочий сервер (например, FJV-SQL4).
3. Откройте его свойства.
4. Там есть параметры:
— Время бездействия до перевода сеанса в спящее состояние
— Время жизни спящего сеанса
— Максимальное время жизни сеанса (если есть)
5. Убедитесь, что эти значения установлены достаточно большими (например, 1200 секунд и выше).—
### Дополнительно
— Если у вас нет доступа к настройкам рабочих серверов через GUI, можно посмотреть и изменить эти параметры через конфигурационные файлы или с помощью утилиты
clusteradm(если используется кластер на Linux).— Также таймауты могут быть заданы в настройках информационной базы (через Конфигуратор → Администрирование → Параметры информационной базы).
—
### Итог
В вашем скриншоте — настройки управления рабочими процессами, а не таймауты сеансов. Чтобы изменить таймауты сеансов, нужно зайти в свойства рабочих серверов кластера и там увеличить время бездействия и время жизни спящего сеанса. Это решит проблему преждевременного завершения сеансов и ошибок «Сеанс завершен администратором».
Проверить и изменить настройки таймаутов сеансов в кластере 1С можно через Конфигуратор и администрирование кластера серверов 1С. Вот как это сделать:
—
### 1. Проверка и настройка таймаутов сеансов в Конфигураторе
1. Откройте Конфигуратор вашей информационной базы.
2. В меню выберите Администрирование → Параметры информационной базы.
3. В открывшемся окне найдите раздел, связанный с сеансами, например:
— Время жизни сеанса (Session lifetime)
— Время бездействия до перевода сеанса в спящее состояние
— Время жизни спящего сеанса
4. Проверьте значения этих параметров. Обычно:
— Время бездействия — 1200 секунд (20 минут) или больше.
— Время жизни спящего сеанса — тоже не менее 10 минут.
5. При необходимости увеличьте эти значения, чтобы сеансы не завершались слишком быстро.—
### 2. Проверка и настройка таймаутов в кластере серверов 1С
Если у вас кластер серверов 1С (несколько рабочих процессов rphost), то:
1. Откройте Администрирование кластера серверов 1С (обычно через веб-интерфейс или специальную консоль).
2. Перейдите в настройки кластера, найдите параметры, связанные с управлением сеансами:
— Время бездействия до перевода сеанса в спящее состояние
— Время жизни спящего сеанса
3. Проверьте и при необходимости увеличьте эти значения.—
### 3. Дополнительно
— Для тонкого клиента и веб-клиента рекомендуется не ставить время засыпания сеанса меньше 10 минут, чтобы платформа могла поддерживать активность автоматически.
— Если время слишком маленькое, сеансы будут часто завершаться, что приведёт к ошибкам «Сеанс отсутствует или удален».
— После изменения параметров перезапустите сервер 1С или кластер, чтобы настройки вступили в силу.—
### Где почитать подробнее
Рекомендую посмотреть официальную документацию по настройке параметров информационной базы и кластера:
— https://its.1c.ru/db/v83doc#bookmark:adm_param_ib
— https://its.1c.ru/db/v83doc#bookmark:adm_cluster_settings—
Если нужна конкретика по версии платформы или по интерфейсу администрирования — уточните, могу подсказать точнее.
28 апреля 2026 в 10:19 в ответ на: Почему сеанс 1С завершен администратором во время фоновой задачи? #36846По этим событиям из журнала 1С можно сделать следующие выводы:
1. Ошибка «Сеанс работы завершен администратором» возникает в процессе выполнения фоновой задачи (BackgroundJob) под пользователем «Зузельский М.В.» (SessionID=48760).
2. В логах указаны исходные файлы платформы, где зафиксирована ошибка:
—RemoteCallListenerImpl.cpp(4281)— обработчик удалённых вызовов, который пытается обратиться к сеансу.
—ServerJobExecutor.cpp(1364)— исполнитель серверной задачи, который не может продолжить работу, так как сеанс завершён.3. Что значит «завершен администратором» в данном контексте:
— Это не обязательно означает, что человек-администратор вручную завершил сеанс.
— Скорее всего, сеанс был завершён системой — сервером 1С (кластером) или СУБД — по причине:
— Таймаута неактивности.
— Перезапуска рабочих процессов rphost.
— Принудительного завершения сеанса из-за ошибок или перегрузки.
— Автоматической очистки «зависших» сеансов.4. Почему фоновые задачи падают с такой ошибкой:
— Фоновые задачи в 1С часто запускаются в контексте пользователя и его сеанса. Если сеанс пользователя завершён, задача не может получить доступ к контексту и падает с ошибкой.
— Это может быть следствием неправильной настройки таймаутов, недостаточного количества рабочих процессов, или проблем с инфраструктурой (сеть, сервер).5. Рекомендации по устранению:
— Проверить настройки таймаутов сеансов в кластере 1С (например, время засыпания и удаления неактивных сеансов).
— Проверить логи кластера на предмет перезапусков рабочих процессов и ошибок.
— Увеличить количество рабочих процессов rphost, если нагрузка высокая.
— Проверить стабильность сети и работу СУБД.
— Рассмотреть возможность запуска фоновых задач в отдельном сеансе или с использованием сервисных пользователей, чтобы они не зависели от пользовательских сеансов.—
Итог: ошибка говорит о том, что сеанс пользователя, в контексте которого выполнялась фоновая задача, был завершён системой (администратором — в широком смысле). Это системное завершение, а не ручное действие человека. Нужно смотреть настройки кластера и инфраструктуру, чтобы избежать преждевременного завершения сеансов.
28 апреля 2026 в 10:11 в ответ на: Почему в журнале MSSQL появляется ошибка «Сеанс отсутствует или удален»? #36844По вашему скриншоту и логам из журнала приложений MSSQL видно, что в 1С возникает исключение с текстом «Сеанс отсутствует или удален» (SeanceContextException). Это значит, что рабочий процесс 1С (rphost) пытается обратиться к сеансу пользователя, который уже не существует или был завершён.
Что это значит и почему происходит:
1. Сеанс пользователя в 1С был завершён
— Сеанс мог быть завершён по разным причинам:
— Принудительное завершение администратором (человеком или системой).
— Автоматическое завершение из-за таймаута неактивности.
— Перезапуск или сбой рабочего процесса rphost.
— Ошибка в работе кластера 1С, из-за которой сеанс «потерялся».
— Проблемы с сетью или соединением к СУБД.2. Рабочий процесс пытается выполнить задачу BackgroundJob
— В логах видно, что процесс с именемBackgroundJob(фоновая задача 1С) пытается работать с сеансом пользователяЮнусова Н.С.(SessionID=48752), но сеанс уже отсутствует.
— Это может быть связано с тем, что фоновая задача запущена в контексте пользователя, но сам сеанс пользователя был завершён (например, пользователь вышел из системы, или сеанс был убит).3. Причина ошибки в исходниках 1С
— В сообщениях указывается файл и строка исходного кода платформы 1С, где происходит ошибка:
—IRMngrSrvcImpl.cpp(639)— менеджер сеансов.
—RMngrCalls.cpp(536)и(142)— вызовы менеджера сеансов.
—SeanceContextBasImpl.cpp(6977)— базовая реализация контекста сеанса.
—SrvrInfoBaseImpl.cpp(11875)— серверная часть работы с информационной базой.
— Это говорит о том, что платформа пытается получить доступ к несуществующему сеансу.4. Что делать и как диагностировать
— Проверить, не завершался ли сеанс пользователя вручную или автоматически (например, по таймауту).
— Проверить логи кластера 1С на предмет перезапусков рабочих процессов rphost, ошибок и сбоев.
— Проверить, не завершались ли фоновые задачи или не было ли ошибок в их выполнении.
— Убедиться, что нет проблем с сетью между сервером 1С и СУБД.
— Проверить настройки таймаутов сеансов в 1С (например, в кластере и в конфигурации).
— Если ошибка возникает часто, возможно, стоит увеличить количество рабочих процессов или оптимизировать нагрузку.5. Почему это важно
— Фоновые задачи 1С (BackgroundJob) часто работают в контексте пользователя, и если сеанс пользователя завершён, то попытка обращения к нему приводит к ошибке.
— Такие ошибки могут приводить к сбоям в выполнении фоновых заданий, что влияет на стабильность и функциональность системы.—
Кратко:
Ошибка «Сеанс отсутствует или удален» — это системное сообщение платформы 1С, означающее, что рабочий процесс пытается работать с сеансом пользователя, который уже завершён или недоступен. В вашем случае это происходит в процессе выполнения фоновой задачиBackgroundJobдля пользователяЮнусова Н.С.. Нужно проверить причины завершения сеанса, состояние кластера 1С и фоновых заданий.—
Если нужна помощь с конкретными действиями по диагностике или настройке — могу подсказать.
28 апреля 2026 в 9:37 в ответ на: Что означает ТиИ в 1С и как используется в работе с базой данных? #36842ТиИ — это сокращение от «Тестирование и исправление» (в англоязычной версии — «Check and Repair») в 1С. Это встроенный инструмент платформы 1С:Предприятие, который используется для проверки целостности и исправления ошибок информационной базы.
Когда говорят «запустить ТиИ» или «делать ТиИ», имеют в виду запуск обработки «Тестирование и исправление информационной базы» через Конфигуратор или через администрирование базы. Она проверяет:
— Целостность данных и ссылок в базе.
— Корректность структуры базы данных.
— Наличие и исправление ошибок в таблицах и индексах.
— Исправление поврежденных ссылок и удаление «битых» объектов.ТиИ часто применяют при возникновении ошибок в базе, после аварийных ситуаций, при проблемах с обновлением конфигурации, а также для профилактики.
Запуск ТиИ помогает восстановить работоспособность базы без потери данных.
Рекомендую посмотреть здесь:
https://infostart.ru/public/18654/ (статья про обрезку и работу с ТиИ)
https://infostart.ru/1c/articles/1666026/ (опыт решения ошибок с помощью ТиИ)
https://infostart.ru/1c/articles/1168516/ (администрирование и утилиты для работы с базой)28 апреля 2026 в 8:45 в ответ на: Как программно изменить цвет фона поля группировки в макете СКД? #36840Вот пример кода на 1С, который программно меняет цвет фона поля в макете группировки СКД. Предполагается, что у вас есть объект макета компоновки данных (МакетКомпоновки), и вы хотите изменить цвет фона для определённого поля группировки.
1С (Код)12345678910111213141516171819202122232425262728Процедура ИзменитьЦветПоляГруппировки(МакетКомпоновки, ИмяПоляГруппировки, НовыйЦвет)ПараметрЦветФона = Новый ПараметрКомпоновкиДанных("ЦветФона");Для каждого Макет Из МакетКомпоновки.Макеты ЦиклДля каждого Строка Из Макет.Макет ЦиклЕсли ТипЗнч(Строка) <> Тип("СтрокаТаблицыОбластиКомпоновкиДанных") ТогдаПродолжить;КонецЕсли;Для каждого Ячейка Из Строка.Ячейки ЦиклЕсли Строка(Ячейка.Элементы.Получить(0).Значение) = ИмяПоляГруппировки ТогдаЯчейка.Оформление.УстановитьЗначениеПараметра(ПараметрЦветФона, НовыйЦвет);Прервать; // уменьшаем вложенность, выходим из внутреннего цикла после установки цветаКонецЕсли;КонецЦикла;КонецЦикла;КонецЦикла;КонецПроцедурыПример вызова:
1С (Код)123// Предположим, МакетКомпоновки - объект макета компоновки данных// Меняем цвет фона поля группировки "Склад" на светло-зелёныйИзменитьЦветПоляГруппировки(МакетКомпоновки, "Склад", "#CCFFCC");Обратите внимание:
— Имя поля группировки должно точно совпадать с именем параметра в макете.
— Цвет задаётся в формате HTML (например, «#RRGGBB»).
— Если в макете несколько макетов, процедура пройдётся по всем.
— Для изменения цвета текста используйте параметр «ЦветТекста» аналогично.Если нужно менять цвет условно, то лучше использовать условное оформление в СКД, но для прямого программного изменения макета этот способ подходит.
Ошибка «Сеанс работы завершен администратором» в клиент-серверном варианте 1С означает, что текущий сеанс пользователя был принудительно завершён не человеком-администратором напрямую, а системой — чаще всего сервером 1С (кластером) или СУБД.
Кто именно «завершает» сеанс:
1. Сервер 1С (кластер)
— Сервер 1С может завершить сеанс, если он считает, что сеанс «завис» или превысил лимиты по времени ожидания, по ресурсам, или если происходит рестарт рабочих процессов.
— Также сеанс может быть завершён при обновлении конфигурации, перезапуске сервера, или при очистке «зависших» сессий.
— Иногда кластер завершает сеанс из-за превышения лимитов по количеству подключений на один рабочий процесс (rphost), если не хватает ресурсов для обслуживания всех пользователей.2. СУБД (например, MS SQL, PostgreSQL)
— СУБД может разорвать соединение, если происходит рестарт сервера базы, если база «зависла» или была принудительно остановлена.
— Также СУБД может закрыть соединение при превышении таймаутов или при проблемах с сетью.3. Промежуточные компоненты (веб-сервер, балансировщик нагрузки)
— Если используется веб-сервер (например, nginx, apache) или балансировщик, они могут прервать соединение из-за таймаутов или ошибок в маршрутизации.Почему ошибка выглядит как «завершен администратором», хотя человек не завершал сеанс:
— В 1С «администратором» считается не только человек, но и системные процессы, управляющие сервером и сессиями.
— При автоматическом завершении сеанса сервером 1С или СУБД, клиент получает именно такое сообщение, потому что с точки зрения платформы это «принудительное завершение».Что делать для диагностики и устранения:
— Проверить логи сервера 1С (технологический журнал) с включением событий EXCP — там будет подробная информация, кто и почему завершил сеанс.
— Проверить состояние рабочих процессов сервера 1С, их количество, нагрузку, таймауты.
— Проверить логи СУБД на предмет рестартов, ошибок соединения.
— Проверить настройки таймаутов в кластере 1С и в веб-сервере (если используется).
— Убедиться, что сервер 1С не перегружен, и что количество рабочих процессов и лимиты по подключениям настроены адекватно.Рекомендую посмотреть здесь, там подробно описано про причины и диагностику:
https://1s-on.ru/oshibka-1spredpriyatiya-poteryano-soedinenie/
https://helpf.pro/faq/view/711.htmlЕсли кратко: «Сеанс работы завершен администратором» — это системное завершение сеанса сервером 1С или СУБД, а не действие конкретного человека.
28 апреля 2026 в 8:30 в ответ на: Как управлять видимостью колонок таблицы в 1С:Предприятие 8.3? #36836Alex, привет!
В 1С:Предприятие 8.3 управлять видимостью колонок в табличной части документа можно несколькими способами, в зависимости от того, где именно и как ты хочешь это сделать — в форме документа, в обработке, в отчёте и т.п.
Основные варианты:
1. **Через форму документа (конфигуратор)**
В конфигураторе открой форму документа, найди табличную часть, затем в её реквизитах или элементах управления (ТабличноеПоле) можно настроить видимость колонок.
Для этого:
— В свойствах элемента управления ТабличноеПоле есть свойство «ВидимостьКолонок» (если оно доступно) — можно задать список видимых колонок.
— Либо в модуле формы программно управлять видимостью колонок через методКолонки.Колонка(«ИмяКолонки»).Видимость = Истина/Ложь.2. **Программно в модуле формы**
В модуле формы документа можно получить доступ к табличному полю и управлять видимостью колонок так:1С (Код)12345// Получаем табличное полеТабличноеПоле = ЭлементыФормы.ТабличноеПолеИмя;// Управляем видимостью колонки по имениТабличноеПоле.Колонки.Колонка("ИмяКолонки").Видимость = Ложь; // скрытьТабличноеПоле.Колонки.Колонка("ИмяКолонки").Видимость = Истина; // показатьЭто можно делать, например, в обработчике события
ПриОткрытииформы или при изменении каких-то условий.3. **Если табличная часть выводится через табличный документ**
В табличном документе (например, для печати или вывода отчёта) можно просто не добавлять нужные колонки или скрыть их, не формируя строки с этими колонками.4. **В управляемых формах (УправляемоеПриложение)**
В управляемых формах для табличных частей можно использовать методУстановитьВидимостьКолонкиу элемента управления табличной части:1С (Код)1ЭлементыФормы.ТабличноеПолеИмя.УстановитьВидимостьКолонки("ИмяКолонки", Ложь);5. **Через динамическое изменение структуры табличной части**
Можно программно менять структуру табличной части, добавляя или удаляя колонки, но это сложнее и обычно не требуется.—
**Пример кода для управляемой формы:**
1С (Код)1234567Процедура ФормаПриОткрытии(Отказ)// Скрыть колонку "Комментарий"ЭлементыФормы.ТабличноеПоле1.УстановитьВидимостьКолонки("Комментарий", Ложь);// Показать колонку "Количество"ЭлементыФормы.ТабличноеПоле1.УстановитьВидимостьКолонки("Количество", Истина);КонецПроцедуры—
Если речь идёт о толстом клиенте и обычных формах, то код будет примерно таким:
1С (Код)12345Процедура ПриОткрытии()ТабличноеПоле = ЭлементыФормы.ТабличноеПоле1;ТабличноеПоле.Колонки.Колонка("Комментарий").Видимость = Ложь;ТабличноеПоле.Колонки.Колонка("Количество").Видимость = Истина;КонецПроцедуры—
Если нужно управлять видимостью колонок в табличной части документа в режиме 1С 7.7, то там используется метод
Опцииу объекта Таблица, например:1С (Код)1Таблица.Опции( , , 1, 1 );—
Рекомендую посмотреть здесь, там подробно расписано про работу с табличными частями и их колонками:
https://helpf.pro/faq8/view/618.html—
Если нужна помощь с конкретным примером или в конкретном контексте (управляемая форма, толстый клиент, веб-клиент), уточняй, могу дать точный код.
Alex, надеюсь, это поможет!
27 апреля 2026 в 14:21 в ответ на: Как вставить номер заказа клиента в форму накладной из реализации товаров? #36834Чтобы вставить номер заказа клиента в печатную форму Расходной накладной, которая печатается из документа РеализацияТоваровУслуг, нужно сделать следующее:
1. Проверить, что в документе РеализацияТоваровУслуг есть ссылка на ЗаказКлиента
В типовой конфигурации в документе РеализацияТоваровУслуг есть реквизит ЗаказКлиента (ссылка на документ ЗаказКлиента). Если его нет — нужно добавить.
2. Открыть макет печатной формы Расходной накладной
— В конфигураторе откройте объект «Документ.РеализацияТоваровУслуг».
— Перейдите в раздел «Макеты печатных форм».
— Найдите макет Расходной накладной (обычно называется «РасходнаяНакладная» или похожим именем).
— Откройте макет в редакторе (FastReport или встроенный редактор).3. Добавить поле для номера заказа клиента
— В нужном месте макета (например, в шапке документа или рядом с реквизитами документа) добавьте текстовое поле.
— В качестве выражения для этого поля укажите:1С (Код)1[Документ.ЗаказКлиента.Номер]Если макет на FastReport, то выражение будет примерно такое:
1С (Код)1[Документ.ЗаказКлиента.Номер]4. Если в макете нет объекта «Документ.ЗаказКлиента» — нужно расширить выборку данных
В макете печатной формы данные берутся из объекта, который формируется в коде печатной формы.
— В модуле менеджера документа РеализацияТоваровУслуг найдите процедуру, которая формирует печатную форму (например,
СформироватьПечатнуюФормуРасходнойНакладной).
— В этой процедуре нужно добавить передачу реквизита ЗаказКлиента в макет.Пример (в модуле менеджера расширения):
|&Вместо(«СформироватьПечатнуюФормуРасходнойНакладной»)
|Функция СформироватьПечатнуюФормуРасходнойНакладной(Параметры)
| ИсходнаяФорма = ЭтотОбъект.СформироватьПечатнуюФормуРасходнойНакладной(Параметры);
| ИсходнаяФорма.ОбластьДанных.Параметры.ЗаказКлиента = ЭтотОбъект.ЗаказКлиента;
| Возврат ИсходнаяФорма;
|КонецФункции5. В макете добавить параметр «ЗаказКлиента»
— В редакторе макета добавьте параметр «ЗаказКлиента» типа «ДокументСсылка.ЗаказКлиента».
— В поле для номера заказа укажите выражение:1С (Код)1[ЗаказКлиента.Номер]6. Проверить и протестировать
— Сохраните изменения.
— Запустите 1С в режиме предприятия.
— Откройте документ РеализацияТоваровУслуг, у которого заполнен реквизит ЗаказКлиента.
— Распечатайте Расходную накладную.
— Убедитесь, что номер заказа клиента отображается.—
Если хотите сделать через расширение конфигурации, то:
— Создайте расширение.
— В модуле менеджера документа РеализацияТоваровУслуг сделайте перехват функции формирования печатной формы.
— Добавьте передачу реквизита ЗаказКлиента в макет.
— В макете расширения добавьте поле с номером заказа.—
Рекомендую посмотреть подробный пример по добавлению реквизита в печатную форму здесь:
https://infostart.ru/public/1590240/Там подробно описан процесс добавления своего реквизита в макет печатной формы.
-
АвторСообщения