maksonchik200's blog

By maksonchik200, 3 hours ago, In Russian

БРОНИРОВАНИЕ С СПИСКОМ ЗНАЧЕНИЙ(СДЕЛАТЬ СПИСОК ТОЛЬКО ПОДХОДЯЩИХ МЕРОПРИЯТИЙ И ТД.) &НаКлиенте Процедура КоличествоПосетителейПриИзменении(Элемент) Объект.Пространство = ""; СписокПодходящихПространств = ОбработатьВыбор(); Элементы.Пространство.СписокВыбора.Очистить(); Элементы.Пространство.СписокВыбора.ЗагрузитьЗначения(СписокПодходящихПространств.ВыгрузитьЗначения()); КонецПроцедуры

Функция ОбработатьВыбор() СЗПодходящихПространств = Новый СписокЗначений; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Пространства.Ссылка КАК Ссылка, | Пространства.Наименование КАК Наименование, | Пространства.Вместимость КАК Вместимость |ИЗ | Справочник.Пространства КАК Пространства";

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
МассивПространств = РезультатЗапроса.ВыгрузитьКолонку("Ссылка");
СЗПодходящихПространств.ЗагрузитьЗначения(МассивПространств);
Пока Выборка.Следующий() Цикл
    Если Объект.КоличествоПосетителей > Выборка.Вместимость Тогда
       СсылкаНаПространство = Выборка.Ссылка;
       СЗПодходящихПространств.Удалить(СЗПодходящихПространств.НайтиПоЗначению(СсылкаНаПространство));
    КонецЕсли;     
КонецЦикла; 
Возврат СЗПодходящихПространств;

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

&НаКлиенте Процедура ПриОткрытии(Отказ) Если ЗначениеЗаполнено(Объект.Пространство) Тогда Объект.Пространство = Объект.Пространство; КонецЕсли; СписокПодходящихПространств = ОбработатьВыбор(); Элементы.Пространство.СписокВыбора.Очистить(); Элементы.Пространство.СписокВыбора.ЗагрузитьЗначения(СписокПодходящихПространств.ВыгрузитьЗначения()); КонецПроцедуры

ИМПОРТ &НаСервере Процедура ИмпортироватьДанныеНаСервере(Результат, ДопПараметр) Экспорт Если ЗначениеЗаполнено(Результат) Тогда СсылкаНаФайл = Результат[0]; ТД = Новый ТабличныйДокумент; ТД.Прочитать(СсылкаНаФайл); Для Строка = 2 по ТД.ВысотаТаблицы Цикл // Проверка на уникальность Если НЕ ЗначениеЗаполнено(Справочники.Студии.НайтиПоНаименованию(ТД.Область(Строка, 1).Текст, Истина)) Тогда Элемент = Справочники.Студии.СоздатьЭлемент();
Элемент.Наименование = ТД.Область(Строка, 1).Текст; Элемент.Описание = ТД.Область(Строка, 2).Текст;
Элемент.Записать(); КонецЕсли; КонецЦикла; Сообщить("Данные импортированы"); Элементы.Список.Обновить(); Иначе Сообщить("Пользователь не выбрал файл"); КонецЕсли; КонецПроцедуры

