Создание группы
1 2 3 4 5 6 7 8 |
// создаем обычную группу ГруппаШапка = ЭтаФорма.Элементы.Добавить("ГруппаОповещатьОРезервах", Тип("ГруппаФормы"),ЭтаФорма.Элементы.СвойстваДополнительные); ГруппаШапка.Вид = ВидГруппыФормы.ОбычнаяГруппа; ГруппаШапка.Заголовок = "Оповещение о резервах товаров"; ГруппаШапка.Отображение = ОтображениеОбычнойГруппы.СлабоеВыделение; ГруппаШапка.ОтображатьЗаголовок = ИСТИНА; ГруппаШапка.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; ГруппаШапка.РастягиватьПоГоризонтали = ИСТИНА; |
[свернуть]
Создание поля фoрмы внутри группы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// создаем обычную группу ГруппаШапка = ЭтаФорма.Элементы.Добавить("ГруппаОповещатьОРезервах", Тип("ГруппаФормы"),ЭтаФорма.Элементы.СвойстваДополнительные); ГруппаШапка.Вид = ВидГруппыФормы.ОбычнаяГруппа; ГруппаШапка.Заголовок = "Оповещение о резервах товаров"; ГруппаШапка.Отображение = ОтображениеОбычнойГруппы.СлабоеВыделение; ГруппаШапка.ОтображатьЗаголовок = ИСТИНА; ГруппаШапка.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; ГруппаШапка.РастягиватьПоГоризонтали = ИСТИНА; // создаем элемент формы, ДОБАВИТЬ - добавляет в конец СР_ПоказыватьВСпискеЭлемент = ЭтаФорма.Элементы.Добавить("СР_ОповещатьОРезерве", Тип("ПолеФормы"),ЭтаФорма.Элементы.ГруппаОповещатьОРезервах); СР_ПоказыватьВСпискеЭлемент.Вид = ВидПоляФормы.ПолеФлажка; СР_ПоказыватьВСпискеЭлемент.ПутьКДанным = "Объект.СР_ОповещатьОРезерве"; СР_ПоказыватьВСпискеЭлемент.Заголовок = "Оповещать об автоматическом снятии резервов обработкой"; // создаем элемент формы, ВСТАВИТЬ - вставляет перед указанным элементом СР_VIN = ЭтаФорма.Элементы.Вставить("СР_VIN", Тип("ПолеФормы"),ЭтаФорма.Элементы.ГруппаШапкаЛевая,ЭтаФорма.Элементы.Сотрудник); СР_VIN.Вид = ВидПоляФормы.ПолеВвода; СР_VIN.ПутьКДанным = "Объект.СР_VIN"; СР_VIN.Заголовок = "VIN"; |
[свернуть]
Создание поля и обработчика выбора
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
&НаСервере Процедура ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка) // создаем элемент формы Документ реализации ДокументРеализации = ЭтаФорма.Элементы.Добавить("ДокументРеализации", Тип("ПолеФормы"),ЭтаФорма.Элементы.ГруппаШапкаПравая); ДокументРеализации.Вид = ВидПоляФормы.ПолеВвода; ДокументРеализации.ПутьКДанным = "Объект.ДокументРеализации"; ДокументРеализации.Заголовок = "Документ реализации"; ДокументРеализации.УстановитьДействие("ОбработкаВыбора","ДокументРеализацииОбработкаВыбора"); КонецПроцедуры &НаКлиенте Процедура ДокументРеализацииОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Обработка выбора реализации"; Сообщение.Сообщить(); КонецПроцедуры |
[свернуть]
Создание кнопки с командой
1 2 3 4 5 6 7 |
// создаем команду и элемент формы КомандаЗаполнитьПоПересчету = Команды.Добавить("КомандаЗаполнитьПоПересчету"); КомандаЗаполнитьПоПересчету.Действие = "ЗаполнитьПоПересчету"; КомандаЗаполнитьПоПересчету.Заголовок = "Заполнить по пересчету"; НовЭлементКнопкаЗаполнитьПоПересчету = Элементы.Вставить("КнопкаКомандаЗаполнитьПоПересчету", Тип("КнопкаФормы"), Элементы.ГруппаТовары, Элементы.Товары); НовЭлементКнопкаЗаполнитьПоПересчету.ИмяКоманды = "КомандаЗаполнитьПоПересчету"; |
[свернуть]
Открытие фoрмы обработки
Получить месяц строкой
1 2 3 4 5 6 7 8 9 10 11 |
Функция ПолучитьМесяцСтрокой(Месяц = "") Если Месяц = "" Тогда Месяц = Формат(ТекущаяДата(), "ДФ=ММММ"); КонецЕсли; Месяц = ПолучитьСклоненияСтроки(Месяц,"ПЛ=Мужской","ПД=Предложный"); //создаётся массив Месяц = НРег(Месяц[0]); Возврат Месяц; //вызвращаем значение массива по 0 индексу КонецФункции // ПолучитьМесяцСтрокой() |
[свернуть]
Получить сокращенный адрес из строки
БП КОРП, редакция 3.0 (3.0.143.32)
Функция используется для получения адреса формата "Область, н.п.".
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
&НаСервере Функция ПолучитьСокращенныйАдрес(Адрес) Экспорт // разбирает только соответствующий правилам ГАР (ФИАС) АдресРазобранный = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПоПредставлению(Адрес, Перечисления.ТипыКонтактнойИнформации.Адрес); АдресРазобранный = УправлениеКонтактнойИнформациейСлужебный.JSONВКонтактнуюИнформациюПоПолям(АдресРазобранный, Перечисления.ТипыКонтактнойИнформации.Адрес); Если АдресРазобранный.city <> "" Тогда НаселенныйПункт = АдресРазобранный.cityType +". "+ АдресРазобранный.city; Иначе НаселенныйПункт = АдресРазобранный.localityType +". "+ АдресРазобранный.locality; КонецЕсли; // выводятся только область и населенный пункт АдресСокр = АдресРазобранный.area + " " + АдресРазобранный.areaType + "., " + НаселенныйПункт; // Если правила ГАР (ФИАС) не соблюдаются, то ввод в свободной форме должен быть как (Область, н.п., ...) // выводятся только область [0] и населенный пункт [1] Если АдресРазобранный.addressType = "ВСвободнойФорме" Тогда АдресСокр = СтрРазделить(АдресРазобранный.value,","); Если АдресСокр.Количество() > 1 Тогда АдресСокр = АдресСокр[0] + ", " + АдресСокр[1]; Иначе АдресСокр = АдресСокр[0]; КонецЕсли; КонецЕсли; Возврат АдресСокр; КонецФункции |
[свернуть]
Адрес из муниципального в административно-территориальный (ФИАС - КЛАДР)
1С:Предприятие 8.3 (8.3.23.1912)
Зарплата и управление персоналом, редакция 3.1 (3.1.27.93)
1 2 3 4 5 6 7 |
// адреса в административно-территориальном виде ЮридическийАдресОрганизации = Выборка.Организация.КонтактнаяИнформация.Найти(Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Юридический адрес")).ЗначенияПолей; ДанныеОбласть.Параметры.ЮридическийАдресОрганизации = РаботаСАдресами.СведенияОбАдресе(ЮридическийАдресОрганизации).МуниципальноеПредставление; АдресПрописки = Выборка.Субъект.КонтактнаяИнформация.Найти(Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Адрес по прописке")).ЗначенияПолей; ДанныеОбласть.Параметры.АдресСубъекта = РаботаСАдресами.СведенияОбАдресе(АдресПрописки).МуниципальноеПредставление; |
[свернуть]
Программный вызов формы ввода адреса
1 2 3 4 5 6 7 8 9 |
&НаКлиенте Процедура МаршрутПунктОтправленияНачалоВыбораВместо(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка) ПараметрыФормы = Новый Структура("ОткрытаПоСценарию", Истина); ПараметрыФормы.Вставить("Представление", Элемент.ТекстРедактирования); ОткрытьФорму("Обработка.РасширенныйВводКонтактнойИнформации.Форма.ВводАдреса", ПараметрыФормы, Элемент,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры |
[свернуть]
Программная установка связи параметров выбора для поля выбора
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
// Программное создание полей выбора на форме &НаСервере Процедура ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка) // создаем элемент формы Заказчик ТС Заказчик = ЭтаФорма.Элементы.Добавить("Заказчик", Тип("ПолеФормы"),ЭтаФорма.Элементы.ГруппаШапкаПравая); Заказчик.Вид = ВидПоляФормы.ПолеВвода; Заказчик.ПутьКДанным = "Объект.Заказчик"; Заказчик.Заголовок = "Заказчик ТС"; // создаем элемент формы Документ реализации ДокументРеализации = ЭтаФорма.Элементы.Добавить("ДокументРеализации", Тип("ПолеФормы"),ЭтаФорма.Элементы.ГруппаШапкаПравая); ДокументРеализации.Вид = ВидПоляФормы.ПолеВвода; УстановитьСвязьПараметраВыбораСЗаказчиком(); // ограничим список выбора только документами заказчика ДокументРеализации.ПутьКДанным = "Объект.ДокументРеализации"; ДокументРеализации.Заголовок = "Документ реализации"; ДокументРеализации.УстановитьДействие("ПриИзменении","ДокументРеализацииПриИзменении"); КонецПроцедуры // Процедура устанавливает связь параметров выбора для поля ДокументРеализации (по полю Заказчик) &НаСервере Процедура УстановитьСвязьПараметраВыбораСЗаказчиком() Элементы.ДокументРеализации.СвязиПараметровВыбора = Новый ФиксированныйМассив(Новый Массив); НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Контрагент", "Объект.Заказчик"); НовыйМассив = Новый Массив(); НовыйМассив.Добавить(НоваяСвязь); Элементы.ДокументРеализации.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассив); КонецПроцедуры |
[свернуть]
Заполнение стрoки табличной части управляемой формы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
&НаКлиенте Процедура ТоварыНоменклатураПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные; ИндексСтроки = Элементы.Товары.ТекущаяСтрока; // Преобразуем данные текущей строки в структуру для передачи на сервер СтруктураДанныеТекущейСтроки = ПреобразоватьДанныеТекущейСтрокиВСтруктуру(СтрокаТабличнойЧасти); // Заполним строку таблицы на сервере ЗаполнитьСтрокуТаблицы(СтруктураДанныеТекущейСтроки); // Изменим значения реквизитов текущей строки на форме ЗаполнитьЗначенияСвойств(Объект.Товары[ИндексСтроки], СтруктураДанныеТекущейСтроки, "Упаковка, Цена"); КонецПроцедуры #Область СлужебныеПроцедурыИФункции // Код процедур и функций, составляющих внутреннюю реализацию модуля &НаКлиенте Функция ПреобразоватьДанныеТекущейСтрокиВСтруктуру(СтрокаТабличнойЧасти) Результат = Новый Структура("Номенклатура, Упаковка, Цена"); ТекущиеДанные = Элементы.Товары.ТекущиеДанные; Если НЕ ТекущиеДанные = Неопределено Тогда ЗаполнитьЗначенияСвойств(Результат, ТекущиеДанные); КонецЕсли; Возврат Результат; КонецФункции &НаСервереБезКонтекста Процедура ЗаполнитьСтрокуТаблицы(СтруктураДанныеТекущейСтроки) СтруктураДанныеТекущейСтроки.Упаковка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтруктураДанныеТекущейСтроки.Номенклатура, "ЕдиницаИзмерения"); КонецПроцедуры #КонецОбласти |
[свернуть]
Добавление стандартных команд в форму пользовательского дoкумента (БCП)
1 2 3 4 5 6 7 8 9 10 11 12 |
// Подключаем стандартные команды для подменю Отчеты (подменю сначала создать на форме) ++ // для вывода отчета "Движения документа" &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура Подключаемый_ВыполнитьКоманду(Команда) ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект); КонецПроцедуры // Подключаем стандартные команды для подменю Отчеты (подменю сначала создать) -- |
[свернуть]
Добавление команд печати в форму нового документа
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#Область ПроцедурыИФункцииПечатиФормы // Заполняет список команд печати в подменю Печать формы (если подменю нет - создать). Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт КомандаПечати = КомандыПечати.Добавить(); КомандаПечати.МенеджерПечати = "Обработка.АИ_ПечатьМаршрутаИнкассации"; КомандаПечати.Идентификатор = "ПФ_MXL_МаршрутИнкассации"; КомандаПечати.Представление = НСтр("ru = 'Маршрут инкассации'"); КомандаПечати = КомандыПечати.Добавить(); КомандаПечати.МенеджерПечати = "Обработка.АИ_ПечатьМаршрутаИнкассации"; КомандаПечати.Идентификатор = "ПФ_MXL_ВедомостьПоВзаиморасчетам"; КомандаПечати.Представление = НСтр("ru = 'Ведомость по взаиморасчетам + доверенность'"); КонецПроцедуры #КонецОбласти |
[свернуть]
Обновление (перерасчет) данных в табличной части
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
&НаКлиенте Процедура ЭлементПриИзменении(Элемент) Для Каждого СтрТовар Из Объект.Товары Цикл СтруктураДействий = Новый Структура; ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект); ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(СтрТовар, СтруктураДействий, КэшированныеЗначения); КонецЦикла; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура ДобавитьВСтруктуруДействияПриИзмененииСтроки(СтруктураДействий, Объект) СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект); СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц"); СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы); СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы); СтруктураДействий.Вставить("ПересчитатьСумму"); КонецПроцедуры |
[свернуть]
Программный отбор в динамическом списке
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// Устанавливаем отбор по колонке "Ответственный" для списка заявок для пользователя Медведь &НаКлиенте Процедура ПСИ_ПриОткрытииПосле(Отказ) ВыбПользователь = ПользователиКлиент.ТекущийПользователь(); Если Строка(ВыбПользователь) = "Медведь" Тогда Список.Отбор.Элементы.Очистить(); ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ответственный"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = ПользователиКлиент.ТекущийПользователь(); КонецЕсли; КонецПроцедуры |
[свернуть]