1С:Предприятие 8 – Telegram
1С:Предприятие 8
865 subscribers
91 photos
200 videos
67 links
🔥 Разработка в 1С — просто и понятно! 🔥

Полезные фишки и лайфхаки для разработчиков
Объяснение сложных тем простыми словами
Готовые решения, сниппеты и примеры кода
Разбор ошибок и способов их устранения
Новости и тренды в мире 1С
Download Telegram
Основы 1С 8.3 для начинающих (Управляемые формы). Основы программирования и конфигурирования.

#1. Платформа. Конфигурация. Установка учебной версии. Информационная база
#2. Файловые и клиент-серверные информационные базы
#3. Режимы запуска. Тонкий клиент. Толстый клиент. Веб-клиент.
#4. Конфигурация. Объекты метаданных и их свойства.
#5. Сохранение изменений в конфигурации.
#6. Справочники и их создание.
#7. Выгрузка/Загрузка информационной базы. Сохранение/Загрузка конфигурации.
#8. Пользовательский интерфейс. Подсистемы. Корпоративный стиль.
#9. Настройка справочников. Иерархия справочников. Владельцы справочников.
#10. Реквизиты справочников. Стандартные типы реквизитов. Табличные части.

источник

👉@DevLab1C
4👍3🔥2
Как получить IP адрес компьютера

Для получения IP используем возможности COM-объекта WbemScripting.
Итоговая функция для получения IP-адреса выглядит так:


Функция ПолучитьIPАдрес()

КомпСтр = ".";
НКО = Новый COMОбъект("WbemScripting.SWbemLocator");
objWMIService = НКО.ConnectServer(КомпСтр, "root\CIMV2");
СН = objWMIService.ExecQuery("Select IPAddress from Win32_NetworkAdapterConfiguration where ipenabled = true");

Для Каждого ТСК Из СН Цикл
Для Каждого StrPrm Из ТСК.IPAddress Цикл
Возврат StrPrm;
КонецЦикла;
КонецЦикла;

КонецФункции;


Функция получит и вернёт локальный айпи компьютера.
Представим, что у компьютера две сетевые карты. Одна — «смотрит» в интернет. Таким образом, мы получим только локальный адрес.

👉@DevLab1C
🔥6
Media is too big
VIEW IN TELEGRAM
Помогаторы разработчика 1С

В данном докладе я расскажу о некоторых приемах, инструментах и «лайфхаках», которые использую в своей работе и которые, как мне кажется, помогают сделать работу разработчика 1С проще, удобнее, а главное, эффективней. Многие вещи, возможно, покажутся вам очевидными или совсем простыми. Но часто я вижу, что разработчики пренебрегают ими, а ведь именно такие «мелочи» и делают нашу жизнь проще.

Доклад ориентирован в первую очередь для начинающих свой путь в профессию специалистов, а также среднего уровня разработчиков. Однако, очень надеюсь, что он будет интересен и полезен также и опытным программистам 1С.

источник

👉@DevLab1C
👍5🔥2
Пустая дата в 1С

1. Понятие пустой даты на платформе 1С 8 Предприятие

В технологической платформе «1С:Предприятие 8» не существует понятия "пустая" переменная. Любая переменная всегда имеет определенное значение. Для многих типов данных в 1С:Предприятии 8 существуют значения переменной по умолчанию. Эти значения используются системой в тех случаях, когда нет явного указания на устанавливаемое значение.

Например, значение переменной по умолчанию используется при очистке поля ввода.

Инициализировать переменную даты как пустую в 1С, можно, задав для такого типа данных только значение по умолчанию. Значение даты по умолчанию это дата начала отсчёта (01 января 0001 года), то есть самая первая дата по григорианскому календарю.

Очень часто при разработке прикладного решения необходимо проверить является ли поле с типом «Дата» или переменная, в которой хранится значение с этим типом, пустыми. Есть несколько способов выполнить проверку на пустое значение (проверку на пустую дату) в 1С.

2. Пустая дата 1С в текстах модулей обработчиков

Существует несколько вариантов инициализации пустой даты в 1С 8.3 для текстов модулей:

1. ЕслиДата= '00010101'Тогда
2. ЕслиДата= '00010101000000'Тогда
3. ЕслиДата= '0001-01-01'Тогда
4. Если Дата = Дата(1, 1, 1) Тогда
5. Если Дата = Дата(1, 1, 1, 0, 0, 0) Тогда
6. Если Не ЗначениеЗаполнено(Дата) Тогда


В последнее время набирает популярность конструкция:
Если Не ЗначениеЗаполнено(Дата) Тогда

В этом случае не нужно проверять последовательность и количество символов как в случае с конструкцией
Дата(1, 1, 1, 0, 0, 0)