&НаКлиенте Процедура ИмпортироватьДанные(Команда) Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл Excel"; Диалог.МножественныйВыбор = Ложь; Диалог.Фильтр = "Выберите файл Excel | *.xlsx; *.xls"; Диалог.Показать(Новый ОписаниеОповещения("ИмпортироватьДанныеНаСервере", ЭтотОбъект, Новый Структура)); КонецПроцедуры СЛОЖНЫЙ ИМПОРТ СО СБОРНОЙ С ДВУМЯ ЛИСТАМИ, ПАРСИНГОМ, СЛОЖНЫМИ УСЛОВИЯМИ И ТД. &НаСервере Процедура ВыбратьФайлExcelНаСервере(Результат, ДопПараметры) Экспорт Если ЗначениеЗаполнено(Результат) Тогда СсылкаНаФайл = Результат[0]; ТД = Новый ТабличныйДокумент; ТД.Прочитать(СсылкаНаФайл); ТД = ТД.ПолучитьОбласть("Лист2"); Проверка = Ложь; Счетчик = 0; Для Строка = 2 По ТД.ВысотаТаблицы Цикл Название = ТД.Область(Строка, 1).Текст; Если Счетчик = 0 Тогда Элемент = Справочники.Контрагенты.СоздатьЭлемент(); КонецЕсли; Если Счетчик <> 0 И НЕ Название = "" Тогда Если ЗначениеЗаполнено(Элемент.Вид) ИЛИ ЗначениеЗаполнено(Элемент.ИНН) Тогда Элемент.Записать(); КонецЕсли; КонецЕсли; Если НЕ ЗначениеЗаполнено(Справочники.Контрагенты.НайтиПоНаименованию(Название, Истина)) ИЛИ Название = "" Тогда Если Название = "" И ЗначениеЗаполнено(ТД.Область(Строка, 8).Текст) И НЕ Проверка = Истина Тогда Телефон = ТД.Область(Строка, 10).Текст; Телефон = СтрЗаменить(Телефон, " ", ""); Телефон = СтрЗаменить(Телефон, "(", ""); Телефон = СтрЗаменить(Телефон, ")", ""); Телефон = СтрЗаменить(Телефон, "-", ""); Телефон = СтрЗаменить(Телефон, "+", ""); ДлинаТелефона = СтрДлина(Телефон); Если ДлинаТелефона = 11 Тогда ТЧ = Элемент.Контакты.Добавить(); ТЧ.ФИО = ТД.Область(Строка, 8).Текст; ТЧ.Телефон = Телефон; Должность = ТД.Область(Строка, 9).Текст; Если НЕ ЗначениеЗаполнено(Справочники.Должности.НайтиПоНаименованию(Должность, Истина)) Тогда НоваяДолжность = Справочники.Должности.СоздатьЭлемент(); НоваяДолжность.Наименование = Должность; НоваяДолжность.Записать(); КонецЕсли; ТЧ.Должность = Справочники.Должности.НайтиПоНаименованию(Должность, Истина); КонецЕсли; ИначеЕсли ЗначениеЗаполнено(ТД.Область(Строка, 8).Текст) Тогда ИНН = ТД.Область(Строка, 3).Текст; ДлинаИНН = СтрДлина(ИНН); СНуля = СтрНачинаетсяС(ИНН, "0"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Контрагенты.ИНН КАК ИНН |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | Контрагенты.ИНН = &ИНН";

          Запрос.УстановитьПараметр("ИНН", ИНН);

          РезультатЗапроса = Запрос.Выполнить();

          Выборка = РезультатЗапроса.Выбрать();

          Если Выборка.Следующий() Тогда
              Продолжить;    
          КонецЕсли;
          ТипЛица = ТД.Область(Строка, 7).Текст;
          Телефон = ТД.Область(Строка, 10).Текст;
          Если ТипЛица = "юр. лицо" И ДлинаИНН = 10 И НЕ СНуля Тогда
              Проверка = Ложь;
              Элемент = Справочники.Контрагенты.СоздатьЭлемент();
              Элемент.Наименование = Название;
              Если НЕ ЗначениеЗаполнено(ТД.Область(Строка, 2).Текст) Тогда
                 Элемент.ПолноеНаименование = Название;
              Иначе
                 Элемент.ПолноеНаименование = ТД.Область(Строка, 2).Текст
              КонецЕсли;
              Элемент.ИНН = ИНН;
              Если НРег(ТД.Область(Строка, 4).Текст) = "нет" ИЛИ НЕ ЗначениеЗаполнено(ТД.Область(Строка, 4).Текст) Тогда
                 Элемент.Покупатель = Ложь;
              ИначеЕсли НРег(ТД.Область(Строка, 4).Текст) = "да" Тогда
                 Элемент.Покупатель = Истина;
              КонецЕсли;
              Если НРег(ТД.Область(Строка, 5).Текст) = "нет" ИЛИ НЕ ЗначениеЗаполнено(ТД.Область(Строка, 5).Текст) Тогда
                 Элемент.Поставщик = Ложь;
              ИначеЕсли НРег(ТД.Область(Строка, 5).Текст) = "да" Тогда
                 Элемент.Поставщик = Истина;
              КонецЕсли;
              Если НРег(ТД.Область(Строка, 6).Текст) = "нет" ИЛИ НЕ ЗначениеЗаполнено(ТД.Область(Строка, 6).Текст) Тогда
                 Элемент.Прочее = Ложь;
              ИначеЕсли НРег(ТД.Область(Строка, 6).Текст) = "да" Тогда
                 Элемент.Прочее = Истина;
              КонецЕсли;
              Элемент.Вид = Перечисления.ВидыКонтрагентов.ЮридическоеЛицо;
              Телефон = СтрЗаменить(Телефон, " ", "");
              Телефон = СтрЗаменить(Телефон, "(", "");
              Телефон = СтрЗаменить(Телефон, ")", "");
              Телефон = СтрЗаменить(Телефон, "-", "");
              Телефон = СтрЗаменить(Телефон, "+", "");
              ДлинаТелефона = СтрДлина(Телефон);
              Если ДлинаТелефона = 11 Тогда
                 ТЧ = Элемент.Контакты.Добавить();
                 ТЧ.ФИО = ТД.Область(Строка, 8).Текст;
                 ТЧ.Телефон = Телефон;
                 Должность = ТД.Область(Строка, 9).Текст;
                 Если НЕ ЗначениеЗаполнено(Справочники.Должности.НайтиПоНаименованию(Должность, Истина)) Тогда
                   НоваяДолжность = Справочники.Должности.СоздатьЭлемент();
                   НоваяДолжность.Наименование = Должность;
                   НоваяДолжность.Записать();
                 КонецЕсли;
                 ТЧ.Должность = Справочники.Должности.НайтиПоНаименованию(Должность, Истина); 
              КонецЕсли;
          ИначеЕсли ТипЛица = "физ. лицо" И ДлинаИНН = 12 И НЕ СНуля Тогда
              Проверка = Ложь;
              Элемент = Справочники.Контрагенты.СоздатьЭлемент();
              Элемент.Наименование = Название;
              Если НЕ ЗначениеЗаполнено(ТД.Область(Строка, 2).Текст) Тогда
                 Элемент.ПолноеНаименование = Название;
              Иначе
                 Элемент.ПолноеНаименование = ТД.Область(Строка, 2).Текст
              КонецЕсли;
              Элемент.ИНН = ИНН;
              Если НРег(ТД.Область(Строка, 4).Текст) = "нет" ИЛИ НЕ ЗначениеЗаполнено(ТД.Область(Строка, 4).Текст) Тогда
                 Элемент.Покупатель = Ложь;
              ИначеЕсли НРег(ТД.Область(Строка, 4).Текст) = "да" Тогда
                 Элемент.Покупатель = Истина;
              КонецЕсли;
              Если НРег(ТД.Область(Строка, 5).Текст) = "нет" ИЛИ НЕ ЗначениеЗаполнено(ТД.Область(Строка, 5).Текст) Тогда
                 Элемент.Поставщик = Ложь;
              ИначеЕсли НРег(ТД.Область(Строка, 5).Текст) = "да" Тогда
                 Элемент.Поставщик = Истина;
              КонецЕсли;
              Если НРег(ТД.Область(Строка, 6).Текст) = "нет" ИЛИ НЕ ЗначениеЗаполнено(ТД.Область(Строка, 6).Текст) Тогда
                 Элемент.Прочее = Ложь;
              ИначеЕсли НРег(ТД.Область(Строка, 6).Текст) = "да" Тогда
                 Элемент.ПРочее = Истина;
              КонецЕсли;
              Элемент.Вид = Перечисления.ВидыКонтрагентов.ФизическоеЛицо;
              Телефон = ТД.Область(Строка, 10).Текст;
              Телефон = СтрЗаменить(Телефон, " ", "");
              Телефон = СтрЗаменить(Телефон, "(", "");
              Телефон = СтрЗаменить(Телефон, ")", "");
              Телефон = СтрЗаменить(Телефон, "-", "");
              Телефон = СтрЗаменить(Телефон, "+", "");
              ДлинаТелефона = СтрДлина(Телефон);
              Если ДлинаТелефона = 11 Тогда
                 ТЧ = Элемент.Контакты.Добавить();
                 ТЧ.ФИО = ТД.Область(Строка, 8).Текст;
                 ТЧ.Телефон = Телефон;
                 Должность = ТД.Область(Строка, 9).Текст;
                 Если НЕ ЗначениеЗаполнено(Справочники.Должности.НайтиПоНаименованию(Должность, Истина)) Тогда
                   НоваяДолжность = Справочники.Должности.СоздатьЭлемент();
                   НоваяДолжность.Наименование = Должность;
                   НоваяДолжность.Записать();
                 КонецЕсли;
                 ТЧ.Должность = Справочники.Должности.НайтиПоНаименованию(Должность, Истина);
              КонецЕсли;
          ИначеЕсли ТипЛица = "друг начальника" И ДлинаИНН = 12 И НЕ СНуля Тогда
              Проверка = Ложь;
              Элемент = Справочники.Контрагенты.СоздатьЭлемент();
              Элемент.Наименование = Название;
              Если НЕ ЗначениеЗаполнено(ТД.Область(Строка, 2).Текст) Тогда
                 Элемент.ПолноеНаименование = Название;
              Иначе
                 Элемент.ПолноеНаименование = ТД.Область(Строка, 2).Текст
              КонецЕсли;
              Элемент.ИНН = ИНН;
              Если НРег(ТД.Область(Строка, 4).Текст) = "нет" ИЛИ НЕ ЗначениеЗаполнено(ТД.Область(Строка, 4).Текст) Тогда
                 Элемент.Покупатель = Ложь;
              ИначеЕсли НРег(ТД.Область(Строка, 4).Текст) = "да" Тогда
                 Элемент.Покупатель = Истина;
              КонецЕсли;
              Если НРег(ТД.Область(Строка, 5).Текст) = "нет" ИЛИ НЕ ЗначениеЗаполнено(ТД.Область(Строка, 5).Текст) Тогда
                 Элемент.Поставщик = Ложь;
              ИначеЕсли НРег(ТД.Область(Строка, 5).Текст) = "да" Тогда
                 Элемент.Поставщик = Истина;
              КонецЕсли;
              Если НРег(ТД.Область(Строка, 6).Текст) = "нет" ИЛИ НЕ ЗначениеЗаполнено(ТД.Область(Строка, 6).Текст) Тогда
                 Элемент.Прочее = Ложь;
              ИначеЕсли НРег(ТД.Область(Строка, 6).Текст) = "да" Тогда
                 Элемент.ПРочее = Истина;
              КонецЕсли;
              Элемент.Вид = Перечисления.ВидыКонтрагентов.ДругНачальника;
              Телефон = ТД.Область(Строка, 10).Текст;
              Телефон = СтрЗаменить(Телефон, " ", "");
              Телефон = СтрЗаменить(Телефон, "(", "");
              Телефон = СтрЗаменить(Телефон, ")", "");
              Телефон = СтрЗаменить(Телефон, "-", "");
              Телефон = СтрЗаменить(Телефон, "+", "");
              ДлинаТелефона = СтрДлина(Телефон);
              Если ДлинаТелефона = 11 Тогда
                 ТЧ = Элемент.Контакты.Добавить();
                 ТЧ.ФИО = ТД.Область(Строка, 8).Текст;
                 ТЧ.Телефон = Телефон;
                 Должность = ТД.Область(Строка, 9).Текст;
                 Если НЕ ЗначениеЗаполнено(Справочники.Должности.НайтиПоНаименованию(Должность, Истина)) Тогда
                   НоваяДолжность = Справочники.Должности.СоздатьЭлемент();
                   НоваяДолжность.Наименование = Должность;
                   НоваяДолжность.Записать();
                 КонецЕсли;
                 ТЧ.Должность = Справочники.Должности.НайтиПоНаименованию(Должность, Истина);
              КонецЕсли;
          Иначе
              Проверка = Истина; 
          КонецЕсли;
          Счетчик = Счетчик + 1;
         Иначе
          Если ЗначениеЗаполнено(Элемент.Вид) ИЛИ ЗначениеЗаполнено(Элемент.ИНН) Тогда
              Элемент.Записать();
          КонецЕсли;
          Сообщить("Данные успешно импортированы!");
          Прервать;
         КонецЕсли;
       Иначе 
            Сообщить("Контрагент: " + Название + " уже существует");
         Продолжить;
       КонецЕсли;
    КонецЦикла;
