Наши разработчики продолжают делиться лайфхаками по работе с 1С. Ниже еще 7 неочевидных возможностей системы, которые упрощают работу.
Кнопка перехода к движениям документа из формы списка
Чтобы на форму списка добавить кнопку перехода к движениям документа это можно сделать без единой строки кода — добавляем подменю «Перейти» и перетаскиваем на него глобальную команду перехода к движениям нужного регистра:
Как открыть обработку на обычных формах в режиме управляемого приложения
На экзамене 1С: Специалист по платформе в каркасной конфигурации имеется консоль запросов на обычных формах. Но разрабатываем мы на управляемых формах.
Чтобы иметь возможность запустить её, нужно сначала настроить конфигурацию: Сервис — Параметры — ставим галку «Управляемое приложение и обычное приложение». Затем ставим галку в свойствах корня конфигурации «Использовать обычные формы в управляемом приложении»:
И саму конфигурацию запускаем в толстом клиенте (управляемое приложение). После чего консоль запросов на обычных формах можно будет открыть в режиме управляемого приложения.
Также скорее всего потребуется в свойствах корня конфигурации установить Режим использования модальности на «Использовать с предупреждением», т.к. очень много обработок на обычных формах работают именно в режиме модальности.
Как при нажатии F5 (запуск отладки) открывать по умолчанию толстый клиент
В Конфигураторе в меню «Сервис» выбираем пункт «Параметры» и в открывшейся форме на закладке Запуск 1С: Предприятия выбираем вариант «Толстый клиент (управляемое приложение)» или другой удобный вариант запуска:
Полезные клавиши и их сочетания
CTRL+T — находясь в модуле какого-то объекта найти его в дереве метаданных
CTRL+Shift+T – открыть окно шаблонов текста
F12 – открыть выделенную процедуру/функцию
CTRL+ – (минус) – вернуться на предыдущий шаг (когда мы проходимся отладчиком переходя всё глубже и глубже в процедуры, эта команда позволяет возвращаться назад)
CTRL+Alt+M – открыть строку поиска в дереве метаданных конфигурации
CTRL+Enter – открыть окно свойств объекта
CTRL+Alt+I – открыть строку поиска в окне свойств
CTRL+F3 – находясь в коде эта команда помещает текущее слово в строку поиска
Почему письма, формируемые из 1С отображаются красиво в Mail.ru почте, но в Яндекс и Google почте нет
Дело в том, что Яндекс и Google почтовые клиенты вырезают все объявленные пользователем CSS стили ввиду возможности размещения в них вредоносного кода.
При обычной вёрстке объявляется блок CSS в котором описываются классы и стили, затем в дальнейшем коде HTML мы используем эти классы.
Методом решения проблемы является использование inline верстки при которой мы вводим параметры стиля прямо в каждый блок, в котором нужно модифицировать стиль.
Пример обычной верстки:
<style type="text/css"> h1 {font-size:24px} em {color:red} </style>
Пример inline верстки:
<p style=""color: #606163; font-weight: bold; font-size: 150%;"">ТЕКСТ</p>
Также желательно объявлять в письме корректные начало и конец HTML:
<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN""> <html http://www.w3.org/1999/xhtml""> <head> <meta http-equiv=""Content-Type"" content=""text/html; charset=UTF-8"" /> <title>Заголовок письма</title> <meta name=""viewport"" content=""width=device-width, initial-scale=1.0""/> </head> <body> Вашкод </body> </html>
Как облегчить обновление нетиповой конфигурации с управляемыми формами
Одно из самых сложных в этой ситуации – если обновилась форма, которую вы изменяли. Поэтому рекомендуется не вносить никаких изменениях на форму с помощью визуальных средств, а делать это с помощью кода. Код всегда можно сравнить с типовым и легко его перенести. В модуле формы в процедуре «ПриСозданииНаСервере» мы вызываем процедуру создания наших полей:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) СоздатьПоляНаСервере(); //… (остальной код процедуры) КонецПроцедуры
А в самой процедуре добавляем новые поля:
&НаСервере Процедура СоздатьПоляНаСервере() // Изменим оформление типовой группы чтобы ничего не плыло на форме Элементы.ГруппаШапка.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда; Элементы.ГруппаШапкаЛевая.Объединенная = Истина; Элементы.ГруппаШапкаПравая.Объединенная = Истина; // Добавляем поле "Способ доставки" на форму элСпособДоставки = Элементы.Добавить("СпособДоставки", Тип("ПолеФормы"), Элементы.ГруппаШапкаЛевая); элСпособДоставки.Вид = ВидПоляФормы.ПолеВвода; элСпособДоставки.ПутьКДанным = "Объект.СпособДоставки"; // Добавляем колонку "Срок поставки" в существующую таблицу "Товары" перед колонкой «Процент скидки» КолонкаСрокПоставки = Элементы.Добавить("ТоварыСрокПоставки", Тип("ПолеФормы"), Элементы.Товары); КолонкаСрокПоставки.Вид = ВидПоляФормы.ПолеВвода; КолонкаСрокПоставки.ПутьКДанным = "Объект.Товары.СрокПоставки"; КолонкаСрокПоставки.Заголовок = "Срок поставки"; Элементы.Переместить(КолонкаСрокПоставки, Элементы.Товары, Элементы.ТоварыПроцентСкидки); // Добавляем группу для новой таблицы "Покупатели" ГруппаШапкаПокупатели = Элементы.Добавить("ГруппаШапкаПокупатели", Тип("ГруппаФормы"), Элементы.ГруппаШапка); ГруппаШапкаПокупатели.Заголовок = "Покупатели"; ГруппаШапкаПокупатели.Вид = ВидГруппыФормы.ОбычнаяГруппа; ГруппаШапкаПокупатели.ОтображатьЗаголовок = Истина; ГруппаШапкаПокупатели.Объединенная = Истина; // Добавляем новую таблицу "Покупатели" ТабПокупатели = Элементы.Добавить("Покупатели", Тип("ТаблицаФормы"), ГруппаШапкаПокупатели); ТабПокупатели.ПутьКДанным = "Объект.Покупатели"; // Добавляем в новую таблицу "Покупатели" колонку «Номенклатура» и назначаем ей обработчики событий КолонкаНоменклатура = Элементы.Добавить("ПокупателиНоменклатура", Тип("ПолеФормы"), ТабПокупатели); КолонкаНоменклатура.Вид = ВидПоляФормы.ПолеВвода; КолонкаНоменклатура.ПутьКДанным = "Объект.Покупатели.Номенклатура"; КолонкаНоменклатура.УстановитьДействие("НачалоВыбора", "ПокупателиНоменклатураНачалоВыбора"); КолонкаНоменклатура.УстановитьДействие("ОбработкаВыбора", "ПокупателиНоменклатураОбработкаВыбора"); // Добавляем в таблицу "Покупатели" колонку «Количество» КолонкаКоличество = Элементы.Добавить("ПокупателиКоличество", Тип("ПолеФормы"), ТабПокупатели); КолонкаКоличество.Вид = ВидПоляФормы.ПолеВвода; КолонкаКоличество.Заголовок = "Кол-во"; КолонкаКоличество.Ширина = 5; КолонкаКоличество.ПутьКДанным = "Объект.Покупатели.Количество"; // Добавляем в таблицу "Покупатели" колонку «Контрагент» КолонкаКонтрагент = Элементы.Добавить("ПокупателиКонтрагент", Тип("ПолеФормы"), ТабПокупатели); КолонкаКонтрагент.Вид = ВидПоляФормы.ПолеВвода; КолонкаКонтрагент.ПутьКДанным = "Объект.Покупатели.Контрагент"; КонецПроцедуры
Также полезным будет изменение запроса динамического списка программно:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ИзменитьЗапросСписка(); //… (остальной код процедуры) КонецПроцедуры &НаСервере Процедура ИзменитьЗапросСписка() Список.ТекстЗапроса = "ВЫБРАТЬ …"; КонецПроцедуры
Как понять типовая конфигурация или нет и что именно в ней было изменено?
Начнём с того что, во-первых, нужно проверить включена ли возможность изменения конфигурации – переходим в меню «Конфигурация» — «Поддержка» — «Настройка поддержки» и смотрим активна ли кнопка «Включить возможность изменения»:
Если кнопка активна, вероятнее всего это полностью типовая конфигурация.
Теперь проверим были ли изменены какие-либо объекты по сравнению с типовой конфигурацией. Для этого в 1С есть чудесное средство как сравнение конфигурации с конфигурацией поставщика.
Возьмем типовую 1С: Бухгалтерию и немного модифицируем её (добавим новый документ, общий модуль, модифицируем одну форму и добавим пару реквизитов). Затем сравним её с типовой выбрав в качестве второй конфигурации «Конфигурация поставщика»:
После нажатия «ОК» и немного подождав, результаты сравнения выйдут на экран:
Затем если нажать правой кнопкой по корню конфигурации и выбрать «Отчет о сравнении объектов…», можно сформировать подробный отчёт. Проставим все галки, выберем вариант «Подробно» и «Показывать различия графически», затем нажмём «Ок»:
После чего увидим сформированный табличный документ со всеми изменениями конфигурации:
Таким образом можно не спрашивать у клиента типовая ли у него конфигурация, а лично в этом убедиться.