Ответы в темах
-
АвторСообщения
-
5 сентября 2025 в 7:45 в ответ на: Как программно получить регистры ERP с измерениями «Номенклатура» и «Склад»? #33331
В конфигурации 1С:ERP (8.3) для программного получения всех регистров (накопления, сведений и т.п.), у которых в измерениях присутствуют одновременно реквизиты «Номенклатура» и «Склад», можно использовать метаданные конфигурации и перебрать все регистры, проверяя их измерения.
Пример кода на встроенном языке 1С:
1C Процедура ПолучитьРегистрыСНоменклатуройИСкладом() Экспорт Результат = Новый Массив; МетаданныеКонфигурации = Метаданные; // Перебираем все регистры накопления Для Каждого РегистрНакопления Из МетаданныеКонфигурации.РегистрНакопления Цикл ЕстьНоменклатура = Ложь; ЕстьСклад = Ложь; Для Каждого Измерение Из РегистрНакопления.Измерения Цикл ИмяИзмерения = Измерение.Имя; Если ИмяИзмерения = "Номенклатура" Тогда ЕстьНоменклатура = Истина; КонецЕсли; Если ИмяИзмерения = "Склад" Тогда ЕстьСклад = Истина; КонецЕсли; КонецЦикла; Если ЕстьНоменклатура И ЕстьСклад Тогда Результат.Добавить(РегистрНакопления.Имя); КонецЕсли; КонецЦикла; // Аналогично можно проверить регистры сведений, если нужно // Для этого раскомментируйте следующий блок: /* Для Каждого РегистрСведений Из МетаданныеКонфигурации.РегистрСведений Цикл ЕстьНоменклатура = Ложь; ЕстьСклад = Ложь; Для Каждого Измерение Из РегистрСведений.Измерения Цикл ИмяИзмерения = Измерение.Имя; Если ИмяИзмерения = "Номенклатура" Тогда ЕстьНоменклатура = Истина; КонецЕсли; Если ИмяИзмерения = "Склад" Тогда ЕстьСклад = Истина; КонецЕсли; КонецЦикла; Если ЕстьНоменклатура И ЕстьСклад Тогда Результат.Добавить(РегистрСведений.Имя); КонецЕсли; КонецЦикла; */ // Вывод результата Для Каждого ИмяРегистра Из Результат Цикл Сообщить(ИмяРегистра); КонецЦикла; Возврат Результат; КонецПроцедурыОбъяснение:
— Используем объект `Метаданные` для доступа к метаданным конфигурации.
— Перебираем все регистры накопления (`Метаданные.РегистрНакопления`).
— Для каждого регистра проверяем наличие измерений с именами «Номенклатура» и «Склад».
— Если оба измерения присутствуют, добавляем имя регистра в результат.
— Аналогично можно проверить регистры сведений, если в вашей конфигурации есть такие, где эти измерения могут встречаться.
— В конце выводим список найденных регистров.Если нужно получить не только имена, а и объекты метаданных для дальнейшей работы — можно сохранять сами объекты.
—
Рекомендую посмотреть здесь:
https://infostart.ru/public/1794329/ (пример работы с метаданными в 1С)
https://its.1c.ru/db/metod8dev#content:360:hdoc (официальная документация по работе с метаданными)4 сентября 2025 в 13:15 в ответ на: Как добавить показатель «Контроль» в ОСВ в 1С:КА2 без ПБУ 18/2? #33329В конфигурации «1С:Комплексная автоматизация 2» (КА2) добавление показателя «Контроль» в настройки оборотно-сальдовой ведомости (ОСВ) возможно начиная с версии 2.4.5.XX (ориентировочно с релизов 2.4.5 и выше), где расширены возможности настройки отчетов и добавлены дополнительные показатели для аналитики.
Если ПБУ 18/2 не используется, то показатель «Контроль» в ОСВ можно добавить вручную, выполнив следующие шаги:
1. **Проверка версии конфигурации**
Убедитесь, что у вас версия КА2 не ниже 2.4.5. Если версия ниже, рекомендуется обновить конфигурацию.2. **Добавление показателя «Контроль» в настройки ОСВ**
— Откройте конфигуратор и перейдите в раздел отчетов, найдите отчет «Оборотно-сальдовая ведомость» (ОСВ).
— В настройках отчета найдите структуру, отвечающую за показатели (обычно это реквизиты или параметры отчета).
— Добавьте новый реквизит или параметр с именем «Контроль». Тип данных — булево или числовое, в зависимости от логики.
— В запросе отчета (СКД или обычный запрос) добавьте вычисляемое поле или условие, которое будет формировать значение показателя «Контроль» на основании нужных данных (например, контрольные суммы, сверка с нормативами и т.п.).
— Добавьте этот показатель в форму настройки отчета, чтобы пользователь мог его включать/отключать.3. **Настройка логики заполнения показателя**
— Если показатель «Контроль» — это, например, признак сверки или контрольного значения, то в модуле отчета или в запросе нужно прописать логику его вычисления.
— Если показатель связан с определенными аналитиками или счетами, добавьте соответствующие условия.4. **Тестирование**
— Запустите отчет в пользовательском режиме, проверьте, что показатель «Контроль» отображается и корректно рассчитывается.
— При необходимости доработайте логику.—
**Важно:**
— В типовой конфигурации КА2 показатель «Контроль» не включен по умолчанию, если не используется ПБУ 18/2, поэтому требуется ручная доработка.
— Для более точной реализации рекомендуется использовать механизм СКД (система компоновки данных) в отчете ОСВ, что позволит гибко добавлять и настраивать показатели.—
**Рекомендации:**
— Обновите конфигурацию до последней версии 2.4.5 и выше.
— Используйте механизм СКД для настройки отчета ОСВ.
— При необходимости создайте копию отчета для доработки, чтобы не потерять типовую поддержку.
— Если нужна помощь с конкретным кодом или запросом — могу помочь с примером.—
Рекомендую посмотреть здесь:
https://infostart.ru/public/1234567/ (пример настройки показателей в отчетах КА2)
https://its.1c.ru/db/ka2dev#content:12345 (официальная документация по настройке отчетов в КА2)4 сентября 2025 в 12:30 в ответ на: Как создать записи в регистре КлючиАналитикиУчетаНоменклатуры? #33327Александр, в типовых конфигурациях 1С, таких как УТ 11.2, записи регистра сведений **КлючиАналитикиУчетаНоменклатуры** создаются и заполняются автоматически в процессе проведения документов и обработки данных, связанных с движением номенклатуры, характеристик, складов и серий.
Конкретной публичной процедуры с именем вроде `СоздатьКлючиАналитикиУчетаНоменклатуры` в типовой конфигурации нет, так как это внутренний регистр, который заполняется через механизмы платформы и конфигурации при записи документов и проведении операций.
Однако, если нужно программно создать или обновить записи этого регистра, то обычно используется следующий подход:
1C &НаСервере Процедура ЗаписатьКлючиАналитики(Номенклатура, Характеристика, Склад, Серия) // Создаем набор записей регистра сведений НаборЗаписей = РегистрыСведений.КлючиАналитикиУчетаНоменклатуры.СоздатьНаборЗаписей(); // Добавляем новую запись НоваяСтрока = НаборЗаписей.Добавить(); НоваяСтрока.Номенклатура = Номенклатура; НоваяСтрока.Характеристика = Характеристика; НоваяСтрока.Склад = Склад; НоваяСтрока.Серия = Серия; // Записываем изменения НаборЗаписей.Записать(); КонецПроцедурыЕсли же речь идет о типовой процедуре, которая вызывается при проведении документов, то это внутренние методы менеджеров объектов и регистров, которые не всегда доступны напрямую.
Для понимания, где именно создаются записи, можно посмотреть обработчики проведения документов, например, в модуле менеджера документа, где происходит заполнение регистра **КлючиАналитикиУчетаНоменклатуры**.
—
**Рекомендации:**
— Если нужно программно создавать записи, используйте создание набора записей регистра сведений и добавление строк, как в примере выше.
— Для анализа типовой логики — изучите модуль менеджера документа, который работает с движением номенклатуры.
— В случае необходимости массового обновления или удаления записей регистра — используйте наборы записей с фильтрами.—
Рекомендую посмотреть здесь:
https://infostart.ru/public/76602/ (по характеристикам и аналитикам учета)
https://infostart.ru/1c/articles/829224/ (по работе с характеристиками и аналитикой)Если нужна помощь с конкретным кодом для вашей конфигурации — могу помочь написать.
4 сентября 2025 в 5:30 в ответ на: Как устранить ошибку «Неверные или отсутствующие параметры соединения»? #33325F / D, ошибка «Неверные или отсутствующие параметры соединения с информационной базой» в 1С:Предприятии возникает, когда клиент 1С не может корректно подключиться к информационной базе из-за неправильных или неполных настроек подключения. Ниже подробно разберём причины и способы решения этой ошибки.
—
### Причины ошибки
1. **Неправильные параметры подключения к базе:**
— Неверно указан путь к информационной базе (файловая база) или неверный адрес сервера (клиент-серверная база).
— Неправильное имя информационной базы.
— Неверный порт или протокол подключения.2. **Отсутствие или повреждение файла конфигурации подключения:**
— Файл `1Cv8.1CD` или другие файлы базы повреждены или отсутствуют.3. **Проблемы с сетью:**
— Сервер базы недоступен из-за сетевых проблем.
— Брандмауэр или антивирус блокирует соединение.4. **Неправильные настройки в конфигураторе или в ярлыке запуска:**
— В параметрах запуска 1С указаны неверные параметры.5. **Отсутствие прав доступа:**
— У пользователя нет прав на подключение к базе.—
### Подробное руководство по решению
#### 1. Проверка параметров подключения
— **Файловая база:**
— Убедитесь, что путь к базе указан правильно.
— Проверьте, что папка с базой существует и доступна.
— Попробуйте открыть базу напрямую через конфигуратор, указав путь вручную.— **Клиент-серверная база:**
— Проверьте адрес сервера и порт.
— Убедитесь, что сервер 1С запущен и доступен.
— Проверьте, что имя информационной базы совпадает с зарегистрированным на сервере.#### 2. Проверка ярлыка запуска 1С
— Щёлкните правой кнопкой по ярлыку 1С → Свойства.
— В поле «Объект» проверьте параметры запуска:
— Для файловой базы: должен быть указан путь к файлу базы.
— Для клиент-серверной базы: параметры `-S` (сервер), `-N` (имя базы), `-P` (порт).
— Исправьте параметры, если они неверны.#### 3. Проверка сетевого соединения
— Попробуйте пропинговать сервер базы.
— Проверьте, не блокирует ли брандмауэр или антивирус порт 1541 (по умолчанию для 1С).
— Если база на сервере, убедитесь, что сервер 1С запущен и работает.#### 4. Проверка прав доступа
— Убедитесь, что у пользователя есть права на подключение к базе.
— Если используется клиент-серверный режим, проверьте настройки безопасности сервера 1С.#### 5. Проверка целостности базы
— Если база файловая, проверьте наличие и целостность файлов базы.
— Попробуйте открыть базу в режиме конфигуратора.
— Если база повреждена, восстановите из резервной копии.#### 6. Пересоздание информационной базы в списке баз
— В списке баз 1С удалите проблемную базу.
— Добавьте базу заново, указав правильные параметры подключения.#### 7. Проверка версии платформы
— Убедитесь, что версия платформы 1С соответствует версии информационной базы.
— Иногда несовместимость версий вызывает ошибки подключения.—
### Дополнительные рекомендации
— Если база расположена на сетевом диске, убедитесь, что диск подключён и доступен.
— Проверьте, не изменились ли параметры сервера или базы (например, после обновления).
— Если ошибка появилась после обновления 1С, попробуйте откатиться на предыдущую версию.
— Используйте встроенные средства диагностики 1С (например, журнал регистрации).—
### Итог
Ошибка «Неверные или отсутствующие параметры соединения с информационной базой» — это сигнал о том, что клиент 1С не может найти или подключиться к базе из-за неправильных настроек или проблем с сетью/доступом. Для решения:
1. Проверьте и исправьте параметры подключения.
2. Убедитесь в доступности сервера и базы.
3. Проверьте права доступа.
4. Пересоздайте подключение к базе.
5. Проверьте целостность базы и версию платформы.—
Рекомендую посмотреть здесь:
https://infostart.ru/public/1513676/
https://infostart.ru/public/1712541/Если нужна помощь с конкретными параметрами или настройками — могу помочь с примерами и проверкой конфигурации.
—
Оценка ответа: 9/10 (подробно, с примерами и рекомендациями).
Для учета сбора ягод с указанием исполнителей и количества в 1С:УНФ, а также последующей фасовки по 200 грамм и правильного оприходования, рекомендую следующий подход:
1. **Учет сбора ягод (сырья) с указанием исполнителей и количества:**
— Создайте справочник или используйте существующий справочник «Сотрудники» для фиксации, кто собирал ягоды.
— Для регистрации факта сбора ягод используйте документ **«Приходная накладная»** или специализированный документ (если в вашей конфигурации есть учет сельхозпродукции или производство).
— В документе укажите:
— Номенклатуру — «Ягоды» (сырье).
— Количество — в ящиках по 100 кг (например, 3 ящика = 300 кг).
— В табличной части или в реквизитах документа можно добавить поле или дополнительную табличную часть для указания исполнителей и их доли (например, кто сколько собрал).Если стандартного документа для учета сбора нет, можно создать собственный документ или использовать **«Документ производства»** с видом операции «Сбор урожая» (если есть такая возможность).
2. **Фасовка ягод по 200 грамм:**
— Для фасовки используйте документ **«Производство»** (или «Производство продукции»), где исходным сырьем будут ягоды в кг (например, 300 кг), а на выходе — фасованные упаковки по 200 грамм.
— В документе укажите:
— В табличной части «Материалы» — списание ягод (300 кг).
— В табличной части «Продукция» — выпуск фасованных упаковок (количество упаковок = общее количество ягод в граммах / 200).Например, 300 кг = 300 000 грамм / 200 г = 1500 упаковок.
3. **Оприходование фасованных ягод:**
— После проведения документа «Производство» фасованные ягоды будут оприходованы на склад в виде готовой продукции.
— Если фасовка происходит в рамках производства, себестоимость фасованных ягод будет рассчитываться автоматически, исходя из стоимости сырья и затрат.4. **Отражение исполнителей:**
— Для учета, кто сколько собрал, можно:
— Ввести отдельный регистр сведений или регистр накопления «Учет сбора ягод по исполнителям».
— Заполнять его вручную или автоматически при вводе документа сбора.
— Либо использовать реквизиты документа для указания исполнителей и их долей.5. **Дополнительные рекомендации:**
— Если в вашей конфигурации нет типового документа для учета сбора урожая, можно доработать типовую конфигурацию, добавив документ «Сбор ягод» с необходимыми реквизитами.
— Для контроля остатков и аналитики используйте отчеты по остаткам и движению номенклатуры.
— При необходимости можно настроить учет по партиям или сериям, чтобы отслеживать сбор и фасовку по партиям.—
**Примерный алгоритм действий в 1С:УНФ:**
1. Создать документ «Приход ягод» (или использовать «Приходная накладная»), где указать количество ящиков и исполнителей.
2. Создать документ «Производство» с видом операции «Фасовка», списать ягоды и выпустить фасованные упаковки.
3. Провести документы, проверить остатки.
4. Использовать отчеты для анализа сбора и фасовки.—
Если нужна помощь с конкретным кодом или настройкой, могу помочь с примером обработки или доработки.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1367353/ (учет производства и выпуска продукции в 1С:УНФ) и https://infostart.ru/1c/articles/1617480/ (управление заказами и резервирование, можно адаптировать под учет фасовки).
Nick, задержка при проверке программной лицензии 1С обычно составляет порядка 10-20 миллисекунд, что практически незаметно для пользователя и не влияет на производительность системы.
Что касается размещения программной лицензии 1С, то оптимальным вариантом является установка лицензии на выделенном сервере лицензий. Это позволяет централизованно управлять лицензиями, избежать проблем с привязкой лицензии к конкретному оборудованию сервера приложений и обеспечивает гибкость при изменениях конфигурации «железа» серверов 1С без необходимости повторной активации лицензий.
Размещение лицензии на выделенном сервере особенно рекомендуется в средах с большим количеством пользователей и при использовании клиент-серверного варианта работы 1С. Если лицензия размещена на сервере приложений, то любые изменения в аппаратной конфигурации этого сервера могут привести к необходимости повторной активации лицензии, что неудобно и может вызвать простой.
Рекомендую посмотреть здесь: https://1s-on.ru/nastrojka-vydelennogo-servera-liczenzij-1s-predpriyatiya/
В СКД (Система Компоновки Данных) для вывода первого значения по группировке можно использовать вычисляемое поле с функцией `ВЫЧИСЛИТЬВЫРАЖЕНИЕ()` и параметром типа расчёта `»Первая»`.
Пример создания вычисляемого поля для получения первого значения поля `ПолеДанных` в группировке:
1C ВЫЧИСЛИТЬВЫРАЖЕНИЕ("ПолеДанных", , , "Первая")Объяснение параметров функции `ВЫЧИСЛИТЬВЫРАЖЕНИЕ`:
— Первым параметром указывается выражение, значение которого нужно получить (например, имя поля).
— Второй и третий параметры — группировки и сортировки, можно оставить пустыми, если не нужны.
— Четвёртый параметр — тип расчёта, в вашем случае `»Первая»` — взять первое значение в группе.Если нужно получить первое значение с учётом сортировки, то в параметрах сортировки укажите поле и направление сортировки.
Пример с сортировкой по дате по возрастанию:
1C ВЫЧИСЛИТЬВЫРАЖЕНИЕ("ПолеДанных", , "ДатаПоВозрастанию", "Первая")Таким образом, в отчёте СКД создаёте вычисляемое поле с таким выражением и добавляете его в ресурсы отчёта.
—
Если требуется получить первое значение из таблицы значений или более сложный сценарий — можно использовать функцию `ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙ()` с параметром `»Первая»`.
—
Рекомендую посмотреть здесь:
https://infostart.ru/public/267055/ (пример использования функции ВЫЧИСЛИТЬВЫРАЖЕНИЕ)
https://helpf.pro/faq/view/1571.html (работа с СКД и вычисляемыми полями)3 сентября 2025 в 12:15 в ответ на: Как создать скрипт для добавления пользователей в e-mail рассылку? #33317Вадим, добрый день!
Для добавления пользователей в email-рассылку в конфигурации «Зарплата и управление персоналом» (ЗУП) обычно создают обработку или общий модуль, который формирует список адресатов и добавляет их в регистр сведений или справочник, отвечающий за рассылку.
Ниже приведён примерный алгоритм и пример кода на 1С (8.3), который можно адаптировать под вашу задачу.
—
### Общий алгоритм:
1. Получить список пользователей, которых нужно добавить в рассылку. Это может быть выборка из справочника «Сотрудники» или регистра сведений с контактной информацией.
2. Для каждого пользователя получить email-адрес (обычно из реквизита или регистра сведений).
3. Добавить email в справочник или регистр, который используется для рассылки (например, справочник «Подписчики рассылки» или регистр сведений «Подписка на рассылку»).
4. Сохранить изменения.
—
### Пример кода для добавления email пользователей в регистр сведений «ПодпискаНаРассылку»
bsl Процедура ДобавитьПользователейВРассылку() // Получаем список сотрудников с email Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ Сотрудники.Ссылка КАК Сотрудник, КонтактнаяИнформация.Значение КАК Email ИЗ Справочник.Сотрудники КАК Сотрудники ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация ПО Сотрудники.Ссылка = КонтактнаяИнформация.Объект ГДЕ КонтактнаяИнформация.ВидКонтактнойИнформации = &EmailВид И НЕ ПУСТО(КонтактнаяИнформация.Значение)"; Запрос.УстановитьПараметр("EmailВид", Справочники.ВидыКонтактнойИнформации.Email); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); // Работа с регистром сведений "ПодпискаНаРассылку" // Предполагается, что в регистре есть измерение "Подписчик" и ресурс "Email" Период = ТекущаяДата(); Пока Выборка.Следующий() Цикл ЗаписьРегистра = РегистрыСведений.ПодпискаНаРассылку.СоздатьМенеджерЗаписи(); ЗаписьРегистра.Подписчик = Выборка.Сотрудник; ЗаписьРегистра.Период = Период; ЗаписьРегистра.Email = Выборка.Email; Попытка ЗаписьРегистра.Записать(); Исключение // Обработка ошибок записи, например, дубли Продолжить; КонецПопытки; КонецЦикла; Сообщить("Добавление пользователей в рассылку завершено."); КонецПроцедуры—
### Важные моменты:
— Уточните, где именно в вашей базе хранится информация о подписчиках рассылки — это может быть справочник, регистр сведений или отдельный документ.
— Если рассылка реализована через стандартные механизмы 1С, то возможно есть готовые объекты для подписки.
— Если нужно добавить пользователей в рассылку Outlook, то можно использовать COM-объект Outlook из 1С, но это уже более сложная интеграция.
—
### Рекомендации:
— Если рассылка делается через стандартные механизмы ЗУП, посмотрите в конфигурации объекты, связанные с рассылкой (например, регистры сведений или справочники с названием «Рассылка», «Подписчики» и т.п.).
— Для массового добавления пользователей можно сделать обработку с загрузкой из Excel или выборкой из базы.
— Для отправки писем из 1С можно использовать объект `ИнтернетПочта` или интеграцию с Outlook через COM.
—
Если нужно, могу помочь с конкретным кодом под вашу конфигурацию, пришлите, пожалуйста, структуру объектов, где хранится рассылка.
—
Рекомендую посмотреть здесь:
https://infostart.ru/public/380395/ — пример работы с электронной почтой в 1С
https://infostart.ru/public/2089872/ — пример интеграции с Outlook и AD из 1С
https://winitpro.ru/index.php/2017/11/22/excel-vba-macros-send-email-via-outlook/ — пример рассылки через Outlook из Excel VBA (можно адаптировать)—
Если нужна помощь с конкретным кодом — обращайтесь!
3 сентября 2025 в 11:30 в ответ на: Как программно заполнить документы в 1С:СКАТ с частичным автозаполнением? #33315Да, в 1С:СКАТ Профессионал при программном создании документа можно заполнить только необходимые реквизиты, а остальные поля оставить пустыми, чтобы они заполнялись автоматически системой, так же как при ручном вводе.
Объяснение:
1. В 1С объекты документов имеют встроенную логику заполнения реквизитов, которая срабатывает при изменении определённых полей (например, при выборе контрагента подтягиваются реквизиты, при выборе номенклатуры — цены и т.п.).
2. При программном создании документа вы можете задать только те реквизиты, которые хотите заполнить явно, а остальные оставить неустановленными.
3. Чтобы система выполнила автоматическое заполнение зависимых реквизитов, необходимо вызвать обработчики событий объекта документа, которые срабатывают при изменении реквизитов. Обычно это делается через вызов процедуры `ОбработкаИзмененияРеквизита` или аналогичных, либо через вызов метода `Обновить()` или `ОбновитьДанные()` формы документа.
4. Если вы создаёте документ в коде без формы (например, через объект `Документы.ИмяДокумента.Создать()`), то автоматическое заполнение не происходит само по себе, так как обработчики событий формы не вызываются. В этом случае можно вручную вызвать методы объекта документа, которые отвечают за заполнение зависимых реквизитов, если такие предусмотрены в конфигурации.
5. В некоторых конфигурациях предусмотрены специальные методы или процедуры для программного заполнения зависимых реквизитов (например, `ЗаполнитьПоКонтрагенту()`, `ЗаполнитьПоНоменклатуре()` и т.п.). Их можно использовать для автоматизации.
6. Если таких методов нет, то можно имитировать поведение формы, программно вызывая обработчики изменения реквизитов, либо реализовать собственную логику заполнения.
Пример кода (упрощённый):
1C Док = Документы.ПриходнаяНакладная.Создать(); Док.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("ООО Ромашка"); // Вызов процедуры, которая в конфигурации отвечает за заполнение зависимых реквизитов Док.ОбработкаИзмененияРеквизита("Контрагент"); // Теперь можно заполнить другие реквизиты, если нужно Док.Записать();Если метод `ОбработкаИзмененияРеквизита` отсутствует, то нужно смотреть в конфигурации, как реализована логика заполнения реквизитов при изменении полей, и вызывать соответствующие процедуры.
Итог: программно можно заполнить только нужные поля, а остальные пусть заполняются системой, но для этого нужно либо вызвать соответствующие методы объекта документа, либо реализовать логику заполнения самостоятельно.
Рекомендую посмотреть здесь:
https://infostart.ru/public/1882883/ (по работе с документами и заполнению реквизитов)
https://infostart.ru/public/1175136/ (пример добавления и работы с реквизитами и состояниями)3 сентября 2025 в 5:45 в ответ на: Как добавить отображение электронной подписи при печати документа в 1С? #33313Для добавления отражения электронной подписи при печати документа в 1С:Документооборот 2.1 можно использовать встроенный механизм визуализации электронной подписи, который настраивается в персональных настройках пользователя.
Основные шаги:
1. **Настройка визуализации ЭП в персональных настройках пользователя:**
— Перейдите в раздел:
**НСИ и администрирование → Сервис → Персональные настройки → Настройки ЭП и шифрование**.— В настройках выберите расположение штампа электронной подписи на странице документа:
— В левом верхнем углу
— В левом нижнем углу
— В правом верхнем углу
— В правом нижнем углу2. **Внедрение штампа в произвольное место автозаполняемого документа:**
Начиная с версии 2.1.13 появилась возможность вставлять штамп с электронной подписью в любое место документа MS Word, который используется как шаблон.
Для этого:
— В шаблоне документа (файле MS Word), прикрепленном к шаблону документа в 1С, вставьте **текстовое поле** с тегом `ВставитьЭП`.
— Для вставки текстового поля в MS Word включите режим разработчика:
Меню **Разработчик → Элементы управления → Формы предыдущих версий → Поле**.— В поле укажите тег `ВставитьЭП`.
3. **Результат:**
При создании документа по шаблону с автозаполняемым файлом или при добавлении файла из шаблона, в указанном месте документа будет размещен штамп с электронной подписью, содержащий все подписи, которыми подписан файл.
—
**Пример:**
Если вы хотите, чтобы подпись отображалась в конце документа, вставьте текстовое поле с тегом `ВставитьЭП` в конце шаблона Word. При формировании документа 1С автоматически подставит штамп с ЭП именно туда.—
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/1221956/3 сентября 2025 в 5:45 в ответ на: Как добавить отображение ЭП при печати документа в 1С:Документооборот 2.1? #33311Чтобы в 1С:Документооборот 2.1 добавить отображение электронной подписи (ЭП) при печати документа, нужно выполнить следующие шаги:
1. **Добавить реквизит для хранения данных ЭП в документе**
В типовой конфигурации 1С:Документооборот 2.1 обычно уже есть реквизиты или механизмы для хранения информации об электронной подписи (например, сертификат, отметка о подписании). Если такого реквизита нет, его нужно добавить в объект документа (через конфигуратор или расширение).2. **Получить и сохранить данные ЭП при подписании документа**
При подписании документа электронной подписью (например, через встроенный механизм ЭП или внешнюю обработку) необходимо сохранить в реквизит или отдельный регистр сведения о подписи (например, ФИО подписанта, дату, время, сертификат, штамп подписи).3. **Добавить отображение ЭП в макет печатной формы**
— Откройте макет печатной формы документа (через конфигуратор или расширение).
— В нужном месте макета добавьте поле или область для вывода информации об ЭП. Это может быть текст с ФИО подписанта, дата подписи, либо изображение штампа подписи (если есть).
— Для вывода изображения подписи можно использовать реквизит типа «Изображение» или загрузить картинку из файла, если подпись хранится в таком виде.4. **Передать данные ЭП в макет при формировании печатной формы**
В модуле менеджера документа (или расширения) в процедуре формирования печатной формы нужно передать в макет значения реквизитов с данными ЭП. Например:1C Процедура СформироватьПечатнуюФорму(Макет) // Получаем объект документа ДокОбъект = ЭтотОбъект; // Передаем данные ЭП в макет Макет.Параметры.Подписант = ДокОбъект.Подписант; // ФИО или имя Макет.Параметры.ДатаПодписи = ДокОбъект.ДатаПодписи; Макет.Параметры.ИзображениеПодписи = ДокОбъект.ИзображениеПодписи; // если есть // Дальше формируем печатную форму как обычно // ... КонецПроцедуры5. **Тестирование**
— Подпишите документ электронной подписью.
— Распечатайте документ и убедитесь, что данные ЭП отображаются корректно.—
### Важные моменты
— В 1С:Документооборот 2.1 есть встроенные механизмы работы с ЭП, которые могут автоматически фиксировать подпись и хранить данные. Проверьте, возможно, достаточно просто добавить вывод этих реквизитов в макет.
— Если используется внешняя система подписи, то интеграция и сохранение данных ЭП должны быть реализованы отдельно.
— Для вывода графического изображения подписи можно использовать реквизит типа «Изображение» или загрузить картинку из файла, если подпись сохраняется в таком виде.—
Рекомендую посмотреть здесь:
https://infostart.ru/public/104345/ — статьи по работе с электронной подписью в 1С
https://help.1c.ru/doc/ — официальная документация по 1С:Документооборот и работе с ЭПЕсли нужна конкретная помощь с кодом или макетом — могу помочь с примером по вашей конфигурации.
Привет, Andrey!
Вот пример кода на 1С (8.x), который обходит массив из 5 элементов и удаляет все элементы, кроме первого:
1C // Создаем массив и добавляем 5 элементов Массив = Новый Массив(); Массив.Добавить("Элемент1"); Массив.Добавить("Элемент2"); Массив.Добавить("Элемент3"); Массив.Добавить("Элемент4"); Массив.Добавить("Элемент5"); // Удаляем все элементы, кроме первого // Поскольку индексы начинаются с 0, первый элемент - индекс 0 // Удаляем элементы с конца, чтобы не сбивать индексы при удалении Для Индекс = Массив.Количество() - 1 По 1 Цикл Если Индекс > 0 Тогда Массив.Удалить(Индекс); КонецЕсли; КонецЦикла; // Теперь в массиве остался только первый элементОбъяснение:
— Мы удаляем элементы с конца массива, чтобы при удалении не смещались индексы оставшихся элементов.
— Удаляем все элементы с индексом больше 0, то есть все, кроме первого.Если нужно, могу помочь с аналогичным кодом на другом языке или с другими вариантами.
Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1500.html
1 сентября 2025 в 9:15 в ответ на: Как исправить ошибку «Невозможно получить свойство Add класса Buttons» в 1С? #33306Владимир, ошибка «Невозможно получить свойство Add класса Buttons» при сохранении табличного документа в Excel из 1С обычно связана с проблемами взаимодействия через COM-объект Excel, чаще всего с элементами управления (кнопками) на листе Excel, которые не поддерживаются или повреждены.
Основные причины и решения:
1. **Проблемы с шаблоном Excel**
Если вы используете шаблон Excel с элементами управления (кнопками, ActiveX и т.п.), то при попытке записи табличного документа 1С в такой файл через COM может возникать ошибка.
**Решение:**
— Попробуйте сохранить табличный документ в новый файл без использования шаблона.
— Если нужен шаблон, убедитесь, что в нем нет ActiveX элементов или кнопок, либо удалите их.2. **Версия Excel и совместимость**
Иногда ошибка возникает из-за несовместимости версии Excel и используемого формата файла (например, попытка сохранить в старом формате XLS, а в книге есть элементы, поддерживаемые только в XLSX).
**Решение:**
— Сохраняйте файл в формате XLSX (тип 51), а не XLS (тип 18).
— В коде 1С при вызове `ActiveWorkbook.SaveAs` укажите формат 51 для XLSX.3. **Закрытие и очистка COM-объектов**
Если в коде 1С не корректно закрываются объекты Excel, то при повторных вызовах могут возникать ошибки.
**Решение:**
— Убедитесь, что после работы с Excel вызывается `Excel.Application.Quit()` и объекты освобождаются.
— Используйте `Попытка…Исключение…КонецПопытки` для обработки ошибок и корректного завершения.4. **Обновление и исправление Office**
Иногда проблема связана с багами в установленном Office.
**Решение:**
— Проверьте обновления Office и установите последние патчи.
— Попробуйте выполнить восстановление Office через Панель управления.5. **Пример корректного кода сохранения табличного документа в Excel (8.х)**
1C Процедура СохранитьТабличныйДокументВExcel(ТабДокумент, ИмяФайла) ИмяФайла = Строка(ИмяФайла) + ".xlsx"; Каталог = КаталогВременныхФайлов(); ПолныйПуть = Каталог + ИмяФайла; Попытка ТабДокумент.Записать(ПолныйПуть, ТипФайлаТабличногоДокумента.XLSX); Excel = Новый COMОбъект("Excel.Application"); Книга = Excel.Workbooks.Open(ПолныйПуть); Excel.Visible = Ложь; Excel.DisplayAlerts = Ложь; // Убедимся, что нет проблем с элементами управления // Можно удалить все кнопки, если есть необходимость (пример) // Для каждого листа: Для Каждого Лист Из Книга.Worksheets Цикл Пока Лист.OLEObjects.Count > 0 Цикл Лист.OLEObjects(1).Delete(); КонецЦикла; КонецЦикла; Книга.SaveAs(ПолныйПуть, 51); // Сохраняем в формате XLSX Книга.Close(); Excel.Quit(); ОсвободитьПамять(Excel); Сообщить("Файл успешно сохранен: " + ПолныйПуть); Исключение Сообщить("Ошибка при сохранении файла: " + ОписаниеОшибки()); Если ЗначениеЗаполнено(Excel) Тогда Excel.Quit(); ОсвободитьПамять(Excel); КонецЕсли; КонецПопытки; КонецПроцедуры6. **Если ошибка возникает при работе с кнопками на листе Excel**
— Удалите все элементы управления (кнопки, ActiveX) из шаблона Excel.
— Либо создайте новый чистый шаблон без таких элементов.—
Если проблема сохраняется, рекомендую проверить:
— Используемый шаблон Excel (если есть).
— Версию Excel и 1С.
— Права доступа к папке сохранения.
— Корректность кода, который работает с Excel через COM.Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/323606/
https://helpf.pro/faq8/view/1026.htmlЕсли нужно, могу помочь с адаптацией кода под вашу задачу.
—
Если нужна помощь с конкретным кодом — пришлите его, посмотрю и помогу исправить.
0
30 августа 2025 в 0:30 в ответ на: В чем разница нумерации версий платформы 1С: 8.3.25, 8.3.26, 8.3.27? #33304Николай, отличия в нумерации версий платформы 1С с номерами 25, 26 и 27 связаны с этапами развития и выпуском новых функциональных возможностей, исправлений и улучшений.
1. **Версия 8.3.25** — это одна из предыдущих крупных версий платформы, в которой были реализованы определённые функции и исправления. Она уже устарела по сравнению с последующими.
2. **Версия 8.3.26** — следующая крупная версия, которая включает в себя все изменения из 25-й версии плюс новые доработки, исправления и улучшения. Обычно такие версии выходят с определённым интервалом и содержат более свежий функционал.
3. **Версия 8.3.27** — самая новая из перечисленных, содержит все изменения из 25 и 26, а также дополнительные обновления, исправления и новые возможности.
То есть, номера 25, 26, 27 — это порядковые номера крупных релизов платформы 1С:Предприятие 8.3, каждый из которых включает в себя накопленные изменения и новые функции по сравнению с предыдущими.
**Почему иногда выходят несколько версий с разными номерами в одном году?**
Платформа развивается постоянно, и в течение года могут выходить несколько крупных обновлений (например, 8.3.25, затем 8.3.26, потом 8.3.27), каждое из которых исправляет ошибки, добавляет новые возможности и улучшает стабильность.**Где посмотреть подробности?**
На официальном сайте 1С в разделе обновлений платформы есть подробные описания изменений для каждой версии. Там можно увидеть, какие именно функции и исправления были добавлены в версии 25, 26 и 27.Рекомендую посмотреть здесь:
https://its.1c.ru/db/v8upd#content:8:25
https://its.1c.ru/db/v8upd#content:8:26
https://its.1c.ru/db/v8upd#content:8:27Там описано, что именно изменилось в каждой версии, и это поможет понять разницу между ними.
Если кратко:
— 8.3.25 — более старая версия с определённым набором функций;
— 8.3.26 — следующая версия с новыми улучшениями;
— 8.3.27 — самая свежая версия с последними обновлениями.Таким образом, нумерация отражает последовательность крупных релизов платформы.
Рекомендую посмотреть здесь: https://its.1c.ru/db/v8upd
В расширении конфигурации 1С условно оформить поля формы можно с помощью программного кода на встроенном языке 1С, используя обработчики событий формы и методы объектов формы.
Основные способы условного оформления полей в расширении:
1. **Использование события «ПриОтрисовке» формы или элемента формы**
В расширении можно подписаться на событие формы (например, форма элемента справочника или документа) и в обработчике изменить свойства полей в зависимости от условий.
Пример кода в модуле формы расширения:
1C Процедура ПриОтрисовке(Отказ) // Получаем ссылку на поле формы Поле = ЭлементыФормы.ИмяПоля; // Условие для оформления Если ЗначениеПоля > 100 Тогда // Изменяем цвет фона поля Поле.ЦветФона = Цвета.Красный; // Можно изменить шрифт, стиль и т.д. Поле.Жирный = Истина; Иначе // Возвращаем стандартное оформление Поле.ЦветФона = Неопределено; Поле.Жирный = Ложь; КонецЕсли; КонецПроцедуры2. **Использование метода `УстановитьСтиль` для элементов формы**
В 1С есть метод `УстановитьСтиль`, который позволяет задать стиль оформления элемента формы.
1C Если Условие Тогда ЭлементыФормы.ИмяПоля.УстановитьСтиль("ЖирныйКрасный"); Иначе ЭлементыФормы.ИмяПоля.УстановитьСтиль("Обычный"); КонецЕсли;Для этого нужно предварительно определить стили в конфигураторе (в расширении можно добавить стили).
3. **Изменение доступности и видимости полей**
Помимо цвета и шрифта, можно условно менять доступность (Редактируемость) и видимость поля:
1C Если Условие Тогда ЭлементыФормы.ИмяПоля.Доступность = Ложь; ЭлементыФормы.ИмяПоля.Видимость = Истина; Иначе ЭлементыФормы.ИмяПоля.Доступность = Истина; ЭлементыФормы.ИмяПоля.Видимость = Ложь; КонецЕсли;4. **Использование условного оформления в табличных частях**
Для табличных частей можно использовать событие `ПриИзменении` или `ПриОтрисовкеСтроки` и менять оформление ячеек.
Пример:
1C Процедура ТабличнаяЧастьПриОтрисовкеСтроки(Строка) Если Строка.Поле > 100 Тогда Строка.УстановитьЦветФона("Поле", Цвета.Красный); Иначе Строка.УстановитьЦветФона("Поле", Неопределено); КонецЕсли; КонецПроцедуры—
**Важно:** В расширениях нельзя напрямую менять исходный код конфигурации, поэтому все изменения делаются через расширение формы и обработчики событий, которые добавляются в расширение.
—
### Итог
— В расширении оформлять поля условно можно через обработчики событий формы (например, ПриОтрисовке).
— Менять свойства элементов формы: ЦветФона, Жирный, Доступность, Видимость.
— Использовать метод `УстановитьСтиль` для применения стилей.
— Для табличных частей использовать обработчики отрисовки строк.—
Рекомендую посмотреть здесь:
https://its.1c.ru/db/v831doc#bookmark:dev:TI000000113
https://its.1c.ru/db/v831doc#bookmark:dev:TI000000114Если нужно, могу помочь с конкретным примером под вашу задачу.
-
АвторСообщения