Иначе
    Сообщить("Файл не выбран");
КонецЕсли;
Элементы.Список.Обновить();

КонецПроцедуры

&НаКлиенте Процедура ВыбратьФайлExcel(Команда) Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл Excel для импортирования"; Диалог.МножественныйВыбор = Ложь; Диалог.Фильтр = "Файлы Excel | *.xlsx; *.xls;"; Диалог.Показать(Новый ОписаниеОповещения("ВыбратьФайлExcelНаСервере", ЭтотОбъект, Новый Структура));КонецПроцедуры БИЗНЕС-ПРОЦЕСС Подсветка этапа В МОДУЛЕ ФОРМЫ БИЗНЕС-ПРОЦЕССА БП = РеквизитФормыВЗначение("Объект"); КартаМаршрута = БП.ПолучитьКартуМаршрута();

ЗАГРУЗКА КАРТИНКИ ГДЕ СсылкаНаКартинку – реквизит формы с типом строка, а Картинка–реквизит справочника с типом ХранилищеЗначений &НаКлиенте Процедура КартинкаНажатие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Оповещение = Новый ОписаниеОповещения("ОбработатьВыборКартинки", ЭтотОбъект); НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор); КонецПроцедуры &НаКлиенте Процедура ОбработатьВыборКартинки(Результат, Адрес, ВыбранноеИмяФайла, ДопПараметры) Экспорт Если НЕ Результат Тогда Возврат; КонецЕсли; СсылкаНаКартинку = Адрес; КонецПроцедуры &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Если ЭтоАдресВременногоХранилища(СсылкаНаКартинку) Тогда ТекущийОбъект.Картинка = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(СсылкаНаКартинку));
КонецЕсли; КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Картинка"); КонецПроцедуры

УСТАНОВКА ЦЕН СРАЗУ НА ВСЕ МЕСТА В ТАБЛИЧНОЙ ЧАСТИ(2 СЕССИЯ С ФИНАЛА 2024) ГДЕ ОБЪЕКТ.СПИСОКМЕСТ – ТАБЛИЧНАЯ ЧАСТЬ, &НаСервере Процедура ПриОткрытииНаСервере() Если Объект.Мероприятие.Пространство.ЕстьЛокации = Истина И Объект.Проведен = Ложь Тогда Элементы.МестаВЗале.Видимость = Истина; Элементы.ЦенаНаПартер.Видимость = Истина; Элементы.ЦенаНаАмфитеатр.Видимость = Истина; Элементы.ЦенаНаБалкон.Видимость = Истина; Элементы.ЦенаНаВсеМеста.Видимость = Ложь; Объект.МестаВЗале.Очистить(); ПространствоМероприятия = Объект.Мероприятие.Пространство; СписокЛокаций = ПространствоМероприятия.Локации; Для каждого СтрокаСпискаЛокаций Из СписокЛокаций Цикл КоличествоРядов = СтрокаСпискаЛокаций.КоличествоРядов; КоличествоМест = СтрокаСпискаЛокаций.КоличествоМест; Для Ряд = 1 По КоличествоРядов Цикл Для Место = 1 По КоличествоМест Цикл НоваяСтрока = Объект.МестаВЗале.Добавить(); НоваяСтрока.Локация = СтрокаСпискаЛокаций.Локация; НоваяСтрока.Ряд = Ряд; НоваяСтрока.Место = Место;
КонецЦикла; КонецЦикла;
КонецЦикла; Иначе Если ЗначениеЗаполнено(Объект.Мероприятие) Тогда
Если Объект.Мероприятие.Пространство.ЕстьЛокации = Истина Тогда Элементы.МестаВЗале.Видимость = Истина; Элементы.ЦенаНаПартер.Видимость = Истина; Элементы.ЦенаНаАмфитеатр.Видимость = Истина; Элементы.ЦенаНаБалкон.Видимость = Истина; Элементы.ЦенаНаВсеМеста.Видимость = Ложь;
Иначе Элементы.ЦенаНаВсеМеста.Видимость = Истина; Элементы.ЦенаНаПартер.Видимость = Ложь; Элементы.ЦенаНаАмфитеатр.Видимость = Ложь; Элементы.ЦенаНаБалкон.Видимость = Ложь; Элементы.МестаВЗале.Видимость = Ложь; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры

&НаКлиенте Процедура ПриОткрытии(Отказ) ПриОткрытииНаСервере(); КонецПроцедуры

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

&НаКлиенте Процедура УстановитьЦены(Команда) УстановитьЦеныНаСервере(); КонецПроцедуры

&НаКлиенте Процедура МероприятиеПриИзменении(Элемент) ПриОткрытииНаСервере(); КонецПроцедуры

