Ошибка в 1С 8.3: Файл базы данных поврежден
Ошибка 1С «файл базы данных поврежден» встречается время от времени у многих пользователей 1С 8.3. Причин может быть множество: отключение света, некорректное выключение компьютера, с базой данных по локальной сети работает более одного пользователя, большой размер файловой базы данных и т.д. Как правило ошибка 1С 8.3 такого рода встречается в файловых базах данных. Первым делом нужно внимательно посмотреть, какой именно файл поврежден – тут возможны варианты.
1. Файл 1CD
Чаще всего бывает поврежден файл 1CD. Это файл базы данных непосредственно. Эта ошибка базы 1С говорит о том, что повреждена какая-то часть базы или таблицы, или сами данные. Поэтому любая попытка починить базу, скорее всего, будет сопровождаться частичной потерей данных. Самый лучший вариант – восстановить базу из резервной копии, если она есть. Если копии нет, тогда база чинится только утилитой chdbfl. Утилита эта входит в поставку программы и находится в папке bin вашей платформы 1С 8.3. Вот примерный путь:
Запускаете утилиту, указываете путь к базе данных. Путь к базе данных можно найти в окне запуска снизу или по кнопке Изменить в поле «Каталог информационной базы» 1С.
Обязательно ставите галку «Исправлять обнаруженные ошибки». Затем нажимаете кнопку «Выполнить».
При работе этой утилиты никто не должен работать в базе. Всех пользователей нужно попросить выйти.
Далее после проведения тестирования утилитой chdbfl имеет смысл провести Тестирование и исправление. Для этого нужно запустить базу в режиме конфигуратора и пройти Администрирование-Тестирование и исправление. Расставляем галки и точки как на картинке.
Чуть более подробно про тестирование и исправление. Много споров о том, как правильно заполнять 2 последних пункта – «При наличии ссылок на несуществующие объекты» и «При частичной потере данных объектов». Я ставлю «Очищать ссылки» и «Удалять объекты», потому что при выборе пункта «Создавать объекты» база попытается создать объект, данных для которого у нее нет. То есть это будет пустой объект с кодом вида F000000001, в котором не будут заполнены даже стандартные реквизиты.
В теории его можно потом заполнить. Но на практике часто вручную пользователь не может заполнить объект как раз из-за отсутствия стандартных реквизитов, и приходится писать программы, чтобы заполнить объекты, или пользоваться какими-то обработками. Создавать объект на мой взгляд имеет смысл только при наличии копии базы с целью найти все объекты с кодом F0, найти в копии их аналоги и перенести. В ином случае это может быть чревато сложностями в работе конфигурации, обменов и в прохождении тестирования, не говоря уже о работе пользователей.
2. Повреждение файлов кеша
Второй случай ошибки «Файл базы данных поврежден» встречается реже, но решается проще. Когда ошибка указывает на поврежденный файл 1С в папке AppData с непроизносимым цифро-буквенным названием, это говорит о повреждении файлов кеша. Как правило ошибка вылетает только у одного пользователя. Чтобы исправить ошибку нужно пройти по указанному пути и удалить папку с цифро-буквенным названием. Вот пример расположения файла.
✍️@razrab_1C
Ошибка 1С «файл базы данных поврежден» встречается время от времени у многих пользователей 1С 8.3. Причин может быть множество: отключение света, некорректное выключение компьютера, с базой данных по локальной сети работает более одного пользователя, большой размер файловой базы данных и т.д. Как правило ошибка 1С 8.3 такого рода встречается в файловых базах данных. Первым делом нужно внимательно посмотреть, какой именно файл поврежден – тут возможны варианты.
1. Файл 1CD
Чаще всего бывает поврежден файл 1CD. Это файл базы данных непосредственно. Эта ошибка базы 1С говорит о том, что повреждена какая-то часть базы или таблицы, или сами данные. Поэтому любая попытка починить базу, скорее всего, будет сопровождаться частичной потерей данных. Самый лучший вариант – восстановить базу из резервной копии, если она есть. Если копии нет, тогда база чинится только утилитой chdbfl. Утилита эта входит в поставку программы и находится в папке bin вашей платформы 1С 8.3. Вот примерный путь:
Запускаете утилиту, указываете путь к базе данных. Путь к базе данных можно найти в окне запуска снизу или по кнопке Изменить в поле «Каталог информационной базы» 1С.
Обязательно ставите галку «Исправлять обнаруженные ошибки». Затем нажимаете кнопку «Выполнить».
При работе этой утилиты никто не должен работать в базе. Всех пользователей нужно попросить выйти.
Далее после проведения тестирования утилитой chdbfl имеет смысл провести Тестирование и исправление. Для этого нужно запустить базу в режиме конфигуратора и пройти Администрирование-Тестирование и исправление. Расставляем галки и точки как на картинке.
Чуть более подробно про тестирование и исправление. Много споров о том, как правильно заполнять 2 последних пункта – «При наличии ссылок на несуществующие объекты» и «При частичной потере данных объектов». Я ставлю «Очищать ссылки» и «Удалять объекты», потому что при выборе пункта «Создавать объекты» база попытается создать объект, данных для которого у нее нет. То есть это будет пустой объект с кодом вида F000000001, в котором не будут заполнены даже стандартные реквизиты.
В теории его можно потом заполнить. Но на практике часто вручную пользователь не может заполнить объект как раз из-за отсутствия стандартных реквизитов, и приходится писать программы, чтобы заполнить объекты, или пользоваться какими-то обработками. Создавать объект на мой взгляд имеет смысл только при наличии копии базы с целью найти все объекты с кодом F0, найти в копии их аналоги и перенести. В ином случае это может быть чревато сложностями в работе конфигурации, обменов и в прохождении тестирования, не говоря уже о работе пользователей.
2. Повреждение файлов кеша
Второй случай ошибки «Файл базы данных поврежден» встречается реже, но решается проще. Когда ошибка указывает на поврежденный файл 1С в папке AppData с непроизносимым цифро-буквенным названием, это говорит о повреждении файлов кеша. Как правило ошибка вылетает только у одного пользователя. Чтобы исправить ошибку нужно пройти по указанному пути и удалить папку с цифро-буквенным названием. Вот пример расположения файла.
✍️@razrab_1C
👍5🔥2❤1
Media is too big
VIEW IN TELEGRAM
Рекомендации по улучшению хорошего кода на 1С
00:00 - Программный интерфейс
01:53 - Получить в именах Функций
03:00 - Использование глаголов в именах функций
04:03 - Где объявлять переменные
05:09 - Лишняя абстракция
06:23 - Функция-конструктор
06:52 - Внедрение зависимостей
07:43 - Адаптеры
08:27 - Побочный эффект метода
09:05 - Связность метода
10:00 - Выделение внешнего формата
10:50 - Хороший пример объявления выходного значения
11:45 - Метод должен либо обрабатывать данные, либо возвращать
13:05 - Дата провайдеры пишем в модуле менеджера
14:00 - Паттерн фасад
14:35 - Блокировки
16:35 - ОбменДанными.Загрузка = Истина
17:30 - Общий модуль не должен много знать об объектах
18:55 - Презентер
20:00 - ad-hoc полиморфизм
20:37 - Использование Знач
22:37 - Детали и бизнес-логика
23:37 - ВызватьИсключение — это хорошо
25:10 - Комментарии
26:14 - Метод делает два действия и это плохо
27:40 - Лучше использовать метод Заполнить
источник
✍️@razrab_1C
00:00 - Программный интерфейс
01:53 - Получить в именах Функций
03:00 - Использование глаголов в именах функций
04:03 - Где объявлять переменные
05:09 - Лишняя абстракция
06:23 - Функция-конструктор
06:52 - Внедрение зависимостей
07:43 - Адаптеры
08:27 - Побочный эффект метода
09:05 - Связность метода
10:00 - Выделение внешнего формата
10:50 - Хороший пример объявления выходного значения
11:45 - Метод должен либо обрабатывать данные, либо возвращать
13:05 - Дата провайдеры пишем в модуле менеджера
14:00 - Паттерн фасад
14:35 - Блокировки
16:35 - ОбменДанными.Загрузка = Истина
17:30 - Общий модуль не должен много знать об объектах
18:55 - Презентер
20:00 - ad-hoc полиморфизм
20:37 - Использование Знач
22:37 - Детали и бизнес-логика
23:37 - ВызватьИсключение — это хорошо
25:10 - Комментарии
26:14 - Метод делает два действия и это плохо
27:40 - Лучше использовать метод Заполнить
источник
✍️@razrab_1C
👍3🔥1
Зависшие сеансы 1С
1. Приложение «Диспетчер задач»
Чаще всего такая проблема встречается при клиент-серверном варианте работы, а причиной является некорректное завершение сеанса.
В файловом варианте работы для ОС Windows обычно достаточно через «Диспетчер задач» (Task Manager) завершить процесс Windows с рабочего места пользователя (ориентируясь, например, по заголовку окна):
В ОС семейства Linux привычного для пользователей ОС Windows приложения «Диспетчер задач» нет. Вместо этого используются консольные утилиты и команды, но в ряде дистрибутивов (например, Ubuntuи др.) имеется «Системный монитор» (SystemMonitor):
2. Администрирование серверов 1С
В случае использования клиент-серверного варианта работы управление сеансами осуществляется через оснастку «Администрирование серверов 1С:Предприятие». Для завершения сеанса необходимо обладать полномочиями администратора кластера серверов. Список сеансов может быть отображен двумя способами:
· для всего кластера в целом;
· отдельной информационной базы 1С.
Чтобы отобразить список соединений для отдельной информационной базы, следует в дереве центральных серверов выбрать нужный центральный сервер, выбрать нужный кластер, выбрать нужную информационную базу, а затем выбрать и раскрыть ветку Сеансы:
Для завершения сеанса следует выбрать требуемый сеанс в списке сеансов и выполнить команду контекстного меню Удалить или аналогичную команду главного меню утилиты. Если в момент завершения сеанса этот сеанс активен, то выполняется попытка разрыва соединения.
Перед удалением консоль кластера предлагает ввести текст сообщения об ошибке, который будет показан пользователю, который инициировал удаляемый сеанс:
К использованию данного средства следует подходить с осторожностью, так как завершение сеанса пользователя, активно работающего с информационной базой, может привести к потере данных.
Стоит также упомянуть о новом «явлении» для платформы 8.3 по сравнению с 8.2, введенном для повышения устойчивости работы клиентских приложений (для поддержания сеанса тонкий клиент и веб-клиент обеспечивают обращение к кластеру не реже 1 раза в 10 минут), при котором платформа выполняет удержание сеансов при продолжительном их бездействии (по умолчанию 20 минут). При этом у таких сеансов отсутствуют активные соединения и рабочий процесс:
Завершение «спящих» сеансов платформой выполняется автоматически по истечении заданного времени – по умолчанию 24 часа. При необходимости параметры засыпания и завершения спящих сеансов можно менять для конкретной информационной базы через конфигуратор (Администрирование → Параметры информационной базы):
Более подробно об этих и других параметрах информационной базы можно узнать в документации по платформе, доступной на портале ИТС.
✍️@razrab_1C
1. Приложение «Диспетчер задач»
Чаще всего такая проблема встречается при клиент-серверном варианте работы, а причиной является некорректное завершение сеанса.
В файловом варианте работы для ОС Windows обычно достаточно через «Диспетчер задач» (Task Manager) завершить процесс Windows с рабочего места пользователя (ориентируясь, например, по заголовку окна):
В ОС семейства Linux привычного для пользователей ОС Windows приложения «Диспетчер задач» нет. Вместо этого используются консольные утилиты и команды, но в ряде дистрибутивов (например, Ubuntuи др.) имеется «Системный монитор» (SystemMonitor):
2. Администрирование серверов 1С
В случае использования клиент-серверного варианта работы управление сеансами осуществляется через оснастку «Администрирование серверов 1С:Предприятие». Для завершения сеанса необходимо обладать полномочиями администратора кластера серверов. Список сеансов может быть отображен двумя способами:
· для всего кластера в целом;
· отдельной информационной базы 1С.
Чтобы отобразить список соединений для отдельной информационной базы, следует в дереве центральных серверов выбрать нужный центральный сервер, выбрать нужный кластер, выбрать нужную информационную базу, а затем выбрать и раскрыть ветку Сеансы:
Для завершения сеанса следует выбрать требуемый сеанс в списке сеансов и выполнить команду контекстного меню Удалить или аналогичную команду главного меню утилиты. Если в момент завершения сеанса этот сеанс активен, то выполняется попытка разрыва соединения.
Перед удалением консоль кластера предлагает ввести текст сообщения об ошибке, который будет показан пользователю, который инициировал удаляемый сеанс:
К использованию данного средства следует подходить с осторожностью, так как завершение сеанса пользователя, активно работающего с информационной базой, может привести к потере данных.
Стоит также упомянуть о новом «явлении» для платформы 8.3 по сравнению с 8.2, введенном для повышения устойчивости работы клиентских приложений (для поддержания сеанса тонкий клиент и веб-клиент обеспечивают обращение к кластеру не реже 1 раза в 10 минут), при котором платформа выполняет удержание сеансов при продолжительном их бездействии (по умолчанию 20 минут). При этом у таких сеансов отсутствуют активные соединения и рабочий процесс:
Завершение «спящих» сеансов платформой выполняется автоматически по истечении заданного времени – по умолчанию 24 часа. При необходимости параметры засыпания и завершения спящих сеансов можно менять для конкретной информационной базы через конфигуратор (Администрирование → Параметры информационной базы):
Более подробно об этих и других параметрах информационной базы можно узнать в документации по платформе, доступной на портале ИТС.
✍️@razrab_1C
👍3❤1🔥1
Media is too big
VIEW IN TELEGRAM
В видео рассмотрим 8 наиболее типовых ошибок при разработке запросов 1С
Евгений Гилев
• Запросы в цикле
• Необоснованное использование вложенных запросов
• Не корректное использование условий в запросах
• Использование таблиц значений
• «Бомба», заложенная в разыменовании полей
• Непопадание в индекс в условиях и соединениях
• Создание динамических запросов
• Получение ссылочных полей в запросе
источник
✍️@razrab_1C
Евгений Гилев
• Запросы в цикле
• Необоснованное использование вложенных запросов
• Не корректное использование условий в запросах
• Использование таблиц значений
• «Бомба», заложенная в разыменовании полей
• Непопадание в индекс в условиях и соединениях
• Создание динамических запросов
• Получение ссылочных полей в запросе
источник
✍️@razrab_1C
👍4🔥3
🔥5👍2👎1
Хранилище значений в 1С
Мало кто знает преимущества такого специального объекта в языке 1С, как хранилище значений.
Хранилище значений – это определенный объект языка в конфигурации, который может хранить информацию любого типа: файлы программ Word, Excel, PDF или объемы графической информации. То есть этот объект может хранить любую необходимую информацию.
Выбрать такой тип можно для реквизитов всех объектов, где их можно использовать. К примеру, реквизиты справочников, документов. Также можно его установить как тип константы и хранить информацию на более глобальном уровне.
Хочу обратить внимание, что вся работа справочников, имена которых носят частично имя владельца справочника, а частично «Присоединенные файлы», построена на реквизите с типом «ХранилищеЗначений».
1. Пример с изображением товара
Давайте разберем на примере. У нас есть изображение товара, и нам необходимо автоматически при загрузке номенклатуры загружать и изображение. Для этого необходимо, чтобы был справочник «НоменклатураПрисоединенныеФайлы» с одним реквизитом с нужным нам типом. После этого мы выбираем нужный нам файл с изображением и грузим его. Все легко и просто. Конечно, при загрузке множества файлов могут возникнуть проблемы, но только в моментах, которые Вы можете не знать или где-то ошиблись.
Выше приведен пример того, как можно работать с хранилищем и помещать туда данные. Существует один момент, на который я хотел бы обратить Ваше внимание. Это расчет степени сжатия. Максимальное сжатие, которое мы можем назначить – это 9. Этот режим программы сжимает файлы так, что они занимают мало места и не обременяют базу.
Чтоб очистить значение этого объекта, достаточно только установить ему значение «Неопределено».
2. Копии базы
Кстати, чуть не забыл про один немаловажный факт про этот объект.
Если у Вас настроено резервное копирование базы любыми средствами, и Вы поместили в базу какой-то нужный Вам файл, то он тоже будет сохранен в копии и в любой момент можно получить этот файл. Даже спустя годы, если, конечно, столько времени у Вас хранятся копии баз.
✍️@razrab_1C
Мало кто знает преимущества такого специального объекта в языке 1С, как хранилище значений.
Хранилище значений – это определенный объект языка в конфигурации, который может хранить информацию любого типа: файлы программ Word, Excel, PDF или объемы графической информации. То есть этот объект может хранить любую необходимую информацию.
Выбрать такой тип можно для реквизитов всех объектов, где их можно использовать. К примеру, реквизиты справочников, документов. Также можно его установить как тип константы и хранить информацию на более глобальном уровне.
Хочу обратить внимание, что вся работа справочников, имена которых носят частично имя владельца справочника, а частично «Присоединенные файлы», построена на реквизите с типом «ХранилищеЗначений».
1. Пример с изображением товара
Давайте разберем на примере. У нас есть изображение товара, и нам необходимо автоматически при загрузке номенклатуры загружать и изображение. Для этого необходимо, чтобы был справочник «НоменклатураПрисоединенныеФайлы» с одним реквизитом с нужным нам типом. После этого мы выбираем нужный нам файл с изображением и грузим его. Все легко и просто. Конечно, при загрузке множества файлов могут возникнуть проблемы, но только в моментах, которые Вы можете не знать или где-то ошиблись.
Настройки = Новый Структура () ;
Настройки.Вставить ("ПоУмолчанию", Истина);
Настройки. Вставить ("Наименование", "Наименование1") ;
Хранилище = Новый ХранилищеЗначения(Настроики, Новый СжатиеДанных(9);Выше приведен пример того, как можно работать с хранилищем и помещать туда данные. Существует один момент, на который я хотел бы обратить Ваше внимание. Это расчет степени сжатия. Максимальное сжатие, которое мы можем назначить – это 9. Этот режим программы сжимает файлы так, что они занимают мало места и не обременяют базу.
Чтоб очистить значение этого объекта, достаточно только установить ему значение «Неопределено».
2. Копии базы
Кстати, чуть не забыл про один немаловажный факт про этот объект.
Если у Вас настроено резервное копирование базы любыми средствами, и Вы поместили в базу какой-то нужный Вам файл, то он тоже будет сохранен в копии и в любой момент можно получить этот файл. Даже спустя годы, если, конечно, столько времени у Вас хранятся копии баз.
✍️@razrab_1C
🔥4👍2
Вставить объект в буфер обмена средствами 1С
Платформа 1С 8.3 позволяет работать с буфером обмена с помощью внешней компоненты COMОбъект("HtmlFile").
Внимание! Структура базы приёмника и структура база источника должно быть 100% идентичной!
Вставить объект в буфер обмена с помощью внешней компоненты в 1С 8.3:
✍️@razrab_1C
Платформа 1С 8.3 позволяет работать с буфером обмена с помощью внешней компоненты COMОбъект("HtmlFile").
Внимание! Структура базы приёмника и структура база источника должно быть 100% идентичной!
Вставить объект в буфер обмена с помощью внешней компоненты в 1С 8.3:
&НаКлиенте
Процедура Вставить_объект_В_буфер_обмена(Команда)
COM_Объект = Новый COMОбъект("htmlfile");
Вставить_объект_НаСервере(COM_Объект.ParentWindow.ClipboardData.Getdata("Text"));
КонецПроцедуры
&НаСервере
Процедура Вставить_объект_Сервере(ТекСтрока)
Новая_запись=Новый ЧтениеXML;
Новая_запись.УстановитьСтроку(ТекСтрока);
Новая_запись.Прочитать(); // элемент Root
Новая_запись.Прочитать(); // элемент с документом
Если ВозможностьЧтенияXML(Новая_запись) Тогда // получаем тип данных XML из Новая_запись
СсылкаНаОбъект=ПрочитатьXML(Новая_запись);
СсылкаНаОбъект.Ссылка.УникальныйИдентификатор();
Пользователю = Новый СообщениеПользователю;
Если СсылкаНаОбъект.Ссылка.Пустая() Тогда
СсылкаНаОбъект.Записать();
Пользователю.Текст = "Загружен "+СсылкаНаОбъект.Ссылка;
Иначе
СсылкаНаОбъект = СсылкаНаОбъект.Ссылка.ПолучитьОбъект();
ЗаполнитьЗначенияСвойств(СсылкаНаОбъект, Новая_запись);
Пользователю.Текст = "Изменен "+СсылкаНаОбъект.Ссылка;
КонецЕсли;
Пользователю.Сообщить();
КонецЕсли;
Новая_запись.Закрыть();
КонецПроцедуры
✍️@razrab_1C
👍2🔥1
Работа со строками в 1С
Для того чтобы создать какой-то программный продукт, необходимо обладать навыками программирования, знать его «язык».
Язык программирования 1С - полноценный функционал для разработки собственных решений, и он является главным инструментом разработки.
1. Три основных типа данных в языке программирования 1С 8.3
Кто только начинает изучение, вначале знакомится с самыми простыми его элементами – типами данных, как первоклассник учит буквы, чтобы в дальнейшем составлять слова и предложения.
Основными типами данных в языке программирования 1С являются:
·Строка. Отличный пример таких данных - цитата из стихотворения «Мой дядя самых честных правил,». Обратите внимание, что данные типа Строка всегда заключается в кавычки.
·Число. С этим типом данных мы часто имеем дело в реальной жизни. Числа могут быть, как вы знаете, целыми и дробными, как со знаком плюс, так и с минусом.
·Дата. Примером данных данного типа можно считать дату Нового Года – 31.12.2019. На языке компьютера эти данные будут выглядеть так: ‘20191231’. Дата всегда заключается в одинарные кавычки.
Давайте же рассмотрим, как используется тип данных Строка в самых простых функциях программирования.
2. Функции работы со строками в 1С
2.1 Строка
Функция Строка() позволяет получить текстовое представление переменных других типов.
Примеры:
2.2 СтрДлина
Функция позволяет получить количество символов в строке 1C, включая пробелы и незначащие символы.
Например:
2.3 ВРег, НРег, ТРег
Функции для управления регистром строки.
ВРег — преобразует строку в верхний регистр. НРег — в нижний. ТРег — у каждого нового слова первая буква преобразуется в верхний регистр, остальные в нижний.
Примеры:
2.4 ПустаяСтрока
Функция, позволяющая сравнить исходную строку с пустой строкой. Проверяется наличие незначащих символов.
Пример:
Аналогично можно проверить строку на пустое значение следующим образом:
2.5 СтрЗаменить
Функция СтрЗаменить позволяет массово заменить искомое значение на нужное нам. Синтаксис:
Например:
✍️@razrab_1C
Для того чтобы создать какой-то программный продукт, необходимо обладать навыками программирования, знать его «язык».
Язык программирования 1С - полноценный функционал для разработки собственных решений, и он является главным инструментом разработки.
1. Три основных типа данных в языке программирования 1С 8.3
Кто только начинает изучение, вначале знакомится с самыми простыми его элементами – типами данных, как первоклассник учит буквы, чтобы в дальнейшем составлять слова и предложения.
Основными типами данных в языке программирования 1С являются:
·Строка. Отличный пример таких данных - цитата из стихотворения «Мой дядя самых честных правил,». Обратите внимание, что данные типа Строка всегда заключается в кавычки.
·Число. С этим типом данных мы часто имеем дело в реальной жизни. Числа могут быть, как вы знаете, целыми и дробными, как со знаком плюс, так и с минусом.
·Дата. Примером данных данного типа можно считать дату Нового Года – 31.12.2019. На языке компьютера эти данные будут выглядеть так: ‘20191231’. Дата всегда заключается в одинарные кавычки.
Давайте же рассмотрим, как используется тип данных Строка в самых простых функциях программирования.
2. Функции работы со строками в 1С
2.1 Строка
Функция Строка() позволяет получить текстовое представление переменных других типов.
Примеры:
Строка(ТекущаяДата()) //"20.11.2019 14:10:33"
Строка(Истина) // Да
Строка(2019) // "2 019" 2.2 СтрДлина
Функция позволяет получить количество символов в строке 1C, включая пробелы и незначащие символы.
Например:
СтрДлина("Тестовая строка") // 15 2.3 ВРег, НРег, ТРег
Функции для управления регистром строки.
ВРег — преобразует строку в верхний регистр. НРег — в нижний. ТРег — у каждого нового слова первая буква преобразуется в верхний регистр, остальные в нижний.
Примеры:
ВРег("Тестовая строка") // "ТЕСТОВАЯ СТРОКА"
НРег("Тестовая строка") // "тестовая строка"
ТРег("Тестовая строка") // "Тестовая Строка" 2.4 ПустаяСтрока
Функция, позволяющая сравнить исходную строку с пустой строкой. Проверяется наличие незначащих символов.
Пример:
ПустаяСтрока("Тест") //ложь
ПустаяСтрока(" ") // истинаАналогично можно проверить строку на пустое значение следующим образом:
СокрЛП(" ") = "" // истина 2.5 СтрЗаменить
Функция СтрЗаменить позволяет массово заменить искомое значение на нужное нам. Синтаксис:
Например:
СтрЗаменить("Произвольная Строка", " " , "") //"ПроизвольнаяСтрока"✍️@razrab_1C
👍3❤1🔥1
Работа с объектами в 1С
1. Что дает доступ к метаданным конфигурации
В "1С:Предприятии" дается доступ к метаданным конфигурации. Данная возможность требуется для создания общих алгоритмов, с помощью которых можно было бы упростить работу с различными объектами конфигурации.
Доступ к метаданным дает право только на непосредственное чтение, а программное изменение не поддерживается.
В документации не приводятся свойства метаданных и коллекций подчиненных ей объектов. Для знакомства со структурой и составом свойств, необходимо использовать отчет метаданным конфигурации (в режиме Конфигуратор меню Конфигурация – Отчет по конфигурации). Имена, показанные в отчете, соответствуют именам свойств и коллекций объектов.
Метаданные в отчетах и в программных моделях не содержат ранее упомянутой ветки "Общие". Ветка “Общие” используется только в дереве метаданных для дополнительного удобства и редактирования. Данная возможность требуется в отчете и в программной модели все объекты, входящие в ветку "Общие", подчиняются “корневому” объекту.
2. Для чего нужен доступ к структуре метаданных
Доступ к структуре метаданных осуществляется через Метаданные глобального контекста. Данное свойство предоставляет доступ непосредственно к корневому объекту конфигурации и коллекциям объектов. Каждый объект метаданных 1С предоставляет доступ к своим свойствам и подчиненным объектам. Так данная возможность требуется для получить доступ к множеству объектов.
Например:
Кроме того, у некоторых типов, предназначенных для работы с прикладными объектами, имеется метод Метаданные(), предназначенный для получения объекта метаданных 1С, отвечающего за их конкретный тип.
Например:
Однако такие методы есть не у всех типов, используемых для работы с прикладными объектами. Если необходимо получить объект метаданных 1С, отвечающий за некоторый тип прикладного объекта, то можно использовать метод НайтиПоТипу().
Например:
Объекты метаданных 1С можно сравнивать на равенство. При этом проверяется схожесть объектов, а не совпадение значений свойств. То есть проверяется то, что сравнивается конкретно – один и тот же объект метаданных конфигурации.
Например:
С помощью метода Родитель() можно получить вышестоящий объект метаданных 1С.
Например:
Для представления объекта метаданных 1С пользователю нужно использовать преобразование значения к строке или метод Представление().
Например:
Объекты метаданных не могут быть сериализованы. Для получения строкового значения, соответствующему объекту метаданных, независимого от языка интерфейса пользователя нужно использовать метод ПолноеИмя().
Например:
Метаданные можно использовать, чтобы проверить, относится ли, например, значение к справочникам.
Некоторые свойства объектов метаданных имеют перечислительный тип. Это специальные перечисления. Доступ к ним в языке выполняется через коллекцию Свойства Объектов, предоставляемую “корневым” объектом метаданных. Состав этих перечислений описан в документации, в разделе, описывающем работу с объектами метаданных.
Например:
Некоторые свойства объектов метаданных являются коллекциями значений и представляются типом КоллекцияЗначенийСвойстваОбъектаМетаданных.
Например:
Продолжение в комментариях➡️
✍️@razrab_1C
1. Что дает доступ к метаданным конфигурации
В "1С:Предприятии" дается доступ к метаданным конфигурации. Данная возможность требуется для создания общих алгоритмов, с помощью которых можно было бы упростить работу с различными объектами конфигурации.
Доступ к метаданным дает право только на непосредственное чтение, а программное изменение не поддерживается.
В документации не приводятся свойства метаданных и коллекций подчиненных ей объектов. Для знакомства со структурой и составом свойств, необходимо использовать отчет метаданным конфигурации (в режиме Конфигуратор меню Конфигурация – Отчет по конфигурации). Имена, показанные в отчете, соответствуют именам свойств и коллекций объектов.
Метаданные в отчетах и в программных моделях не содержат ранее упомянутой ветки "Общие". Ветка “Общие” используется только в дереве метаданных для дополнительного удобства и редактирования. Данная возможность требуется в отчете и в программной модели все объекты, входящие в ветку "Общие", подчиняются “корневому” объекту.
2. Для чего нужен доступ к структуре метаданных
Доступ к структуре метаданных осуществляется через Метаданные глобального контекста. Данное свойство предоставляет доступ непосредственно к корневому объекту конфигурации и коллекциям объектов. Каждый объект метаданных 1С предоставляет доступ к своим свойствам и подчиненным объектам. Так данная возможность требуется для получить доступ к множеству объектов.
Например:
Сообщить(Метаданные.Документы.Счет.Реквизиты.Контрагент);Кроме того, у некоторых типов, предназначенных для работы с прикладными объектами, имеется метод Метаданные(), предназначенный для получения объекта метаданных 1С, отвечающего за их конкретный тип.
Например:
Док = Документы.Счет.СоздатьДокумент();
Сообщить(Док.Метаданные().ПолноеИмя());Однако такие методы есть не у всех типов, используемых для работы с прикладными объектами. Если необходимо получить объект метаданных 1С, отвечающий за некоторый тип прикладного объекта, то можно использовать метод НайтиПоТипу().
Например:
Выборка = Документы.Счет.Выбрать();
Сообщить(Метаданные.НайтиПоТипу(ТипЗнч(Выборка)));Объекты метаданных 1С можно сравнивать на равенство. При этом проверяется схожесть объектов, а не совпадение значений свойств. То есть проверяется то, что сравнивается конкретно – один и тот же объект метаданных конфигурации.
Например:
Сообщить(Метаданные.ОсновнаяФормаКонстант = Метаданные.ОбщиеФормы.Основная);С помощью метода Родитель() можно получить вышестоящий объект метаданных 1С.
Например:
Сообщить(Метаданные.Документы.Счет.Реквизиты.Контрагент.Родитель());Для представления объекта метаданных 1С пользователю нужно использовать преобразование значения к строке или метод Представление().
Например:
Сообщить(Метаданные.Справочники.РасчетныеСчета);
Сообщить(Метаданные.Справочники.РасчетныеСчета.Представление());Объекты метаданных не могут быть сериализованы. Для получения строкового значения, соответствующему объекту метаданных, независимого от языка интерфейса пользователя нужно использовать метод ПолноеИмя().
Например:
Сообщить(Метаданные.ОбщиеФормы.Основная.ПолноеИмя());Метаданные можно использовать, чтобы проверить, относится ли, например, значение к справочникам.
Некоторые свойства объектов метаданных имеют перечислительный тип. Это специальные перечисления. Доступ к ним в языке выполняется через коллекцию Свойства Объектов, предоставляемую “корневым” объектом метаданных. Состав этих перечислений описан в документации, в разделе, описывающем работу с объектами метаданных.
Например:
Сообщить(Метаданные.Документы.Счет.ПериодичностьНомера =
Метаданные.СвойстваОбъектов.ПериодичностьНомераДокумента.Год);Некоторые свойства объектов метаданных являются коллекциями значений и представляются типом КоллекцияЗначенийСвойстваОбъектаМетаданных.
Например:
Сообщить(Метаданные.Документы.Счет.ВводитсяНаОсновании.Количество());
Сообщить(Метаданные.Документы.Счет.ВводитсяНаОсновании.Содержит(Метаданные.Справочники.Контрагенты));Продолжение в комментариях
✍️@razrab_1C
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Регистры накопления в 1С 8.3, с чем их едят?
Для успешного управления каким-либо хозяйственным объектом необходимо обладать точными данными о его состоянии на текущий момент, а также за прошедшие периоды. Так как только на основе данной информации можно делать определенные выводы и прогнозировать дальнейшую деятельность.
То есть данные необходимо накапливать и обрабатывать. Собственно, для этих целей и служат регистры накопления в 1С 8.3.
К примеру, есть магазин, торгующий различными товарами. Продавец при реализации или оприходовании товара выписывает накладную, а также делает запись в специальном журнале, где указывает сумму, количество, дату и сведения о контрагенте. В конце каждого месяца вычисляется итоговые результаты.
В системе 1С накладной будет соответствовать документ и запись в регистр накопления. Причем, если в журнал записываются сведения только о проданных товарах, то это будет оборотный регистр. Если поступления и продажи – тогда регистр накопления остатков. Записи в журнале – аналог таблицы движений, вычисленные результаты за месяц таблицы итогов.
https://telegra.ph/Registry-nakopleniya-v-1S-83-s-chem-ih-edyat-01-04
✍️@razrab_1C
Для успешного управления каким-либо хозяйственным объектом необходимо обладать точными данными о его состоянии на текущий момент, а также за прошедшие периоды. Так как только на основе данной информации можно делать определенные выводы и прогнозировать дальнейшую деятельность.
То есть данные необходимо накапливать и обрабатывать. Собственно, для этих целей и служат регистры накопления в 1С 8.3.
К примеру, есть магазин, торгующий различными товарами. Продавец при реализации или оприходовании товара выписывает накладную, а также делает запись в специальном журнале, где указывает сумму, количество, дату и сведения о контрагенте. В конце каждого месяца вычисляется итоговые результаты.
В системе 1С накладной будет соответствовать документ и запись в регистр накопления. Причем, если в журнал записываются сведения только о проданных товарах, то это будет оборотный регистр. Если поступления и продажи – тогда регистр накопления остатков. Записи в журнале – аналог таблицы движений, вычисленные результаты за месяц таблицы итогов.
https://telegra.ph/Registry-nakopleniya-v-1S-83-s-chem-ih-edyat-01-04
✍️@razrab_1C
🔥3