А в случае использования конструкции
'00010101000000'

возникает проблема с символом «'». Его не так просто отыскать на клавиатуре. Особенно для начинающих разработчиков.

3. Пустая дата в запросе 1С

Значение пустой даты в запросе в 1С 8.3—когда дата не выбрана, можно получить в запросе через функцию ДАТАВРЕМЯ() или передать в качестве параметра запроса.


1. ГДЕДата= ДАТАВРЕМЯ(0001,01,01,0,0,0)
2. ГДЕДата= ДАТАВРЕМЯ(1,1,1)
3. ГДЕДата= &ПустаяДата
Запрос.УстановитьПараметр("ПустаяДата", '00010101');


👉@DevLab1C
🔥3👍1
Как в запросе задать константу типа дата в 1с 8.3, 8.2


Процедура КонстантаТипаДатаВЗапросе()
Запрос = Новый Запрос(
"
| ВЫБРАТЬ
| ДАТАВРЕМЯ(2013, 12, 31) КАК НовыйГод
|"
);

Результат = Запрос.Выполнить();
ОткрытьЗначение(Результат.Выгрузить(ОбходРезультатаЗапроса.Прямой));
КонецПроцедуры


👉@DevLab1C
🔥3👍1
Мутабельные значения в 1С

При освоении языка программирования 1С с использованием методолических материалов со временем возникает вопрос, что же собой представляют мутабельные значения в 1С.

1. Что собой представляет мутабельные значения в 1С?

Для начала сделаем определение мутабельного типа в рамках языка программирования 1С и попытаемся понять, чем же он отличается от других типов.

Мутабельный тип (в переводе с английского Mutable – изменчивый) – это сложный тип данных в 1С, который может менять свои свойства уже после создания.

К мутабельным типам в языке программирования 1С относятся:
· объект;
· форма;
· список значений;
· таблица значений.

Исходя из этого все остальные типы являются не мутабельными. К таким типам значений следует относить простые или так называемые примитивные типы, сложные, но неизменчивые типы и предопределенные типы.

Простые (примитивные) типы:
· строка;
· число;
· дата;
· булево.


Ссылка является сложным типом, который, однако, мы не можем изменить непосредственно. Для этого требуется получение объекта через конструкцию Ссылка.ПолучитьОбъект().

Предопределенным типом является цвет.

С описанием типов разобрались. Следующий вопрос, который, думаю, заинтересует многих – как же проверить заполненность мутабельных значений в 1С.

2. Как проверить заполненные мутабельные значения в 1С?

При переходе со старой версии платформы 1С:Предприятие (до 8.2) на актуальную нередко в момент тестирования или эксплуатации возникают ошибки проверки мутабельного значения на заполненность. Это связано с особенностью глобальной функции ЗначениеЗаполнено(). Ранее использовалась гл. функция НеЗаполнено(), которая проверяла, хоть и медленнее, но более эффективно. То есть в новых версиях платформы 1С Предприятие подобная проблема может возникнуть в тот момент, когда проверяем значение, не зная его типа.

Зачастую ошибки подобного толка касаются таких типов как формы и элементы форм, списки значений (таблица, список, дерево), COM- объекты и т.д.

Для решения данной проблемы целесообразно проверять тип данных перед проверкой его заполненности, если заранее мы его не знаем. Зачастую это происходит при написании обменов данными.

Для проверки типа данных 1С мы можем использовать конструкцию типа:

Если ТипЗнч(«Наша переменная» <>Тип("Объект") и ЗначениеЗаполнено(«Наша переменная»\<>
Тогда
//Тут выполняем нужные действия с переменной
КонецЕсли;


В данном случае 1С проанализирует первое условие, и если типы совпадут, дальнейшее условие отработано не будет.

В некоторых случаях целесообразно сделать проверку на примитивные типы, для этого заранее создадим массив примитивных типов:

МассивПримитивныхТипов=Новый Массив;
МассивПримитивныхТипов.Добавить(Тип("Число"));
МассивПримитивныхТипов.Добавить(Тип("Строка"));
МассивПримитивныхТипов. Добавить(Тип("Дата"));
МассивПримитивныхТипов. Добавить(Тип("Булево"));


Далее последует проверка:

Если не МассивПримитивныхТипов.Найти(Тип3нч(«Наша переменная») ) = 0 и
ЗначениеЗаполнено(«Наша переменная» <> Тогда
//Тут выполняем нужные действия с переменной
КонецЕсли;


👉@DevLab1C
🔥4👍3
Как в 1С прибавить к дате 1 день?

1. Дата в программе 1С

Дата в программе 1С – примитивный тип данных.
Дату можно задать прямо в коде программы 1С, в одинарных кавычках: первые 4 цифры — это год, затем 2 цифры — это месяц, и последние – день.
ПеременнаяДата ='20200801';
Сообщить («Первое августа»);


Дату можно задать командой Дата () и указать параметры этой команды в скобках, из которых будет сформирована дата.
ПеременнаяДата =Дата (2020,08,01);

Чтобы присвоить переменной «Дата» какое-либо значение, мы сначала определяем переменную, где будет храниться дата и присваиваем ей начальное значение 01.01.0001 00:00:00 – представление пустой даты.
В команде «Ввести Дату ()» указываем переменную, в которую будет помещено введенное значение.
ПеременнаяДата = «00010101»;
ВвестиДату(ПеременнаяДата);
ОткрытьЗначение(ПеременнаяДата);


Начальное или «Пустое» значение даты 1С можно вводить и так:
ПеременнаяДата = «0001-01-01»;
Переменная_ата = Дата (1,1,1);


Дата () имеет формат год – месяц – день – час – минута – секунда, то есть дата содержит не только дату, но и время.
Текущую дату и время в системе можно получить следующим образом:
ПеременнаяДата = ТекущаяДата0);
Сообщить(«Сегодня»);


Явно указать нужную дату можно с помощью литералов встроенного языка запросов 1С «ГГГГММДДЧЧММСС», «20200825000012» – получим 25.08.2020 00:00:12
Либо через функцию Дата () или ДатаВремя ()\
ДатаВремя(2020,08,25,00,00,12); // получим 25.08.2020 00:00:12
Дата(2020,08,25);
// получим 25.08.2020 00:00:00


Кроме того, в программах 1С возможно сложить две даты. Делается это следующим образом:
ПустаяДата = «00010101000000»;
ПеременнаяДата = ПустаяДата + ( ПеременнаяДата 1 - ПустаяДата ) + ( ПеременнаяДата 2 - ПустаяДата):



2. Прибавить к дате день в 1С – решение задачи

Выше мы перечислили основные манипуляции с типом данных Дата, изначально предусмотренные в 1С. Однако нет специальной встроенной функции, которая бы прибавляла к дате день в 1С, хотя у пользователей иногда возникает такая потребность. Далее попробуем разобраться, как реализовать подобное.
Итак, есть несколько вариантов решения этой задачи. Первый – прибавить к дате день в 1С при помощи оператора «+» секунды. Например, используя функцию КонецДня() :
НоваяДата КонецДня(ПеременнаяДата)+1;

Мы прибавляем секунду к 25.08.2020 23:59:59 и получаем следующий день 26.08.2020 00:00:00
Для прибавления целого дня, нужно прибавить количество секунд в одном дне.
Количество секунд в сутках 60*60*24 = 86400 секунд.
НоваяДата=Дата+86400;
// прибавить несколько («Количество») дней
Новая Дата Дата+86400 Количество
// прибавить час
НоваяДата=Дата+60*60;


Второй способ – используя запрос:

Процедура РасчетДать(Дата,ИтоговаяДата)
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(&Дата, ДЕНЬ, 1) КАК Поле1";
Запрос.УстановитьПараметр("Дата", Дата);
РезультатЗапроса = Запрос. Выполнить);
ВыборкаДетальныеЗаписи = РезультатЗапроса. Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ИтоговаяДата=ВыборкаДетальныеЗаписи.Поле1;
КонецЦикла;
КонецПроцедуры


Функция «ДобавитьКДате(<ИсходнаяДата>, <ЕдиницаИзмерения>, <Количество>)» – встроенная функция языка запросов 1С.
Функция позволяет добавить и вычесть из даты нужное количество времени в произвольном количестве. ЕдиницаИзмерения – определяет единицу времени (год, месяц, день, час, минута, секунда).
/Прибавить несколько дней
ДОБАВИТЬКДАТЕ(Дата, ДЕНЬ, Количество)
//Прибавить час
ДОБАВИТЬДАТЕ (Дата, ЧАС, 1)


👉@DevLab1C
🔥2👍1
Как выгрузить CF-файл или файл базы данных 1С 8.3
Файлы к посту в комментах

Наверное, одна из самых частых задач, которую выполняют молодые программисты 1С – это обновление баз на платформе 1С. Думаю, они знают, как выгрузить копию базы, как создать файл конфигурации, как загрузить конфигурацию и как решаются другие подобные задачи. Эта статья – скорее «памятка» для пользователей, которым пришлось самостоятельно зайти в конфигуратор и сделать выгрузку из 1С.


1. Отличие CF-файла и файла базы данных 1С 8.3

Нужно понимать отличие CF-файла и файла базы данных 1С 8,3 (dt-файл).
Сf-файл, это файл конфигурации баз 1С. Он нужен для хранения структуры и кода (выполняемых алгоритмов) базы.
Файл dt – это файл, который хранит сжатые данные всей базы вместе с файлом cf.
Следовательно, файл базы будет весить значительно больше, чем файл конфигурации. И учетные данные есть только в файле dt.

2. Как выгрузить файл CF

Чтобы выгрузить файл из базы данных 1С 8,3, нужно зайти в базу в режиме конфигуратора. Для этого при входе в базу нужно выбрать «Конфигуратор».

Если конфигурация не открыта, то выгрузить файл не получится. Сначала нужно открыть конфигурацию.
Для этого нужно в режиме конфигуратор нажать кнопку «Открыть конфигурацию 1С».

После открытия нужно зайти в меню «Конфигурация» - «Сохранить конфигурацию в файл».

После сохранения файл cf в указанном месте можно передать его программисту. Но стоит учитывать, что конфигурации могут довольно много весить (бывает 1 Гб и более), поэтому не стоит отправлять их почтой. Лучше воспользоваться каким-нибудь файловым веб-сервером.
Если же требуется загрузить конфигурацию 1С, то можно воспользоваться тем же меню «Конфигурация» - «Загрузить конфигурацию 1С из файла». Но стоит быть внимательным с загрузкой файла конфигурации. Файл должен соответствовать текущей базе.

3. Выгрузка файла базы данных 1С 8.3

Выгрузить файл dt (базы данных) можно через меню «Администрирование» - «Выгрузить информационную базу». Далее нужно указать место, куда нужно выгрузить копию базы.
Не забывайте, что этот файл содержит все учетные данные вашей базы (в отличие от cf-файла). Потому не стоит передавать его всем подряд или хранить без необходимости в общем доступе.

👉@DevLab1C
🔥2👍1
Настройка получения данных при использовании Планов Видов Характеристик

№ 1. Выборка запросом с явной связью
№ 2. Использование настроек характеристик в СКД
№ 3. Описание связи в настройках самого объекта

источник

👉@DevLab1C
🔥4👍1
Как посчитать количество дней между датами в 1С

Рассмотрим различные ситуации, в которых нам может понадобиться это вычисление для работы программистом 1С.

1. В коде модулей
В частном случае в коде модулей требуется вычислить разность между датами, приведенными к началу дня. Результат будет вычислен в секундах, следовательно, его потребуется перевести в дни:
РазницаВДнях = (НачалоДня (ДатаОкончания) - НачалоДня (Датаначала) ) / (60 * 60 * 24);
Пример использования в коде модуля

2. В тексте запросов 1С 8.3
Язык запросов 1С 8.3 также поддерживает ряд специализированных функций для операций с датами, среди которых имеется РАЗНОСТЬДАТ, предназначенная как раз для того, чтобы определить разность между датами, переданными ей, с указанием основной единицей измерения времени:
РАЗНОСТЬДАТ (<Выражение>,«Выражение>, Секунда | Минута | Час | День | Месяц | Квартал | Год)
Синтаксис функции в языке запросов

Следует отметить, что при вычислении результата действия игнорируются параметры, единицы измерения которых меньше, чем переданная в третьем параметре, что позволяет предварительно не приводить в соответствие даты к началу дня.
ВЫБРАТЬ
РАЗНОСТЬДАТ (ДАТАВРЕМЯ (2019, 4, 20, 15, 22, 5), ДАТАВРЕМЯ (2020,5), LAJABELMA (2020,4, 20, 15, 22,5), ДЕНЬ) КАК Вариант1, //366
РАЗНОСТЬДАТ (ДАТАВРЕМЯ (2020, 1,1,0,0, 0), ДАТАВРЕМЯ (2020, 12, 31, 23, 59, 59), ДЕНЬ) КАК Вариант2//365

Пример использования в языке запросов

3. В системе компоновки данных (СКД) 1С
Язык выражений 1С СКД также поддерживает специализированные функции для работы с датами и временем, как и язык запросов 1С 8.3, среди которых имеется функция РазностьДат, но ее синтаксис имеет некоторые отличия: третий параметр, определяющий тип разности, имеет значение типа Строка.
ВЫБРАТЬ
ДАТАВРЕМЯ (2019, 4, 20, 15, 22, 5) Дата1,
ДАТАВРЕМЯ (2020,4, 20, 15, 22, 5) Дата2,
ДАТАВРЕМЯ (2020, 1, 1, 0, 0, 0) Дата3,
ДАТАВРЕМЯ (2020, 12, 31, 23, 59, 59) Дата4


👉@DevLab1C
🔥3👍2