ОТБОР В ДИНАМИЧЕСКОМ СПИСКЕ МОДУЛЬ ФОРМЫ &НаСервере Процедура ЦехПриИзмененииНаСервере() Задания.Параметры.УстановитьЗначениеПараметра("ОтборПоЦеху", ОтборПоЦеху); Если НЕ ЗначениеЗаполнено(ОтборПоЦеху) Тогда Задания.Параметры.УстановитьЗначениеПараметра("ВсеЗаписи", Истина); Иначе Задания.Параметры.УстановитьЗначениеПараметра("ВсеЗаписи", Ложь); КонецЕсли; Элементы.Задания.Обновить(); КонецПроцедуры &НаКлиенте Процедура ЦехПриИзменении(Элемент) ЦехПриИзмененииНаСервере(); КонецПроцедуры &НаСервере Процедура ПриОткрытииНаСервере() ЦехПриИзмененииНаСервере();
КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) ПриОткрытииНаСервере(); КонецПроцедуры УСЛОВИЕ В ЗАПРОСЕ ДИНАМИЧЕСКОГО СПИСКА РегистрацияЗаданияНаПодготовкуОснастку.Цеха.Цех = &ОтборПоЦеху ИЛИ &ВсеЗаписи ПОМЕНЯТЬ ЗНАЧЕНИЕ РЕКВИЗИТА В ДРУГОМ ДОКУМЕНТЕ Документ = Выборка.Ссылка.ПолучитьОбъект(); Документ.СтатусЗаказа = Перечисления.СтатусыЗаказов.ПринятВПроизводство; Документ.Записать(РежимЗаписиДокумента.Запись);

ОТПРАВКА ПОЧТЫ ////кнопка "Принято"

Текст = " «Добрый день! Уведомляем вас, что вы успешно подали документы в Сызранский государствен- ный университет имени Филиппа Лимонадова. С этого момента вы участвуете в конкурсе на зачисление. С уважением, приемная комиссия СГУ им. Ф.Лимонадова» "

ОтправитьСообщениеНаСервере(ЭтотОбъект.Ссылка,Текст)

////кнопка "Заполнено Неверно"

Текст = " «Добрый день! Уведомляем вас, что при подаче документов в Сызранский государственный университет имени Филиппа Лимонадова вы допустили ошибки. Просим исправить ошибки в ближайшее время. С уважением, приемная комиссия СГУ им. Ф.Лимонадова» "

ОтправитьСообщениеНаСервере(ЭтотОбъект.Ссылка,Текст)

Процедура ОтправитьСообщениеНаСервере(АбитуриентСсылка, ТекстДляПисьма) Профиль = Новый ИнтернетПочтовыйПрофиль; Профиль.АдресСервераSMTP = "smtp.mail.ru"; Профиль.ПользовательSMTP = "[email protected]"; Профиль.ПарольSMTP = "dq3uRt31bMak4zPR2QrF"; Профиль.ИспользоватьSSLSMTP = Истина; Профиль.ПортSMTP = 465; Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;

 Письмо = Новый ИнтернетПочтовоеСообщение;
 Текст = Письмо.Тексты.Добавить(ТекстДляПисьма);
 Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
 Письмо.Тема = "Проверка заявки абитуриента";
 Письмо.Отправитель = "[email protected]";
 Письмо.ИмяОтправителя = "СГУ им. Ф.Лимонадова";
 Письмо.Получатели.Добавить(АбитуриентСсылка.Email);

 Почта = Новый ИнтернетПочта;     
 Попытка
     Почта.Подключиться(Профиль);
     // Сообщить("Подключено");
 Исключение
     // Сообщить("Не удалось подключиться к серверу");
     // Сообщить(ОписаниеОшибки());
 КонецПопытки;
 Попытка
     Почта.Послать(Письмо);
     //Сообщить("Письмо отправлено");
 Исключение
     // Сообщить("Не удалось отправить письмо");
     //Сообщить(ОписаниеОшибки());
 КонецПопытки;
 Почта.Отключиться();
 //Сообщить("Соединение завершено");

КонецПроцедуры

МЕХАНИЗМ СОЗДАНИЯ РАСПИСАНИЯ В ТАБЛИЧНОЙ ЧАСТИ С ГРАФИКОМ 1/1 ИЛИ 2/2

&НаСервере Процедура ДатаНачалаРаботыБригадыПриИзмененииНаСервере() Если ЗначениеЗаполнено(Объект.ДатаНачалаРаботыБригады) И ЗначениеЗаполнено(Объект.РежимРаботы) Тогда Объект.ДатыРаботыБригады.Очистить(); Счетчик = 0; НеРабочаяДата = 0; РабочаяДата = 0; Если Объект.РежимРаботы = Перечисления.РежимРаботыБригад.ОдинНаОдин Тогда Пока Счетчик <> 15 Цикл ТЧ = Объект.ДатыРаботыБригады.Добавить(); ТЧ.Дата = Объект.ДатаНачалаРаботыБригады + (НеРабочаяДата * 60 * 60 * 24) + (РабочаяДата * 60 * 60 * 24); НеРабочаяДата = НеРабочаяДата + 1; РабочаяДата = РабочаяДата + 1; Счетчик = Счетчик + 1; КонецЦикла; ИначеЕсли Объект.РежимРаботы = Перечисления.РежимРаботыБригад.ДваНаДва Тогда Пока Счетчик <> 16 Цикл ТЧ = Объект.ДатыРаботыБригады.Добавить(); ТЧ.Дата = Объект.ДатаНачалаРаботыБригады + (НеРабочаяДата * 60 * 60 * 24) + (РабочаяДата * 60 * 60 * 24); ТЧ = Объект.ДатыРаботыБригады.Добавить(); ТЧ.Дата = Объект.ДатаНачалаРаботыБригады + (1*60*60*24) + (НеРабочаяДата * 60 * 60 * 24) + (РабочаяДата * 60 * 60 * 24); НеРабочаяДата = НеРабочаяДата + 2; РабочаяДата = РабочаяДата + 2; Счетчик = Счетчик + 2; КонецЦикла; КонецЕсли; КонецЕсли; КонецПроцедуры

ПЛАНИРОВЩИК(КАЛЕНДАРЬ) В ФОРМЕ СДЕЛАТЬ РЕКВИЗИТ ПЛАНИРОВЩИК С ТИПОМ ПЛАНИРОВЩИК И НЕ ЗАБЫТЬ ВЫБРАТЬ ВСЕ СОБЫТИЯ У ФОРМЫ

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

ЗаполнитьПланировщикНаСервере();

// Настроить планировщик.
Планировщик.ЕдиницаПериодическогоВарианта   = ТипЕдиницыШкалыВремени.Час;
Планировщик.КратностьПериодическогоВарианта = 24;

Планировщик.ОтступСНачалаПереносаШкалыВремени = 8;
Планировщик.ОтступСКонцаПереносаШкалыВремени  = 2;

Планировщик.ВыравниватьГраницыЭлементовПоШкалеВремени = Ложь;

Планировщик.ФорматПеренесенныхЗаголовковШкалыВремени = "ДФ='дддд, д ММММ гггг'";

Планировщик.ТекущиеПериодыОтображения.Очистить();
НачалоПериода = НачалоНедели(ТекущаяДата());
КонецПериода  = КонецНедели(ТекущаяДата()) - 6 * 24 * 60 * 60;
Планировщик.ТекущиеПериодыОтображения.Добавить(НачалоПериода, КонецПериода);

Заголовок = "" + ПредставлениеПериода(НачалоПериода, КонецПериода);

Планировщик.ШкалаВремени.Положение = ПоложениеШкалыВремени.Верх;

Планировщик.ПоведениеЭлементовПриНедостаткеМеста = ПоведениеЭлементовПланировщикаПриНедостаткеМеста.ОтображатьВсеЭлементы;

ИзмерениеПомещение = Планировщик.Измерения.Добавить("Помещение");  

ВыборкаПомещений = Справочники.Помещения.Выбрать();

Пока ВыборкаПомещений.Следующий() Цикл
    ЭлементИзмерения = ИзмерениеПомещение.Элементы.Добавить(ВыборкаПомещений.Ссылка); 
КонецЦикла;

КонецПроцедуры

&НаСервере Процедура ЗаполнитьПланировщикНаСервере()

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|   БронированиеПомещения.ОкончаниеБронирования КАК ОкончаниеБронирования,
|   БронированиеПомещения.НачалоБронирования КАК НачалоБронирования,
|   БронированиеПомещения.Мероприятие.Описание КАК МероприятиеОписание,
|   БронированиеПомещения.Ссылка КАК Ссылка,
|   БронированиеПомещения.Помещение КАК Помещение,
|   БронированиеПомещения.Проведен КАК Проведен
|ИЗ
|   Документ.БронированиеПомещения КАК БронированиеПомещения
|ГДЕ
|   НЕ БронированиеПомещения.ПометкаУдаления";

РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл
    НовыйЭлемент = Планировщик.Элементы.Добавить(Выборка.НачалоБронирования, Выборка.ОкончаниеБронирования);
    НовыйЭлемент.Текст    = Выборка.МероприятиеОписание;
    НовыйЭлемент.Значение = Выборка.Ссылка;  

    Измерения = Новый Соответствие;
    Измерения.Вставить("Помещение", Выборка.Помещение);
    НовыйЭлемент.ЗначенияИзмерений = Новый ФиксированноеСоответствие(Измерения);
КонецЦикла;

КонецПроцедуры

&НаКлиенте Процедура ПланировщикВыбор(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ПараметрыФормы = Новый Структура("Ключ", Элемент.ВыделенныеЭлементы[0].Значение); ОткрытьФорму("Документ.БронированиеПомещения.ФормаОбъекта", ПараметрыФормы, ЭтаФорма); КонецПроцедуры

&НаКлиенте Процедура ПланировщикПередСозданием(Элемент, Начало, Конец, ЗначенияИзмерений, Текст, СтандартнаяОбработка) ФормаДок = ПолучитьФорму("Документ.БронированиеПомещения.ФормаОбъекта",,ЭтаФорма); ФормаДок.Объект.НачалоБронирования = НачалоМинуты(Начало); ФормаДок.Объект.ОкончаниеБронирования = НачалоМинуты(Конец); ФормаДок.Объект.Помещение = ЗначенияИзмерений.Получить("Помещение"); ФормаДок.Открыть(); СтандартнаяОбработка = Ложь; КонецПроцедуры

&НаКлиенте Процедура ПланировщикПередНачаломБыстрогоРедактирования(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь;
КонецПроцедуры

&НаКлиенте Процедура ОбработкаЗаписиНового(НовыйОбъект, Источник, СтандартнаяОбработка) Планировщик.Элементы.Очистить(); ЗаполнитьПланировщикНаСервере(); КонецПроцедуры

&НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Планировщик.Элементы.Очистить(); ЗаполнитьПланировщикНаСервере(); КонецПроцедуры

МЕХАНИЗМ ПРОВЕРКИ ПОЧТЫ НА КОРРЕКТНОСТЬ В МОДУЛЕ ОБЪЕКТА СПРАВОЧНИКА Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Если ПроверитьАдресЭлПочты(Email) = Ложь Тогда Отказ = Истина; Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Неверный Email"; Сообщение.Поле = "Email"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); КонецЕсли; КонецПроцедуры //Предполагается, что домен не является доменом первого уровня, //а мможет быть второго, третьего и т.д. (.com, .ru) //Кириллические домены и логины не разрешены Функция ПроверитьАдресЭлПочты(АдресЭлПочты) Адрес = СокрЛП(АдресЭлПочты); АдресМассив = СтрРазделить(Адрес, "@"); Если АдресМассив.Количество() <> 2 Тогда Возврат Ложь; КонецЕсли; Если СтрНайти(АдресМассив[1], "..") > 0 Тогда Возврат Ложь; КонецЕсли; Если СтрНайти(АдресМассив[1], ".") = 0 Тогда Возврат Ложь КонецЕсли; Разрешенные="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!#$%&'*+-/=?^_`{|}~."; Для Номер = 1 По СтрДлина(АдресМассив[0]) Цикл Если СтрНайти(Разрешенные, Сред(АдресМассив[0], Номер, 1)) = 0 Тогда Возврат Ложь КонецЕсли; КонецЦикла; Разрешенные="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789."; Для Номер = 1 По СтрДлина(АдресМассив[1]) Цикл Если СтрНайти(Разрешенные, Сред(АдресМассив[1], Номер, 1)) = 0 Тогда Возврат Ложь КонецЕсли; КонецЦикла; Возврат Истина; КонецФункции ФОРМА АВТОРИЗАЦИИ С БЛОКИРОВКОЙ ВХОДА НА 5 МИНУТ ПРИ 3 НЕПРАВИЛЬНЫХ ПОПЫТКАХ И ПАРАМЕТРОМ СЕАНСА Функция ОбработатьВход() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Пользователи.Пароль КАК Пароль, | Пользователи.Ссылка КАК Ссылка |ИЗ | Справочник.Пользователи КАК Пользователи |ГДЕ | Пользователи.Пароль = &Пароль | И Пользователи.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Пароль", Пароль);
Запрос.УстановитьПараметр("Ссылка", Пользователь.Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() И Счетчик < 3 Тогда
    Сообщить("Авторизация успешна");
    ПараметрыСеанса.Пользователь = Справочники.Пользователи.НайтиПоНаименованию(Пользователь.Наименование, Истина);
    Если ПараметрыСеанса.Пользователь.Наименование = "Администратор" Тогда
       Константы.Пользователи.Установить(Истина);
    Иначе
       Константы.Пользователи.Установить(Ложь);
    КонецЕсли;
    Если ПараметрыСеанса.Пользователь.Наименование = "Кладовщик" ИЛИ ПараметрыСеанса.Пользователь.Наименование = "Инженер" 
    ИЛИ ПараметрыСеанса.Пользователь.Наименование = "Руководитель цеха производства" ИЛИ ПараметрыСеанса.Пользователь.Наименование = "Руководитель отдела закупок"
    ИЛИ ПараметрыСеанса.Пользователь.Наименование = "Менеджер по закупкам" Тогда
       Константы.Комплектующие.Установить(Истина);
    Иначе
       Константы.Комплектующие.Установить(Ложь);
    КонецЕсли;
    Возврат Истина
Иначе
    Счетчик = Счетчик + 1;
    Сообщить("Введен неправильный пароль");
    Возврат Ложь;
КонецЕсли;

КонецФункции &НаКлиенте Процедура Войти(Команда) Если ЗначениеЗаполнено(Пользователь) И ЗначениеЗаполнено(Пароль) Тогда Результат = ОбработатьВход(); Если Результат Тогда Авторизованность = Истина; ЭтаФорма.Закрыть(); ИначеЕсли Счетчик = 3 И НЕ Результат Тогда Счетчик = 0; Таймер = 301; ТаймерНадпись = Таймер; ЭтаФорма.Доступность = Ложь; Элементы.Войти.Доступность = Ложь; ПодключитьОбработчикОжидания("ЗапуститьТаймер", 1); КонецЕсли; Иначе Сообщить("Недостаточно данных для входа"); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) Счетчик = 0; КонецПроцедуры &НаКлиенте Процедура ЗапуститьТаймер() Если Таймер > 0 Тогда Таймер = Таймер — 1; ТаймерНадпись= Таймер; Элементы.ТаймерНадпись.Видимость = Истина; Иначе ОтключитьОбработчикОжидания("ЗапуститьТаймер"); Элементы.Войти.Доступность = Истина; ЭтаФорма.Доступность = Истина; Элементы.ТаймерНадпись.Видимость = Ложь; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) Если Авторизованность = Ложь Тогда ПрекратитьРаботуСистемы(); Иначе ОбновитьИнтерфейс(); КонецЕсли; КонецПроцедуры

РЕШЕНИЕ 3 СЕССИИ С ФИНАЛА 2024 1.СОЗДАТЬ РН И РС 2.СОЗДАТЬ ОБЩУЮ ФОРМУ, СДЕЛАТЬ ДС, НАСТРОИТЬ СОЕДИНЕНИЕ ПО ВСЕМ ИЗМЕРЕНИЯМ ВЫБОР КОГДА ПродажаБилетовОбороты.СтоимостьОборот ЕСТЬ NULL ТОГДА ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЦ

3.СДЕЛАТЬ УСЛОВИЕ НА МЕРОПРИЯТИЕ

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) СписокБилетов.Параметры.УстановитьЗначениеПараметра("Мероприятие", Параметры.Мероприятие); КонецПроцедуры &НаКлиенте Процедура СписокБилетовВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) ДанныеБилета = Элементы.СписокБилетов.ДанныеСтроки(ВыбраннаяСтрока); Если ДанныеБилета.Продано Тогда Сообщить("Этот билет уже нельзя купить"); Возврат; КонецЕсли; ВладелецФормы.ОбработатьВыборБилета(ДанныеБилета); Закрыть(); КонецПроцедуры 4.КОД В ФОРМЕ ДОКУМЕНТА ПРОДАЖИ БИЛЕТОВ НА МЕРОПРИЯТИЕ

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ИспользованиеЛокации(); КонецПроцедуры

&НаКлиенте Процедура МероприятиеПриИзменении(Элемент) ИспользованиеЛокации(); КонецПроцедуры

&НаСервере Процедура ИспользованиеЛокации() Элементы.СписокМест.Видимость = Объект.Мероприятие.Пространство.ЕстьЛокации; КонецПроцедуры

&НаКлиенте Процедура ВыбратьМесто(Команда) СтруктураОтбора = Новый Структура("Мероприятие", Объект.Мероприятие); ОткрытьФорму("ОбщаяФорма.ФормаВыбораБилетов", СтруктураОтбора, ЭтотОбъект); КонецПроцедуры

&НаКлиенте Процедура ОбработатьВыборБилета(ВыбранныйБилет) Экспорт НоваяСтрока = Объект.СписокМест.Добавить(); НоваяСтрока.Локация = ВыбранныйБилет.Локация; НоваяСтрока.Ряд = ВыбранныйБилет.Ряд; НоваяСтрока.Место = ВыбранныйБилет.Место; НоваяСтрока.Цена = ВыбранныйБилет.Стоимость; КонецПроцедуры

ПЕЧАТКА МОДУЛЬ КОМАНДЫ

&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать) ТабДок = Новый ТабличныйДокумент; Печать(ТабДок, ПараметрКоманды);

ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.Показать();
//}}

КонецПроцедуры

&НаСервере Процедура Печать(ТабДок, ПараметрКоманды) Документы.ПоступлениеТоваров.Печать(ТабДок, ПараметрКоманды); КонецПроцедуры МОДУЛЬ МЕНЕДЖЕРА

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

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьСписокТоваровШапка = Макет.ПолучитьОбласть("СписокТоваровШапка");
ОбластьСписокТоваров = Макет.ПолучитьОбласть("СписокТоваров");
Подвал = Макет.ПолучитьОбласть("Подвал");

ТабДок.Очистить();

ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
    Если ВставлятьРазделительСтраниц Тогда
       ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;
    ОбластьЗаголовок.Параметры.Заполнить(Выборка);
    ТабДок.Вывести(ОбластьЗаголовок);

    Шапка.Параметры.Заполнить(Выборка);
    ТабДок.Вывести(Шапка, Выборка.Уровень());

    ТабДок.Вывести(ОбластьСписокТоваровШапка);
    ВыборкаСписокТоваров = Выборка.СписокТоваров.Выбрать();
    Пока ВыборкаСписокТоваров.Следующий() Цикл
       ОбластьСписокТоваров.Параметры.Заполнить(ВыборкаСписокТоваров);
       ТабДок.Вывести(ОбластьСписокТоваров, ВыборкаСписокТоваров.Уровень());
    КонецЦикла;

    Подвал.Параметры.Заполнить(Выборка);
    ТабДок.Вывести(Подвал);

    ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
//}}

КонецПроцедуры

ПРЕДСТАВЛЕНИЕ ДОКУМЕНТА КАКИМ-ЛИБО РЕКВИЗИТОМ В МОДУЛЕ МЕНЕДЖЕРА

Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Поля.Добавить("НазваниеМероприятия"); КонецПроцедуры

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Представление = Данные.НазваниеМероприятия; КонецПроцедуры

РЕШЕНИЕ 4 СЕССИИ С ФИНАЛА 2024 ДОКУМЕНТ ПРИКАЗ О ПРОВЕДЕНИИ ВЫСТАВКИ В МОДУЛЕ ФОРМЫ &НаСервере Функция ПереченьЭкспонатовЭкспонатПриИзмененииНаСервере(Экспонат) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВыставочныеЭкспонаты.Владелец КАК Владелец |ИЗ | Справочник.ВыставочныеЭкспонаты КАК ВыставочныеЭкспонаты |ГДЕ | ВыставочныеЭкспонаты.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", Экспонат);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Если ВыборкаДетальныеЗаписи.Следующий() Тогда
    Возврат ВыборкаДетальныеЗаписи.Владелец;
КонецЕсли;

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

Функция ОбработатьВыбор(Внутренняя) СЗПодходящихЭкспонатов = Новый СписокЗначений; Если Внутренняя Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВыставочныеЭкспонаты.Ссылка КАК Ссылка, | ВыставочныеЭкспонаты.Владелец КАК Владелец |ИЗ | Справочник.ВыставочныеЭкспонаты КАК ВыставочныеЭкспонаты";

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

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

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

&НаКлиенте Процедура ПереченьЭкспонатовЭкспонатПриИзменении(Элемент) ТЧ = Элементы.ПереченьЭкспонатов.ТекущиеДанные; ТЧ.Владелец = ПереченьЭкспонатовЭкспонатПриИзмененииНаСервере(ТЧ.Экспонат) КонецПроцедуры

&НаСервере Процедура ВыставкаПриИзмененииНаСервере() Если Объект.Выставка.ТипВыставки = Перечисления.ТипыВыставки.Внешняя Тогда Элементы.ПереченьЭкспонатов.Видимость = Истина; Объект.ПереченьЭкспонатов.Очистить(); СписокПодходящихЭкспонатов = ОбработатьВыбор(ЛОЖЬ); Элементы.ПереченьЭкспонатовЭкспонат.СписокВыбора.Очистить(); Элементы.ПереченьЭкспонатовЭкспонат.СписокВыбора.ЗагрузитьЗначения(СписокПодходящихЭкспонатов.ВыгрузитьЗначения()); ИначеЕсли Объект.Выставка.ТипВыставки = Перечисления.ТипыВыставки.Внутренная Тогда Элементы.ПереченьЭкспонатов.Видимость = Истина; Объект.ПереченьЭкспонатов.Очистить(); СписокПодходящихЭкспонатов = ОбработатьВыбор(ИСТИНА); Элементы.ПереченьЭкспонатовЭкспонат.СписокВыбора.Очистить(); Элементы.ПереченьЭкспонатовЭкспонат.СписокВыбора.ЗагрузитьЗначения(СписокПодходящихЭкспонатов.ВыгрузитьЗначения()); КонецЕсли; Объект.ТипВыставки = Объект.Выставка.ТипВыставки; КонецПроцедуры

&НаКлиенте Процедура ВыставкаПриИзменении(Элемент) ВыставкаПриИзмененииНаСервере(); КонецПроцедуры

&НаСервере Процедура ПриОткрытииНаСервере() Если ЗначениеЗаполнено(Объект.Выставка) Тогда Элементы.ПереченьЭкспонатов.Видимость = Истина; Если Объект.Выставка.ТипВыставки = Перечисления.ТипыВыставки.Внешняя Тогда Элементы.ПереченьЭкспонатов.Видимость = Истина; СписокПодходящихЭкспонатов = ОбработатьВыбор(ЛОЖЬ); Элементы.ПереченьЭкспонатовЭкспонат.СписокВыбора.Очистить(); Элементы.ПереченьЭкспонатовЭкспонат.СписокВыбора.ЗагрузитьЗначения(СписокПодходящихЭкспонатов.ВыгрузитьЗначения()); ИначеЕсли Объект.Выставка.ТипВыставки = Перечисления.ТипыВыставки.Внутренная Тогда Элементы.ПереченьЭкспонатов.Видимость = Истина; СписокПодходящихЭкспонатов = ОбработатьВыбор(ИСТИНА); Элементы.ПереченьЭкспонатовЭкспонат.СписокВыбора.Очистить(); Элементы.ПереченьЭкспонатовЭкспонат.СписокВыбора.ЗагрузитьЗначения(СписокПодходящихЭкспонатов.ВыгрузитьЗначения()); КонецЕсли; КонецЕсли; КонецПроцедуры

&НаКлиенте Процедура ПриОткрытии(Отказ) ПриОткрытииНаСервере(); КонецПроцедуры ДОКУМЕНТ ПОСТУПЛЕНИЕ ЭКСПОНАТОВ ОТ СТОРОННЕЙ ОРГАНИЗАЦИИ &НаСервере Процедура ПриказОПроведенииВыставкиПриИзмененииНаСервере() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриказОПроведенииВыставкиПереченьЭкспонатов.Ссылка КАК Ссылка, | ПриказОПроведенииВыставкиПереченьЭкспонатов.НомерСтроки КАК НомерСтроки, | ПриказОПроведенииВыставкиПереченьЭкспонатов.Экспонат КАК Экспонат, | ПриказОПроведенииВыставкиПереченьЭкспонатов.Владелец КАК Владелец |ИЗ | Документ.ПриказОПроведенииВыставки.ПереченьЭкспонатов КАК ПриказОПроведенииВыставкиПереченьЭкспонатов | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриказОПроведенииВыставки КАК ПриказОПроведенииВыставки | ПО ПриказОПроведенииВыставкиПереченьЭкспонатов.Ссылка = ПриказОПроведенииВыставки.Ссылка |ГДЕ | ПриказОПроведенииВыставки.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", Объект.ПриказОПроведенииВыставки);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ТЧ = Объект.ПереченьЭкспонатов;
    Строка = ТЧ.Добавить();
    Строка.Экспонат = ВыборкаДетальныеЗаписи.Экспонат;
    Строка.Владелец = ВыборкаДетальныеЗаписи.Владелец;
КонецЦикла;

КонецПроцедуры

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

    Запрос.УстановитьПараметр("Владелец", Владелец);
    Запрос.УстановитьПараметр("Экспонат", Экспонат);

    РезультатЗапроса = Запрос.Выполнить();

    Выборка = РезультатЗапроса.Выбрать();

    Если Выборка.Следующий() Тогда
       Если Выборка.Забронировано = Истина Тогда
         Сообщить("Нельзя передать экспонаты на выставку, так как среди перечисленных экспонатов есть забронированные");
         Отказ = Истина;
         Прервать;
       КонецЕсли;
    КонецЕсли;
КонецЦикла;

КонецПроцедуры

&НаСервере Процедура ПриказОПроведенииВыставкиПриИзмененииНаСервере() Объект.ПереченьЭкспонатов.Очистить(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриказОПроведенииВыставкиПереченьЭкспонатов.Ссылка КАК Ссылка, | ПриказОПроведенииВыставкиПереченьЭкспонатов.НомерСтроки КАК НомерСтроки, | ПриказОПроведенииВыставкиПереченьЭкспонатов.Экспонат КАК Экспонат, | ПриказОПроведенииВыставкиПереченьЭкспонатов.Владелец КАК Владелец |ИЗ | Документ.ПриказОПроведенииВыставки.ПереченьЭкспонатов КАК ПриказОПроведенииВыставкиПереченьЭкспонатов | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриказОПроведенииВыставки КАК ПриказОПроведенииВыставки | ПО ПриказОПроведенииВыставкиПереченьЭкспонатов.Ссылка = ПриказОПроведенииВыставки.Ссылка |ГДЕ | ПриказОПроведенииВыставки.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", Объект.ПриказОПроведенииВыставки);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 
    ТЧ = Объект.ПереченьЭкспонатов.Добавить();
    ТЧ.Экспонат = ВыборкаДетальныеЗаписи.Экспонат;
    ТЧ.Владелец = ВыборкаДетальныеЗаписи.Владелец;
КонецЦикла;

КонецПроцедуры

&НаКлиенте Процедура ПриказОПроведенииВыставкиПриИзменении(Элемент) ПриказОПроведенииВыставкиПриИзмененииНаСервере(); КонецПроцедуры ДОКУМЕНТ АКТ ВОЗВРАТА ЭКСПОНАТОВ &НаСервере Процедура ПриказОПроведенииВыставкиПриИзмененииНаСервере() Объект.ПереченьЭкспонатов.Очистить(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриказОПроведенииВыставкиПереченьЭкспонатов.Ссылка КАК Ссылка, | ПриказОПроведенииВыставкиПереченьЭкспонатов.НомерСтроки КАК НомерСтроки, | ПриказОПроведенииВыставкиПереченьЭкспонатов.Экспонат КАК Экспонат, | ПриказОПроведенииВыставкиПереченьЭкспонатов.Владелец КАК Владелец |ИЗ | Документ.ПриказОПроведенииВыставки.ПереченьЭкспонатов КАК ПриказОПроведенииВыставкиПереченьЭкспонатов | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриказОПроведенииВыставки КАК ПриказОПроведенииВыставки | ПО ПриказОПроведенииВыставкиПереченьЭкспонатов.Ссылка = ПриказОПроведенииВыставки.Ссылка |ГДЕ | ПриказОПроведенииВыставки.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", Объект.ПриказОПроведенииВыставки);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ТЧ = Объект.ПереченьЭкспонатов.Добавить(); 
    ТЧ.Экспонат = ВыборкаДетальныеЗаписи.Экспонат;
    ТЧ.Владелец = ВыборкаДетальныеЗаписи.Владелец;
КонецЦикла;

КонецПроцедуры

&НаКлиенте Процедура ПриказОПроведенииВыставкиПриИзменении(Элемент) ПриказОПроведенииВыставкиПриИзмененииНаСервере(); КонецПроцедуры БИЗНЕС-ПРОЦЕСС ЭКСПОНАТОВ В ФОРМЕ БИЗНЕС-ПРОЦЕССА &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) БП = РеквизитФормыВЗначение("Объект"); КартаМаршрута = БП.ПолучитьКартуМаршрута(); КонецПроцедуры

&НаСервере Процедура ТипВыставкиПриИзмененииНаСервере() Если Объект.ТипВыставки = Перечисления.ТипыВыставки.Внешняя Тогда Элементы.ПоступлениеЭкспонатовОтСтороннейОрганизации.Видимость = Истина; КонецЕсли; КонецПроцедуры

&НаКлиенте Процедура ТипВыставкиПриИзменении(Элемент) ТипВыставкиПриИзмененииНаСервере(); КонецПроцедуры

&НаСервере Процедура ПриказОПроведенииВыставкиПриИзмененииНаСервере() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриказОПроведенииВыставки.Выставка.ТипВыставки КАК ВыставкаТипВыставки |ИЗ | Документ.ПриказОПроведенииВыставки КАК ПриказОПроведенииВыставки |ГДЕ | ПриказОПроведенииВыставки.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", Объект.ПриказОПроведенииВыставки);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Если ВыборкаДетальныеЗаписи.Следующий() Тогда
    Объект.ТипВыставки = ВыборкаДетальныеЗаписи.ВыставкаТипВыставки;
КонецЕсли;
ТипВыставкиПриИзмененииНаСервере();

КонецПроцедуры

&НаКлиенте Процедура ПриказОПроведенииВыставкиПриИзменении(Элемент) ПриказОПроведенииВыставкиПриИзмененииНаСервере(); КонецПроцедуры ЗАДАЧИ ДЛЯ СОТРУДНИКОВ В ФОРМЕ ЗАДАЧИ

&НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Если Объект.ТочкаМаршрута = БизнесПроцессы.БизнесПроцессЭкспонатов.ТочкиМаршрута.ПриказОПроведенииВыставки Тогда Если НЕ ЗначениеЗаполнено(Объект.БизнесПроцесс.ПриказОПроведенииВыставки) ИЛИ НЕ ЗначениеЗаполнено(Объект.БизнесПроцесс.ТипВыставки) Тогда Сообщить("Не прикреплен приказ о проведении выставки или не указан тип выставки, выполнение задачи невозможно"); Отказ = Истина; КонецЕсли; ИначеЕсли Объект.БизнесПроцесс.ТипВыставки = Перечисления.ТипыВыставки.Внешняя И Объект.ТочкаМаршрута = БизнесПроцессы.БизнесПроцессЭкспонатов.ТочкиМаршрута.ПоступлениеЭкспонатовОтСтороннейОрганизации Тогда Если НЕ ЗначениеЗаполнено(Объект.БизнесПроцесс.ПоступлениеЭкспонатовОтСтороннейОрганизации) Тогда Сообщить("Не прикреплен документ поступления экспонатов от сторонней организации, выполнение задачи невозможно"); Отказ = Истина; КонецЕсли; ИначеЕсли Объект.ТочкаМаршрута = БизнесПроцессы.БизнесПроцессЭкспонатов.ТочкиМаршрута.ПередачаЭкспонатовНаВыставку Тогда Если НЕ ЗначениеЗаполнено(Объект.БизнесПроцесс.ПередачаЭкспонатовНаВыставку) Тогда Сообщить("Не прикреплен документ передачи экспонатов на выставку, выполнение задачи невозможно"); Отказ = Истина; КонецЕсли; ИначеЕсли Объект.ТочкаМаршрута = БизнесПроцессы.БизнесПроцессЭкспонатов.ТочкиМаршрута.АктВозвратаЭкспонатов Тогда Если НЕ ЗначениеЗаполнено(Объект.БизнесПроцесс.ВозвратЭкспонатов) Тогда Сообщить("Не прикреплен документ возврата экспонатов с выставки, выполнение задачи невозможно"); Отказ = Истина; КонецЕсли; КонецЕсли; КонецПроцедуры АЛГОРИТМ ПЕРЕСЕЧЕНИЯ ПО ДАТАМ, ДНЯМ И ВРЕМЕНИ Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РаботаПреподавателей.ДатаНачалаРаботыСтудии КАК ДатаНачалаРаботыСтудии, | РаботаПреподавателей.ДатаОкончанияРаботыСтудии КАК ДатаОкончанияРаботыСтудии, | РаботаПреподавателей.ВремяНачалаЗанятий КАК ВремяНачалаЗанятий, | РаботаПреподавателей.ВремяОкончанияЗанятий КАК ВремяОкончанияЗанятий, | РаботаПреподавателей.ПервыйДеньНедели КАК ПервыйДеньНедели, | РаботаПреподавателей.ВторойДеньНедели КАК ВторойДеньНедели |ИЗ | РегистрСведений.РаботаПреподавателей КАК РаботаПреподавателей |ГДЕ | РаботаПреподавателей.Преподаватель = &Преподаватель";

Запрос.УстановитьПараметр("Преподаватель", Объект.Преподаватель);

РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();

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

ОТБОР ПО ПЕРИОДУ В ОТЧЕТАХ ДОЛЖЕН БЫТЬ С (ИЛИ) ВМЕСТО (И)!!!

  • Vote: I like it
  • 0
  • Vote: I do not like it