AccountingRegisters/Хозрасчетный/ManagerModule

 Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) УправлениеДоступомБПВызовСервера.ВыполнитьПроверкуПраваДоступаКДаннымБухгалтерии(); КонецПроцедуры

AccountingRegisters/Хозрасчетный/RecordSetModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда Процедура ПередЗаписью(Отказ, РежимЗаписи) Если Отказ Тогда Возврат; КонецЕсли; Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; Если Количество() = 0 Тогда Возврат; КонецЕсли; Регистратор = ЭтотОбъект.Отбор.Регистратор.Значение; ТипРегистратора = ТипЗнч(Регистратор); ПроводкиВведеныПользователем = ТипРегистратора = Тип("ДокументСсылка.ОперацияБух") ИЛИ (ОбщегоНазначения.ЕстьРеквизитОбъекта("РучнаяКорректировка", Регистратор.Метаданные()) И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Регистратор, "РучнаяКорректировка")); Если НЕ ПроводкиВведеныПользователем Тогда ОбработатьПроводкиНалоговогоУчета(ЭтотОбъект, Регистратор); КонецЕсли; ОчиститьНеИспользуемыеСуммы(ЭтотОбъект, Регистратор); ПривестиПустыеЗначенияСубконтоСоставногоТипа(ЭтотОбъект); ОчиститьСубконтоСпособУчетаНДС(ЭтотОбъект, Регистратор); Если ПроводкиВведеныПользователем Тогда // Проанализируем ручные проводки и зарегистрируем при необходимости // договоры из них к отложенному расчету. УчетВзаиморасчетовОтложенноеПроведение.ЗарегистрироватьОтложенныеРасчетыСКонтрагентамиПередЗаписьюХозрасчетный( ЭтотОбъект, Отказ); КонецЕсли; КонецПроцедуры // Субконто составного типа Процедура ПривестиПустыеЗначенияСубконтоСоставногоТипа(Проводки) КэшВидыСоставныхСубконто = Новый Соответствие; Для Каждого Проводка Из Проводки Цикл Для Каждого Субконто Из Проводка.СубконтоДт Цикл Если НЕ ЗначениеЗаполнено(Субконто.Значение) И Субконто.Значение <> Неопределено И СоставнойТипСубконто(Субконто.Ключ, КэшВидыСоставныхСубконто) Тогда Проводка.СубконтоДт.Вставить(Субконто.Ключ, Неопределено); КонецЕсли; КонецЦикла; Для Каждого Субконто Из Проводка.СубконтоКт Цикл Если НЕ ЗначениеЗаполнено(Субконто.Значение) И Субконто.Значение <> Неопределено И СоставнойТипСубконто(Субконто.Ключ, КэшВидыСоставныхСубконто) Тогда Проводка.СубконтоКт.Вставить(Субконто.Ключ, Неопределено); КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры Функция СоставнойТипСубконто(ВидСубконто, КэшВидыСоставныхСубконто) Составной = КэшВидыСоставныхСубконто.Получить(ВидСубконто); Если Составной = Неопределено Тогда Составной = ВидСубконто.ТипЗначения.Типы().Количество() > 1; КэшВидыСоставныхСубконто.Вставить(ВидСубконто, Составной); КонецЕсли; Возврат Составной; КонецФункции // Особенности налогового учета Процедура ОбработатьПроводкиНалоговогоУчета(Проводки, Регистратор) СуммыНалоговогоУчетаЗаполнены = // Проводки созданы алгоритмом, который рассчитывает суммы НУ ЭтотОбъект.ДополнительныеСвойства.Свойство("СуммыНалоговогоУчетаЗаполнены") И ЭтотОбъект.ДополнительныеСвойства.СуммыНалоговогоУчетаЗаполнены = Истина; Если НЕ СуммыНалоговогоУчетаЗаполнены Тогда ЗаполнитьСуммыНалоговогоУчета(Проводки); КонецЕсли; ОтразитьДоходыРасходыНеУчитываемыеВНалоговомУчете(Проводки); КонецПроцедуры Процедура ОчиститьНеИспользуемыеСуммы(Проводки, Регистратор) Если ТипЗнч(Регистратор) = Тип("ДокументСсылка.ВводНачальныхОстатков") Тогда Возврат; // Для записи остатков налогового учета при переходе с УСН на общую систему КонецЕсли; СменаНалоговогоУчета = Ложь; Если Проводки.ДополнительныеСвойства.Свойство("СменаНалоговогоУчета", СменаНалоговогоУчета) и СменаНалоговогоУчета Тогда Возврат; КонецЕсли; КэшУчетнойПолитики = Неопределено; // См. ДанныеУчетнойПолитики() Для Каждого Проводка Из ЭтотОбъект Цикл ДанныеУчетнойПолитики = ДанныеУчетнойПолитики(Проводка.Организация, Проводка.Период, КэшУчетнойПолитики); Если НЕ ДанныеУчетнойПолитики.ПлательщикНалогаНаПрибыль Тогда ОчиститьСуммуЕслиЗаполнена(Проводка.СуммаНУДт); ОчиститьСуммуЕслиЗаполнена(Проводка.СуммаНУКт); ОчиститьСуммуЕслиЗаполнена(Проводка.СуммаПРДт); ОчиститьСуммуЕслиЗаполнена(Проводка.СуммаПРКт); ОчиститьСуммуЕслиЗаполнена(Проводка.СуммаВРДт); ОчиститьСуммуЕслиЗаполнена(Проводка.СуммаВРКт); Продолжить; КонецЕсли; // Налог на прибыль уплачивается Если НЕ ДанныеУчетнойПолитики.ПоддержкаПБУ18 Тогда ОчиститьСуммуЕслиЗаполнена(Проводка.СуммаПРДт); ОчиститьСуммуЕслиЗаполнена(Проводка.СуммаВРДт); ОчиститьСуммуЕслиЗаполнена(Проводка.СуммаПРКт); ОчиститьСуммуЕслиЗаполнена(Проводка.СуммаВРКт); КонецЕсли; КонецЦикла; КонецПроцедуры Процедура ЗаполнитьСуммыНалоговогоУчета(Проводки) КэшУчетнойПолитики = Неопределено; // См. ДанныеУчетнойПолитики() СчетаЦелевогоФинансирования = БухгалтерскийУчетПовтИсп.СчетаВИерархии(ПланыСчетов.Хозрасчетный.ЦелевоеФинансирование); // 86 СчетаНДС = БухгалтерскийУчетПовтИсп.СчетаВИерархии(ПланыСчетов.Хозрасчетный.НДС); // 68.02 СчетаПрочиеРасходы = БухгалтерскийУчетПовтИсп.СчетаВИерархии(ПланыСчетов.Хозрасчетный.ПрочиеРасходы); // 91.02 СчетСпецодеждаВЭксплуатацииВспомогательный = ПланыСчетов.Хозрасчетный.СпецодеждаВЭксплуатацииВспомогательный; // 10.11.1 СчетСпецоснасткаВЭксплуатацииВспомогательный = ПланыСчетов.Хозрасчетный.СпецоснасткаВЭксплуатацииВспомогательный; // 10.11.2 СчетНДСНачисленныйПоОтгрузке = ПланыСчетов.Хозрасчетный.НДСНачисленныйПоОтгрузке; // 76.ОТ СчетаАмортизацияОсновныхСредств = БухгалтерскийУчетПовтИсп.СчетаВИерархии(ПланыСчетов.Хозрасчетный.АмортизацияОсновныхСредств); // 02 ТипПрочиеДоходыИРасходы = Тип("СправочникСсылка.ПрочиеДоходыИРасходы"); ПрочиеДоходыИРасходыИсключения = Неопределено; Для Каждого Проводка Из ЭтотОбъект Цикл ДанныеУчетнойПолитики = ДанныеУчетнойПолитики(Проводка.Организация, Проводка.Период, КэшУчетнойПолитики); Если НЕ ДанныеУчетнойПолитики.ПлательщикНалогаНаПрибыль Тогда Продолжить; КонецЕсли; Если Проводка.Сумма = 0 Тогда Продолжить; КонецЕсли; СчетДт = Проводка.СчетДт; СчетКт = Проводка.СчетКт; Если СчетаЦелевогоФинансирования.Найти(СчетДт) <> Неопределено Или СчетаЦелевогоФинансирования.Найти(СчетКт) <> Неопределено Тогда // Налоговые суммы по этим счетам рассчитываются в первичном документе по особым правилам Продолжить; КонецЕсли; Если СчетДт = СчетСпецодеждаВЭксплуатацииВспомогательный Или СчетКт = СчетСпецодеждаВЭксплуатацииВспомогательный Или СчетДт = СчетСпецоснасткаВЭксплуатацииВспомогательный Или СчетКт = СчетСпецоснасткаВЭксплуатацииВспомогательный Тогда // Налоговые суммы по этим счетам рассчитываются в первичном документе по особым правилам Продолжить; КонецЕсли; Если СчетаАмортизацияОсновныхСредств.Найти(СчетДт) <> Неопределено И СчетаАмортизацияОсновныхСредств.Найти(СчетКт) <> Неопределено Тогда // Налоговые суммы по этим счетам рассчитываются в первичном документе по особым правилам Продолжить; КонецЕсли; // НДС, предъявленный покупателю, не учитывается в НУ (п. 19 ст. 270 НК) Если (СчетКт = СчетНДСНачисленныйПоОтгрузке Или СчетаНДС.Найти(СчетКт) <> Неопределено) // Отсекаем заведомо не начисление НДС И СчетаПрочиеРасходы.Найти(СчетДт) <> Неопределено Тогда // Рассматриваем только проводки вида Дт 91 Кт 68, // потому что на счете 90 есть отдельный субсчет, на котором не ведется налоговый учет. // Как правило, проводка Дт 91 Кт 68 начисляет НДС при реализации, но есть исключения: ЭтоИсключение = Ложь; Для Каждого Субконто Из Проводка.СубконтоДт Цикл Если ТипЗнч(Субконто.Значение) = ТипПрочиеДоходыИРасходы Тогда Если ПрочиеДоходыИРасходыИсключения = Неопределено Тогда ПрочиеДоходыИРасходыИсключения = ПолучитьПрочиеДоходыИРасходыИсключения(); КонецЕсли; Если ПрочиеДоходыИРасходыИсключения[Субконто.Значение] = Истина Тогда ЭтоИсключение = Истина; Прервать; КонецЕсли; КонецЕсли; КонецЦикла; Если Не ЭтоИсключение Тогда Продолжить; КонецЕсли; КонецЕсли; СвойстваСчета = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(СчетДт); Если СвойстваСчета.НалоговыйУчет И Проводка.СуммаНУДт = 0 И Проводка.СуммаПРДт = 0 И Проводка.СуммаВРДт = 0 Тогда Проводка.СуммаНУДт = Проводка.Сумма; КонецЕсли; СвойстваСчета = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(СчетКт); Если СвойстваСчета.НалоговыйУчет И Проводка.СуммаНУКт = 0 И Проводка.СуммаПРКт = 0 И Проводка.СуммаВРКт = 0 Тогда Проводка.СуммаНУКт = Проводка.Сумма; КонецЕсли; КонецЦикла; КонецПроцедуры Процедура ОтразитьДоходыРасходыНеУчитываемыеВНалоговомУчете(Проводки) СчетДоходыНеУчитываемые = ПланыСчетов.Хозрасчетный.ДоходыНеУчитываемые; // НЕ.04 СчетРасчетыСПерсоналомПоОплатеТруда = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда; // 70 СчетВнереализационныеРасходыНеУчитываемые = ПланыСчетов.Хозрасчетный.ВнереализационныеРасходыНеУчитываемые; // НЕ.03 СчетВыплатыВпользуФизЛицПоП_1_48 = ПланыСчетов.Хозрасчетный.ВыплатыВпользуФизЛицПоП_1_48; // НЕ.01.1 СчетДругиеВыплатыПоП_1_48 = ПланыСчетов.Хозрасчетный.ДругиеВыплатыПоП_1_48; // НЕ.01.9 ПустойСчет = ПланыСчетов.Хозрасчетный.ПустаяСсылка(); ПустойПрочийДР = Справочники.ПрочиеДоходыИРасходы.ПустаяСсылка(); ТипПрочиеДоходыИРасходы = Тип("СправочникСсылка.ПрочиеДоходыИРасходы"); СчетаСтроительствоОбъектовОсновныхСредств = БухгалтерскийУчетПовтИсп.СчетаВИерархии(ПланыСчетов.Хозрасчетный.СтроительствоОбъектовОсновныхСредств); // 08.03 СчетаПрочиеДоходы = БухгалтерскийУчетПовтИсп.СчетаВИерархии(ПланыСчетов.Хозрасчетный.ПрочиеДоходы); // 91.01 ВидСубконтоПрочиеДоходыИРасходы = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПрочиеДоходыИРасходы; ВидСубконтоСтатьиЗатрат = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат; ПрочиеДоходыИРасходыВнереализационные = Неопределено; // Удалим проводки по забалансовым счетам учета доходов и расходов ПроводкиКУдалению = Новый Массив; Для Каждого Проводка Из Проводки Цикл Если Проводка.СчетКт = СчетДоходыНеУчитываемые Или Проводка.СчетДт = СчетВнереализационныеРасходыНеУчитываемые Или Проводка.СчетДт = СчетВыплатыВпользуФизЛицПоП_1_48 Или Проводка.СчетДт = СчетДругиеВыплатыПоП_1_48 Тогда // Такие проводки формируем только в этой процедуре ПроводкиКУдалению.Добавить(Проводка); КонецЕсли; КонецЦикла; Для Каждого Проводка Из ПроводкиКУдалению Цикл Проводки.Удалить(Проводка); КонецЦикла; // Найдем проводки по доходам и расходам, не учитываемым в налоговом учете ПроводкиПоДоходам = Новый Массив; ПроводкиПоРасходам = Новый Массив; КэшУчетнойПолитики = Неопределено; // См. ДанныеУчетнойПолитики() Для Каждого Проводка Из ЭтотОбъект Цикл ДанныеУчетнойПолитики = ДанныеУчетнойПолитики(Проводка.Организация, Проводка.Период, КэшУчетнойПолитики); Если НЕ ДанныеУчетнойПолитики.ПлательщикНалогаНаПрибыль Тогда Продолжить; КонецЕсли; АнализируемыйСчет = Проводка.СчетКт; АнализируемыеСубконто = Проводка.СубконтоКт; ЭтоПроводкаДоходыНеУчитываемыеДляНалогаНаПрибыль = Ложь; Если ЗначениеЗаполнено(АнализируемыйСчет) И БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(АнализируемыйСчет).НалоговыйУчет И АнализируемыеСубконто.Количество() <> 0 И СчетаПрочиеДоходы.Найти(АнализируемыйСчет) <> Неопределено Тогда Для Каждого Субконто Из АнализируемыеСубконто Цикл Если Субконто.Ключ = ВидСубконтоПрочиеДоходыИРасходы Тогда Если НЕ НалоговыйУчетПовтИсп.ВидДоходовРасходовУчитывается(Субконто.Значение) Тогда ПроводкиПоДоходам.Добавить(Проводка); ЭтоПроводкаДоходыНеУчитываемыеДляНалогаНаПрибыль = Истина; Прервать; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; АнализируемыйСчет = Проводка.СчетДт; АнализируемыеСубконто = Проводка.СубконтоДт; Если Не ЭтоПроводкаДоходыНеУчитываемыеДляНалогаНаПрибыль И ЗначениеЗаполнено(АнализируемыйСчет) И БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(АнализируемыйСчет).НалоговыйУчет И АнализируемыеСубконто.Количество() <> 0 И СчетаСтроительствоОбъектовОсновныхСредств.Найти(АнализируемыйСчет) = Неопределено Тогда Для Каждого Субконто Из АнализируемыеСубконто Цикл Если Субконто.Ключ = ВидСубконтоПрочиеДоходыИРасходы Тогда Если Не НалоговыйУчетПовтИсп.ВидДоходовРасходовУчитывается(Субконто.Значение) Тогда ПроводкиПоРасходам.Добавить(Проводка); Прервать; КонецЕсли; ИначеЕсли Субконто.Ключ = ВидСубконтоСтатьиЗатрат Тогда Если Не НалоговыйУчетПовтИсп.СтатьяЗатратУчитывается(Субконто.Значение) Тогда ПроводкиПоРасходам.Добавить(Проводка); Прервать; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; // Обработаем не учитываемые доходы: // - обеспечим, чтобы они не отражались в налоговом учете // - добавим проводки по забалансовому учету Для Каждого Проводка Из ПроводкиПоДоходам Цикл ОчиститьСуммуЕслиЗаполнена(Проводка.СуммаНУКт, Проводка.СуммаПРКт); СуммаНеУчитываемыхДоходов = Проводка.Сумма - ?(Проводка.СуммаВРДт = NULL, 0, Проводка.СуммаВРДт) - ?(Проводка.СуммаПРДт = NULL, 0, Проводка.СуммаПРДт); Если СуммаНеУчитываемыхДоходов = 0 Тогда Продолжить; КонецЕсли; НоваяПроводка = Проводки.Добавить(); НоваяПроводка.Организация = Проводка.Организация; НоваяПроводка.Период = Проводка.Период; НоваяПроводка.Содержание = Проводка.Содержание; НоваяПроводка.СчетКт = СчетДоходыНеУчитываемые; НоваяПроводка.СуммаНУКт = СуммаНеУчитываемыхДоходов; КонецЦикла; // Обработаем не учитываемые расходы (также, как и доходы) Для Каждого Проводка Из ПроводкиПоРасходам Цикл ОчиститьСуммуЕслиЗаполнена(Проводка.СуммаНУДт, Проводка.СуммаПРДт); СуммаНеУчитываемыхРасходов = Проводка.Сумма - ?(Проводка.СуммаВРКт = NULL, 0, Проводка.СуммаВРКт) - ?(Проводка.СуммаПРКт = NULL, 0, Проводка.СуммаПРКт); Если СуммаНеУчитываемыхРасходов = 0 Тогда Продолжить; КонецЕсли; // анализируем проводку на принадлежность к внереализационным доходам и расходам ЭтоВнереализационныеДоходыРасходы = Ложь; Если Проводка.СчетКт <> ПустойСчет И СчетаПрочиеДоходы.Найти(Проводка.СчетКт) <> Неопределено Тогда Для Каждого Субконто Из Проводка.СубконтоКт Цикл Если ТипЗнч(Субконто.Значение) = ТипПрочиеДоходыИРасходы Тогда Если ПрочиеДоходыИРасходыВнереализационные = Неопределено Тогда ПрочиеДоходыИРасходыВнереализационные = ПолучитьПрочиеДоходыИРасходыВнереализационные(); КонецЕсли; Если ПрочиеДоходыИРасходыВнереализационные[Субконто.Значение] = Истина Тогда ЭтоВнереализационныеДоходыРасходы = Истина; Прервать; КонецЕсли; КонецЕсли; КонецЦикла; Иначе Для Каждого Субконто Из Проводка.СубконтоДт Цикл Если ТипЗнч(Субконто.Значение) = ТипПрочиеДоходыИРасходы Тогда Если ПрочиеДоходыИРасходыВнереализационные = Неопределено Тогда ПрочиеДоходыИРасходыВнереализационные = ПолучитьПрочиеДоходыИРасходыВнереализационные(); КонецЕсли; Если ПрочиеДоходыИРасходыВнереализационные[Субконто.Значение] = Истина Тогда ЭтоВнереализационныеДоходыРасходы = Истина; Прервать; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; Если ЭтоВнереализационныеДоходыРасходы Тогда СчетЗабалансовогоУчета = СчетВнереализационныеРасходыНеУчитываемые; ИначеЕсли СчетРасчетыСПерсоналомПоОплатеТруда = Проводка.СчетДт Или СчетРасчетыСПерсоналомПоОплатеТруда = Проводка.СчетКт Тогда СчетЗабалансовогоУчета = СчетВыплатыВпользуФизЛицПоП_1_48; Иначе СчетЗабалансовогоУчета = СчетДругиеВыплатыПоП_1_48; КонецЕсли; НоваяПроводка = Проводки.Добавить(); НоваяПроводка.Организация = Проводка.Организация; НоваяПроводка.Период = Проводка.Период; НоваяПроводка.Содержание = Проводка.Содержание; НоваяПроводка.СчетДт = СчетЗабалансовогоУчета; НоваяПроводка.СуммаНУДт = СуммаНеУчитываемыхРасходов; КонецЦикла; КонецПроцедуры Процедура ОчиститьСуммуЕслиЗаполнена(Сумма, КорректируемаяСумма = 0) // Если сумма не заполнена, то не будем ее менять, чтобы не спровоцировать перезапись фактически неизменного набора. // Если сумма заполнена, то ее обнулим за счет корректируемой суммы. // Например, это используется, когда важно очистить сумму НУ за счет суммы ПР. Если Не ЗначениеЗаполнено(Сумма) Тогда // Может быть NULL, если набор редактируется вручную Возврат; КонецЕсли; КорректируемаяСумма = КорректируемаяСумма + Сумма; Сумма = 0; КонецПроцедуры Функция ДанныеУчетнойПолитики(Организация, Период, Кэш = Неопределено) // У разных проводок набора период и организация могут быть разными. // При этом проводок может быть в наборе много, но у большинства из них период и организация одинаковые. // Для того, чтобы сократить время на получение сведений учетной политики для каждой строки набора, // организуем свой кэш с данными учетной политики. Если Кэш = Неопределено Тогда Кэш = Новый ТаблицаЗначений; Кэш.Колонки.Добавить("Организация", Новый ОписаниеТипов("СправочникСсылка.Организации")); Кэш.Колонки.Добавить("Период", Новый ОписаниеТипов("Дата")); Кэш.Колонки.Добавить("ПлательщикНалогаНаПрибыль", Новый ОписаниеТипов("Булево")); Кэш.Колонки.Добавить("ПоддержкаПБУ18", Новый ОписаниеТипов("Булево")); Кэш.Индексы.Добавить("Организация,Период"); КонецЕсли; Поиск = Новый Структура; Поиск.Вставить("Организация", Организация); Поиск.Вставить("Период", Период); РезультатПоиска = Кэш.НайтиСтроки(Поиск); Если РезультатПоиска.Количество() = 0 Тогда // Нет в кэше - добавим НоваяСтрока = Кэш.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Поиск); Если УчетнаяПолитика.Существует(Организация, Период) Тогда НоваяСтрока.ПлательщикНалогаНаПрибыль = УчетнаяПолитика.ПлательщикНалогаНаПрибыль(Организация, Период); НоваяСтрока.ПоддержкаПБУ18 = УчетнаяПолитика.ПоддержкаПБУ18(Организация, Период); Иначе // Если нет учетной политики, то считаем, что все включено, // для того, чтобы избежать потери данных, подготовленным прикладным кодом. // Это может быть полезно, например, при вводе начальных остатков. // В этом случае документ сам заботится о правильности интерпретации учетной политики. НоваяСтрока.ПлательщикНалогаНаПрибыль = Истина; НоваяСтрока.ПоддержкаПБУ18 = Истина; КонецЕсли; РезультатПоиска.Добавить(НоваяСтрока); КонецЕсли; Возврат РезультатПоиска[0]; КонецФункции Функция ПолучитьПрочиеДоходыИРасходыВнереализационные() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПрочиеДоходыИРасходы.Ссылка КАК Ссылка |ИЗ | Справочник.ПрочиеДоходыИРасходы КАК ПрочиеДоходыИРасходы |ГДЕ | ПрочиеДоходыИРасходы.ВидПрочихДоходовИРасходов = ЗНАЧЕНИЕ(Перечисление.ВидыПрочихДоходовИРасходов.ПрочиеВнереализационныеДоходыРасходы)"; Выборка = Запрос.Выполнить().Выбрать(); ПрочиеДоходыИРасходыВнереализационные = Новый Соответствие; Пока Выборка.Следующий() Цикл ПрочиеДоходыИРасходыВнереализационные.Вставить(Выборка.Ссылка, Истина); КонецЦикла; Возврат ПрочиеДоходыИРасходыВнереализационные; КонецФункции Функция ПолучитьПрочиеДоходыИРасходыИсключения() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПрочиеДоходыИРасходы.Ссылка КАК Ссылка |ИЗ | Справочник.ПрочиеДоходыИРасходы КАК ПрочиеДоходыИРасходы |ГДЕ | (ПрочиеДоходыИРасходы.ВидПрочихДоходовИРасходов = ЗНАЧЕНИЕ(Перечисление.ВидыПрочихДоходовИРасходов.КурсовыеРазницыПоРасчетамВУЕ) | ИЛИ ПрочиеДоходыИРасходы.ВидПрочихДоходовИРасходов = ЗНАЧЕНИЕ(Перечисление.ВидыПрочихДоходовИРасходов.НалогиИСборы) | ИЛИ ПрочиеДоходыИРасходы.ВидПрочихДоходовИРасходов = ЗНАЧЕНИЕ(Перечисление.ВидыПрочихДоходовИРасходов.РасходыПоПередачеТоваровБезвозмездноИДляСобственныхНужд))"; Выборка = Запрос.Выполнить().Выбрать(); ПрочиеДоходыИРасходыИсключения = Новый Соответствие; Пока Выборка.Следующий() Цикл ПрочиеДоходыИРасходыИсключения.Вставить(Выборка.Ссылка, Истина); КонецЦикла; Возврат ПрочиеДоходыИРасходыИсключения; КонецФункции // Раздельный учет НДС Процедура ОчиститьСубконтоСпособУчетаНДС(Проводки, Регистратор) Если ТипЗнч(Регистратор) = Тип("ДокументСсылка.ВводНачальныхОстатков") ИЛИ ТипЗнч(Регистратор) = Тип("ДокументСсылка.ОперацияБух") Тогда Возврат; КонецЕсли; ПустойСпособУчетаНДС = Перечисления.СпособыУчетаНДС.ПустаяСсылка(); ВидСубконтоСпособыУчетаНДС = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СпособыУчетаНДС; КэшУчетнойПолитики = Неопределено; Для Каждого Проводка Из Проводки Цикл РаздельныйУчетНДСНаСчете19 = ДанныеУчетнойПолитикиРаздельныйУчетНДСНаСчете19( Проводка.Организация, Проводка.Период, КэшУчетнойПолитики); Если РаздельныйУчетНДСНаСчете19 Тогда Продолжить; КонецЕсли; Для Каждого Субконто Из Проводка.СубконтоДт Цикл Если ВидСубконтоСпособыУчетаНДС = Субконто.Ключ И ЗначениеЗаполнено(Субконто.Значение) Тогда Проводка.СубконтоДт.Вставить(Субконто.Ключ, ПустойСпособУчетаНДС); КонецЕсли; КонецЦикла; Для Каждого Субконто Из Проводка.СубконтоКт Цикл Если ВидСубконтоСпособыУчетаНДС = Субконто.Ключ И ЗначениеЗаполнено(Субконто.Значение) Тогда Проводка.СубконтоКт.Вставить(Субконто.Ключ, ПустойСпособУчетаНДС); КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры Функция ДанныеУчетнойПолитикиРаздельныйУчетНДСНаСчете19(Организация, Период, Кэш = Неопределено) Если Кэш = Неопределено Тогда Кэш = Новый ТаблицаЗначений; Кэш.Колонки.Добавить("Организация", Новый ОписаниеТипов("СправочникСсылка.Организации")); Кэш.Колонки.Добавить("Период", Новый ОписаниеТипов("Дата")); Кэш.Колонки.Добавить("РаздельныйУчетНДСНаСчете19", Новый ОписаниеТипов("Булево")); Кэш.Индексы.Добавить("Организация,Период"); КонецЕсли; Поиск = Новый Структура; Поиск.Вставить("Организация", Организация); Поиск.Вставить("Период", Период); РезультатПоиска = Кэш.НайтиСтроки(Поиск); Если РезультатПоиска.Количество() = 0 Тогда НоваяСтрока = Кэш.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Поиск); Если УчетнаяПолитика.Существует(Организация, Период) Тогда НоваяСтрока.РаздельныйУчетНДСНаСчете19 = УчетнаяПолитика.РаздельныйУчетНДСНаСчете19(Организация, Период); Иначе НоваяСтрока.РаздельныйУчетНДСНаСчете19 = Ложь; КонецЕсли; РезультатПоиска.Добавить(НоваяСтрока); КонецЕсли; Возврат РезультатПоиска[0].РаздельныйУчетНДСНаСчете19; КонецФункции #КонецЕсли

AccountingRegisters/Хозрасчетный/Forms/ФормаСписка/Form/Module

//////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ И ФУНКЦИИ ФОРМЫ &НаСервере Процедура УстановитьУсловноеОформление() УсловноеОформление.Элементы.Очистить(); // Субконто Для Сч = 1 По 3 Цикл // Видимость СубконтоДт ЭлементУО = УсловноеОформление.Элементы.Добавить(); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "СписокСубконтоДт" + Сч); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.ВидСубконтоДт" + Сч, ВидСравненияКомпоновкиДанных.НеЗаполнено); ЭлементУО.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); // Выделение незаполненного СубконтоДт ЭлементУО = УсловноеОформление.Элементы.Добавить(); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "СписокСубконтоДт" + Сч); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.ВидСубконтоДт" + Сч, ВидСравненияКомпоновкиДанных.Заполнено); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.СубконтоДт" + Сч, ВидСравненияКомпоновкиДанных.НеЗаполнено); ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НеЗаполненноеСубконто); ЭлементУО.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<...>'")); // Видимость СубконтоКт ЭлементУО = УсловноеОформление.Элементы.Добавить(); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "СписокСубконтоКт" + Сч); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.ВидСубконтоКт" + Сч, ВидСравненияКомпоновкиДанных.НеЗаполнено); ЭлементУО.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); // Выделение незаполненного СубконтоКт ЭлементУО = УсловноеОформление.Элементы.Добавить(); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "СписокСубконтоКт" + Сч); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.ВидСубконтоКт" + Сч, ВидСравненияКомпоновкиДанных.Заполнено); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.СубконтоКт" + Сч, ВидСравненияКомпоновкиДанных.НеЗаполнено); ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НеЗаполненноеСубконто); ЭлементУО.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<...>'")); КонецЦикла; // Незаполненное ПодразделениеДт ЭлементУО = УсловноеОформление.Элементы.Добавить(); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "СписокПодразделениеДт"); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.СчетДтУчетПоПодразделениям", ВидСравненияКомпоновкиДанных.Равно, Истина); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.ПодразделениеДт", ВидСравненияКомпоновкиДанных.НеЗаполнено); ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НеЗаполненноеСубконто); ЭлементУО.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<...>'")); // Видимость ПодразделенияДт ЭлементУО = УсловноеОформление.Элементы.Добавить(); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "СписокПодразделениеДт"); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.СчетДтУчетПоПодразделениям", ВидСравненияКомпоновкиДанных.Равно, Ложь); ЭлементУО.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); // Незаполненное ПодразделениеКт ЭлементУО = УсловноеОформление.Элементы.Добавить(); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "СписокПодразделениеКт"); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.СчетКтУчетПоПодразделениям", ВидСравненияКомпоновкиДанных.Равно, Истина); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.ПодразделениеКт", ВидСравненияКомпоновкиДанных.НеЗаполнено); ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НеЗаполненноеСубконто); ЭлементУО.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<...>'")); // Видимость ПодразделениеКт ЭлементУО = УсловноеОформление.Элементы.Добавить(); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "СписокПодразделениеКт"); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.СчетКтУчетПоПодразделениям", ВидСравненияКомпоновкиДанных.Равно, Ложь); ЭлементУО.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); // КоличествоДт ЭлементУО = УсловноеОформление.Элементы.Добавить(); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "СписокКоличествоДт"); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "НадписьКоличествоДт"); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.СчетДтКоличественный", ВидСравненияКомпоновкиДанных.Равно, Ложь); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.СчетДтВалютный", ВидСравненияКомпоновкиДанных.Равно, Истина); ЭлементУО.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); // КоличествоКт ЭлементУО = УсловноеОформление.Элементы.Добавить(); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "СписокКоличествоКт"); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "НадписьКоличествоКт"); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.СчетКтКоличественный", ВидСравненияКомпоновкиДанных.Равно, Ложь); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.СчетКтВалютный", ВидСравненияКомпоновкиДанных.Равно, Истина); ЭлементУО.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); // СписокВалютаДт, СписокВалютнаяСуммаДт ЭлементУО = УсловноеОформление.Элементы.Добавить(); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "СписокВалютаДт"); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "СписокВалютнаяСуммаДт"); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.СчетДтВалютный", ВидСравненияКомпоновкиДанных.Равно, Ложь); ЭлементУО.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); // СписокВалютаКт, СписокВалютнаяСуммаКт ЭлементУО = УсловноеОформление.Элементы.Добавить(); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "СписокВалютаКт"); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "СписокВалютнаяСуммаКт"); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.СчетКтВалютный", ВидСравненияКомпоновкиДанных.Равно, Ложь); ЭлементУО.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); КонецПроцедуры &НаКлиенте Функция ПолучитьДокумент() ТекДанные = Элементы.Список.ТекущиеДанные; Если ТекДанные = Неопределено Тогда ПоказатьПредупреждение( , НСтр("ru = 'Не выбран документ'")); Возврат Неопределено; КонецЕсли; ТекДокумент = ТекДанные.Регистратор; Если НЕ ЗначениеЗаполнено(ТекДокумент) Тогда ПоказатьПредупреждение( , НСтр("ru = 'Не выбран документ'")); Возврат Неопределено; КонецЕсли; Возврат ТекДокумент; КонецФункции //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ФОРМЫ &НаСервере Процедура ПереключитьАктивностьПроводокСервер(Документ) БухгалтерскийУчет.ПереключитьАктивностьПроводокБУ(Документ); Элементы.Список.Обновить(); КонецПроцедуры &НаКлиенте Процедура ПереключитьАктивностьПроводок(Команда) ТекДокумент = ПолучитьДокумент(); Если ТекДокумент <> Неопределено Тогда ПереключитьАктивностьПроводокСервер(ТекДокумент); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) Если ТипЗнч(Элемент.ТекущиеДанные.Регистратор) = Тип("ДокументСсылка.ОперацияБух") Тогда СтандартнаяОбработка = Ложь; ПараметрыФормы = Новый Структура("ПараметрТекущаяСтрока,Ключ", Элемент.ТекущиеДанные.НомерСтроки, Элемент.ТекущиеДанные.Регистратор); ОткрытьФорму("Документ.ОперацияБух.ФормаОбъекта", ПараметрыФормы); КонецЕсли; КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОбщегоНазначенияБПВызовСервера.УстановитьОтборПоОсновнойОрганизации(ЭтаФорма); Список.Параметры.УстановитьЗначениеПараметра("НадписьНУ", НСтр("ru='НУ:'")); Список.Параметры.УстановитьЗначениеПараметра("НадписьПР", НСтр("ru='ПР:'")); Список.Параметры.УстановитьЗначениеПараметра("НадписьВР", НСтр("ru='ВР:'")); Список.Параметры.УстановитьЗначениеПараметра("НадписьКоличество", НСтр("ru='Кол:'")); ЕстьПлательщикиНалогаНаПрибыль = ПолучитьФункциональнуюОпцию("ПлательщикНалогаНаПрибыль"); ЕстьПрименяющиеПБУ18 = ПолучитьФункциональнуюОпцию("ПоддержкаПБУ18"); Элементы.СписокНадписьНУ.Видимость = ЕстьПлательщикиНалогаНаПрибыль; Элементы.СписокНадписьПР.Видимость = ЕстьПрименяющиеПБУ18; Элементы.СписокНадписьВР.Видимость = ЕстьПрименяющиеПБУ18; УстановитьУсловноеОформление(); КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ИмяСобытия = "ИзменениеОсновнойОрганизации" Тогда ОбщегоНазначенияБПКлиент.ИзменитьОтборПоОсновнойОрганизации(Список, , Параметр); КонецЕсли; КонецПроцедуры &НаСервере Процедура СписокПередЗагрузкойПользовательскихНастроекНаСервере(Элемент, Настройки) ОбщегоНазначенияБП.ВосстановитьОтборСписка(Список, Настройки, "Организация"); КонецПроцедуры

AccumulationRegisters/БухгалтерскиеВзаиморасчетыССотрудниками/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область СлужебныеПроцедурыИФункции #Область ПервоначальноеЗаполнениеИОбновлениеИнформационнойБазы // Заполняет регистр бухгалтерские взаиморасчеты с сотрудниками для тех типов ведомостей, которые // предполагают наличие отдельных документов, регистрирующих оплату ведомостей. Процедура ЗаполнитьБухгалтерскиеВзаиморасчетыПоОплатамВедомостей(ПараметрыОбновления = Неопределено) Экспорт Если Не ЗарплатаКадры.ИспользуютсяДокументыОплатыВедомостей() Тогда ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Истина); Возврат; КонецЕсли; ТипыВедомостейДляЗапроса = ТипыВедомостейДляОплатыИзРегистраторовВзаиморасчетов(); Если ТипыВедомостейДляЗапроса.Количество()=0 Тогда ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Истина); Возврат; КонецЕсли; УсловияПоТипамВедомостей = ""; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1000 | Взаиморасчеты.Регистратор КАК Регистратор, | Взаиморасчеты.Период |ПОМЕСТИТЬ | ВТРегистраторыПустые |ИЗ | РегистрНакопления.ВзаиморасчетыССотрудниками КАК Взаиморасчеты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОплатаВедомостейНаВыплатуЗарплаты КАК ОплатаВедомостей | ПО ОплатаВедомостей.Ведомость = Взаиморасчеты.Регистратор | И ОплатаВедомостей.Организация = Взаиморасчеты.Организация | И ОплатаВедомостей.ФизическоеЛицо = Взаиморасчеты.ФизическоеЛицо | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.БухгалтерскиеВзаиморасчетыССотрудниками КАК БухгалтерскиеВзаиморасчеты | ПО | ОплатаВедомостей.Регистратор = БухгалтерскиеВзаиморасчеты.Регистратор | И БухгалтерскиеВзаиморасчеты.Организация = Взаиморасчеты.Организация | И БухгалтерскиеВзаиморасчеты.ФизическоеЛицо = Взаиморасчеты.ФизическоеЛицо | И БухгалтерскиеВзаиморасчеты.СтатьяФинансирования = Взаиморасчеты.СтатьяФинансирования | И БухгалтерскиеВзаиморасчеты.СтатьяРасходов = Взаиморасчеты.СтатьяРасходов | И БухгалтерскиеВзаиморасчеты.Сотрудник = Взаиморасчеты.Сотрудник | И БухгалтерскиеВзаиморасчеты.Подразделение = Взаиморасчеты.Подразделение |ГДЕ | БухгалтерскиеВзаиморасчеты.Регистратор ЕСТЬ NULL"; Запрос.Текст = Запрос.Текст + " | И ("; Для Каждого ТипВедомости Из ТипыВедомостейДляЗапроса Цикл УсловияПоТипамВедомостей = УсловияПоТипамВедомостей + ?(УсловияПоТипамВедомостей="", " | Взаиморасчеты.Регистратор ССЫЛКА Документ." + Метаданные.НайтиПоТипу(ТипВедомости).Имя, " | ИЛИ Взаиморасчеты.Регистратор ССЫЛКА Документ." + Метаданные.НайтиПоТипу(ТипВедомости).Имя); КонецЦикла; Запрос.Текст = Запрос.Текст + УсловияПоТипамВедомостей + " | ) | |УПОРЯДОЧИТЬ ПО | Взаиморасчеты.Период УБЫВ; | |ВЫБРАТЬ РАЗЛИЧНЫЕ | Ведомости.Ведомость КАК Регистратор |ПОМЕСТИТЬ | ВТРегистраторы |ИЗ | ВТРегистраторыПустые КАК РегистраторыПустые | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОплатаВедомостейНаВыплатуЗарплаты КАК ОплатаВедомостей | ПО ОплатаВедомостей.Ведомость = РегистраторыПустые.Регистратор | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОплатаВедомостейНаВыплатуЗарплаты КАК Ведомости | ПО ОплатаВедомостей.Регистратор = Ведомости.Регистратор; | |ВЫБРАТЬ ПЕРВЫЕ 1 | Регистраторы.Регистратор |ИЗ | ВТРегистраторы КАК Регистраторы"; РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Истина); Возврат; Иначе ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Ложь); КонецЕсли; // Подготовим массив типов регистраторов для расходных движений, которые реально есть в данных. Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | ТИПЗНАЧЕНИЯ(ОплатаВедомостей.Регистратор) КАК ТипРегистратора |ИЗ | РегистрНакопления.ВзаиморасчетыССотрудниками КАК Взаиморасчеты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТРегистраторы КАК Регистраторы | ПО Регистраторы.Регистратор = Взаиморасчеты.Регистратор | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОплатаВедомостейНаВыплатуЗарплаты КАК ОплатаВедомостей | ПО ОплатаВедомостей.Ведомость = Взаиморасчеты.Регистратор | И ОплатаВедомостей.Организация = Взаиморасчеты.Организация | И ОплатаВедомостей.ФизическоеЛицо = Взаиморасчеты.ФизическоеЛицо |СГРУППИРОВАТЬ ПО | ТИПЗНАЧЕНИЯ(ОплатаВедомостей.Регистратор)"; ТипыРегистраторовРасхода = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ТипРегистратора"); Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | ОплатаВедомостей.Регистратор КАК Регистратор, | ВЫБОР"; Для Каждого ТипРегистратора Из ТипыРегистраторовРасхода Цикл МетаданныеДокумента = Метаданные.НайтиПоТипу(ТипРегистратора); ИспользоватьДатуПлатежа = МетаданныеДокумента.Реквизиты.Найти("ДатаПлатежа")<>Неопределено; ИмяМетаданных = МетаданныеДокумента.ПолноеИмя(); Запрос.Текст = Запрос.Текст + СтрШаблон(" | КОГДА ОплатаВедомостей.Регистратор ССЫЛКА %1 | ТОГДА ВЫРАЗИТЬ(ОплатаВедомостей.Регистратор КАК %1).%2", ИмяМетаданных, ?(ИспользоватьДатуПлатежа, "ДатаПлатежа", "Дата")); КонецЦикла; Запрос.Текст = Запрос.Текст + " | КОНЕЦ КАК Период,"; Запрос.Текст = Запрос.Текст + " | Взаиморасчеты.Период КАК ПериодРегистраВзаиморасчеты, | Взаиморасчеты.* |ИЗ | РегистрНакопления.ВзаиморасчетыССотрудниками КАК Взаиморасчеты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТРегистраторы КАК Регистраторы | ПО Регистраторы.Регистратор = Взаиморасчеты.Регистратор | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОплатаВедомостейНаВыплатуЗарплаты КАК ОплатаВедомостей | ПО ОплатаВедомостей.Ведомость = Взаиморасчеты.Регистратор | И ОплатаВедомостей.Организация = Взаиморасчеты.Организация | И ОплатаВедомостей.ФизическоеЛицо = Взаиморасчеты.ФизическоеЛицо |ГДЕ | НЕ ОплатаВедомостей.Регистратор ЕСТЬ NULL |УПОРЯДОЧИТЬ ПО | ВЫБОР | КОГДА Взаиморасчеты.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) | ТОГДА ОплатаВедомостей.Регистратор | ИНАЧЕ Взаиморасчеты.Регистратор | КОНЕЦ"; ВыборкаПоРегистраторам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ПространствоБлокировки = "РегистрНакопления.БухгалтерскиеВзаиморасчетыССотрудниками.НаборЗаписей"; ПолеБлокировки = "Регистратор"; Пока ВыборкаПоРегистраторам.СледующийПоЗначениюПоля("Регистратор") Цикл ТекущийРегистратор = ВыборкаПоРегистраторам.Регистратор; Если Не ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПодготовитьОбновлениеДанных(ПараметрыОбновления, ПространствоБлокировки, ПолеБлокировки, ТекущийРегистратор) Тогда Продолжить; КонецЕсли; БухгалтерскиеВзаиморасчеты = РегистрыНакопления.БухгалтерскиеВзаиморасчетыССотрудниками.СоздатьНаборЗаписей(); БухгалтерскиеВзаиморасчеты.Отбор.Регистратор.Установить(ТекущийРегистратор); Пока ВыборкаПоРегистраторам.Следующий() Цикл НовыйБухВзаиморасчет = БухгалтерскиеВзаиморасчеты.Добавить(); ЗаполнитьЗначенияСвойств(НовыйБухВзаиморасчет, ВыборкаПоРегистраторам, , "Период,НомерСтроки"); Если ЗначениеЗаполнено(ВыборкаПоРегистраторам.Период) Тогда ПериодДляЗаписиРегистраБухВзаиморасчеты = ВыборкаПоРегистраторам.Период; Иначе ПериодДляЗаписиРегистраБухВзаиморасчеты = ВыборкаПоРегистраторам.ПериодРегистраВзаиморасчеты; ЗаписьЖурналаРегистрации(НСтр("ru = 'Обновление информационной базы.Битая ссылка на документ-регистратор'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Предупреждение, , ТекущийРегистратор, ПространствоБлокировки); КонецЕсли; НовыйБухВзаиморасчет.Период = ПериодДляЗаписиРегистраБухВзаиморасчеты; КонецЦикла; БухгалтерскиеВзаиморасчеты.ОбменДанными.Загрузка = Истина; БухгалтерскиеВзаиморасчеты.ОбменДанными.Получатели.Очистить(); БухгалтерскиеВзаиморасчеты.ОбменДанными.Получатели.АвтоЗаполнение = Ложь; БухгалтерскиеВзаиморасчеты.Записать(); ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбновлениеДанных(ПараметрыОбновления); КонецЦикла; КонецПроцедуры // Заполняет регистр бухгалтерские взаиморасчеты с сотрудниками для всех типов документов, кроме // тех ведомостей, которые предполагают наличие отдельных документов, регистрирующих оплату ведомостей. Процедура ЗаполнитьБухгалтерскиеВзаиморасчетыКромеПоОплатамВедомостей(ПараметрыОбновления = Неопределено) Экспорт ТипыВедомостейДляЗапроса = ТипыВедомостейДляОплатыИзРегистраторовВзаиморасчетов(); ОграничитьТипыДокументов = ТипыВедомостейДляЗапроса.Количество()>0 И ЗарплатаКадры.ИспользуютсяДокументыОплатыВедомостей(); МенеджерВТ = Новый МенеджерВременныхТаблиц; // Создадим ВТ с очередной порцией документов-регистраторов, не являющихся документами (ведомостями), // оплата которых регистрируется отдельными специальными документами. Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1000 | Взаиморасчеты.Регистратор КАК Регистратор, | Взаиморасчеты.Период |ПОМЕСТИТЬ | ВТРегистраторыПустые |ИЗ | РегистрНакопления.ВзаиморасчетыССотрудниками КАК Взаиморасчеты | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.БухгалтерскиеВзаиморасчетыССотрудниками КАК БухгалтерскиеВзаиморасчеты | ПО БухгалтерскиеВзаиморасчеты.Регистратор = Взаиморасчеты.Регистратор | И БухгалтерскиеВзаиморасчеты.Организация = Взаиморасчеты.Организация | И БухгалтерскиеВзаиморасчеты.ФизическоеЛицо = Взаиморасчеты.ФизическоеЛицо | И БухгалтерскиеВзаиморасчеты.СтатьяФинансирования = Взаиморасчеты.СтатьяФинансирования | И БухгалтерскиеВзаиморасчеты.СтатьяРасходов = Взаиморасчеты.СтатьяРасходов | И БухгалтерскиеВзаиморасчеты.Сотрудник = Взаиморасчеты.Сотрудник | И БухгалтерскиеВзаиморасчеты.Подразделение = Взаиморасчеты.Подразделение |ГДЕ | БухгалтерскиеВзаиморасчеты.Регистратор ЕСТЬ NULL"; Если ОграничитьТипыДокументов Тогда УсловияПоТипамВедомостей = ""; Запрос.Текст = Запрос.Текст + " | И НЕ ("; Для Каждого ТипВедомости Из ТипыВедомостейДляЗапроса Цикл УсловияПоТипамВедомостей = УсловияПоТипамВедомостей + ?(УсловияПоТипамВедомостей="", " | Взаиморасчеты.Регистратор ССЫЛКА Документ." + Метаданные.НайтиПоТипу(ТипВедомости).Имя, " | ИЛИ Взаиморасчеты.Регистратор ССЫЛКА Документ." + Метаданные.НайтиПоТипу(ТипВедомости).Имя); КонецЦикла; Запрос.Текст = Запрос.Текст + УсловияПоТипамВедомостей + " | )"; КонецЕсли; // Добавим запрос, который позволит определить, есть ли в ВТ данные. Запрос.Текст = Запрос.Текст + " | |УПОРЯДОЧИТЬ ПО | Взаиморасчеты.Период УБЫВ; | |ВЫБРАТЬ РАЗЛИЧНЫЕ | РегистраторыПустые.Регистратор КАК Регистратор |ПОМЕСТИТЬ | ВТРегистраторы |ИЗ | ВТРегистраторыПустые КАК РегистраторыПустые; | |ВЫБРАТЬ ПЕРВЫЕ 1 | Регистраторы.Регистратор |ИЗ | ВТРегистраторы КАК Регистраторы"; РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Истина); Возврат; Иначе ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Ложь); КонецЕсли; // Подготовим массив типов регистраторов для расходных движений, которые реально есть в данных. Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | ТИПЗНАЧЕНИЯ(Взаиморасчеты.Регистратор) КАК ТипРегистратора |ИЗ | РегистрНакопления.ВзаиморасчетыССотрудниками КАК Взаиморасчеты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТРегистраторы КАК Регистраторы | ПО Регистраторы.Регистратор = Взаиморасчеты.Регистратор |ГДЕ | Взаиморасчеты.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) |СГРУППИРОВАТЬ ПО | ТИПЗНАЧЕНИЯ(Взаиморасчеты.Регистратор)"; ТипыРегистраторовРасхода = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ТипРегистратора"); Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | Взаиморасчеты.Регистратор КАК Регистратор,"; Если ТипыРегистраторовРасхода.Количество()=0 Тогда Запрос.Текст = Запрос.Текст + " | КОНЕЦПЕРИОДА(Взаиморасчеты.Период, Месяц) КАК Период,"; Иначе Запрос.Текст = Запрос.Текст + " | ВЫБОР | КОГДА Взаиморасчеты.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) | ТОГДА | ВЫБОР"; Для Каждого ТипРегистратора Из ТипыРегистраторовРасхода Цикл ИмяМетаданных = Метаданные.НайтиПоТипу(ТипРегистратора).ПолноеИмя(); Запрос.Текст = Запрос.Текст + " | КОГДА Взаиморасчеты.Регистратор ССЫЛКА " + ИмяМетаданных + " | ТОГДА ВЫРАЗИТЬ(Взаиморасчеты.Регистратор КАК " + ИмяМетаданных + ").Дата"; КонецЦикла; Запрос.Текст = Запрос.Текст + " | КОНЕЦ | ИНАЧЕ КОНЕЦПЕРИОДА(Взаиморасчеты.Период, Месяц) | КОНЕЦ КАК Период,"; КонецЕсли; Запрос.Текст = Запрос.Текст + " | Взаиморасчеты.Период КАК ПериодРегистраВзаиморасчеты, | Взаиморасчеты.* |ИЗ | РегистрНакопления.ВзаиморасчетыССотрудниками КАК Взаиморасчеты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТРегистраторы КАК Регистраторы | ПО Регистраторы.Регистратор = Взаиморасчеты.Регистратор |УПОРЯДОЧИТЬ ПО | Взаиморасчеты.Регистратор"; ВыборкаПоРегистраторам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ПространствоБлокировки = "РегистрНакопления.БухгалтерскиеВзаиморасчетыССотрудниками.НаборЗаписей"; ПолеБлокировки = "Регистратор"; Пока ВыборкаПоРегистраторам.СледующийПоЗначениюПоля("Регистратор") Цикл ТекущийРегистратор = ВыборкаПоРегистраторам.Регистратор; ИмяТипаРегистратора = Метаданные.НайтиПоТипу(ТипЗнч(ТекущийРегистратор)).Имя; Если Не ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПодготовитьОбновлениеДанных(ПараметрыОбновления, ПространствоБлокировки, ПолеБлокировки, ТекущийРегистратор) Тогда Продолжить; КонецЕсли; БухгалтерскиеВзаиморасчеты = РегистрыНакопления.БухгалтерскиеВзаиморасчетыССотрудниками.СоздатьНаборЗаписей(); БухгалтерскиеВзаиморасчеты.Отбор.Регистратор.Установить(ТекущийРегистратор); Пока ВыборкаПоРегистраторам.Следующий() Цикл НовыйБухВзаиморасчет = БухгалтерскиеВзаиморасчеты.Добавить(); ЗаполнитьЗначенияСвойств(НовыйБухВзаиморасчет, ВыборкаПоРегистраторам, , "Период,НомерСтроки"); Если ЗначениеЗаполнено(ВыборкаПоРегистраторам.Период) Тогда ПериодДляЗаписиРегистраБухВзаиморасчеты = ВыборкаПоРегистраторам.Период; Иначе ПериодДляЗаписиРегистраБухВзаиморасчеты = ВыборкаПоРегистраторам.ПериодРегистраВзаиморасчеты; ЗаписьЖурналаРегистрации(НСтр("ru = 'Обновление информационной базы.Битая ссылка на документ-регистратор'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Предупреждение, , ТекущийРегистратор, ПространствоБлокировки); КонецЕсли; Если ИмяТипаРегистратора="НачальнаяЗадолженностьПоЗарплате" И ВыборкаПоРегистраторам.ВидДвижения=ВидДвиженияНакопления.Приход Тогда НовыйБухВзаиморасчет.Период = НачалоМесяца(ПериодДляЗаписиРегистраБухВзаиморасчеты) - 1; Иначе НовыйБухВзаиморасчет.Период = ПериодДляЗаписиРегистраБухВзаиморасчеты; КонецЕсли; КонецЦикла; БухгалтерскиеВзаиморасчеты.ОбменДанными.Загрузка = Истина; БухгалтерскиеВзаиморасчеты.ОбменДанными.Получатели.Очистить(); БухгалтерскиеВзаиморасчеты.ОбменДанными.Получатели.АвтоЗаполнение = Ложь; БухгалтерскиеВзаиморасчеты.Записать(); ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбновлениеДанных(ПараметрыОбновления); КонецЦикла; КонецПроцедуры #КонецОбласти Функция ТипыВедомостейДляОплатыИзРегистраторовВзаиморасчетов() ТипыВедомостейДляОплаты = Метаданные.РегистрыСведений.ОплатаВедомостейНаВыплатуЗарплаты.Измерения.Ведомость.Тип.Типы(); НаборЗаписей = РегистрыНакопления.ВзаиморасчетыССотрудниками.СоздатьНаборЗаписей(); ТипыРегистраторовВзаиморасчетов = НаборЗаписей.Отбор.Регистратор.ТипЗначения.Типы(); ТипыВедомостей = Новый Массив; Для Каждого ТипВедомостиДляОплаты Из ТипыВедомостейДляОплаты Цикл Если ТипыРегистраторовВзаиморасчетов.Найти(ТипВедомостиДляОплаты)<>Неопределено Тогда ТипыВедомостей.Добавить(ТипВедомостиДляОплаты); КонецЕсли; КонецЦикла; Возврат ТипыВедомостей; КонецФункции #КонецОбласти #КонецЕсли

AccumulationRegisters/БухгалтерскиеВзаиморасчетыССотрудниками/RecordSetModule

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

AccumulationRegisters/ВзаиморасчетыСДепонентами/ManagerModule

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

AccumulationRegisters/ВзаиморасчетыСДепонентами/RecordSetModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ОбработчикиСобытий Процедура ПередЗаписью(Отказ, Замещение) Если ЗарплатаКадры.ОтключитьБизнесЛогикуПриЗаписи(ЭтотОбъект) Тогда Возврат; КонецЕсли; ПроверитьПоложительностьСуммПоКлючу(Отказ); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции Процедура ПроверитьПоложительностьСуммПоКлючу(Отказ) ПоляКлюча = "ВидДвижения, Организация, Ведомость, ФизическоеЛицо"; Депоненты = ЭтотОбъект.Выгрузить(, ПоляКлюча +","+ "Сумма"); Депоненты.Свернуть(ПоляКлюча, "Сумма"); Для Каждого Депонент Из Депоненты Цикл Если Депонент.Сумма < 0 Тогда СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='Отрицательный %1 для %2, %3, %4'"), НРег(ВидДвиженияНакопления.Приход), Депонент.Организация, Депонент.Ведомость, Депонент.ФизическоеЛицо); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СообщениеОбОшибке, , , , Отказ); КонецЕсли; КонецЦикла; КонецПроцедуры #КонецОбласти #КонецЕсли

AccumulationRegisters/ВзаиморасчетыССотрудниками/ManagerModule

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

AccumulationRegisters/ВзаиморасчетыССотрудниками/RecordSetModule

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

AccumulationRegisters/ВыпускПродукцииУслуг/RecordSetModule

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

AccumulationRegisters/ВыпускПродукцииУслуг/Forms/ФормаСписка/Form/Module

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

AccumulationRegisters/ВыработкаМатериалов/RecordSetModule



AccumulationRegisters/ВыработкаНМА/RecordSetModule



AccumulationRegisters/ВыработкаОС/RecordSetModule



AccumulationRegisters/ЗарплатаКВыплате/ManagerModule

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

AccumulationRegisters/ЗарплатаКВыплате/RecordSetModule

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

AccumulationRegisters/ЗарплатаКВыплатеАвансом/ManagerModule



AccumulationRegisters/ЗарплатаКВыплатеАвансом/RecordSetModule

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

AccumulationRegisters/ИмущественныеВычетыНДФЛ/RecordSetModule



AccumulationRegisters/ИПДоходы/RecordSetModule



AccumulationRegisters/ИПИныеМатериальныеРасходы/RecordSetModule



AccumulationRegisters/ИПМПЗ/RecordSetModule



AccumulationRegisters/ИПМПЗОбороты/RecordSetModule



AccumulationRegisters/ИПМПЗОтгруженные/RecordSetModule



AccumulationRegisters/ИППрочиеДоходы/RecordSetModule



AccumulationRegisters/ИППрочиеРасходы/ManagerModule

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

AccumulationRegisters/ИППрочиеРасходы/RecordSetModule



AccumulationRegisters/ИПРасходыНаОплатуТруда/RecordSetModule



AccumulationRegisters/ИПРБП/RecordSetModule



AccumulationRegisters/ИсчисленныеСтраховыеВзносы/RecordSetModule



AccumulationRegisters/КнигаУчетаДоходовИРасходов/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ОбновлениеИнформационнойБазы Процедура ЗаполнитьДоговорКонтрагентаОтложенно(Параметры) Экспорт Запрос = Новый Запрос; КонецПериодаВыборки = '29991231235959'; Если Параметры.Свойство("КонецПериодаВыборки") И ТипЗнч(Параметры.КонецПериодаВыборки) = Тип("Дата") Тогда КонецПериодаВыборки = Параметры.КонецПериодаВыборки; КонецЕсли; СсылкаНаПоследнийДокумент = Документы.ДокументРасчетовСКонтрагентом.ПустаяСсылка(); Если Параметры.Свойство("СсылкаНаПоследнийДокумент") Тогда СсылкаНаПоследнийДокумент = Параметры.СсылкаНаПоследнийДокумент; КонецЕсли; Запрос.УстановитьПараметр("КонецПериодаВыборки", КонецПериодаВыборки); Запрос.УстановитьПараметр("СсылкаНаПоследнийДокумент", СсылкаНаПоследнийДокумент); // Движения документов "Отчет о розничных продажах" не обновляем, // их невозможно постфактум разделить по договорам. // Такие документы потребуется первый раз перепровести полностью, чтобы правильно разделить строки по договорам. Запрос.Текст = "ВЫБРАТЬ | НастройкиСистемыНалогообложения.Организация КАК Организация, | НастройкиСистемыНалогообложения.Период КАК ДатаНачала, | МИНИМУМ(ДОБАВИТЬКДАТЕ(ЕСТЬNULL(НастройкиСистемыНалогообложенияСледующая.Период, ДАТАВРЕМЯ(2999, 12, 31)), СЕКУНДА, -1)) КАК ДатаОкончания |ПОМЕСТИТЬ ВТ_ПериодыУСНДоходы |ИЗ | РегистрСведений.НастройкиСистемыНалогообложения КАК НастройкиСистемыНалогообложения | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиСистемыНалогообложения КАК НастройкиСистемыНалогообложенияСледующая | ПО НастройкиСистемыНалогообложения.Организация = НастройкиСистемыНалогообложенияСледующая.Организация | И НастройкиСистемыНалогообложения.Период < НастройкиСистемыНалогообложенияСледующая.Период |ГДЕ | НастройкиСистемыНалогообложения.ПрименяетсяУСНДоходы | |СГРУППИРОВАТЬ ПО | НастройкиСистемыНалогообложения.Организация, | НастройкиСистемыНалогообложения.Период | |ИНДЕКСИРОВАТЬ ПО | Организация, | ДатаНачала, | ДатаОкончания |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ ПЕРВЫЕ 1000 | КнигаУчетаДоходовИРасходов.Регистратор КАК Регистратор, | МИНИМУМ(КнигаУчетаДоходовИРасходов.Период) КАК Период |ПОМЕСТИТЬ ВТ_Документы |ИЗ | ВТ_ПериодыУСНДоходы КАК ВТ_ПериодыУСНДоходы | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.КнигаУчетаДоходовИРасходов КАК КнигаУчетаДоходовИРасходов | ПО ВТ_ПериодыУСНДоходы.Организация = КнигаУчетаДоходовИРасходов.Организация | И (КнигаУчетаДоходовИРасходов.Период МЕЖДУ ВТ_ПериодыУСНДоходы.ДатаНачала И ВТ_ПериодыУСНДоходы.ДатаОкончания) | И (КнигаУчетаДоходовИРасходов.ДоговорКонтрагента = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)) | И (КнигаУчетаДоходовИРасходов.Период < &КонецПериодаВыборки | ИЛИ КнигаУчетаДоходовИРасходов.Период = &КонецПериодаВыборки | И КнигаУчетаДоходовИРасходов.Регистратор < &СсылкаНаПоследнийДокумент) |ГДЕ | НЕ КнигаУчетаДоходовИРасходов.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах | |СГРУППИРОВАТЬ ПО | КнигаУчетаДоходовИРасходов.Регистратор | |УПОРЯДОЧИТЬ ПО | Период УБЫВ, | Регистратор УБЫВ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_Документы.Регистратор КАК Регистратор, | ВТ_Документы.Период КАК Период, | ХозрасчетныйСубконто.Значение КАК ДоговорКонтрагента |ПОМЕСТИТЬ ВТ_ДоговорыПоДокументам |ИЗ | ВТ_Документы КАК ВТ_Документы | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК ХозрасчетныйСубконто | ПО ВТ_Документы.Регистратор = ХозрасчетныйСубконто.Регистратор | И ВТ_Документы.Период = ХозрасчетныйСубконто.Период | И (ХозрасчетныйСубконто.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры)) |ГДЕ | НЕ ХозрасчетныйСубконто.Значение ЕСТЬ NULL | |ИНДЕКСИРОВАТЬ ПО | ДоговорКонтрагента |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ДоговорыПоДокументам.Период КАК Период, | ВТ_ДоговорыПоДокументам.Регистратор КАК Регистратор, | МАКСИМУМ(ВЫБОР | КОГДА ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем) | ТОГДА ДоговорыКонтрагентов.Владелец | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) | КОНЕЦ) КАК Покупатель, | МАКСИМУМ(ВЫБОР | КОГДА ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем) | ТОГДА ДоговорыКонтрагентов.Ссылка | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) | КОНЕЦ) КАК ДоговорСПокупателем, | МАКСИМУМ(ВЫБОР | КОГДА ДоговорыКонтрагентов.ВидДоговора <> ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем) | ТОГДА ДоговорыКонтрагентов.Владелец | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) | КОНЕЦ) КАК ДругойКонтрагент, | МАКСИМУМ(ВЫБОР | КОГДА ДоговорыКонтрагентов.ВидДоговора <> ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем) | ТОГДА ДоговорыКонтрагентов.Ссылка | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) | КОНЕЦ) КАК ДоговорДругогоКонтрагента, | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДоговорыКонтрагентов.Ссылка) КАК КоличествоДоговоров |ИЗ | ВТ_ДоговорыПоДокументам КАК ВТ_ДоговорыПоДокументам | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов | ПО ВТ_ДоговорыПоДокументам.ДоговорКонтрагента = ДоговорыКонтрагентов.Ссылка | |СГРУППИРОВАТЬ ПО | ВТ_ДоговорыПоДокументам.Период, | ВТ_ДоговорыПоДокументам.Регистратор | |УПОРЯДОЧИТЬ ПО | Период УБЫВ, | Регистратор УБЫВ"; УстановитьПривилегированныйРежим(Истина); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Параметры.ОбработкаЗавершена = Истина; Возврат; КонецЕсли; Параметры.ОбработкаЗавершена = Ложь; ПроблемныхОбъектов = 0; ОбъектовОбработано = 0; ВыборкаПоДокументам = РезультатЗапроса.Выбрать(); Пока ВыборкаПоДокументам.Следующий() Цикл Попытка ЗаполнитьДоговорКонтрагентаПоДокументу(ВыборкаПоДокументам); ОбъектовОбработано = ОбъектовОбработано + 1; КонецПериодаВыборки = ВыборкаПоДокументам.Период; // Запоминаем дату, с которой будем начинать в следующий раз. СсылкаНаПоследнийДокумент = ВыборкаПоДокументам.Регистратор; Исключение // Если не удалось обработать какой-либо документ, повторяем попытку снова. ПроблемныхОбъектов = ПроблемныхОбъектов + 1; ТекстСообщения = СтрШаблон( НСтр("ru = 'Не удалось обработать %1 по причине: |%2'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), ВыборкаПоДокументам.Регистратор, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации( ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, Метаданные.РегистрыНакопления.КнигаУчетаДоходовИРасходов, ВыборкаПоДокументам.Регистратор, ТекстСообщения); КонецПопытки; КонецЦикла; // Запоминаем дату, с которой будем начинать в следующий раз. Параметры.Вставить("КонецПериодаВыборки", КонецПериодаВыборки); Параметры.Вставить("СсылкаНаПоследнийДокумент", СсылкаНаПоследнийДокумент); Если ОбъектовОбработано = 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Процедуре РегистрыНакопления.КнигаУчетаДоходовИРасходов.ЗаполнитьДоговорКонтрагентаОтложенно() |не удалось обработать некоторые регистраторы (пропущены): %1'"), ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации( ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, Метаданные.РегистрыНакопления.КнигаУчетаДоходовИРасходов, , СтрШаблон(НСтр("ru = 'Процедура РегистрыНакопления.КнигаУчетаДоходовИРасходов.ЗаполнитьДоговорКонтрагентаОтложенно() |обработала очередную порцию записей регистра КУДиР: %1 документов'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), ОбъектовОбработано)); КонецЕсли; КонецПроцедуры Процедура ЗаполнитьДоговорКонтрагентаПоДокументу(ВыборкаПоДокументам) // Заполняем в регистре КнигаУчетаДоходовИРасходов реквизиты Контрагент и Договоров в случаях: // 1. Если в бухгалтерских проводках документа встречается только один договор. // 2. Для документов РеализацияТоваровУслуг и КорректировкаРеализации при продаже комиссионных товаров/услуг // могут встречаться несколько договоров с комитентами и договор с покупателем, заполняем договором с покупателем. Контрагент = Неопределено; ДоговорКонтрагента = Неопределено; ТипРегистратора = ТипЗнч(ВыборкаПоДокументам.Регистратор); Если ТипРегистратора = Тип("ДокументСсылка.РеализацияТоваровУслуг") ИЛИ ТипРегистратора = Тип("ДокументСсылка.КорректировкаРеализации") Тогда Контрагент = ВыборкаПоДокументам.Покупатель; ДоговорКонтрагента = ВыборкаПоДокументам.ДоговорСПокупателем; ИначеЕсли ВыборкаПоДокументам.КоличествоДоговоров = 1 Тогда Если ЗначениеЗаполнено(ВыборкаПоДокументам.Покупатель) Тогда Контрагент = ВыборкаПоДокументам.Покупатель; ДоговорКонтрагента = ВыборкаПоДокументам.ДоговорСПокупателем; Иначе Контрагент = ВыборкаПоДокументам.ДругойКонтрагент; ДоговорКонтрагента = ВыборкаПоДокументам.ДоговорДругогоКонтрагента; КонецЕсли; КонецЕсли; Если НЕ ЗначениеЗаполнено(Контрагент) ИЛИ НЕ ЗначениеЗаполнено(ДоговорКонтрагента) Тогда Возврат; КонецЕсли; НачатьТранзакцию(); Попытка // Блокируем объект от изменения другими сеансами. Блокировка = Новый БлокировкаДанных; ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.КнигаУчетаДоходовИРасходов.НаборЗаписей"); ЭлементБлокировки.УстановитьЗначение("Регистратор", ВыборкаПоДокументам.Регистратор); Блокировка.Заблокировать(); // Заполним в наборе регистра реквизиты Контрагент и ДоговорКонтрагента, если они еще не были заполнены в другом сеансе. НаборЗаписей = РегистрыНакопления.КнигаУчетаДоходовИРасходов.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаПоДокументам.Регистратор); НаборЗаписей.Прочитать(); Для Каждого Движение Из НаборЗаписей Цикл Если НЕ ЗначениеЗаполнено(Движение.ДоговорКонтрагента) Тогда Движение.Контрагент = Контрагент; Движение.ДоговорКонтрагента = ДоговорКонтрагента; КонецЕсли; КонецЦикла; Если НаборЗаписей.Модифицированность() Тогда ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписей); КонецЕсли; ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ВызватьИсключение; КонецПопытки; КонецПроцедуры #КонецОбласти #КонецЕсли

AccumulationRegisters/КнигаУчетаДоходовИРасходов/RecordSetModule



AccumulationRegisters/КнигаУчетаДоходовИРасходов/Forms/ФормаСписка/Form/Module

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

AccumulationRegisters/КнигаУчетаДоходовИРасходовНМА/RecordSetModule



AccumulationRegisters/КнигаУчетаДоходовИРасходовНМА/Forms/ФормаСписка/Form/Module

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

AccumulationRegisters/КнигаУчетаДоходовИРасходовОС/RecordSetModule



AccumulationRegisters/КнигаУчетаДоходовИРасходовОС/Forms/ФормаСписка/Form/Module

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

AccumulationRegisters/КнигаУчетаДоходовИРасходовРаздел5/ManagerModule



AccumulationRegisters/КнигаУчетаДоходовПатент/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ОбновлениеИнформационнойБазы Процедура ЗаполнитьДоговорКонтрагентаОтложенно(Параметры) Экспорт Запрос = Новый Запрос; КонецПериодаВыборки = '29991231235959'; Если Параметры.Свойство("КонецПериодаВыборки") И ТипЗнч(Параметры.КонецПериодаВыборки) = Тип("Дата") Тогда КонецПериодаВыборки = Параметры.КонецПериодаВыборки; КонецЕсли; СсылкаНаПоследнийДокумент = Документы.ДокументРасчетовСКонтрагентом.ПустаяСсылка(); Если Параметры.Свойство("СсылкаНаПоследнийДокумент") Тогда СсылкаНаПоследнийДокумент = Параметры.СсылкаНаПоследнийДокумент; КонецЕсли; Запрос.УстановитьПараметр("КонецПериодаВыборки", КонецПериодаВыборки); Запрос.УстановитьПараметр("СсылкаНаПоследнийДокумент", СсылкаНаПоследнийДокумент); // Движения документов "Отчет о розничных продажах" не обновляем, // их невозможно постфактум разделить по договорам. // Такие документы потребуется первый раз перепровести полностью, чтобы правильно разделить строки по договорам. Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1000 | КнигаУчетаДоходовПатент.Регистратор КАК Регистратор, | МИНИМУМ(КнигаУчетаДоходовПатент.Период) КАК Период |ПОМЕСТИТЬ ВТ_Документы |ИЗ | РегистрНакопления.КнигаУчетаДоходовПатент КАК КнигаУчетаДоходовПатент |ГДЕ | НЕ КнигаУчетаДоходовПатент.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах | И КнигаУчетаДоходовПатент.ДоговорКонтрагента = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) | И (КнигаУчетаДоходовПатент.Период < &КонецПериодаВыборки | ИЛИ КнигаУчетаДоходовПатент.Период = &КонецПериодаВыборки | И КнигаУчетаДоходовПатент.Регистратор < &СсылкаНаПоследнийДокумент) | |СГРУППИРОВАТЬ ПО | КнигаУчетаДоходовПатент.Регистратор | |УПОРЯДОЧИТЬ ПО | Период УБЫВ, | Регистратор УБЫВ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_Документы.Регистратор КАК Регистратор, | ВТ_Документы.Период КАК Период, | ХозрасчетныйСубконто.Значение КАК ДоговорКонтрагента |ПОМЕСТИТЬ ВТ_ДоговорыПоДокументам |ИЗ | ВТ_Документы КАК ВТ_Документы | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК ХозрасчетныйСубконто | ПО ВТ_Документы.Регистратор = ХозрасчетныйСубконто.Регистратор | И ВТ_Документы.Период = ХозрасчетныйСубконто.Период | И (ХозрасчетныйСубконто.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры)) |ГДЕ | НЕ ХозрасчетныйСубконто.Значение ЕСТЬ NULL | |ИНДЕКСИРОВАТЬ ПО | ДоговорКонтрагента |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ДоговорыПоДокументам.Период КАК Период, | ВТ_ДоговорыПоДокументам.Регистратор КАК Регистратор, | МАКСИМУМ(ВЫБОР | КОГДА ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем) | ТОГДА ДоговорыКонтрагентов.Владелец | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) | КОНЕЦ) КАК Покупатель, | МАКСИМУМ(ВЫБОР | КОГДА ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем) | ТОГДА ДоговорыКонтрагентов.Ссылка | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) | КОНЕЦ) КАК ДоговорСПокупателем, | МАКСИМУМ(ВЫБОР | КОГДА ДоговорыКонтрагентов.ВидДоговора <> ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем) | ТОГДА ДоговорыКонтрагентов.Владелец | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) | КОНЕЦ) КАК ДругойКонтрагент, | МАКСИМУМ(ВЫБОР | КОГДА ДоговорыКонтрагентов.ВидДоговора <> ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем) | ТОГДА ДоговорыКонтрагентов.Ссылка | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) | КОНЕЦ) КАК ДоговорДругогоКонтрагента, | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДоговорыКонтрагентов.Ссылка) КАК КоличествоДоговоров |ИЗ | ВТ_ДоговорыПоДокументам КАК ВТ_ДоговорыПоДокументам | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов | ПО ВТ_ДоговорыПоДокументам.ДоговорКонтрагента = ДоговорыКонтрагентов.Ссылка | |СГРУППИРОВАТЬ ПО | ВТ_ДоговорыПоДокументам.Период, | ВТ_ДоговорыПоДокументам.Регистратор | |УПОРЯДОЧИТЬ ПО | Период УБЫВ, | Регистратор УБЫВ"; УстановитьПривилегированныйРежим(Истина); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Параметры.ОбработкаЗавершена = Истина; Возврат; КонецЕсли; Параметры.ОбработкаЗавершена = Ложь; ПроблемныхОбъектов = 0; ОбъектовОбработано = 0; ВыборкаПоДокументам = РезультатЗапроса.Выбрать(); Пока ВыборкаПоДокументам.Следующий() Цикл Попытка ЗаполнитьДоговорКонтрагентаПоДокументу(ВыборкаПоДокументам); ОбъектовОбработано = ОбъектовОбработано + 1; КонецПериодаВыборки = ВыборкаПоДокументам.Период; // Запоминаем дату, с которой будем начинать в следующий раз. СсылкаНаПоследнийДокумент = ВыборкаПоДокументам.Регистратор; Исключение // Если не удалось обработать какой-либо документ, повторяем попытку снова. ПроблемныхОбъектов = ПроблемныхОбъектов + 1; ТекстСообщения = СтрШаблон( НСтр("ru = 'Не удалось обработать %1 по причине: |%2'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), ВыборкаПоДокументам.Регистратор, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации( ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, Метаданные.РегистрыНакопления.КнигаУчетаДоходовПатент, ВыборкаПоДокументам.Регистратор, ТекстСообщения); КонецПопытки; КонецЦикла; // Запоминаем дату, с которой будем начинать в следующий раз. Параметры.Вставить("КонецПериодаВыборки", КонецПериодаВыборки); Параметры.Вставить("СсылкаНаПоследнийДокумент", СсылкаНаПоследнийДокумент); Если ОбъектовОбработано = 0 Тогда ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Процедуре РегистрыНакопления.КнигаУчетаДоходовПатент.ЗаполнитьДоговорКонтрагентаОтложенно() |не удалось обработать некоторые регистраторы (пропущены): %1'"), ПроблемныхОбъектов); ВызватьИсключение ТекстСообщения; Иначе ЗаписьЖурналаРегистрации( ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, Метаданные.РегистрыНакопления.КнигаУчетаДоходовПатент, , СтрШаблон(НСтр("ru = 'Процедура РегистрыНакопления.КнигаУчетаДоходовПатент.ЗаполнитьДоговорКонтрагентаОтложенно() |обработала очередную порцию записей регистра КУДиР: %1 документов'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), ОбъектовОбработано)); КонецЕсли; КонецПроцедуры Процедура ЗаполнитьДоговорКонтрагентаПоДокументу(ВыборкаПоДокументам) // Заполняем в регистре КнигаУчетаДоходовПатент реквизиты Контрагент и Договоров в случаях: // 1. Если в бухгалтерских проводках документа встречается только один договор. // 2. Для документов РеализацияТоваровУслуг и КорректировкаРеализации при продаже комиссионных товаров/услуг // могут встречаться несколько договоров с комитентами и договор с покупателем, заполняем договором с покупателем. Контрагент = Неопределено; ДоговорКонтрагента = Неопределено; ТипРегистратора = ТипЗнч(ВыборкаПоДокументам.Регистратор); Если ТипРегистратора = Тип("ДокументСсылка.РеализацияТоваровУслуг") ИЛИ ТипРегистратора = Тип("ДокументСсылка.КорректировкаРеализации") Тогда Контрагент = ВыборкаПоДокументам.Покупатель; ДоговорКонтрагента = ВыборкаПоДокументам.ДоговорСПокупателем; ИначеЕсли ВыборкаПоДокументам.КоличествоДоговоров = 1 Тогда Если ЗначениеЗаполнено(ВыборкаПоДокументам.Покупатель) Тогда Контрагент = ВыборкаПоДокументам.Покупатель; ДоговорКонтрагента = ВыборкаПоДокументам.ДоговорСПокупателем; Иначе Контрагент = ВыборкаПоДокументам.ДругойКонтрагент; ДоговорКонтрагента = ВыборкаПоДокументам.ДоговорДругогоКонтрагента; КонецЕсли; КонецЕсли; Если НЕ ЗначениеЗаполнено(Контрагент) ИЛИ НЕ ЗначениеЗаполнено(ДоговорКонтрагента) Тогда Возврат; КонецЕсли; НачатьТранзакцию(); Попытка // Блокируем объект от изменения другими сеансами. Блокировка = Новый БлокировкаДанных; ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.КнигаУчетаДоходовПатент.НаборЗаписей"); ЭлементБлокировки.УстановитьЗначение("Регистратор", ВыборкаПоДокументам.Регистратор); Блокировка.Заблокировать(); // Заполним в наборе регистра реквизиты Контрагент и ДоговорКонтрагента, если они еще не были заполнены в другом сеансе. НаборЗаписей = РегистрыНакопления.КнигаУчетаДоходовПатент.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаПоДокументам.Регистратор); НаборЗаписей.Прочитать(); Для Каждого Движение Из НаборЗаписей Цикл Если НЕ ЗначениеЗаполнено(Движение.ДоговорКонтрагента) Тогда Движение.Контрагент = Контрагент; Движение.ДоговорКонтрагента = ДоговорКонтрагента; КонецЕсли; КонецЦикла; Если НаборЗаписей.Модифицированность() Тогда ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписей); КонецЕсли; ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ВызватьИсключение; КонецПопытки; КонецПроцедуры #КонецОбласти #КонецЕсли

AccumulationRegisters/КнигаУчетаДоходовПатент/Forms/ФормаСписка/Form/Module

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

AccumulationRegisters/НачисленияУдержанияПоСотрудникам/ManagerModule

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

AccumulationRegisters/НДСАвансыПоДоговорамКомиссии/RecordSetModule



AccumulationRegisters/НДСВключенныйВСтоимость/RecordSetModule



AccumulationRegisters/НДСЗаписиКнигиПокупок/RecordSetModule

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

AccumulationRegisters/НДСЗаписиКнигиПродаж/RecordSetModule

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

AccumulationRegisters/НДСКосвенныеРасходы/RecordSetModule



AccumulationRegisters/НДСНачисленный/RecordSetModule



AccumulationRegisters/НДСПоПриобретеннымЦенностям/RecordSetModule



AccumulationRegisters/НДСПредъявленный/RecordSetModule

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

AccumulationRegisters/НДСПредъявленныйРеализация0/RecordSetModule



AccumulationRegisters/НДСРаздельныйУчет/RecordSetModule



AccumulationRegisters/НДСРеализация0/RecordSetModule



AccumulationRegisters/НДСсАвансов/RecordSetModule



AccumulationRegisters/ОплатаСчетов/ManagerModule



AccumulationRegisters/ОплатыНМАДляУСН/RecordSetModule



AccumulationRegisters/ОплатыОСДляУСН/Commands/ЗарегистрированныеОплатыОСУСН/CommandModule

 &НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) ПараметрыФормы = Новый Структура("Отбор", Новый Структура("ОсновноеСредство", ПараметрКоманды)); ОткрытьФорму("РегистрНакопления.ОплатыОСДляУСН.ФормаСписка", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); КонецПроцедуры

AccumulationRegisters/ОплатыОСДляУСН/RecordSetModule



AccumulationRegisters/ОстаткиАлкогольнойПродукцииЕГАИС/ManagerModule

 #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область СлужебныйПрограммныйИнтерфейс // Записывает движения документа в регистр. // Процедура ОтразитьДвижения(ДополнительныеСвойства, Движения, Отказ) Экспорт Таблица = ДополнительныеСвойства.ТаблицыДляДвижений.ТаблицаОстаткиАлкогольнойПродукцииЕГАИС; Если Отказ Или Таблица.Количество() = 0 Тогда Возврат; КонецЕсли; СтрокиБезПериода = Таблица.НайтиСтроки(Новый Структура("Период", '00010101')); Если СтрокиБезПериода.Количество() > 0 И ДополнительныеСвойства.Свойство("ДляПроведения") Тогда ДатаДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДополнительныеСвойства.ДляПроведения.Ссылка, "Дата"); Для Каждого СтрокаЗаписи ИЗ СтрокиБезПериода Цикл СтрокаЗаписи.Период = ДатаДокумента; КонецЦикла; КонецЕсли; ДвиженияОстаткиАлкогольнойПродукцииЕГАИС = Движения.ОстаткиАлкогольнойПродукцииЕГАИС; ДвиженияОстаткиАлкогольнойПродукцииЕГАИС.Записывать = Истина; ДвиженияОстаткиАлкогольнойПродукцииЕГАИС.Загрузить(Таблица); КонецПроцедуры #КонецОбласти #Область ОбновлениеИнформационнойБазы Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт ПолноеИмяРегистра = "РегистрНакопления.ОстаткиАлкогольнойПродукцииЕГАИС"; ИмяРегистра = "ОстаткиАлкогольнойПродукцииЕГАИС"; // Акт постановки на баланс ТекстЗапросаМеханизмаПроведения = Документы.АктПостановкиНаБалансЕГАИС.АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра); Регистраторы = ОбновлениеИнформационнойБазыЕГАИС.РегистраторыДляПерепроведения( ТекстЗапросаМеханизмаПроведения, ПолноеИмяРегистра, "Документ.АктПостановкиНаБалансЕГАИС"); ОбновлениеИнформационнойБазы.ОтметитьРегистраторыКОбработке(Параметры, Регистраторы, ПолноеИмяРегистра); // Акт списания ТекстЗапросаМеханизмаПроведения = Документы.АктСписанияЕГАИС.АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра); Регистраторы = ОбновлениеИнформационнойБазыЕГАИС.РегистраторыДляПерепроведения( ТекстЗапросаМеханизмаПроведения, ПолноеИмяРегистра, "Документ.АктСписанияЕГАИС"); ОбновлениеИнформационнойБазы.ОтметитьРегистраторыКОбработке(Параметры, Регистраторы, ПолноеИмяРегистра); // Возврат из регистра №2 ТекстЗапросаМеханизмаПроведения = Документы.ВозвратИзРегистра2ЕГАИС.АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра); Регистраторы = ОбновлениеИнформационнойБазыЕГАИС.РегистраторыДляПерепроведения( ТекстЗапросаМеханизмаПроведения, ПолноеИмяРегистра, "Документ.ВозвратИзРегистра2ЕГАИС"); ОбновлениеИнформационнойБазы.ОтметитьРегистраторыКОбработке(Параметры, Регистраторы, ПолноеИмяРегистра); // Запрос остатков ТекстЗапросаМеханизмаПроведения = Документы.ОстаткиЕГАИС.АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра); Регистраторы = ОбновлениеИнформационнойБазыЕГАИС.РегистраторыДляПерепроведения( ТекстЗапросаМеханизмаПроведения, ПолноеИмяРегистра, "Документ.ОстаткиЕГАИС"); ОбновлениеИнформационнойБазы.ОтметитьРегистраторыКОбработке(Параметры, Регистраторы, ПолноеИмяРегистра); // Передача в регистр №2 ТекстЗапросаМеханизмаПроведения = Документы.ПередачаВРегистр2ЕГАИС.АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра); Регистраторы = ОбновлениеИнформационнойБазыЕГАИС.РегистраторыДляПерепроведения( ТекстЗапросаМеханизмаПроведения, ПолноеИмяРегистра, "Документ.ПередачаВРегистр2ЕГАИС"); ОбновлениеИнформационнойБазы.ОтметитьРегистраторыКОбработке(Параметры, Регистраторы, ПолноеИмяРегистра); // Входящая ТТН ТекстЗапросаМеханизмаПроведения = Документы.ТТНВходящаяЕГАИС.АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра); Регистраторы = ОбновлениеИнформационнойБазыЕГАИС.РегистраторыДляПерепроведения( ТекстЗапросаМеханизмаПроведения, ПолноеИмяРегистра, "Документ.ТТНВходящаяЕГАИС"); ОбновлениеИнформационнойБазы.ОтметитьРегистраторыКОбработке(Параметры, Регистраторы, ПолноеИмяРегистра); // Исходящая ТТН ТекстЗапросаМеханизмаПроведения = Документы.ТТНИсходящаяЕГАИС.АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра); Регистраторы = ОбновлениеИнформационнойБазыЕГАИС.РегистраторыДляПерепроведения( ТекстЗапросаМеханизмаПроведения, ПолноеИмяРегистра, "Документ.ТТНИсходящаяЕГАИС"); ОбновлениеИнформационнойБазы.ОтметитьРегистраторыКОбработке(Параметры, Регистраторы, ПолноеИмяРегистра); КонецПроцедуры Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт Регистраторы = Новый Массив; Регистраторы.Добавить("Документ.АктПостановкиНаБалансЕГАИС"); Регистраторы.Добавить("Документ.АктСписанияЕГАИС"); Регистраторы.Добавить("Документ.ВозвратИзРегистра2ЕГАИС"); Регистраторы.Добавить("Документ.ОстаткиЕГАИС"); Регистраторы.Добавить("Документ.ПередачаВРегистр2ЕГАИС"); Регистраторы.Добавить("Документ.ТТНВходящаяЕГАИС"); Регистраторы.Добавить("Документ.ТТНИсходящаяЕГАИС"); ОбработкаЗавершена = ОбновлениеИнформационнойБазыЕГАИС.ПерезаписатьДвиженияИзОчереди( Регистраторы, "РегистрНакопления.ОстаткиАлкогольнойПродукцииЕГАИС", Параметры.Очередь); Параметры.ОбработкаЗавершена = ОбработкаЗавершена; КонецПроцедуры #КонецОбласти #КонецЕсли

AccumulationRegisters/ОтработанноеВремяПоСотрудникам/ManagerModule



AccumulationRegisters/ПособияПоСоциальномуСтрахованию/RecordSetModule



AccumulationRegisters/ПособияПоУходуЗаРебенком/RecordSetModule



AccumulationRegisters/ПрочиеРасчеты/ManagerModule

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

AccumulationRegisters/ПрочиеРасчеты/RecordSetModule

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

AccumulationRegisters/РасходыНаОнлайнКассыУменьшающиеНалоги/ManagerModule

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

AccumulationRegisters/РасходыПриУСН/ManagerModule

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

AccumulationRegisters/РасходыПриУСН/RecordSetModule



AccumulationRegisters/РасходыУменьшающиеНалогПоОтдельнымРежимам/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс // Возвращает сумму расходов, уменьшающих налог по ЕНВД. // // Параметры: // Организация - СправочникСсылка.Организации - головная организация. // Период - Дата - период рассчета ЕНВД. // РегистрацияВНалоговомОргане - Массив - массив с регистрациями по которым необходимо получить расходы. // - СправочникСсылка.РегистрацияВНалоговомОргане - регистрация по которой необходимо получить расходы. // // Возвращаемое значение: // Структура - описание см. в НоваяСтруктураРасходовЕНВД() // Функция РасходыЕНВДЗаКвартал(Организация, Период, РегистрацияВНалоговомОргане = Неопределено) Экспорт СтруктураРасходов = НоваяСтруктураРасходовЕНВД(); НачалоПериода = НачалоКвартала(Период); КонецПериода = КонецКвартала(Период); Если Не УчетнаяПолитика.ПлательщикЕНВДЗаПериод(Организация, НачалоПериода, КонецПериода) Тогда Возврат СтруктураРасходов; КонецЕсли; Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ | РасходыУменьшающиеНалогПоОтдельнымРежимамОбороты.СчетУчета, | РасходыУменьшающиеНалогПоОтдельнымРежимамОбороты.СуммаРасходаЕНВДОборот КАК СуммаРасходаЕНВД |ИЗ | РегистрНакопления.РасходыУменьшающиеНалогПоОтдельнымРежимам.Обороты( | &НачалоПериода, | &КонецПериода, | , | Организация = &Организация | И &УсловиеПоРегистрацииВНалоговомОргане) КАК РасходыУменьшающиеНалогПоОтдельнымРежимамОбороты"; Если ЗначениеЗаполнено(РегистрацияВНалоговомОргане) Тогда Если ТипЗнч(РегистрацияВНалоговомОргане) = Тип("Массив") Тогда РегистрацииВНалоговыхОрганах = РегистрацияВНалоговомОргане; Иначе РегистрацииВНалоговыхОрганах = Новый Массив; РегистрацииВНалоговыхОрганах.Добавить(РегистрацияВНалоговомОргане); КонецЕсли; Запрос.УстановитьПараметр("РегистрацииВНалоговыхОрганах", РегистрацииВНалоговыхОрганах); УсловиеПоРегистрацииВНалоговомОргане = "РегистрацияВНалоговомОргане В(&РегистрацииВНалоговыхОрганах)"; Иначе УсловиеПоРегистрацииВНалоговомОргане = "ИСТИНА"; КонецЕсли; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеПоРегистрацииВНалоговомОргане", УсловиеПоРегистрацииВНалоговомОргане); Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода); Запрос.УстановитьПараметр("КонецПериода", КонецПериода); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат СтруктураРасходов; КонецЕсли; ТаблицаСчетов = УчетРасходовУменьшающихОтдельныеНалоги.СчетаРасходовУменьшающихНалог(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл СтрокиТаблицыСчетов = ТаблицаСчетов.НайтиСтроки(Новый Структура("СчетУчета", Выборка.СчетУчета)); Если СтрокиТаблицыСчетов.Количество() <> 0 Тогда ВидРасхода = СтрокиТаблицыСчетов[0].ВидРасходов; Если СтруктураРасходов.Свойство(ВидРасхода) Тогда СтруктураРасходов[ВидРасхода]= СтруктураРасходов[ВидРасхода] + Выборка.СуммаРасходаЕНВД; КонецЕсли; Иначе СтруктураРасходов["ДобровольноеСтрахование"]= СтруктураРасходов["ДобровольноеСтрахование"] + Выборка.СуммаРасходаЕНВД; КонецЕсли; КонецЦикла; Возврат СтруктураРасходов; КонецФункции #КонецОбласти #Область СлужебныеПроцедурыИФункции Функция НоваяСтруктураРасходовЕНВД() СтруктураРасходов = Новый Структура; СтруктураРасходов.Вставить("СтраховыеВзносы", 0); СтруктураРасходов.Вставить("ФиксированныеВзносыИП", 0); СтруктураРасходов.Вставить("Больничные", 0); СтруктураРасходов.Вставить("ДобровольноеСтрахование", 0); Возврат СтруктураРасходов; КонецФункции #КонецОбласти #КонецЕсли

AccumulationRegisters/РасчетыНалогоплательщиковСБюджетомПоНДФЛ/RecordSetModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ОбработчикиСобытий Процедура ПередЗаписью(Отказ, Замещение) Если ЗарплатаКадры.ОтключитьБизнесЛогикуПриЗаписи(ЭтотОбъект) Тогда Возврат; КонецЕсли; Если ЭтотОбъект.Количество() = 0 Тогда Возврат КонецЕсли; Регистратор = ЭтотОбъект.Отбор.Регистратор.Значение; Для Каждого СтрокаНабора Из ЭтотОбъект Цикл Если СтрокаНабора.ВидДвижения = ВидДвиженияНакопления.Приход Тогда Если Не ЗначениеЗаполнено(СтрокаНабора.ДокументОснование) Тогда СтрокаНабора.ДокументОснование = Регистратор; КонецЕсли; ИначеЕсли СтрокаНабора.ВариантУдержания = Перечисления.ВариантыУдержанияНДФЛ.ЗачетАвансовыхПлатежей Тогда СтрокаНабора.ДокументОснование = Регистратор ИначеЕсли СтрокаНабора.ВариантУдержания = Перечисления.ВариантыУдержанияНДФЛ.ВозвращеноНалоговымАгентом Тогда СтрокаНабора.КрайнийСрокУплаты = '00010101' КонецЕсли; КонецЦикла; УчетНДФЛ.ПроставитьКрайнийСрокУплаты(ЭтотОбъект); КонецПроцедуры #КонецОбласти #КонецЕсли

AccumulationRegisters/РасчетыСФондамиПоСтраховымВзносам/RecordSetModule

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

AccumulationRegisters/РеализацияУслуг/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда Функция ТребуетсяСчетРасходовПоОказаниюУслуг(Период, Организация) Экспорт Если Не УчетнаяПолитика.ОказаниеУслуг(Организация, Период) Тогда Возврат Ложь; КонецЕсли; ПорядокСписания = УчетнаяПолитика.ПорядокСписанияРасходовНаСебестоимостьУслуг(Организация, Период); Возврат ПорядокСписания = Перечисления.ПорядокСписанияРасходовНаСебестоимостьУслуг.СУчетомВыручки; КонецФункции Процедура ДобавитьДвижения(НаборЗаписей, Услуги, Выручка, Реквизиты) Экспорт Если Не ЗначениеЗаполнено(Услуги) Или Не ЗначениеЗаполнено(Реквизиты) Тогда Возврат; КонецЕсли; // Собственно добавление движений - в ДобавитьДвиженияПоВалидированнымДанным() // Здесь - только валидация исходных данных ОписаниеТаблиц = ОбщегоНазначенияБПВызовСервера.НовыйОписаниеТаблицПараметровПроведения(); // Услуги Описание = ОбщегоНазначенияБПВызовСервера.ДобавитьОписаниеТаблицыПараметровПроведения( ОписаниеТаблиц, "Услуги", Услуги); Если Выручка <> Неопределено Тогда Описание.Колонки.Добавить("ИмяСписка"); Описание.Колонки.Добавить("НомерСтроки"); КонецЕсли; Описание.Колонки.Добавить("НоменклатурнаяГруппа"); Описание.Колонки.Добавить("СчетРасходов"); Описание.Колонки.Добавить("Сумма"); // Выручка Описание = ОбщегоНазначенияБПВызовСервера.ДобавитьОписаниеТаблицыПараметровПроведения( ОписаниеТаблиц, "Выручка", Выручка); Описание.Колонки.Добавить("ИмяСписка"); Описание.Колонки.Добавить("НомерСтроки"); Описание.Колонки.Добавить("СуммаБУ"); Описание.Колонки.Добавить("СуммаНДСРуб"); // Реквизиты Описание = ОбщегоНазначенияБПВызовСервера.ДобавитьОписаниеТаблицыПараметровПроведения( ОписаниеТаблиц, "Реквизиты", Реквизиты); Описание.Колонки.Добавить("Период"); // <Дата> - период движений - дата документа Описание.Колонки.Добавить("Организация"); // <СправочникСсылка.Организации> Описание.Колонки.Добавить("Подразделение"); // <СправочникСсылка.ПодразделенияОрганизаций> - обособленное подразделение, по которому отражена выручка ОписаниеТаблиц.Добавить(Описание); // Компонуем вместе Параметры = ОбщегоНазначенияБПВызовСервера.ПодготовитьТаблицыПараметрыПроведения(ОписаниеТаблиц); // Собственно формирование движений ДобавитьДвиженияПоВалидированнымДанным( НаборЗаписей, Параметры.Услуги, Параметры.Выручка, Параметры.Реквизиты[0]); КонецПроцедуры Процедура ДобавитьДвиженияПоВалидированнымДанным(НаборЗаписей, Услуги, Выручка, Реквизиты) // Уточним сумму выручки в соответствии с курсами аванса Если Выручка.Количество() > 0 Тогда КлючевыеПоля = "ИмяСписка, НомерСтроки"; Услуги.Индексы.Добавить(КлючевыеПоля); Отбор = Новый Структура(КлючевыеПоля); Для Каждого СтрокаВыручка Из Выручка Цикл ЗаполнитьЗначенияСвойств(Отбор, СтрокаВыручка); Для Каждого СтрокаУслуги Из Услуги.НайтиСтроки(Отбор) Цикл СтрокаУслуги.Сумма = СтрокаВыручка.СуммаБУ - СтрокаВыручка.СуммаНДСРуб; КонецЦикла; КонецЦикла; КонецЕсли; // Дополним набор записей Для Каждого СтрокаУслуги Из Услуги Цикл Запись = НаборЗаписей.Добавить(); ЗаполнитьЗначенияСвойств(Запись, Реквизиты, "Период, Организация, Подразделение"); ЗаполнитьЗначенияСвойств(Запись, СтрокаУслуги, "СчетРасходов, НоменклатурнаяГруппа, Сумма"); КонецЦикла; НаборЗаписей.Записывать = Истина; КонецПроцедуры #КонецЕсли

AccumulationRegisters/РеализацияУслуг/RecordSetModule



AccumulationRegisters/РеализованныеТоварыКомитентов/RecordSetModule



AccumulationRegisters/СведенияОДоходахНДФЛ/RecordSetModule



AccumulationRegisters/СведенияОДоходахСтраховыеВзносы/RecordSetModule



AccumulationRegisters/УдалитьВзаиморасчетыСДепонентамиОрганизаций/RecordSetModule



AccumulationRegisters/УдалитьВзаиморасчетыСРаботникамиОрганизаций/RecordSetModule



AccumulationRegisters/УдалитьЕСНИсчисленный/RecordSetModule



AccumulationRegisters/УдалитьЕСНСведенияОДоходах/RecordSetModule



AccumulationRegisters/УдалитьНДФЛИмущественныеВычетыФизлиц/RecordSetModule



AccumulationRegisters/УдалитьНДФЛКЗачету/RecordSetModule



AccumulationRegisters/УдалитьНДФЛРасчетыСБюджетом/RecordSetModule



AccumulationRegisters/УдалитьНДФЛСведенияОДоходах/RecordSetModule



AccumulationRegisters/УдалитьПособияПоУходуЗаРебенкомДоПолутораЛет/RecordSetModule



AccumulationRegisters/УдалитьПособияСоциальномуСтрахованию/RecordSetModule



AccumulationRegisters/УдалитьРасчетыПоСтраховымВзносам/RecordSetModule



AccumulationRegisters/УдалитьСтраховыеВзносыСведенияОДоходах/RecordSetModule



Catalogs/АвансовыйОтчетПрисоединенныеФайлы/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс // Возвращает список реквизитов, которые разрешается редактировать // с помощью обработки группового изменения объектов. // Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); КонецФункции #КонецОбласти #КонецЕсли

Catalogs/АвансовыйОтчетПрисоединенныеФайлы/ObjectModule



Catalogs/АктОбОказанииПроизводственныхУслугПрисоединенныеФайлы/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс // Возвращает список реквизитов, которые разрешается редактировать // с помощью обработки группового изменения объектов. // Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); КонецФункции #КонецОбласти #КонецЕсли

Catalogs/АктОбОказанииПроизводственныхУслугПрисоединенныеФайлы/ObjectModule



Catalogs/АктСверкиВзаиморасчетовПрисоединенныеФайлы/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс // Возвращает список реквизитов, которые разрешается редактировать // с помощью обработки группового изменения объектов. // Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); КонецФункции #КонецОбласти #КонецЕсли

Catalogs/АктСверкиВзаиморасчетовПрисоединенныеФайлы/ObjectModule



Catalogs/Банки/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс // СтандартныеПодсистемы.ВерсионированиеОбъектов // Определяет настройки объекта для подсистемы ВерсионированиеОбъектов. // // Параметры: // Настройки - Структура - настройки подсистемы. Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт КонецПроцедуры // Функция получает таблицу ссылок на банки по Коду или корреспондетскому счету. // // Параметры: // Поле - Строка - Имя поля (Код или КоррСчет) // Значение - Строка - Значение Код или Корреспондентского счета // Валютный - Булево - Банковский счет является Валютным. По умолчанию - Ложь // ТаможенныйСоюз - Булево - Владелец банковского счета резидент таможенного союза. По умолчанию - Ложь // // Возвращаемое значение: // ТаблицаЗначений - Найденые банки // Функция ПолучитьТаблицуБанковПоРеквизитам(Поле, Значение, Валютный = Ложь, ТаможенныйСоюз = Ложь) Экспорт ТаблицаБанков = Новый ТаблицаЗначений; Колонки = ТаблицаБанков.Колонки; Колонки.Добавить("Ссылка"); Колонки.Добавить("Код"); Колонки.Добавить("КоррСчет"); Колонки.Добавить("Наименование"); ЭтоКод = Ложь; ЭтоКоррСчет = Ложь; Если СтрНайти(Поле, "Код") <> 0 Тогда ЭтоКод = Истина; ИначеЕсли СтрНайти(Поле, "КоррСчет") <> 0 Тогда ЭтоКоррСчет = Истина; КонецЕсли; Если ЭтоКод И (СтрДлина(Значение) = 9 ИЛИ Валютный ИЛИ ТаможенныйСоюз) ИЛИ ЭтоКоррСчет И (СтрДлина(Значение) = 20 ИЛИ Валютный ИЛИ ТаможенныйСоюз) Тогда Если ЭтоКод Тогда СтруктураОтбора = Новый Структура("Код", Значение, Ложь); ИначеЕсли ЭтоКоррСчет Тогда СтруктураОтбора = Новый Структура("КоррСчет", Значение, Ложь); КонецЕсли; Выборка = Справочники.Банки.Выбрать(,, СтруктураОтбора, "Код Возр"); Пока Выборка.Следующий() Цикл Если НЕ Выборка.ЭтоГруппа Тогда НоваяСтрока = ТаблицаБанков.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка); КонецЕсли; КонецЦикла; Если ТаблицаБанков.Количество() = 0 И НЕ (Валютный ИЛИ ТаможенныйСоюз) Тогда ДобавитьБанкиИзКлассификатора( ?(ЭтоКод, Значение, ""), // Код ?(ЭтоКоррСчет, Значение, ""), // КоррСчет ТаблицаБанков ); КонецЕсли; КонецЕсли; Возврат ТаблицаБанков; КонецФункции Функция СсылкаНаБанк(БИК, ЭтоРегион = Ложь) Экспорт Если ПустаяСтрока(БИК) Тогда Возврат Справочники.Банки.ПустаяСсылка(); КонецЕсли; УстановитьПривилегированныйРежим(Истина); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Банки.Ссылка |ИЗ | Справочник.Банки КАК Банки |ГДЕ | Банки.Код = &БИК | И Банки.ЭтоГруппа = &ЭтоГруппа"; Запрос.УстановитьПараметр("БИК", БИК); Запрос.УстановитьПараметр("ЭтоГруппа", ЭтоРегион); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Возврат Справочники.Банки.ПустаяСсылка(); КонецЕсли; Возврат Результат.Выгрузить()[0].Ссылка; КонецФункции Функция СсылкаНаБанкПоСВИФТБИК(СВИФТБИК) Экспорт Если ПустаяСтрока(СВИФТБИК) Тогда Возврат Справочники.Банки.ПустаяСсылка(); КонецЕсли; УстановитьПривилегированныйРежим(Истина); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Банки.Ссылка |ИЗ | Справочник.Банки КАК Банки |ГДЕ | Банки.СВИФТБИК = &СВИФТБИК | И НЕ Банки.ЭтоГруппа"; Запрос.УстановитьПараметр("СВИФТБИК", СВИФТБИК); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Возврат Справочники.Банки.ПустаяСсылка(); КонецЕсли; Возврат Результат.Выгрузить()[0].Ссылка; КонецФункции Процедура ОбновитьБанкиИзКлассификатора(СтруктураПараметров, АдресХранилища) Экспорт МассивБанков = Новый Массив(); ДанныеДляЗаполнения = Новый Структура(); УспешноОбновлены = РаботаСБанкамиБП.ОбновитьБанкиИзКлассификатора(, ОбщегоНазначения.ЗначениеРазделителяСеанса()); ДанныеДляЗаполнения.Вставить("УспешноОбновлены", УспешноОбновлены); ПоместитьВоВременноеХранилище(ДанныеДляЗаполнения, АдресХранилища); КонецПроцедуры Функция СтранаПоSWIFT(СВИФТБИК) Экспорт КодСтраны = БанковскиеПравила.КодСтраныSWIFT(СВИФТБИК); Запрос = Новый Запрос; Запрос.УстановитьПараметр("КодАльфа2", КодСтраны); Запрос.Текст = "ВЫБРАТЬ | СтраныМира.Ссылка |ИЗ | Справочник.СтраныМира КАК СтраныМира |ГДЕ | СтраныМира.КодАльфа2 = &КодАльфа2"; Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Возврат Выборка.Ссылка; Иначе ВсеСтраны = УправлениеКонтактнойИнформацией.ТаблицаКлассификатора(); ВсеСтраны.Индексы.Добавить("КодАльфа2"); ОписаниеСтраны = ВсеСтраны.Найти(КодСтраны); Если ОписаниеСтраны <> Неопределено Тогда Страна = Справочники.СтраныМира.СоздатьЭлемент(); ЗаполнитьЗначенияСвойств(Страна, ОписаниеСтраны); Страна.Записать(); Возврат Страна.Ссылка; Иначе Возврат Справочники.СтраныМира.Россия; КонецЕсли; КонецЕсли; КонецФункции #КонецОбласти #Область СлужебныеПроцедурыИФункции // Функция формирует результат запроса по классификатору банков // с отбором по Код, корреспондентскому счету, наименованию или городу. // // Параметры: // Код - Строка (9) - Код банка // КорСчет - Строка (20) - Корреспондентский счет банка // // Возвращаемое значение: // РезультатЗапроса - Результат запроса по классификатору. // Функция ПолучитьРезультатЗапросаПоКлассификатору(Код, КоррСчет) Если ПустаяСтрока(Код) И ПустаяСтрока(КоррСчет) Тогда Запрос = Новый Запрос; Возврат Запрос.Выполнить().Выбрать(); КонецЕсли; ПостроительЗапроса = Новый ПостроительЗапроса; ПостроительЗапроса.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | КлассификаторБанков.Код КАК Код, | КлассификаторБанков.Наименование, | КлассификаторБанков.КоррСчет, | КлассификаторБанков.Город, | КлассификаторБанков.Адрес, | КлассификаторБанков.Ссылка |ИЗ | Справочник.КлассификаторБанков КАК КлассификаторБанков |ГДЕ | НЕ КлассификаторБанков.ЭтоГруппа |{ГДЕ | КлассификаторБанков.Код, | КлассификаторБанков.КоррСчет} |{УПОРЯДОЧИТЬ ПО | Наименование}"; Отбор = ПостроительЗапроса.Отбор; Если ЗначениеЗаполнено(Код) Тогда Отбор.Добавить("Код"); Отбор.Код.Значение = СокрЛП(Код); Отбор.Код.ВидСравнения = ВидСравнения.Содержит; Отбор.Код.Использование = Истина; КонецЕсли; Если ЗначениеЗаполнено(КоррСчет) Тогда Отбор.Добавить("КоррСчет"); Отбор.КоррСчет.Значение = СокрЛП(КоррСчет); Отбор.КоррСчет.ВидСравнения = ВидСравнения.Содержит; Отбор.КоррСчет.Использование = ЗначениеЗаполнено(КоррСчет); КонецЕсли; Порядок = ПостроительЗапроса.Порядок; Порядок.Добавить("Наименование"); ПостроительЗапроса.Выполнить(); РезультатЗапроса = ПостроительЗапроса.Результат; Возврат РезультатЗапроса; КонецФункции // Процедура добавляет новый банк из классификатора // по значению Код или корреспондентскому счету. // // Параметры: // Код - Строка (9) - Код банка // КоррСчет - Строка (20) - Корреспондентский счет банка // ТаблицаБанков - ТаблицаЗначений - Таблица банков // Процедура ДобавитьБанкиИзКлассификатора(Код, КоррСчет, ТаблицаБанков) УстановитьПривилегированныйРежим(Истина); РезультатЗапроса = ПолучитьРезультатЗапросаПоКлассификатору(Код, КоррСчет); МассивБанковИзКлассификатора = Новый Массив; Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл МассивБанковИзКлассификатора.Добавить(Выборка.Ссылка); КонецЦикла; Если МассивБанковИзКлассификатора.Количество() > 0 Тогда МассивБанков = РаботаСБанкамиБП.ПодобратьБанкИзКлассификатора(МассивБанковИзКлассификатора); Иначе Возврат; КонецЕсли; БанкНайден = Ложь; Для каждого НайденныйБанк Из МассивБанков Цикл ИскатьПоКоду = ЗначениеЗаполнено(Код); ИскатьПоКоррСчету = ЗначениеЗаполнено(КоррСчет) И НЕ НайденныйБанк.ЭтоГруппа; Если ИскатьПоКоду И ИскатьПоКоррСчету И НайденныйБанк.Код = Код И НайденныйБанк.КоррСчет = КоррСчет Тогда БанкНайден = Истина; ИначеЕсли ИскатьПоКоду И НайденныйБанк.Код = Код Тогда БанкНайден = Истина; ИначеЕсли ИскатьПоКоррСчету И НайденныйБанк.КоррСчет = КоррСчет Тогда БанкНайден = Истина; КонецЕсли; Если БанкНайден Тогда НоваяСтрока = ТаблицаБанков.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, НайденныйБанк); Прервать; КонецЕсли; КонецЦикла; КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытий Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Поля.Добавить("Код"); Поля.Добавить("Наименование"); Поля.Добавить("СВИФТБИК"); КонецПроцедуры Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Если БанковскиеПравила.ЭтоБИКБанкаРФ(Данные.Код) Тогда Представление = СокрЛП(Данные.Код) + " " + СокрЛП(Данные.Наименование); Иначе КодЗарубежногоБанка = " " + ?(ПустаяСтрока(Данные.СВИФТБИК), Данные.Код, Данные.СВИФТБИК); Представление = СокрЛП(КодЗарубежногоБанка) + " " + СокрЛП(Данные.Наименование); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиОбновления Процедура УстановитьСтрануВБанках() Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Банки.Ссылка КАК Ссылка |ИЗ | Справочник.Банки КАК Банки |ГДЕ | Банки.Страна = &ПустаяСтрана | И НЕ Банки.ЭтоГруппа"; Запрос.УстановитьПараметр("ПустаяСтрана", Справочники.СтраныМира.ПустаяСсылка()); Выборка = Запрос.Выполнить().Выбрать(); СтранаРФ = Справочники.СтраныМира.Россия; Пока Выборка.Следующий() Цикл ВыбранныйБанк = Выборка.Ссылка.ПолучитьОбъект(); ВыбранныйБанк.Страна = СтранаРФ; ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ВыбранныйБанк); КонецЦикла; КонецПроцедуры #КонецОбласти #КонецЕсли

Catalogs/Банки/ObjectModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс Процедура ВключитьВозможностьИзменения() Экспорт Если РучноеИзменение = 0 Тогда РучноеИзменение = 1; КонецЕсли; КонецПроцедуры Процедура СнятьСПоддержки() Экспорт РучноеИзменение = 2; КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытий Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Если Страна = Справочники.СтраныМира.Россия Тогда Если НЕ ЭтоГруппа Тогда Если НЕ СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(СокрЛП(КоррСчет)) Тогда ШаблонОшибки = НСтр("ru = 'В составе корр.счета банка должны быть только цифры.'"); ТекстОшибки = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения( "Поле", "Корректность", НСтр("ru = 'Корр. счет'"),,, ШаблонОшибки); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "Объект.КоррСчет",, Отказ); КонецЕсли; ТекстОшибки = ""; Если Не БанковскийИдентификационныйКодКорректен(Код, ТекстОшибки) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "Объект.Код",, Отказ); КонецЕсли; КонецЕсли; Иначе НепроверяемыеРеквизиты = Новый Массив; НепроверяемыеРеквизиты.Добавить("Код"); ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, НепроверяемыеРеквизиты); КонецЕсли; Если Не SWIFTКорректен(СокрЛП(СВИФТБИК), ТекстОшибки) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "Объект.СВИФТБИК",, Отказ); КонецЕсли; КонецПроцедуры Процедура ПередЗаписью(Отказ) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; Если ЭтоГруппа Тогда Возврат; КонецЕсли; Если НЕ ЗначениеЗаполнено(Страна) Тогда Страна = Справочники.СтраныМира.Россия; КонецЕсли; КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции // Проверяет корректность номера БИК банка // // Параметры: // БИК - Строка - номер БИК проверяемого банка // ТекстСообщения - Строка - в параметр передается текст сообщения об ошибке, если проверка не пройдена. // // Возвращаемое значение: // Булево - Результат проверки БИК, если Ложь, тогда БИК некорректный // Функция БанковскийИдентификационныйКодКорректен(БИК, ТекстСообщения) Если ПустаяСтрока(БИК) Тогда Возврат Истина; КонецЕсли; БИККорректен = Ложь; ТекстСообщения = ""; Если Не БанковскиеПравила.ПроверитьДлинуБИК(БИК) Тогда ТекстСообщения = ТекстСообщения + НСтр("ru = 'БИК банка должен состоять из 9 цифр'"); ИначеЕсли Не СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(БИК) Тогда ТекстСообщения = ТекстСообщения + НСтр("ru = 'В составе БИК банка должны быть только цифры'"); ИначеЕсли Не Лев(БИК, 2) = "04" Тогда ТекстСообщения = ТекстСообщения + НСтр("ru = 'Первые 2 цифры БИК банка должны быть ""04""'"); Иначе БИККорректен = Истина; КонецЕсли; Возврат БИККорректен; КонецФункции // Проверяет корректность номера SWIFT банка // // Параметры: // СВИФТБИК - Строка - номер SWIFT проверяемого банка // ТекстСообщения - Строка - в параметр передается текст сообщения об ошибке, если проверка не пройдена. // // Возвращаемое значение: // Булево - Результат проверки SWIFT, если Ложь, тогда SWIFT некорректный // Функция SWIFTКорректен(СВИФТБИК, ТекстСообщения) Если ПустаяСтрока(СВИФТБИК) Тогда Возврат Истина; КонецЕсли; SWIFTКорректен = Ложь; ТекстСообщения = ""; Если Не БанковскиеПравила.ПроверитьДлинуSWIFT(СВИФТБИК) Тогда ТекстСообщения = ТекстСообщения + НСтр("ru = 'SWIFT должен состоять из 8 или 11 символов'"); ИначеЕсли Не БанковскиеПравила.ПроверитьРазрешенныеСимволыSWIFT(СВИФТБИК) Тогда ТекстСообщения = ТекстСообщения + НСтр("ru = 'Разрешены только буквы от A до Z и цифры'"); Иначе SWIFTКорректен = Истина; КонецЕсли; Возврат SWIFTКорректен; КонецФункции #КонецОбласти #КонецЕсли

Catalogs/Банки/Forms/ФормаВыбора/Form/Module

 #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // СтандартныеПодсистемы.ВерсионированиеОбъектов ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект); // Конец СтандартныеПодсистемы.ВерсионированиеОбъектов ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры, "Страна, СВИФТБИК"); МожноРедактировать = ПравоДоступа("Редактирование", Метаданные.Справочники.Банки); Элементы.ФормаПодобратьИзКлассификатора.Видимость = МожноРедактировать; КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ИмяСобытия = "ОбновитьПослеДобавления" Тогда Элементы.Список.Обновить(); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийТаблицыФормыСписок &НаКлиенте Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) Если Не Группа Тогда Если ЗначениеЗаполнено(Страна) Тогда Если Копирование Тогда Возврат; КонецЕсли; СтрокаПоиска = СокрЛП(СВИФТБИК); Если СтрДлина(СтрокаПоиска) > 11 // Максимальная длина SWIFT. Или БанковскиеПравила.ЭтоБИКБанкаРФ(СтрокаПоиска) Тогда Возврат; КонецЕсли; СвойстваКодаБанка = БанковскиеПравила.СвойстваКодаБанка(СтрокаПоиска); Если Не СвойстваКодаБанка.ПохожеНаBIC И Не СвойстваКодаБанка.ПохожеНаSWIFT И Не СвойстваКодаБанка.ЭтоSWIFT Или Не СвойстваКодаБанка.ЭтоSWIFT И СтрНайти(СВИФТБИК, " ") > 0 Тогда Возврат; КонецЕсли; ЗначенияЗаполнения = Новый Структура("Страна", Страна); Если СвойстваКодаБанка.ЭтоSWIFT Или СвойстваКодаБанка.ПохожеНаSWIFT Тогда ЗначенияЗаполнения.Вставить("СВИФТБИК", СтрокаПоиска); ИначеЕсли СвойстваКодаБанка.ПохожеНаBIC Тогда ЗначенияЗаполнения.Вставить("Код", СтрокаПоиска); КонецЕсли; Отказ = Истина; ОткрытьФорму("Справочник.Банки.Форма.ФормаЭлемента", ЗначенияЗаполнения, ЭтотОбъект); Иначе Текст = НСтр("ru = 'Есть возможность подобрать банк из классификатора. |Подобрать?'"); ТекДанные = Элементы.Список.ТекущиеДанные; ДополнительныеПараметры = Новый Структура; ДополнительныеПараметры.Вставить("Родитель", Родитель); Если Копирование Тогда ДополнительныеПараметры.Вставить("Наименование", ТекДанные.Наименование); ДополнительныеПараметры.Вставить("Код", ТекДанные.Код); ДополнительныеПараметры.Вставить("КоррСчет", ТекДанные.КоррСчет); ДополнительныеПараметры.Вставить("Город", ТекДанные.Город); ДополнительныеПараметры.Вставить("Адрес", ТекДанные.Адрес); ДополнительныеПараметры.Вставить("Телефоны", ТекДанные.Телефоны); ДополнительныеПараметры.Вставить("СВИФТБИК", ТекДанные.СВИФТБИК); ДополнительныеПараметры.Вставить("Страна", ТекДанные.Страна); КонецЕсли; Оповещение = Новый ОписаниеОповещения("ВопросЗавершение", ЭтотОбъект, ДополнительныеПараметры); ПоказатьВопрос(Оповещение, Текст, РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Да); Отказ = Истина; КонецЕсли; КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура ПодобратьИзКлассификатора(Команда) ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Ложь, Истина); ОткрытьФорму("Справочник.КлассификаторБанков.ФормаВыбора", ПараметрыФормы, Этаформа); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаКлиенте Процедура ВопросЗавершение(Результат, ДополнительныеПараметры) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Ложь, Истина); ОткрытьФорму("Справочник.КлассификаторБанков.ФормаВыбора", ПараметрыФормы, Этаформа); Иначе ПараметрыФормы = Новый Структура("Основание", ДополнительныеПараметры); ОткрытьФорму("Справочник.Банки.Форма.ФормаЭлемента", ПараметрыФормы, ЭтаФорма); КонецЕсли; КонецПроцедуры #КонецОбласти

Catalogs/Банки/Forms/ФормаГруппы/Form/Module

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

Catalogs/Банки/Forms/ФормаСписка/Form/Module

&НаКлиенте Перем ПараметрыОбработчикаОжидания; &НаКлиенте Перем ФормаДлительнойОперации; #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // СтандартныеПодсистемы.ВерсионированиеОбъектов ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект); // Конец СтандартныеПодсистемы.ВерсионированиеОбъектов МожноРедактировать = ПравоДоступа("Редактирование", Метаданные.Справочники.Банки); Элементы.СписокКонтекстноеМенюИзменитьВыделенные.Видимость = МожноРедактировать; Элементы.ФормаПодобратьИзКлассификатора.Видимость = МожноРедактировать; Элементы.ФормаОбновитьИзКлассификатора.Видимость = МожноРедактировать; КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ИмяСобытия = "ОбновитьПослеДобавления" Тогда Элементы.Список.Обновить(); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовТаблицыФормыСписок &НаКлиенте Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) Если Не Группа Тогда Текст = НСтр("ru = 'Есть возможность подобрать банк из классификатора. |Подобрать?'"); ТекДанные = Элементы.Список.ТекущиеДанные; ДополнительныеПараметры = Новый Структура; ДополнительныеПараметры.Вставить("Родитель", Родитель); Если Копирование Тогда ДополнительныеПараметры.Вставить("Наименование", ТекДанные.Наименование); ДополнительныеПараметры.Вставить("Код", ТекДанные.Код); ДополнительныеПараметры.Вставить("КоррСчет", ТекДанные.КоррСчет); ДополнительныеПараметры.Вставить("Город", ТекДанные.Город); ДополнительныеПараметры.Вставить("Адрес", ТекДанные.Адрес); ДополнительныеПараметры.Вставить("Телефоны", ТекДанные.Телефоны); ДополнительныеПараметры.Вставить("СВИФТБИК", ТекДанные.СВИФТБИК); ДополнительныеПараметры.Вставить("Страна", ТекДанные.Страна); КонецЕсли; Оповещение = Новый ОписаниеОповещения("ВопросЗавершение", ЭтотОбъект, ДополнительныеПараметры); ПоказатьВопрос(Оповещение, Текст, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да); Отказ = Истина; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ВопросЗавершение(Результат, ДополнительныеПараметры) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Ложь, Истина); ОткрытьФорму("Справочник.КлассификаторБанков.ФормаВыбора", ПараметрыФормы, Этаформа); Иначе ПараметрыФормы = Новый Структура("Основание", ДополнительныеПараметры); ОткрытьФорму("Справочник.Банки.Форма.ФормаЭлемента", ПараметрыФормы, ЭтаФорма); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура ПодобратьИзКлассификатора(Команда) ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Ложь, Истина); ОткрытьФорму("Справочник.КлассификаторБанков.ФормаВыбора", ПараметрыФормы, Этаформа); КонецПроцедуры &НаКлиенте Процедура ОбновитьИзКлассификатора(Команда) ИБФайловая = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента().ИнформационнаяБазаФайловая; Результат =ОбновитьИзКлассификатораНаСервере(ИБФайловая); Если НЕ Результат.ЗаданиеВыполнено Тогда // Обработчик будет подключаться до тех пор, пока фоновое задание не будет выполнено ПодключатьОбработчикОжидания = НЕ ИБФайловая И ЗначениеЗаполнено(ИдентификаторЗадания); Если ПодключатьОбработчикОжидания Тогда ДлительныеОперацииКлиент.ИнициализироватьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания); ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания", 1, Истина); ФормаДлительнойОперации = ДлительныеОперацииКлиент.ОткрытьФормуДлительнойОперации(ЭтаФорма, ИдентификаторЗадания); КонецЕсли; Иначе ЗагрузитьПодготовленныеДанныеНаКлиенте(Результат.СтруктураДанныхКлиента); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ИзменитьВыделенные(Команда) ГрупповоеИзменениеОбъектовКлиент.ИзменитьВыделенные(Элементы.Список); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаКлиенте Процедура Подключаемый_ПроверитьВыполнениеЗадания() Попытка Если ЗаданиеВыполнено(ИдентификаторЗадания) Тогда ДлительныеОперацииКлиент.ЗакрытьФормуДлительнойОперации(ФормаДлительнойОперации); СтруктураДанныхНаКлиенте = ЗагрузитьПодготовленныеДанные(); ЗагрузитьПодготовленныеДанныеНаКлиенте(СтруктураДанныхНаКлиенте); Иначе ДлительныеОперацииКлиент.ОбновитьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания); ПодключитьОбработчикОжидания( "Подключаемый_ПроверитьВыполнениеЗадания", ПараметрыОбработчикаОжидания.ТекущийИнтервал, Истина); КонецЕсли; Исключение ДлительныеОперацииКлиент.ЗакрытьФормуДлительнойОперации(ФормаДлительнойОперации); ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); КонецПопытки; КонецПроцедуры &НаКлиенте Процедура ЗагрузитьПодготовленныеДанныеНаКлиенте(СтруктураДанных) Если ТипЗнч(СтруктураДанных) <> Тип("Структура") Тогда Возврат; КонецЕсли; Если СтруктураДанных.Свойство("УспешноВыполнена") Тогда ТекстОповещения = НСтр("ru = 'Банки обновлены из классификатора'"); ПоказатьОповещениеПользователя("Обновление",, ТекстОповещения); КонецЕсли; Оповестить("ОбновитьПослеДобавления"); КонецПроцедуры &НаСервере Функция ЗагрузитьПодготовленныеДанные() СтруктураДанныхНаКлиенте = Новый Структура(); СтруктураДанных = ПолучитьИзВременногоХранилища(АдресХранилища); Если ТипЗнч(СтруктураДанных) <> Тип("Структура") Тогда Возврат Неопределено; КонецЕсли; Если СтруктураДанных.Свойство("УспешноОбновлены") Тогда СтруктураДанныхНаКлиенте.Вставить("УспешноОбновлены", СтруктураДанных.УспешноОбновлены); КонецЕсли; Возврат СтруктураДанныхНаКлиенте; КонецФункции &НаСервере Функция ОбновитьИзКлассификатораНаСервере(ИБФайловая) СтруктураПараметров = Новый Структура(); Если ИБФайловая Тогда АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор); Справочники.Банки.ОбновитьБанкиИзКлассификатора(СтруктураПараметров, АдресХранилища); Результат = Новый Структура("ЗаданиеВыполнено", Истина); Иначе НаименованиеФоновогоЗадания = НСтр("ru = 'Обновление банков из классификатора'"); Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне( УникальныйИдентификатор, "Справочники.Банки.ОбновитьБанкиИзКлассификатора", СтруктураПараметров, НаименованиеФоновогоЗадания); АдресХранилища = Результат.АдресХранилища; ИдентификаторЗадания = Результат.ИдентификаторЗадания; КонецЕсли; Если Результат.ЗаданиеВыполнено Тогда Результат.Вставить("СтруктураДанныхКлиента", ЗагрузитьПодготовленныеДанные()); КонецЕсли; Возврат Результат; КонецФункции &НаСервереБезКонтекста Функция ЗаданиеВыполнено(ИдентификаторЗадания) Возврат ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания); КонецФункции #КонецОбласти

Catalogs/Банки/Forms/ФормаЭлемента/Form/Module

 #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // СтандартныеПодсистемы.ВерсионированиеОбъектов ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект); // Конец СтандартныеПодсистемы.ВерсионированиеОбъектов Если Параметры.Ключ.Пустая() Тогда ЗаполнитьЗначенияСвойств(Объект, Параметры); Если НЕ ПустаяСтрока(Параметры.СВИФТБИК) Тогда СВИФТБИКИзменение(ЭтотОбъект); КонецЕсли; ЗаполнитьФормуПоОбъекту(); КонецЕсли; УстановитьУсловноеОформление(); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) НадежностьБанковКлиент.ПодключитьОбработчикПоказатьИнформациюНадежностьБанков(ЭтотОбъект); КонецПроцедуры &НаСервере Процедура ПриЧтенииНаСервере(ТекущийОбъект) ЗаполнитьФормуПоОбъекту(); КонецПроцедуры &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) ТекущийОбъект.РучноеИзменение = ?(РучноеИзменение = Неопределено, 2, РучноеИзменение); КонецПроцедуры &НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) // Оповестим форму банковского счета об изменении реквизитов банка Оповестить("ЗаписанЭлементБанк", Объект.Ссылка, ЭтотОбъект); КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовШапкиФормы &НаКлиенте Процедура СВИФТБИКПриИзменении(Элемент) СВИФТБИКИзменение(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура КодПриИзменении(Элемент) НадежностьБанковКлиентСервер.ПолучитьИнформациюНадежностьБанков(ЭтотОбъект, Объект.Код, ПоказыватьИнформациюНадежностьБанков(ЭтотОбъект)); КонецПроцедуры &НаКлиенте Процедура СтранаПриИзменении(Элемент) ИзменитьРеквизитыЗависимыеОтСтраны(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура СтранаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) УправлениеКонтактнойИнформациейКлиент.СтранаМираОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка); КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура Изменить(Команда) Оповещение = Новый ОписаниеОповещения("ВопросИзменитьЗавершение", ЭтотОбъект); Текст = НСтр("ru = 'Поставляемые данные обновляются автоматически. |После ручного изменения автоматическое обновление этого элемента производиться не будет. |Продолжить с изменением?'"); ПоказатьВопрос(Оповещение, Текст, РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Нет); КонецПроцедуры &НаКлиенте Процедура ОбновитьИзКлассификатора(Команда) Оповещение = Новый ОписаниеОповещения("ВопросОбновитьИзКлассификатораЗавершение", ЭтотОбъект); Текст = НСтр("ru = 'Данные элемента будут заменены данными из классификатора. |Все ручные изменения будут потеряны. Продолжить?'"); ПоказатьВопрос(Оповещение, Текст, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаСервере Процедура УстановитьУсловноеОформление() ЭлементУО = УсловноеОформление.Элементы.Добавить(); // Код банка. КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "Код"); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Объект.Страна", ВидСравненияКомпоновкиДанных.НеРавно, Справочники.СтраныМира.Россия); ЭлементУО.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь) КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура СВИФТБИКИзменение(Форма) Объект = Форма.Объект; Объект.СВИФТБИК = ВРег(СокрЛП(Объект.СВИФТБИК)); Если БанковскиеПравила.СтрокаСоответствуетФорматуSWIFT(Объект.СВИФТБИК) Тогда СтранаБанка = БанковскиеСчетаВызовСервера.СтранаПоSWIFT(Объект.СВИФТБИК); Если ЗначениеЗаполнено(СтранаБанка) Тогда Объект.Страна = СтранаБанка; КонецЕсли; ИзменитьРеквизитыЗависимыеОтСтраны(Форма); КонецЕсли; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура ИзменитьРеквизитыЗависимыеОтСтраны(Форма) ЯвляетсяБанкомРФ = (Форма.Объект.Страна = Форма.СтранаРФ); Форма.Элементы.ТекстРучногоИзменения.Видимость = ЯвляетсяБанкомРФ; Форма.Элементы.ОбновитьИзКлассификатора.Видимость = ЯвляетсяБанкомРФ; Форма.Элементы.Изменить.Видимость = ЯвляетсяБанкомРФ; Если ЯвляетсяБанкомРФ Тогда Форма.Элементы.Код.Заголовок = НСтр("ru = 'БИК'"); Иначе Форма.Элементы.Код.Заголовок = НСтр("ru = 'Национальный код'"); КонецЕсли; НадежностьБанковКлиентСервер.ПолучитьИнформациюНадежностьБанков(Форма, Форма.Объект.Код, ПоказыватьИнформациюНадежностьБанков(Форма)); КонецПроцедуры &НаСервере Процедура ЗаполнитьФормуПоОбъекту() МожноРедактировать = ПравоДоступа("Редактирование", Метаданные.Справочники.Банки); РаботаСБанкамиБП.СчитатьФлагРучногоИзменения(ЭтотОбъект, МожноРедактировать); Элементы.НадписьДеятельностьБанкаПрекращена.Видимость = ДеятельностьПрекращена; СтранаРФ = Справочники.СтраныМира.Россия; ИзменитьРеквизитыЗависимыеОтСтраны(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура ВопросИзменитьЗавершение(Результат, ДополнительныеПараметры) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда ЗаблокироватьДанныеФормыДляРедактирования(); Модифицированность = Истина; РучноеИзменение = Истина; РаботаСБанкамиКлиентПереопределяемый.ОбработатьФлагРучногоИзменения(ЭтотОбъект); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ВопросОбновитьИзКлассификатораЗавершение(Результат, ДополнительныеПараметры) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда ЗаблокироватьДанныеФормыДляРедактирования(); Модифицированность = Истина; ОбновитьНаСервере(); ОповеститьОбИзменении(Объект.Ссылка); КонецЕсли; КонецПроцедуры &НаСервере Процедура ОбновитьНаСервере() РаботаСБанкамиБП.ВосстановитьЭлементИзОбщихДанных(ЭтотОбъект); НадежностьБанковКлиентСервер.ПолучитьИнформациюНадежностьБанков(ЭтотОбъект, Объект.Код, ПоказыватьИнформациюНадежностьБанков(ЭтотОбъект)); КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Функция ПоказыватьИнформациюНадежностьБанков(Форма) Если Форма.ДеятельностьПрекращена ИЛИ Форма.Объект.Страна <> Форма.СтранаРФ Тогда Возврат Ложь; КонецЕсли; Возврат Истина; КонецФункции &НаКлиенте Процедура Подключаемый_ПоказатьИнформациюНадежностьБанков() НадежностьБанковКлиент.ПоказатьИнформациюНадежностьБанков(ЭтотОбъект); КонецПроцедуры #КонецОбласти

Catalogs/БанковскиеСчета/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс Функция БанковскиеСчетаОрганизации(ВладелецСчета, ВалютаСчета) Экспорт ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | БанковскиеСчета.Ссылка, | БанковскиеСчета.Представление КАК Представление, | ВЫБОР | КОГДА СправочникВладелец.Ссылка ЕСТЬ НЕ NULL | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК Основной |ИЗ | Справочник.БанковскиеСчета КАК БанковскиеСчета | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК СправочникВладелец | ПО БанковскиеСчета.Владелец = СправочникВладелец.Ссылка | И БанковскиеСчета.Ссылка = СправочникВладелец.ОсновнойБанковскийСчет |ГДЕ | БанковскиеСчета.Владелец = &ВладелецСчета | И НЕ БанковскиеСчета.ПометкаУдаления | И БанковскиеСчета.ВалютаДенежныхСредств = &Валюта | |УПОРЯДОЧИТЬ ПО | Основной УБЫВ, | Представление"; Если ТипЗнч(ВладелецСчета) = Тип("СправочникСсылка.Контрагенты") Тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Справочник.Организации", "Справочник.Контрагенты"); КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("ВладелецСчета", ВладелецСчета); Запрос.УстановитьПараметр("Валюта", ВалютаСчета); Возврат Запрос.Выполнить().Выгрузить(); КонецФункции Функция ПолучитьКоличествоПодчиненныхЭлементовПоВладельцу(Владелец) Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | БанковскиеСчета.Ссылка |ИЗ | Справочник.БанковскиеСчета КАК БанковскиеСчета |ГДЕ | БанковскиеСчета.Владелец = &Владелец"; Запрос.УстановитьПараметр("Владелец", Владелец); Выборка = Запрос.Выполнить().Выбрать(); Возврат Выборка.Количество(); КонецФункции Функция КоличествоБанковскихСчетовОрганизации(Организация) Экспорт УстановитьПривилегированныйРежим(Истина); Запрос = Новый Запрос; Запрос.УстановитьПараметр("Организация", Организация); Запрос.Текст = "ВЫБРАТЬ | КОЛИЧЕСТВО(*) КАК Количество |ИЗ | Справочник.БанковскиеСчета КАК БанковскиеСчета |ГДЕ | БанковскиеСчета.Владелец = &Организация"; Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Количество = Выборка.Количество; Иначе Количество = 0; КонецЕсли; Возврат Количество; КонецФункции Процедура ПроверитьУстановитьЗначениеОпцииИспользоватьНесколькоБанковскихСчетовОрганизации(Организация, ПометкаУдаления = Ложь) Экспорт ДолжныИспользоваться = ПометкаУдаления ИЛИ КоличествоБанковскихСчетовОрганизации(Организация) > 1; Если ДолжныИспользоваться Тогда ВключитьИспользованиеНесколькоБанковскихСчетов(Организация); КонецЕсли; КонецПроцедуры Функция ИспользуетсяНесколькоБанковскихСчетовОрганизации(Организация) Экспорт Возврат ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоБанковскихСчетовОрганизации", Новый Структура("Организация", Организация)); КонецФункции Процедура УстановитьОсновнойБанковскийСчет(Владелец, БанковскийСчет) Экспорт Если ТипЗнч(Владелец) = Тип("СправочникСсылка.Организации") И НЕ ПравоДоступа("Изменение", Метаданные.Справочники.Организации) Тогда Возврат; КонецЕсли; КонтрагентОрганизацияОбъект = Владелец.ПолучитьОбъект(); УстановитьОсновнойБанковскийСчет = Истина; Попытка КонтрагентОрганизацияОбъект.Заблокировать(); Исключение // в случае блокировки - не выполнять изменение объекта УстановитьОсновнойБанковскийСчет = Ложь; // записать предупреждение в журнал регистрации ЗаписьЖурналаРегистрации(НСтр("ru = 'Не удалось заблокировать объект.'", Метаданные.ОсновнойЯзык.КодЯзыка), УровеньЖурналаРегистрации.Предупреждение,, КонтрагентОрганизацияОбъект, ОписаниеОшибки()); КонецПопытки; Если УстановитьОсновнойБанковскийСчет Тогда КонтрагентОрганизацияОбъект.ОсновнойБанковскийСчет = БанковскийСчет; КонтрагентОрганизацияОбъект.Записать(); КонецЕсли; КонецПроцедуры Функция ПодразделениеПоУмолчанию(Организация, БанковскийСчет) Экспорт Если ЗначениеЗаполнено(БанковскийСчет) Тогда ПодразделениеПоУмолчанию = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(БанковскийСчет, "ПодразделениеОрганизации"); Если ЗначениеЗаполнено(ПодразделениеПоУмолчанию) Тогда Возврат ПодразделениеПоУмолчанию; КонецЕсли; КонецЕсли; ТипПодразделения = БухгалтерскийУчетКлиентСерверПереопределяемый.ТипПодразделения(); ПодразделениеПоУмолчанию = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновноеПодразделениеОрганизации"); Если Не ЗначениеЗаполнено(ПодразделениеПоУмолчанию) Или ТипЗнч(ПодразделениеПоУмолчанию) <> ТипПодразделения Тогда Возврат Новый(ТипПодразделения); КонецЕсли; ОрганизацияПодразделения = БухгалтерскийУчетПереопределяемый.ОрганизацияПодразделения(ПодразделениеПоУмолчанию); Если ОрганизацияПодразделения <> Организация Тогда Возврат Новый(ТипПодразделения); КонецЕсли; Возврат ПодразделениеПоУмолчанию; КонецФункции Функция БанковскийСчетПоРеквизитам(Владелец, Банк, НомерСчета) Экспорт Запрос = Новый Запрос( "ВЫБРАТЬ ПЕРВЫЕ 1 | БанковскиеСчета.Ссылка КАК Ссылка |ИЗ | Справочник.БанковскиеСчета КАК БанковскиеСчета |ГДЕ | БанковскиеСчета.Банк = &Банк | И БанковскиеСчета.НомерСчета = &НомерСчета | И БанковскиеСчета.Владелец = &Владелец"); Запрос.УстановитьПараметр("Банк", Банк); Запрос.УстановитьПараметр("Владелец", Владелец); ТипСтрока = ОбщегоНазначения.ОписаниеТипаСтрока(БанковскиеПравила.МаксимальнаяДлинаМеждународногоНомераСчета()); ПриведенныйНомерСчета = ТипСтрока.ПривестиЗначение(НомерСчета); Запрос.УстановитьПараметр("НомерСчета", ПриведенныйНомерСчета); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Возврат Выборка.Ссылка; Иначе Возврат Справочники.БанковскиеСчета.ПустаяСсылка(); КонецЕсли; КонецФункции // Получает ссылку на элемент справочника с переданными свойствами. // Если элемент с таким набором свойств отсутствует в справочнике, // он автоматически создается. // // Параметры: // - Владелец - Ссылка - ссылка на элемент-владелец // - ДанныеЗаполнения - структура свойств, которыми должен обладать // элемент справочника. Элементы структуры: // - НомерСчета - Строка - номер банковского счета // - БИК - Строка - БИК банка // // Возвращаемое значение: // - Ссылка - ссылка на элемент справочника // Функция ПолучитьЭлемент(Знач Владелец, Знач НомерСчета, Знач БИК) Экспорт Результат = ПустаяСсылка(); // Поиск существующего банковского счета по номеру и БИК Запрос = Новый Запрос; Запрос.УстановитьПараметр("Владелец", Владелец); Запрос.УстановитьПараметр("НомерСчета", НомерСчета); Запрос.УстановитьПараметр("БИК", БИК); Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | БанковскиеСчета.Ссылка |ИЗ | Справочник.БанковскиеСчета КАК БанковскиеСчета |ГДЕ | БанковскиеСчета.Владелец = &Владелец | И БанковскиеСчета.НомерСчета = &НомерСчета | И БанковскиеСчета.Банк.Код = &БИК"; Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Результат = Выборка.Ссылка; КонецЕсли; Если Результат.Пустая() Тогда ДанныеБанковскогоСчета = Новый Структура; ДанныеБанковскогоСчета.Вставить("Владелец", Владелец); ДанныеБанковскогоСчета.Вставить("НомерСчета", НомерСчета); ДанныеБанковскогоСчета.Вставить("БИК", БИК); БанковскийСчетКонтрагента = СоздатьЭлемент(); БанковскийСчетКонтрагента.Заполнить(ДанныеБанковскогоСчета); БанковскийСчетКонтрагента.Записать(); Результат = БанковскийСчетКонтрагента.Ссылка; КонецЕсли; Возврат Результат; КонецФункции // СтандартныеПодсистемы.ВерсионированиеОбъектов // Определяет настройки объекта для подсистемы ВерсионированиеОбъектов. // // Параметры: // Настройки - Структура - настройки подсистемы. Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт КонецПроцедуры Процедура ВключитьИспользованиеНесколькоБанковскихСчетов(Организация) Экспорт УстановитьПривилегированныйРежим(Истина); Запись = РегистрыСведений.ИспользоватьНесколькоБанковскихСчетовОрганизации.СоздатьМенеджерЗаписи(); Запись.Организация = Организация; Запись.Используется = Истина; Запись.Записать(); КонецПроцедуры // Конец СтандартныеПодсистемы.ВерсионированиеОбъектов #КонецОбласти #Область ОбработчикиСобытий Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) Если НЕ Параметры.Отбор.Свойство("Владелец") Или НЕ ЗначениеЗаполнено(Параметры.Отбор.Владелец) Тогда Если НЕ Справочники.Организации.ИспользуетсяНесколькоОрганизаций() Тогда Параметры.Отбор.Вставить("Владелец", БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация")); КонецЕсли; КонецЕсли; КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции // Заполняет список команд печати. // // Параметры: // КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати // Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт КонецПроцедуры #КонецОбласти #Область ОбработчикиОбновления Процедура ИсправитьВладельцаСчета() Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СписаниеСРасчетногоСчета.Организация КАК Организация, | СписаниеСРасчетногоСчета.СчетОрганизации КАК Счет |ПОМЕСТИТЬ ВТ_ПлатежныеДокументы |ИЗ | Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета |ГДЕ | НЕ СписаниеСРасчетногоСчета.СчетОрганизации.Владелец ССЫЛКА Справочник.Организации | |СГРУППИРОВАТЬ ПО | СписаниеСРасчетногоСчета.Организация, | СписаниеСРасчетногоСчета.СчетОрганизации | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ПлатежноеПоручение.Организация, | ПлатежноеПоручение.СчетОрганизации |ИЗ | Документ.ПлатежноеПоручение КАК ПлатежноеПоручение |ГДЕ | НЕ ПлатежноеПоручение.СчетОрганизации.Владелец ССЫЛКА Справочник.Организации | |СГРУППИРОВАТЬ ПО | ПлатежноеПоручение.Организация, | ПлатежноеПоручение.СчетОрганизации |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ПлатежныеДокументы.Организация КАК Организация, | ВТ_ПлатежныеДокументы.Счет КАК Счет |ИЗ | ВТ_ПлатежныеДокументы КАК ВТ_ПлатежныеДокументы | |СГРУППИРОВАТЬ ПО | ВТ_ПлатежныеДокументы.Организация, | ВТ_ПлатежныеДокументы.Счет | |УПОРЯДОЧИТЬ ПО | Организация, | Счет"; ВыборкаЗапроса = Запрос.Выполнить().Выбрать(); Пока ВыборкаЗапроса.Следующий() Цикл СчетОбъект = ВыборкаЗапроса.Счет.ПолучитьОбъект(); СчетОбъект.Владелец = ВыборкаЗапроса.Организация; ОбновлениеИнформационнойБазы.ЗаписатьДанные(СчетОбъект); КонецЦикла; КонецПроцедуры // Выполняет проверки на корректность заполнения номера счета и БИК. // // Параметры: // БанковскийСчет - ДанныеФормыСтруктура - банковский счет, который требуется проверить. // КодБанка - Строка - БИК банка, проверяемого счета. // ЯвляетсяБанкомРФ - Булево, признак российского банка. // Отказ - Булево - см. описание параметра Отказ в процедуре ОбработкаПроверкиЗаполнения. // Процедура ОбработкаПроверкиЗаполнения(БанковскийСчет, КодБанка, ЯвляетсяБанкомРФ, Отказ) Экспорт ТекстСообщения = ""; Если Не ЗначениеЗаполнено(БанковскийСчет.Банк) И ЗначениеЗаполнено(БанковскийСчет.НомерСчета) Тогда ТекстСообщения = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения(, "Заполнение", НСтр("ru = 'Банк'")); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,, "БанковскийСчет.Банк",, Отказ); ИначеЕсли ЗначениеЗаполнено(БанковскийСчет.Банк) И Не ЗначениеЗаполнено(БанковскийСчет.НомерСчета) Тогда ТекстСообщения = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения(, "Заполнение", НСтр("ru = 'Номер счета'")); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,, "БанковскийСчет.НомерСчета",, Отказ); КонецЕсли; Если БанковскиеСчетаФормыКлиентСервер.НомерСчетаКорректен(БанковскийСчет.НомерСчета, КодБанка, ЯвляетсяБанкомРФ, ТекстСообщения) Тогда Если ЗначениеЗаполнено(БанковскийСчет.НомерСчета) И ЗначениеЗаполнено(БанковскийСчет.Банк) И Не ЗначениеЗаполнено(БанковскийСчет.ВалютаДенежныхСредств) Тогда Если ЯвляетсяБанкомРФ Тогда Если НЕ БанковскиеПравила.ЭтоРублевыйСчет(БанковскийСчет.НомерСчета) Тогда ТекстСообщения = Нстр("ru = 'Валюта счета неизвестна. Проверьте номер счета'"); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,, "БанковскийСчет.НомерСчета",, Отказ); КонецЕсли; Иначе ТекстСообщения = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения(, "Заполнение", НСтр("ru = 'Валюта счета'")); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,, "БанковскийСчет.ВалютаДенежныхСредств",, Отказ); КонецЕсли; КонецЕсли; Иначе ТекстСообщения = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения(, "Корректность", НСтр("ru = 'Номер счета'"),,, ТекстСообщения); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,, "БанковскийСчет.НомерСчета",, Отказ); КонецЕсли; // Если есть ошибка, то запишем информацию о проблеме с расчетным счетом в журнал регистрации. Если Отказ И НЕ ПустаяСтрока(ТекстСообщения) Тогда ЗаписьЖурналаРегистрации( НСтр("ru = 'Не удалось записать банковский счет'"), УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.БанковскиеСчета, , ТекстСообщения); КонецЕсли; КонецПроцедуры #КонецОбласти #КонецЕсли

Catalogs/БанковскиеСчета/ObjectModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ОбработчикиСобытий Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда Если ДанныеЗаполнения.Свойство("ЭтоЭлектронныйДокумент") Тогда ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения); Наименование = НомерСчета + ", " + Банк.Наименование; // Необходимо для записи объекта если владелец ссылка нового контрагента ОбменДанными.Загрузка = Истина; КонецЕсли; Если ДанныеЗаполнения.Свойство("Владелец") Тогда Если ТипЗнч(ДанныеЗаполнения.Владелец) = Тип("СправочникСсылка.Организации") И НЕ ДанныеЗаполнения.Свойство("ПодразделениеОрганизации") Тогда ДанныеЗаполнения.Вставить("ПодразделениеОрганизации", БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновноеПодразделениеОрганизации")); КонецЕсли; Если НЕ ДанныеЗаполнения.Свойство("ВсегдаУказыватьКПП") Тогда Если ТипЗнч(ДанныеЗаполнения.Владелец) = Тип("СправочникСсылка.Организации") Тогда ЗначениеНастройки = ХранилищеОбщихНастроек.Загрузить("НастройкиПлатежныхПорученийТребований", "ВсегдаУказыватьКППОрганизации"); ИначеЕсли ТипЗнч(ДанныеЗаполнения.Владелец) = Тип("СправочникСсылка.Контрагенты") Тогда ЗначениеНастройки = ХранилищеОбщихНастроек.Загрузить("НастройкиПлатежныхПорученийТребований", "ВсегдаУказыватьКППКонтрагента"); Иначе ЗначениеНастройки = Неопределено; КонецЕсли; Если ЗначениеНастройки <> Неопределено Тогда ДанныеЗаполнения.Вставить("ВсегдаУказыватьКПП", ЗначениеНастройки); КонецЕсли; КонецЕсли; КонецЕсли; Если ДанныеЗаполнения.Свойство("Валютный") Тогда Если НЕ ДанныеЗаполнения.Валютный Тогда ДанныеЗаполнения.Вставить("ВалютаДенежныхСредств", ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета()); КонецЕсли; Иначе Если ДанныеЗаполнения.Свойство("ВалютаДенежныхСредств") Тогда Если ДанныеЗаполнения.ВалютаДенежныхСредств <> ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета() Тогда ДанныеЗаполнения.Вставить("Валютный", Истина); КонецЕсли; Иначе ДанныеЗаполнения.Вставить("ВалютаДенежныхСредств", ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета()); КонецЕсли; КонецЕсли; Если Не ДанныеЗаполнения.Свойство("Банк") Тогда РаботаСБанкамиБП.УстановитьБанк(ДанныеЗаполнения); КонецЕсли; Если Не ДанныеЗаполнения.Свойство("БанкДляРасчетов") Тогда РаботаСБанкамиБП.УстановитьБанкДляРасчетов(ДанныеЗаполнения); КонецЕсли; Если Не ДанныеЗаполнения.Свойство("Наименование") Тогда ПараметрыЗаполнения = Новый Структура("НомерСчета,Банк,ВалютаДенежныхСредств"); ЗаполнитьЗначенияСвойств(ПараметрыЗаполнения, ЭтотОбъект); ЗаполнитьЗначенияСвойств(ПараметрыЗаполнения, ДанныеЗаполнения); НаименованиеБанка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПараметрыЗаполнения.Банк, "Наименование"); НаименованиеПоУмолчанию = УчетДенежныхСредствКлиентСервер.НаименованиеБанковскогоСчетаПоУмолчанию( ПараметрыЗаполнения.НомерСчета, "" + НаименованиеБанка, "" + ПараметрыЗаполнения.ВалютаДенежныхСредств, Валютный); ДанныеЗаполнения.Вставить("Наименование", НаименованиеПоУмолчанию); КонецЕсли; КонецЕсли; КонецПроцедуры Процедура ПередЗаписью(Отказ) Если НЕ (ПометкаУдаления ИЛИ Ссылка.ПометкаУдаления) Тогда // Данные действия должны происходить при Записи всегда ВалютаРегламентированногоУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета(); Валютный = ВалютаРегламентированногоУчета <> ВалютаДенежныхСредств; КонецЕсли; Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; Если ЭтоГруппа Тогда Возврат; КонецЕсли; Если НЕ ЭтоНовый() Тогда Если ВалютаДенежныхСредств <> Ссылка.ВалютаДенежныхСредств И СуществуютСсылки() Тогда ТекстСообщения = НСтр("ru = 'Существуют документы, в которых выбран банковский счет %1. Реквизит ""Валюта счета"" не может быть изменен.'"); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, СокрЛП(Наименование)); ТекстСообщения = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения(, "Корректность", НСтр("ru = 'Валюта счета'"),,, ТекстСообщения); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, Ссылка, "ВалютаДенежныхСредств", "Объект", Отказ); КонецЕсли; Если ПометкаУдаления И ТипЗнч(Владелец) = Тип("СправочникСсылка.Организации") И НЕ Владелец.ПометкаУдаления И НЕ Справочники.БанковскиеСчета.ИспользуетсяНесколькоБанковскихСчетовОрганизации(Владелец) Тогда ТекстСообщения = НСтр("ru = 'Нельзя удалить единственный банковский счет, т.к. он используется для автозаполнения документов.'"); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, Ссылка,, "Объект", Отказ); КонецЕсли; КонецЕсли; Если ЗначениеЗаполнено(ГосударственныйКонтракт) Тогда ОтдельныйСчет = ОтдельныйСчетПоГосконтракту(); Если ЗначениеЗаполнено(ОтдельныйСчет) Тогда ТекстСообщения = СтрШаблон( НСтр("ru = 'По государственному контракту %1 уже выделен отдельный счет %2'"), ГосударственныйКонтракт, ОтдельныйСчет); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, Ссылка, "ГосударственныйКонтракт", "Объект", Отказ); КонецЕсли; КонецЕсли; КонецПроцедуры Процедура ПриЗаписи(Отказ) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; Если ЗначениеЗаполнено(Владелец) И ТипЗнч(Владелец) = Тип("СправочникСсылка.Организации") Тогда Справочники.БанковскиеСчета.ПроверитьУстановитьЗначениеОпцииИспользоватьНесколькоБанковскихСчетовОрганизации( Владелец, ПометкаУдаления); КонецЕсли; КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции // Функция проверяет, существуют ли движения по банковскому счету. // Если есть - менять реквизит "Валюта счета" нельзя. // // Параметры: // Нет. // // Возвращаемое значение: // Истина - если есть движения, Ложь - если нет. // Функция СуществуютСсылки() УстановитьПривилегированныйРежим(Истина); Запрос = Новый Запрос(); Запрос.УстановитьПараметр("БанковскийСчет", Ссылка); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | 1 |ИЗ | РегистрБухгалтерии.Хозрасчетный.Субконто КАК ХозрасчетныйСубконто |ГДЕ | ХозрасчетныйСубконто.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.БанковскиеСчета) | И ХозрасчетныйСубконто.Значение = &БанковскийСчет"; СтатусВозврата = НЕ Запрос.Выполнить().Пустой(); Возврат СтатусВозврата; КонецФункции // Функция проверяет, что у владельца уже существует банковский счет по контракту. // // Параметры: // Нет. // // Возвращаемое значение: // ОтдельныйСчет - СправочникСсылка.БанковскиеСчета - существующий счет по контракту // Функция ОтдельныйСчетПоГосконтракту() Перем ОтдельныйСчет; УстановитьПривилегированныйРежим(Истина); Запрос = Новый Запрос(); Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("Владелец", Владелец); Запрос.УстановитьПараметр("Контракт", ГосударственныйКонтракт); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | БанковскиеСчета.Ссылка |ИЗ | Справочник.БанковскиеСчета КАК БанковскиеСчета |ГДЕ | БанковскиеСчета.Владелец = &Владелец | И БанковскиеСчета.ГосударственныйКонтракт = &Контракт | И БанковскиеСчета.Ссылка <> &Ссылка"; Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда ОтдельныйСчет = Выборка.Ссылка; КонецЕсли; Возврат ОтдельныйСчет; КонецФункции #КонецОбласти #КонецЕсли

Catalogs/БанковскиеСчета/Forms/ФормаВыбора/Form/Module

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

Catalogs/БанковскиеСчета/Forms/ФормаСписка/Form/Module

&НаКлиенте Перем УстановкаОсновногоБанковскогоСчетаВыполнена; #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // СтандартныеПодсистемы.ПодключаемыеКоманды ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения(); ПараметрыРазмещения.КоманднаяПанель = Элементы.ГруппаКоманднаяПанель; ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения); // Конец СтандартныеПодсистемы.ПодключаемыеКоманды // СтандартныеПодсистемы.ВерсионированиеОбъектов ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект); // Конец СтандартныеПодсистемы.ВерсионированиеОбъектов Если Параметры.Отбор.Свойство("Владелец") Тогда Владелец = Параметры.Отбор.Владелец; КонецЕсли; Элементы.Владелец.Видимость = ЗначениеЗаполнено(Владелец); Если ЗначениеЗаполнено(Владелец) Тогда Если ТипЗнч(Владелец) = Тип("СправочникСсылка.Контрагенты") Тогда Элементы.Владелец.Заголовок = НСтр("ru = 'Контрагент'"); ДоступноИспользоватьОсновным = ПравоДоступа("Редактирование", Метаданные.Справочники.Контрагенты); ИначеЕсли ТипЗнч(Владелец) = Тип("СправочникСсылка.Организации") Тогда Элементы.Владелец.Видимость = Справочники.Организации.ИспользуетсяНесколькоОрганизаций(); Элементы.Владелец.Заголовок = НСтр("ru = 'Организация'"); ДоступноИспользоватьОсновным = ПравоДоступа("Редактирование", Метаданные.Справочники.Организации); ИначеЕсли ТипЗнч(Владелец) = Тип("СправочникСсылка.ФизическиеЛица") Тогда Элементы.Владелец.Заголовок = НСтр("ru = 'Физическое лицо'"); ДоступноИспользоватьОсновным = ПравоДоступа("Редактирование", Метаданные.Справочники.ФизическиеЛица); КонецЕсли; ОсновнойБанковскийСчет = Владелец.ОсновнойБанковскийСчет; КонецЕсли; ЭтоИнтерфейсИнтеграцииСБанком = ОбщегоНазначенияБП.ЭтоИнтерфейсИнтеграцииСБанком(); Элементы.ФормаИспользоватьОсновным.Видимость = ЗначениеЗаполнено(Владелец) И ДоступноИспользоватьОсновным И Не ЭтоИнтерфейсИнтеграцииСБанком; Элементы.Основной.Видимость = ЗначениеЗаполнено(Владелец) И Не ЭтоИнтерфейсИнтеграцииСБанком; Элементы.СтатусСчета.Видимость = ЭтоИнтерфейсИнтеграцииСБанком; МожноРедактировать = ПравоДоступа("Редактирование", Метаданные.Справочники.БанковскиеСчета); Элементы.СписокКонтекстноеМенюИзменитьВыделенные.Видимость = МожноРедактировать; УстановитьПараметрыСписка(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ИмяСобытия = "УстановкаОсновногоБанковскогоСчетаВыполнена" Тогда УстановкаОсновногоБанковскогоСчетаВыполнена = Истина; ИначеЕсли ИмяСобытия = "УстановкаОсновногоБанковскогоСчетаПриЗаписи" Тогда Если ЗначениеЗаполнено(Владелец) Тогда Если Владелец = Параметр.КонтрагентОрганизация Тогда Если УстановкаОсновногоБанковскогоСчетаВыполнена = Истина Тогда ОсновнойБанковскийСчет = Параметр.ОсновнойБанковскийСчет; УстановитьПараметрыСписка(ЭтотОбъект); УправлениеФормойКлиент(); КонецЕсли; КонецЕсли; КонецЕсли; ИначеЕсли ИмяСобытия = "ИзмененаНастройкаОбмена" Тогда Элементы.Список.Обновить(); ИначеЕсли ИмяСобытия = "ИзмененБанковскийСчет" Тогда УстановитьПараметрыСписка(ЭтотОбъект); Элементы.Список.Обновить(); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийТаблицыФормыСписок &НаКлиенте Процедура СписокПриАктивизацииСтроки(Элемент) УправлениеФормойКлиент(); // СтандартныеПодсистемы.ПодключаемыеКоманды ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); // Конец СтандартныеПодсистемы.ПодключаемыеКоманды КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура ИспользоватьОсновным(Команда) Если Элементы.Список.ТекущиеДанные = Неопределено Тогда Возврат; КонецЕсли; Если Элементы.Список.ТекущиеДанные.Ссылка = ОсновнойБанковскийСчет Тогда ОсновнойБанковскийСчет = ПредопределенноеЗначение("Справочник.БанковскиеСчета.ПустаяСсылка"); Иначе ОсновнойБанковскийСчет = Элементы.Список.ТекущиеДанные.Ссылка; КонецЕсли; УстановитьПараметрыСписка(ЭтотОбъект); УстановкаОсновногоБанковскогоСчетаВыполнена = Ложь; СтруктураПараметров = Новый Структура(); СтруктураПараметров.Вставить("КонтрагентОрганизация", Элементы.Список.ТекущиеДанные.Владелец); СтруктураПараметров.Вставить("ОсновнойБанковскийСчет", ОсновнойБанковскийСчет); Оповестить("УстановкаОсновногоБанковскогоСчета", СтруктураПараметров); // Если форма владельца закрыта, то запишем основной банковский счет самостоятельно. Если НЕ УстановкаОсновногоБанковскогоСчетаВыполнена Тогда УстановитьОсновнойБанковскийСчет(СтруктураПараметров); КонецЕсли; УправлениеФормойКлиент(); КонецПроцедуры &НаКлиенте Процедура ИзменитьВыделенные(Команда) ГрупповоеИзменениеОбъектовКлиент.ИзменитьВыделенные(Элементы.Список); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаСервереБезКонтекста Процедура УстановитьОсновнойБанковскийСчет(СтруктураПараметров) Справочники.БанковскиеСчета.УстановитьОсновнойБанковскийСчет( СтруктураПараметров.КонтрагентОрганизация, СтруктураПараметров.ОсновнойБанковскийСчет); КонецПроцедуры &НаКлиенте Процедура УправлениеФормойКлиент() Если ОсновнойБанковскийСчет = Неопределено Тогда Возврат; КонецЕсли; Если ДоступноИспользоватьОсновным И Элементы.Список.ТекущиеДанные <> Неопределено Тогда Элементы.ФормаИспользоватьОсновным.Пометка = Элементы.Список.ТекущиеДанные.Ссылка = ОсновнойБанковскийСчет; КонецЕсли; Если ДоступноИспользоватьОсновным Тогда Элементы.ФормаИспользоватьОсновным.Доступность = (Элементы.Список.ТекущиеДанные <> Неопределено); КонецЕсли; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Функция СтатусыСчетов() СтатусыСчетов = Новый Структура; СтатусыСчетов.Вставить("СчетВРежимеИнтеграции", 0); СтатусыСчетов.Вставить("СчетБезИнтеграции", 1); Возврат СтатусыСчетов; КонецФункции &НаКлиентеНаСервереБезКонтекста Процедура УстановитьПараметрыСписка(Форма) Список = Форма.Список; СтатусыСчетов = СтатусыСчетов(); Список.Параметры.УстановитьЗначениеПараметра("БанковскиеСчетаВРежимеИнтеграции", БанковскиеСчетаВРежимеИнтеграции()); Список.Параметры.УстановитьЗначениеПараметра("СтатусСчетВРежимеИнтеграции", СтатусыСчетов.СчетВРежимеИнтеграции); Список.Параметры.УстановитьЗначениеПараметра("СтатусСчетБезИнтеграции", СтатусыСчетов.СчетБезИнтеграции); Если ЗначениеЗаполнено(Форма.ОсновнойБанковскийСчет) Тогда Список.Параметры.УстановитьЗначениеПараметра("ОсновнойБанковскийСчет", Форма.ОсновнойБанковскийСчет); Иначе Список.Параметры.УстановитьЗначениеПараметра("ОсновнойБанковскийСчет", Неопределено); КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция БанковскиеСчетаВРежимеИнтеграции() Возврат Справочники.НастройкиИнтеграцииСБанками.БанковскиеСчетаВРежимеИнтеграции(); КонецФункции #КонецОбласти #Область СлужебныеПроцедурыИФункцииБСП // СтандартныеПодсистемы.ПодключаемыеКоманды &НаКлиенте Процедура Подключаемый_ВыполнитьКоманду(Команда) ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список); КонецПроцедуры &НаСервере Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.Список, Результат); КонецПроцедуры &НаКлиенте Процедура Подключаемый_ОбновитьКоманды() ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список); КонецПроцедуры // Конец СтандартныеПодсистемы.ПодключаемыеКоманды #КонецОбласти &НаСервереБезКонтекста Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) БИКБанков = Новый Массив; Для каждого ЭлементСписка Из Строки Цикл БИКБанков.Добавить(ЭлементСписка.Значение.Данные.БИК); КонецЦикла; Результат = НадежностьБанков.ИнформацияОКритичныхСобытиях(БИКБанков); Если НЕ Результат.Используется Тогда Возврат; КонецЕсли; Для каждого ЭлементСписка Из Строки Цикл ЕстьСобытие = Результат.События[ЭлементСписка.Значение.Данные.БИК] <> Неопределено; Если ЕстьСобытие Тогда ЭлементСписка.Значение.Оформление["Наименование"].УстановитьЗначениеПараметра( "ЦветТекста", ЦветаСтиля.КритичноеСобытиеНадежностьБанковЦветТекста); КонецЕсли; КонецЦикла; КонецПроцедуры

Catalogs/БанковскиеСчета/Forms/ФормаЭлемента/Form/Module

 &НаКлиенте Перем УстановкаОсновногоБанковскогоСчетаВыполнена; &НаКлиенте Перем ТекущийТекстНомераСчета; // Текст, набранный в поле ввода номера счета #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // СтандартныеПодсистемы.ПодключаемыеКоманды ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); // Конец СтандартныеПодсистемы.ПодключаемыеКоманды // СтандартныеПодсистемы.ВерсионированиеОбъектов ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект); // Конец СтандартныеПодсистемы.ВерсионированиеОбъектов Если Параметры.Ключ.Пустая() Тогда ПодготовитьФормуНаСервере(); КонецЕсли; Если НЕ ЗначениеЗаполнено(Объект.Владелец) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Не указан владелец банковского счета!'"),,,, Отказ); Возврат; КонецЕсли; Если ТипЗнч(Объект.Владелец) = Тип("СправочникСсылка.Контрагенты") Тогда Элементы.Владелец.Заголовок = НСтр("ru = 'Контрагент'"); Элементы.ПодразделениеОрганизации.Видимость = Ложь; Элементы.ГруппаДатыОткрытияЗакрытияСчета.Видимость = Ложь; ИначеЕсли ТипЗнч(Объект.Владелец) = Тип("СправочникСсылка.Организации") Тогда ИспользуетсяНесколькоОрганизаций = Справочники.Организации.ИспользуетсяНесколькоОрганизаций(); Элементы.Владелец.Видимость = ИспользуетсяНесколькоОрганизаций; Элементы.Владелец.Заголовок = НСтр("ru = 'Организация'"); Элементы.ПодразделениеОрганизации.Видимость = Истина; Элементы.ГруппаДатыОткрытияЗакрытияСчета.РасширеннаяПодсказка.Заголовок = ?(УчетнаяПолитика.ПрименяетсяУСН(Объект.Владелец, ТекущаяДатаСеанса()), НСтр("ru = 'Дата открытия и закрытия счета необходимы для правильного формирования Книги учета доходов и расходов (УСН)'"), ""); УстановитьПараметрыФункциональныхОпцийФормы(Новый Структура("Организация", Объект.Владелец)); ИначеЕсли ТипЗнч(Объект.Владелец) = Тип("СправочникСсылка.ФизическиеЛица") Тогда Элементы.Владелец.Заголовок = НСтр("ru = 'Физическое лицо'"); Элементы.ПодразделениеОрганизации.Видимость = Ложь; Элементы.ГруппаДатыОткрытияЗакрытияСчета.Видимость = Ложь; Элементы.ГруппаВидСчетаНомерИДатаРазрешения.Видимость = Ложь; Иначе ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Неверно указан владелец банковского счета!'"),,,, Отказ); Возврат; КонецЕсли; ВалютаРегламентированногоУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета(); ИспользуетсяБанкДляРасчетов = ЗначениеЗаполнено(Объект.БанкДляРасчетов); Элементы.ПодразделениеОрганизацииРасширеннаяПодсказка.Заголовок = НСтр("ru = 'Подразделение, которое подставляется по умолчанию в Поступление и Списание с этого банковского счета'"); Если Параметры.Ключ.Пустая() Тогда Если ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда Объект.Наименование = ""; УстановитьНаименованиеСчета(ЭтотОбъект); Иначе Если НЕ Объект.Валютный Тогда Объект.ВалютаДенежныхСредств = ВалютаРегламентированногоУчета; КонецЕсли; АвтоНаименование = СокрЛП(Объект.Наименование); Если ПустаяСтрока(Объект.НомерСчета) И НЕ ПустаяСтрока(АвтоНаименование) И СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(АвтоНаименование) Тогда Объект.НомерСчета = АвтоНаименование; Иначе Объект.Наименование = ""; КонецЕсли; КонецЕсли; КонецЕсли; Если Элементы.ВалютаДенежныхСредств.Видимость Тогда Если Параметры.ЗначенияЗаполнения.Свойство("ВалютаДенежныхСредств") И ЗначениеЗаполнено(Параметры.ЗначенияЗаполнения.ВалютаДенежныхСредств) И Параметры.ЗначенияЗаполнения.Свойство("Валютный") Тогда Элементы.ВалютаДенежныхСредств.ТолькоПросмотр = Истина; КонецЕсли; КонецЕсли; ВидимостьЭлементовДиректБанк = ЭлектронноеВзаимодействиеБПВызовСервера.ВидимостьЭлементовДиректБанк( Объект.Владелец, Объект.Банк); ЦветГиперссылки = ЦветаСтиля.ЦветГиперссылки; ИнтеграцияСБанком = ОбщегоНазначенияБП.ЭтоИнтерфейсИнтеграцииСБанком(); // Запоминаем в реквизите формы для отключения рекламы ДиректБанка УправлениеФормой(ЭтотОбъект); РазделениеВключено = ОбщегоНазначения.РазделениеВключено(); КонецПроцедуры &НаСервере Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) ТекстОшибки = ""; Если Не ЗначениеЗаполнено(Объект.НомерСчета) Тогда ТекстСообщения = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения(, "Заполнение", НСтр("ru = 'Номер счета'")); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, , "Объект.НомерСчета", , Отказ); КонецЕсли; Если Не БанковскиеСчетаФормыКлиентСервер.НомерСчетаКорректен(Объект.НомерСчета, БИКБанка, ЯвляетсяБанкомРФ, ТекстОшибки) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,, "Объект.НомерСчета",, Отказ); ЗаписьЖурналаРегистрации( НСтр("ru='Не удалось записать банковский счет'"), УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.БанковскиеСчета, , ТекстОшибки); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) БанковскиеСчетаФормыКлиент.ПередЗаписью(Объект.НомерСчета, БИКБанка, Объект.Ссылка, Отказ); КонецПроцедуры &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Если НЕ ИспользуетсяБанкДляРасчетов Тогда ТекущийОбъект.БанкДляРасчетов = Неопределено; КонецЕсли; КонецПроцедуры &НаСервере Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) Если ТипЗнч(НаименованиеПлательщикаПриПеречисленииВБюджет) = Тип("Строка") И ТипЗнч(Объект.Владелец) = Тип("СправочникСсылка.Организации") И ПравоДоступа("Изменение", Метаданные.Справочники.Организации) Тогда ТекущеНаименованиеПлательщика = СокрЛП(ОбщегоНазначения.ЗначениеРеквизитаОбъекта( Объект.Владелец, "НаименованиеПлательщикаПриПеречисленииВБюджет")); Если НаименованиеПлательщикаПриПеречисленииВБюджет <> ТекущеНаименованиеПлательщика Тогда ОрганизацияОбъект = Объект.Владелец.ПолучитьОбъект(); ОрганизацияОбъект.НаименованиеПлательщикаПриПеречисленииВБюджет = НаименованиеПлательщикаПриПеречисленииВБюджет; Попытка ОрганизацияОбъект.Записать(); Исключение ИнформацияОбОшибке = ИнформацияОбОшибке(); Если ИнформацияОбОшибке.Причина = Неопределено Тогда ОписаниеОшибки = ИнформацияОбОшибке.Описание; Иначе ОписаниеОшибки = ИнформацияОбОшибке.Причина.Описание; КонецЕсли; ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Ошибка при записи настроек организации: |%1'"), ОписаниеОшибки); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ОписаниеОшибки); КонецПопытки; КонецЕсли; КонецЕсли; Если Справочники.БанковскиеСчета.КоличествоБанковскихСчетовОрганизации(Объект.Владелец) = 1 Тогда ПараметрыЗаписи.Вставить("ЭтоЕдинственныйБанковскийСчет"); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) ПараметрОповещения = Новый Структура("Ссылка, Владелец", Объект.Ссылка, Объект.Владелец); Оповестить("ИзмененБанковскийСчет", ПараметрОповещения); Если ПараметрыЗаписи.Свойство("ЭтоЕдинственныйБанковскийСчет") Тогда УстановкаОсновногоБанковскогоСчетаВыполнена = Ложь; СтруктураПараметров = Новый Структура(); СтруктураПараметров.Вставить("КонтрагентОрганизация", Объект.Владелец); СтруктураПараметров.Вставить("ОсновнойБанковскийСчет", Объект.Ссылка); Оповестить("УстановкаОсновногоБанковскогоСчетаПриЗаписи", СтруктураПараметров); // Если форма владельца закрыта, то запишем основной банковский счет самостоятельно. Если НЕ УстановкаОсновногоБанковскогоСчетаВыполнена Тогда УстановитьОсновнойБанковскийСчет(СтруктураПараметров); КонецЕсли; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ИмяСобытия = "ЗаписанЭлементБанк" Тогда Если ТипЗнч(Параметр) = Тип("СправочникСсылка.Банки") И ЗначениеЗаполнено(Параметр) И Объект.Банк <> Параметр Тогда Объект.Банк = Параметр; КонецЕсли; ЗаполнитьРеквизитыБанков(); УправлениеФормой(ЭтотОбъект); ИначеЕсли ИмяСобытия = "УстановкаОсновногоБанковскогоСчетаВыполнена" Тогда УстановкаОсновногоБанковскогоСчетаВыполнена = Истина; ИначеЕсли ИмяСобытия = "СозданаНастройкаОбменаСБанком" Тогда ВидимостьЭлементовДиректБанк = ЭлектронноеВзаимодействиеБПВызовСервера.ВидимостьЭлементовДиректБанк( Объект.Владелец, Объект.Банк); ПоказатьЭлементыДиректБанк(ЭтотОбъект); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) ОбработкаВыбораНаСервере(ВыбранноеЗначение); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) // СтандартныеПодсистемы.ПодключаемыеКоманды ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); // Конец СтандартныеПодсистемы.ПодключаемыеКоманды НадежностьБанковКлиент.ПодключитьОбработчикПоказатьИнформациюНадежностьБанков(ЭтотОбъект); КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовШапкиФормы &НаКлиенте Процедура НомерСчетаПриИзменении(Элемент) Объект.НомерСчета = СтрЗаменить(Объект.НомерСчета, " ", ""); Элементы.ПодсказкаНомерСчета.Гиперссылка = Ложь; БанковскиеСчетаФормыКлиент.УстановитьВалютуПодсказкуСчета( Объект, ЭтотОбъект, БИКБанка, ЦветВыделенияНекорректногоЗначение, ЯвляетсяБанкомРФ); ДоступностьВалютыСчета(ЭтотОбъект); ДоступностьНомераИДатыРазрешения(ЭтотОбъект); УстановитьНаименованиеСчета(ЭтотОбъект, Истина); ПоказатьЭлементыДиректБанк(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура ВалютаДенежныхСредствПриИзменении(Элемент) Если НЕ ЗначениеЗаполнено(Объект.ВалютаДенежныхСредств) Тогда Объект.ВалютаДенежныхСредств = ВалютаРегламентированногоУчета; КонецЕсли; Объект.Валютный = Объект.ВалютаДенежныхСредств <> ВалютаРегламентированногоУчета; УстановитьНаименованиеСчета(ЭтотОбъект); ДоступностьНомераИДатыРазрешения(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура БанкОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Объект.ГосударственныйКонтракт = Неопределено; РеквизитыБанка = БанковскиеСчетаФормыКлиент.ПолучитьДанныеБанка(ВыбранноеЗначение); ВыбранноеЗначение = РеквизитыБанка.ссылка; ОбновитьРеквизитыБанкаНаФорме(ЭтотОбъект, РеквизитыБанка); КонецПроцедуры &НаКлиенте Процедура ИспользуетсяБанкДляРасчетовПриИзменении(Элемент) ДоступностьБанкаДляРасчетов(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура БанкДляРасчетовОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) РеквизитыБанка = БанковскиеСчетаФормыКлиент.ПолучитьДанныеБанка(ВыбранноеЗначение); ВыбранноеЗначение = РеквизитыБанка.Ссылка; ОбновитьРеквизитыБанкаДляРасчетовНаФорме(ЭтотОбъект, РеквизитыБанка); КонецПроцедуры &НаКлиенте Процедура НаименованиеПриИзменении(Элемент) СформироватьАвтоНаименование(ЭтотОбъект, Объект.Наименование); КонецПроцедуры &НаКлиенте Процедура НомерСчетаИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка) ТекущийТекстНомераСчета = СтрЗаменить(Текст," ",""); ПодключитьОбработчикОжидания("Подключаемый_УстановитьПодсказкуНомераСчета", 0.1, Истина); КонецПроцедуры &НаКлиенте Процедура БанкПриИзменении(Элемент) Если НЕ ЗначениеЗаполнено(Объект.Банк) Тогда БИКБанка = ""; НаименованиеБанка = ""; ДеятельностьБанкаПрекращена = Ложь; ЯвляетсяБанкомРФ = Ложь; КонецЕсли; БанковскиеСчетаФормыКлиентСервер.ИзменитьДлинуНомераСчета(ЭтотОбъект, ЯвляетсяБанкомРФ); Объект.НомерСчета = Элементы.НомерСчета.ОграничениеТипа.ПривестиЗначение(Объект.НомерСчета); Элементы.ПодсказкаНомерСчета.Гиперссылка = Ложь; БанковскиеСчетаФормыКлиент.УстановитьВалютуПодсказкуСчета( Объект, ЭтотОбъект, БИКБанка, ЦветВыделенияНекорректногоЗначение, ЯвляетсяБанкомРФ); ВидимостьЭлементовДиректБанк = ЭлектронноеВзаимодействиеБПВызовСервера.ВидимостьЭлементовДиректБанк( Объект.Владелец, Объект.Банк); НадежностьБанковКлиентСервер.ПолучитьИнформациюНадежностьБанков(ЭтотОбъект, БИКБанка, ПоказыватьИнформациюНадежностьБанков(ЭтотОбъект)); УправлениеФормой(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура БанкДляРасчетовПриИзменении(Элемент) Если НЕ ЗначениеЗаполнено(Объект.БанкДляРасчетов) Тогда КодБанкаДляРасчетов = ""; ДеятельностьБанкаНепрямыхРасчетовПрекращена = Ложь; КонецЕсли; УправлениеФормой(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура БанкАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) БанковскиеСчетаФормыКлиент.БанкАвтоПодбор(Текст, ДанныеВыбора, СтандартнаяОбработка, ПараметрыПолученияДанных); КонецПроцедуры &НаКлиенте Процедура БанкДляРасчетовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) БанковскиеСчетаФормыКлиент.БанкАвтоПодбор(Текст, ДанныеВыбора, СтандартнаяОбработка, ПараметрыПолученияДанных); КонецПроцедуры &НаКлиенте Процедура ДекорацияСкрытьРекламуДиректБанкНажатие(Элемент) ЭлектронноеВзаимодействиеБПВызовСервера.СохранитьНастройкуВидимостиРекламыДиректБанк(Объект.Банк, Ложь); ВидимостьЭлементовДиректБанк = "ПоказатьГиперссылку"; ПоказатьЭлементыДиректБанк(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура ДекорацияТекстРекламыОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) Если НавигационнаяСсылкаФорматированнойСтроки = "ПодключитьДиректБанк" Тогда СтандартнаяОбработка = Ложь; ОткрытьПомощник = Истина; Если Модифицированность Тогда ОткрытьПомощник = Записать(); КонецЕсли; Если ОткрытьПомощник Тогда ОбменСБанкамиКлиент.ОткрытьСоздатьНастройкуОбмена(Объект.Владелец, Объект.Банк, Объект.НомерСчета); КонецЕсли; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПодсказкаНомерСчетаНажатие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ОткрытьПомощник = Истина; Если Модифицированность Тогда ОткрытьПомощник = Записать(); КонецЕсли; Если ОткрытьПомощник Тогда ОбменСБанкамиКлиент.ОткрытьСоздатьНастройкуОбмена(Объект.Владелец, Объект.Банк, Объект.НомерСчета); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура НастройкиПлатежныхПорученийТребований(Команда) ПараметрыФормы = Новый Структура("БанковскийСчетОрганизации, БанковскийСчетКонтрагента, АвтоТекстНазначения, НастройкиПП"); Если Элементы.ПодразделениеОрганизации.Видимость Тогда // Владелец - Организация ПараметрыФормы.Вставить("ЭтоСчетОрганизации", Истина); ПараметрыФормы.Вставить("Организация", Объект.Владелец); ПараметрыФормы.БанковскийСчетОрганизации = Объект.Ссылка; ПараметрыФормы.НастройкиПП = Новый Структура("ТекстКорреспондента, ВсегдаУказыватьКПП, МесяцПрописью, СуммаБезКопеек", Объект.ТекстКорреспондента, Объект.ВсегдаУказыватьКПП, Объект.МесяцПрописью, Объект.СуммаБезКопеек); Если ТипЗнч(НаименованиеПлательщикаПриПеречисленииВБюджет) = Тип("Строка") Тогда ПараметрыФормы.НастройкиПП.Вставить("НаименованиеПлательщикаПриПеречисленииВБюджет", НаименованиеПлательщикаПриПеречисленииВБюджет); КонецЕсли; Иначе // Владелец - Контрагент ПараметрыФормы.БанковскийСчетКонтрагента = Объект.Ссылка; ПараметрыФормы.Вставить("Контрагент", Объект.Владелец); ПараметрыФормы.НастройкиПП = Новый Структура("ТекстКорреспондента, ТекстНазначения, ВсегдаУказыватьКПП", Объект.ТекстКорреспондента, Объект.ТекстНазначения, Объект.ВсегдаУказыватьКПП); КонецЕсли; ПараметрыФормы.Вставить("Наименование", Объект.Наименование); ОткрытьФорму("ОбщаяФорма.НастройкиПлатежныхПорученийТребований", ПараметрыФормы, ЭтотОбъект); КонецПроцедуры &НаСервере Процедура ОбработкаВыбораНаСервере(ВыбранноеЗначение) Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение); Если ВыбранноеЗначение.Свойство("МесяцПрописью") Тогда ХранилищеОбщихНастроек.Сохранить("НастройкиПлатежныхПорученийТребований", "ВсегдаУказыватьКППОрганизации", ВыбранноеЗначение.ВсегдаУказыватьКПП); НаименованиеПлательщикаПриПеречисленииВБюджет = СокрЛП(ВыбранноеЗначение.НаименованиеПлательщикаПриПеречисленииВБюджет); Иначе Если ВыбранноеЗначение.Свойство("ВсегдаУказыватьКПП") Тогда ХранилищеОбщихНастроек.Сохранить("НастройкиПлатежныхПорученийТребований", "ВсегдаУказыватьКППКонтрагента", ВыбранноеЗначение.ВсегдаУказыватьКПП); КонецЕсли; КонецЕсли; Модифицированность = Истина; КонецЕсли; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура УправлениеФормой(Форма) Объект = Форма.Объект; Элементы = Форма.Элементы; УстановитьНаименованиеСчета(Форма); Форма.ПодсказкаБанк = БанковскиеСчетаФормыКлиентСервер.ПодсказкаПоляБанка(Форма.ДеятельностьБанкаПрекращена); Если Не ЗначениеЗаполнено(Форма.ПодсказкаНомерСчета) ИЛИ Элементы.ПодсказкаНомерСчета.Гиперссылка Тогда Элементы.ПодсказкаНомерСчета.Гиперссылка = Ложь; Форма.ПодсказкаНомерСчета = БанковскиеСчетаФормыКлиентСервер.ПодсказкаПоляНомерСчета( Форма.Объект.НомерСчета, Форма.БИКБанка, Форма.ЯвляетсяБанкомРФ, Форма.ЦветВыделенияНекорректногоЗначение); КонецЕсли; Форма.ПодсказкаБанкНепрямыхРасчетов = БанковскиеСчетаФормыКлиентСервер.ПодсказкаПоляБанка(Форма.ДеятельностьБанкаНепрямыхРасчетовПрекращена); ВидимостьРеквизитовБанкаРФ = Форма.ЯвляетсяБанкомРФ Или Не ЗначениеЗаполнено(Объект.Банк); Форма.Элементы.ГруппаГосударственныйКонтракт.Видимость = ВидимостьРеквизитовБанкаРФ; ДоступностьВалютыСчета(Форма); ДоступностьНомераИДатыРазрешения(Форма); ДоступностьПоляГосударственныйКонтракт(Форма); ДоступностьБанкаДляРасчетов(Форма); ПоказатьЭлементыДиректБанк(Форма); // В интерфейсе интеграции с банком недоступна печать платежных поручений. Элементы.НастройкиПлатежныхПорученийТребований.Видимость = Не Форма.ИнтеграцияСБанком; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура УстановитьНаименованиеСчета(Форма, ИзменениеНомераСчета = Ложь) Объект = Форма.Объект; Если ПустаяСтрока(Объект.Наименование) ИЛИ Объект.Наименование = Форма.АвтоНаименование Тогда Форма.АвтоНаименование = СформироватьАвтоНаименование(Форма); Если НЕ ПустаяСтрока(Форма.АвтоНаименование) И Форма.АвтоНаименование <> Объект.Наименование Тогда Объект.Наименование = Форма.АвтоНаименование; КонецЕсли; Иначе Если ИзменениеНомераСчета И НЕ ПустаяСтрока(Форма.НомерСчетаТекущий) Тогда Объект.Наименование = СтрЗаменить(Объект.Наименование, Форма.НомерСчетаТекущий, СокрЛП(Объект.НомерСчета)); КонецЕсли; Форма.АвтоНаименование = СформироватьАвтоНаименование(Форма, Объект.Наименование); КонецЕсли; Форма.НомерСчетаТекущий = СокрЛП(Объект.НомерСчета); КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Функция СформироватьАвтоНаименование(Форма, Знач Текст = "") Элементы = Форма.Элементы; Объект = Форма.Объект; ПредставлениеВалюты = "" + Объект.ВалютаДенежныхСредств; ПредставлениеБанка = ""; Если ЗначениеЗаполнено(Объект.Банк) Тогда ПредставлениеБанка = СокрЛП(Форма.НаименованиеБанка); КонецЕсли; Элементы.Наименование.СписокВыбора.Очистить(); СтрокаНаименования1 = УчетДенежныхСредствКлиентСервер.НаименованиеБанковскогоСчетаПоУмолчанию( Объект.НомерСчета, ПредставлениеБанка, ПредставлениеВалюты, Объект.Валютный, 1); // Вариант по умолчанию выводим последним Если НЕ ПустаяСтрока(СтрокаНаименования1) Тогда Элементы.Наименование.СписокВыбора.Добавить(СокрЛП(СтрокаНаименования1)); КонецЕсли; СтрокаНаименования2 = УчетДенежныхСредствКлиентСервер.НаименованиеБанковскогоСчетаПоУмолчанию( Объект.НомерСчета, ПредставлениеБанка, ПредставлениеВалюты, Объект.Валютный, 2); Строки1и2НеРавны = СокрЛП(СтрокаНаименования2) <> "(" + СтрокаНаименования1 + ")"; Если СтрокаНаименования2 <> "" И Строки1и2НеРавны И Элементы.Наименование.СписокВыбора.НайтиПоЗначению(СтрокаНаименования2) = Неопределено Тогда Элементы.Наименование.СписокВыбора.Добавить(СокрЛП(СтрокаНаименования2)); КонецЕсли; СтрокаНаименования = БанковскиеСчетаФормыКлиентСервер.НаименованиеБанковскогоСчета(Объект, ПредставлениеБанка); Если НЕ ПустаяСтрока(СтрокаНаименования) И Элементы.Наименование.СписокВыбора.НайтиПоЗначению(СтрокаНаименования) = Неопределено Тогда Элементы.Наименование.СписокВыбора.Добавить(СокрЛП(СтрокаНаименования)); КонецЕсли; Если НЕ ПустаяСтрока(Текст) И Элементы.Наименование.СписокВыбора.НайтиПоЗначению(Текст) = Неопределено Тогда Элементы.Наименование.СписокВыбора.Добавить(СокрЛП(Текст)); КонецЕсли; Возврат СтрокаНаименования; КонецФункции &НаСервереБезКонтекста Процедура УстановитьОсновнойБанковскийСчет(СтруктураПараметров) Справочники.БанковскиеСчета.УстановитьОсновнойБанковскийСчет( СтруктураПараметров.КонтрагентОрганизация, СтруктураПараметров.ОсновнойБанковскийСчет); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // ПОДКЛЮЧАЕМЫЕ ОБРАБОТЧИКИ &НаКлиенте Процедура Подключаемый_УстановитьПодсказкуНомераСчета() Элементы.ПодсказкаНомерСчета.Гиперссылка = Ложь; Если ЯвляетсяБанкомРФ Тогда Если Не БанковскиеПравила.ПроверитьДлинуНомераСчета(ТекущийТекстНомераСчета) Тогда ПодсказкаНомерСчета = БанковскиеСчетаФормыКлиент.ПодсказкаВводаПоляНомерСчета( ТекущийТекстНомераСчета, БИКБанка); Иначе ПодсказкаНомерСчета = БанковскиеСчетаФормыКлиентСервер.ПодсказкаПоляНомерСчета( ТекущийТекстНомераСчета, БИКБанка, ЯвляетсяБанкомРФ, ЦветВыделенияНекорректногоЗначение); КонецЕсли; КонецЕсли; ПоказатьЭлементыДиректБанк(ЭтотОбъект, ТекущийТекстНомераСчета); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // ЗАВЕРШЕНИЕ НЕМОДАЛЬНЫХ ВЫЗОВОВ #КонецОбласти #Область СлужебныеПроцедурыИФункцииБСП // СтандартныеПодсистемы.ПодключаемыеКоманды &НаКлиенте Процедура Подключаемый_ВыполнитьКоманду(Команда) ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект); КонецПроцедуры &НаСервере Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат); КонецПроцедуры &НаКлиенте Процедура Подключаемый_ОбновитьКоманды() ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); КонецПроцедуры // Конец СтандартныеПодсистемы.ПодключаемыеКоманды &НаСервере Процедура ПриЧтенииНаСервере(ТекущийОбъект) ПодготовитьФормуНаСервере(); // СтандартныеПодсистемы.ПодключаемыеКоманды ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); // Конец СтандартныеПодсистемы.ПодключаемыеКоманды КонецПроцедуры &НаКлиенте Процедура ЭтоГосударственныйКонтрактПриИзменении(Элемент) Если НЕ ЭтоГосударственныйКонтракт Тогда Объект.ГосударственныйКонтракт = Неопределено; КонецЕсли; ДоступностьПоляГосударственныйКонтракт(ЭтотОбъект); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаСервере Процедура ПодготовитьФормуНаСервере() ЦветВыделенияНекорректногоЗначение = ЦветаСтиля.ЦветВыделенияКонтрагентаСОшибкой; ЭтоГосударственныйКонтракт = ЗначениеЗаполнено(Объект.ГосударственныйКонтракт); Элементы.ЭтоГосударственныйКонтракт.Доступность = ПравоДоступа("Редактирование", Метаданные.Справочники.БанковскиеСчета); ЗаполнитьРеквизитыБанков(); БанковскиеСчетаФормыКлиентСервер.ИзменитьДлинуНомераСчета(ЭтотОбъект, ЯвляетсяБанкомРФ); КонецПроцедуры &НаСервере Процедура ЗаполнитьРеквизитыБанков() РеквизитыБанка = БанковскиеСчетаВызовСервера.ПолучитьРеквизитыБанкаИзСправочника(Объект.Банк); ОбновитьРеквизитыБанкаНаФорме(ЭтотОбъект, РеквизитыБанка); РеквизитыБанка = БанковскиеСчетаВызовСервера.ПолучитьРеквизитыБанкаИзСправочника(Объект.БанкДляРасчетов); ОбновитьРеквизитыБанкаДляРасчетовНаФорме(ЭтотОбъект, РеквизитыБанка); НадежностьБанковКлиентСервер.ПолучитьИнформациюНадежностьБанков(ЭтотОбъект, БИКБанка, ПоказыватьИнформациюНадежностьБанков(ЭтотОбъект)); КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура ОбновитьРеквизитыБанкаНаФорме(Форма, РеквизитыБанка) Если ЗначениеЗаполнено(РеквизитыБанка.Ссылка) Тогда Если РеквизитыБанка.ЯвляетсяБанкомРФ Тогда Форма.БИКБанка = РеквизитыБанка.Код; Иначе Форма.БИКБанка = РеквизитыБанка.СВИФТБИК; КонецЕсли; Форма.НаименованиеБанка = РеквизитыБанка.Наименование; Форма.ДеятельностьБанкаПрекращена = РеквизитыБанка.ДеятельностьПрекращена; Форма.ЯвляетсяБанкомРФ = РеквизитыБанка.ЯвляетсяБанкомРФ; КонецЕсли; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура ОбновитьРеквизитыБанкаДляРасчетовНаФорме(Форма, РеквизитыБанка) Если ЗначениеЗаполнено(РеквизитыБанка.Ссылка) Тогда Форма.КодБанкаДляРасчетов = РеквизитыБанка.Код; Форма.ДеятельностьБанкаНепрямыхРасчетовПрекращена = РеквизитыБанка.ДеятельностьПрекращена; КонецЕсли; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура ДоступностьВалютыСчета(Форма); Форма.Элементы.ВалютаДенежныхСредств.ТолькоПросмотр = Форма.ЯвляетсяБанкомРФ; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура ДоступностьПоляГосударственныйКонтракт(Форма) Элементы = Форма.Элементы; Элементы.ГосударственныйКонтракт.Доступность = Форма.ЭтоГосударственныйКонтракт; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура ДоступностьНомераИДатыРазрешения(Форма) Форма.Элементы.НомерИДатаРазрешения.Доступность = Форма.Объект.Валютный; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура ДоступностьБанкаДляРасчетов(Форма) Форма.Элементы.ГруппаРеквизитыБанкаДляРасчетов.Доступность = Форма.ИспользуетсяБанкДляРасчетов; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура ПоказатьЭлементыДиректБанк(Форма, ТекущийТекстНомераСчета = "") Объект = Форма.Объект; Элементы = Форма.Элементы; ВидимостьБаннера = Ложь; ВидимостьГиперссылки = Ложь; Если (ЗначениеЗаполнено(Объект.НомерСчета) ИЛИ ЗначениеЗаполнено(ТекущийТекстНомераСчета)) И (СтрДлина(Форма.ПодсказкаНомерСчета) = 0 // номер счета корректен ИЛИ Элементы.ПодсказкаНомерСчета.Гиперссылка) И Не Форма.ИнтеграцияСБанком Тогда ВидимостьБаннера = Форма.ВидимостьЭлементовДиректБанк = "ПоказатьБаннер"; ВидимостьГиперссылки = Форма.ВидимостьЭлементовДиректБанк = "ПоказатьГиперссылку"; КонецЕсли; Если Элементы.ГруппаРекламаДиректБанк.Видимость <> ВидимостьБаннера Тогда Элементы.ГруппаРекламаДиректБанк.Видимость = ВидимостьБаннера; // При изменении видимости элементов в веб-клиенте происходит сброс данных редактируемого поля Если ОбщегоНазначенияКлиентСервер.ЭтоВебКлиент() И ЗначениеЗаполнено(ТекущийТекстНомераСчета) Тогда Объект.НомерСчета = ТекущийТекстНомераСчета; УстановитьНаименованиеСчета(Форма, Истина); КонецЕсли; КонецЕсли; Если ВидимостьГиперссылки Тогда Элементы.ПодсказкаНомерСчета.Гиперссылка = Истина; ТекстГиперссылки = НСтр("ru = 'Подключить 1С:ДиректБанк'"); Форма.ПодсказкаНомерСчета = Новый ФорматированнаяСтрока( ТекстГиперссылки,, Форма.ЦветГиперссылки,, "ДиректБанкПомощникПодключения"); ИначеЕсли Элементы.ПодсказкаНомерСчета.Гиперссылка Тогда Элементы.ПодсказкаНомерСчета.Гиперссылка = Ложь; Форма.ПодсказкаНомерСчета = Новый ФорматированнаяСтрока(""); КонецЕсли; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Функция ПоказыватьИнформациюНадежностьБанков(Форма) Если Форма.ДеятельностьБанкаПрекращена ИЛИ НЕ ЗначениеЗаполнено(Форма.БИКБанка) ИЛИ НЕ Форма.ЯвляетсяБанкомРФ Тогда Возврат Ложь; КонецЕсли; Возврат Истина; КонецФункции &НаКлиенте Процедура Подключаемый_ПоказатьИнформациюНадежностьБанков() НадежностьБанковКлиент.ПоказатьИнформациюНадежностьБанков(ЭтотОбъект); КонецПроцедуры #КонецОбласти

Catalogs/БланкиСтрогойОтчетности/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс // СтандартныеПодсистемы.ВерсионированиеОбъектов // Определяет настройки объекта для подсистемы ВерсионированиеОбъектов. // // Параметры: // Настройки - Структура - настройки подсистемы. Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт КонецПроцедуры // Конец СтандартныеПодсистемы.ВерсионированиеОбъектов #КонецОбласти #КонецЕсли

Catalogs/БланкиСтрогойОтчетности/ObjectModule



Catalogs/БланкиСтрогойОтчетности/Forms/ФормаСписка/Form/Module

#Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) МожноРедактировать = ПравоДоступа("Редактирование", Метаданные.Справочники.БланкиСтрогойОтчетности); Элементы.СписокКонтекстноеМенюИзменитьВыделенные.Видимость = МожноРедактировать; КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура ИзменитьВыделенные(Команда) ГрупповоеИзменениеОбъектовКлиент.ИзменитьВыделенные(Элементы.Список); КонецПроцедуры #КонецОбласти

Catalogs/БланкиСтрогойОтчетности/Forms/ФормаЭлемента/Form/Module

#Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // СтандартныеПодсистемы.ВерсионированиеОбъектов ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект); // Конец СтандартныеПодсистемы.ВерсионированиеОбъектов КонецПроцедуры #КонецОбласти

Catalogs/Валюты/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс #Область ДляВызоваИзДругихПодсистем // СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов // Возвращает реквизиты объекта, которые разрешается редактировать // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: // Массив - список имен реквизитов объекта. Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; Результат.Добавить("СпособУстановкиКурса"); Результат.Добавить("Наценка"); Результат.Добавить("ОсновнаяВалюта"); Результат.Добавить("ФормулаРасчетаКурса"); Возврат Результат; КонецФункции // Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов #КонецОбласти #КонецОбласти #КонецЕсли

Catalogs/Валюты/ObjectModule

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

Catalogs/Валюты/Forms/ФормаСписка/Form/Module

 #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Возврат; КонецЕсли; Элементы.Валюты.РежимВыбора = Параметры.РежимВыбора; ДатаКурса = НачалоДня(ТекущаяДатаСеанса()); Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ДатаКурса", ДатаКурса); ИзменяемыеПоля = Новый Массив; ИзменяемыеПоля.Добавить("Курс"); ИзменяемыеПоля.Добавить("Кратность"); Список.УстановитьОграниченияИспользованияВГруппировке(ИзменяемыеПоля); Список.УстановитьОграниченияИспользованияВПорядке(ИзменяемыеПоля); Список.УстановитьОграниченияИспользованияВОтборе(ИзменяемыеПоля); ДоступноИзменениеВалют = ПравоДоступа("Изменение", Метаданные.РегистрыСведений.КурсыВалют); ДоступнаЗагрузкаКурсов = Метаданные.Обработки.Найти("ЗагрузкаКурсовВалют") <> Неопределено И ДоступноИзменениеВалют; Элементы.ФормаПодборИзКлассификатора.Видимость = ДоступнаЗагрузкаКурсов; Элементы.ФормаЗагрузитьКурсыВалют.Видимость = ДоступнаЗагрузкаКурсов; Если Не ДоступнаЗагрузкаКурсов Тогда Если ДоступноИзменениеВалют Тогда Элементы.СоздатьВалюту.Заголовок = НСтр("ru = 'Создать'"); КонецЕсли; Элементы.Создать.Вид = ВидГруппыФормы.ГруппаКнопок; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ОбработкаВыбора(РезультатВыбора, ИсточникВыбора) Элементы.Валюты.Обновить(); Элементы.Валюты.ТекущаяСтрока = РезультатВыбора; КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ИмяСобытия = "Запись_КурсыВалют" Или ИмяСобытия = "Запись_ЗагрузкаКурсовВалют" Тогда Элементы.Валюты.Обновить(); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовТаблицыФормыВалюты &НаСервереБезКонтекста Процедура ВалютыПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) Перем ДатаКурса; Если Не Настройки.ДополнительныеСвойства.Свойство("ДатаКурса", ДатаКурса) Тогда Возврат; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КурсыВалют.Валюта КАК Валюта, | КурсыВалют.Курс КАК Курс, | КурсыВалют.Кратность КАК Кратность |ИЗ | РегистрСведений.КурсыВалют.СрезПоследних(&КонецПериода, Валюта В (&Валюты)) КАК КурсыВалют"; Запрос.УстановитьПараметр("Валюты", Строки.ПолучитьКлючи()); Запрос.УстановитьПараметр("КонецПериода", ДатаКурса); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл СтрокаСписка = Строки[Выборка.Валюта]; СтрокаСписка.Данные["Курс"] = Выборка.Курс; Если Выборка.Кратность <> 1 Тогда Пояснение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'руб. за %1 %2'"), Выборка.Кратность, СтрокаСписка.Данные["Наименование"]); СтрокаСписка.Данные["Кратность"] = Пояснение; КонецЕсли; КонецЦикла; КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура ПодборИзКлассификатора(Команда) ИмяФормыПодбора = "Обработка.ЗагрузкаКурсовВалют.Форма.ПодборВалютИзКлассификатора"; ОткрытьФорму(ИмяФормыПодбора, , ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура ЗагрузитьКурсыВалют(Команда) ИмяФормыЗагрузки = "Обработка.ЗагрузкаКурсовВалют.Форма"; ПараметрыФормы = Новый Структура("ОткрытиеИзСписка"); ОткрытьФорму(ИмяФормыЗагрузки, ПараметрыФормы); КонецПроцедуры #КонецОбласти

Catalogs/Валюты/Forms/ФормаЭлемента/Form/Module

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

Catalogs/ВариантыОтчетов/Commands/Изменить/CommandModule

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

Catalogs/ВариантыОтчетов/Commands/Открыть/CommandModule

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

Catalogs/ВариантыОтчетов/Commands/РазместитьВРазделах/CommandModule

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

Catalogs/ВариантыОтчетов/Commands/СброситьНастройкиПользователей/CommandModule

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

Catalogs/ВариантыОтчетов/Commands/СброситьНастройкиРазмещения/CommandModule

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

Catalogs/ВариантыОтчетов/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс #Область ДляВызоваИзДругихПодсистем // СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов // Возвращает реквизиты объекта, которые разрешается редактировать // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: // Массив - список имен реквизитов объекта. Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; Результат.Добавить("Описание"); Результат.Добавить("Автор"); Результат.Добавить("ТолькоДляАвтора"); Возврат Результат; КонецФункции // Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов #КонецОбласти #КонецОбласти #КонецЕсли #Область ОбработчикиСобытий Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда // Переопределение для целей избранного - вместо карточки с настройками размещения отчета будет открываться его // основная форма. Если ВидФормы = "ФормаОбъекта" Тогда СсылкаВарианта = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "Ключ"); Если Не ЗначениеЗаполнено(СсылкаВарианта) Тогда ВызватьИсключение НСтр("ru = 'Новый вариант отчета можно создать только из формы отчета'"); КонецЕсли; ПоказатьКарточку = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ПоказатьКарточку"); Если ПоказатьКарточку = Истина Тогда Возврат; КонецЕсли; ПараметрыОткрытия = ВариантыОтчетов.ПараметрыОткрытия(СсылкаВарианта); ВариантыОтчетовКлиентСервер.ДополнитьСтруктуруКлючом(ПараметрыОткрытия, "ВыполнятьЗамеры", Ложь); Если ПараметрыОткрытия.ТипОтчета = "Внутренний" Или ПараметрыОткрытия.ТипОтчета = "Расширение" Тогда Вид = "Отчет"; ИначеЕсли ПараметрыОткрытия.ТипОтчета = "Дополнительный" Тогда Вид = "ВнешнийОтчет"; Если Не ПараметрыОткрытия.Свойство("Подключен") Тогда ВариантыОтчетов.ПриПодключенииОтчета(ПараметрыОткрытия); КонецЕсли; Если Не ПараметрыОткрытия.Подключен Тогда ВызватьИсключение НСтр("ru = 'Вариант внешнего отчета можно открыть только из формы отчета.'"); КонецЕсли; Иначе ВызватьИсключение НСтр("ru = 'Вариант внешнего отчета можно открыть только из формы отчета.'"); КонецЕсли; ПолноеИмяОтчета = Вид + "." + ПараметрыОткрытия.ИмяОтчета; КлючУникальности = ОтчетыКлиентСервер.КлючУникальности(ПолноеИмяОтчета, ПараметрыОткрытия.КлючВарианта); ПараметрыОткрытия.Вставить("КлючПараметровПечати", КлючУникальности); ПараметрыОткрытия.Вставить("КлючСохраненияПоложенияОкна", КлючУникальности); СтандартнаяОбработка = Ложь; Если ПараметрыОткрытия.ТипОтчета = "Дополнительный" Тогда // Для платформы. ВыбраннаяФорма = "Справочник.ВариантыОтчетов.Форма.ФормаЭлемента"; Параметры.Вставить("ПараметрыОткрытияФормыОтчета", ПараметрыОткрытия); Возврат; КонецЕсли; ВыбраннаяФорма = ПолноеИмяОтчета + ".Форма"; ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(Параметры, ПараметрыОткрытия); КонецЕсли; #КонецЕсли КонецПроцедуры #КонецОбласти #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область СлужебныйПрограммныйИнтерфейс //////////////////////////////////////////////////////////////////////////////// // Обработчики обновления. // Регистрирует данные к обновлению в плане обмена ОбновлениеИнформационнойБазы // см. Стандарты и методики разработки прикладных решений: Параллельный режим отложенного обновления. // // Параметры: // Параметры - Структура - см. ОбновлениеИнформационнойБазы.ОсновныеПараметрыОтметкиКОбработке. // Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт Запрос = Новый Запрос(" |ВЫБРАТЬ | Варианты.Ссылка |ИЗ | Справочник.ВариантыОтчетов КАК Варианты |ГДЕ | Варианты.Отчет = &УниверсальныйОтчет | И Варианты.Пользовательский |"); УниверсальныйОтчет = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Метаданные.Отчеты.УниверсальныйОтчет); Запрос.УстановитьПараметр("УниверсальныйОтчет", УниверсальныйОтчет); Ссылки = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, Ссылки); КонецПроцедуры // Обрабатывает данные, зарегистрированные в плане обмена ОбновлениеИнформационнойБазы // см. Стандарты и методики разработки прикладных решений: Параллельный режим отложенного обновления. // // Параметры: // Параметры - Структура - см. ОбновлениеИнформационнойБазы.ОсновныеПараметрыОтметкиКОбработке. // Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт ОбъектМетаданных = Метаданные.Справочники.ВариантыОтчетов; ПолноеИмяОбъекта = ОбъектМетаданных.ПолноеИмя(); Обработано = 0; Отказано = 0; Вариант = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, ПолноеИмяОбъекта); Пока Вариант.Следующий() Цикл Попытка Отчеты.УниверсальныйОтчет.УстановитьИсточникДанныхВарианта(Вариант.Ссылка); Обработано = Обработано + 1; Исключение // Если не удалось обработать вариант отчета, повторяем попытку снова. Отказано = Отказано + 1; ШаблонКомментария = НСтр("ru = 'Не удалось установить источник данных варианта отчета %1. |Возможно он поврежден и не подлежит восстановлению. | |Информация для администратора: %2'"); Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ШаблонКомментария, Вариант.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации( ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, ОбъектМетаданных, Вариант.Ссылка, Комментарий); КонецПопытки; КонецЦикла; Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта); Если Обработано = 0 И Отказано <> 0 Тогда ШаблонСообщения = НСтр("ru = 'Процедуре УстановитьИсточникДанныхВарианта не удалось обработать некоторые варианты отчетов: %1'"); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, Отказано); ВызватьИсключение ТекстСообщения; Иначе ШаблонКомментария = НСтр("ru = 'Процедура УстановитьИсточникДанныхВарианта обработала очередной пакет вариантов отчетов: %1'"); Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКомментария, Обработано); ЗаписьЖурналаРегистрации( ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, ОбъектМетаданных,, Комментарий); КонецЕсли; КонецПроцедуры #КонецОбласти #КонецЕсли

Catalogs/ВариантыОтчетов/ObjectModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ОбработчикиСобытий Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) ИсключаемыеРеквизиты = Новый Массив; Если Не Пользовательский Тогда ИсключаемыеРеквизиты.Добавить("Автор"); КонецЕсли; ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, ИсключаемыеРеквизиты); Если Наименование <> "" И ВариантыОтчетов.НаименованиеЗанято(Отчет, Ссылка, Наименование) Тогда Отказ = Истина; ОбщегоНазначенияКлиентСервер.СообщитьПользователю( СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '""%1"" занято, необходимо указать другое наименование.'"), Наименование), , "Наименование"); КонецЕсли; КонецПроцедуры Процедура ПередЗаписью(Отказ) Если ДополнительныеСвойства.Свойство("ЗаполнениеПредопределенных") Тогда ПроверитьЗаполнениеПредопределенного(Отказ); КонецЕсли; Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект); ПользователемИзмененаПометкаУдаления = ( Не ЭтоНовый() И ПометкаУдаления <> Ссылка.ПометкаУдаления И Не ДополнительныеСвойства.Свойство("ЗаполнениеПредопределенных")); Если Не Пользовательский И ПользователемИзмененаПометкаУдаления Тогда Если ПометкаУдаления Тогда ТекстОшибки = НСтр("ru = 'Пометка на удаление предопределенного варианта отчета запрещена.'"); Иначе ТекстОшибки = НСтр("ru = 'Снятие пометки удаления предопределенного варианта отчета запрещена.'"); КонецЕсли; ВызватьИсключение ТекстОшибки; КонецЕсли; Если Не ПометкаУдаления И ПользователемИзмененаПометкаУдаления Тогда НаименованиеЗанято = ВариантыОтчетов.НаименованиеЗанято(Отчет, Ссылка, Наименование); КлючВариантаЗанят = ВариантыОтчетов.КлючВариантаЗанят(Отчет, Ссылка, КлючВарианта); Если НаименованиеЗанято ИЛИ КлючВариантаЗанят Тогда ТекстОшибки = НСтр("ru = 'Ошибка снятия пометки удаления варианта отчета:'"); Если НаименованиеЗанято Тогда ТекстОшибки = ТекстОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Наименование ""%1"" уже занято другим вариантом этого отчета.'"), Наименование); Иначе ТекстОшибки = ТекстОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Ключ варианта ""%1"" уже занят другим вариантом этого отчета.'"), КлючВарианта); КонецЕсли; ТекстОшибки = ТекстОшибки + НСтр("ru = 'Перед снятием пометки удаления варианта отчета |необходимо установить пометку удаления конфликтующего варианта отчета.'"); ВызватьИсключение ТекстОшибки; КонецЕсли; КонецЕсли; Если ПользователемИзмененаПометкаУдаления Тогда Если Пользовательский Тогда ИнтерактивнаяПометкаУдаления = ПометкаУдаления; Иначе ИнтерактивнаяПометкаУдаления = Ложь; КонецЕсли; КонецЕсли; // Удаление из табличной части подсистем, помеченных на удаление. МассивУдаляемыхСтрок = Новый Массив; Для Каждого СтрокаРазмещения Из Размещение Цикл Если СтрокаРазмещения.Подсистема.ПометкаУдаления = Истина Тогда МассивУдаляемыхСтрок.Добавить(СтрокаРазмещения); КонецЕсли; КонецЦикла; Для Каждого СтрокаРазмещения Из МассивУдаляемыхСтрок Цикл Размещение.Удалить(СтрокаРазмещения); КонецЦикла; // Заполнение реквизитов "НаименованияПолей" и "НаименованияПараметровИОтборов". ПроиндексироватьНастройки(); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции Процедура ПроиндексироватьНастройки() Дополнительный = (ТипОтчета = Перечисления.ТипыОтчетов.Дополнительный); Если Не Пользовательский И Не Дополнительный Тогда // Для предопределенных вариантов отчетов данные хранятся в неразделенном справочнике. НаименованияПолей = ""; НаименованияПараметровИОтборов = ""; Возврат; КонецЕсли; Если Дополнительный И БезопасныйРежим() = Ложь Тогда Возврат; // Оставить текущие настройки. КонецЕсли; Попытка ВариантыОтчетов.ПроиндексироватьСодержимоеСхемы(ЭтотОбъект); Исключение ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не удалось проиндексировать схему варианта ""%1"" отчета ""%2"":'"), КлючВарианта, Строка(Отчет)); ТекстОшибки = ТекстОшибки + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); ВариантыОтчетов.ЗаписатьВЖурнал(УровеньЖурналаРегистрации.Ошибка, ТекстОшибки, Ссылка); КонецПопытки; КонецПроцедуры // Заполняет родителя варианта отчета, основываясь на ссылке отчета и предопределенных настройках. Процедура ЗаполнитьРодителя() Экспорт ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 | Предопределенные.Ссылка КАК ПредопределенныйВариант |ПОМЕСТИТЬ втПредопределенные |ИЗ | Справочник.ПредопределенныеВариантыОтчетов КАК Предопределенные |ГДЕ | Предопределенные.Отчет = &Отчет | И Предопределенные.ПометкаУдаления = ЛОЖЬ | И Предопределенные.ГруппироватьПоОтчету | |УПОРЯДОЧИТЬ ПО | Предопределенные.Включен УБЫВ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 | ВариантыОтчетов.Ссылка |ИЗ | втПредопределенные КАК втПредопределенные | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов КАК ВариантыОтчетов | ПО втПредопределенные.ПредопределенныйВариант = ВариантыОтчетов.ПредопределенныйВариант |ГДЕ | ВариантыОтчетов.ПометкаУдаления = ЛОЖЬ"; Если ТипОтчета = Перечисления.ТипыОтчетов.Расширение Тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ".ПредопределенныеВариантыОтчетов", ".ПредопределенныеВариантыОтчетовРасширений"); КонецЕсли; Запрос = Новый Запрос; Запрос.УстановитьПараметр("Отчет", Отчет); Запрос.Текст = ТекстЗапроса; Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Родитель = Выборка.Ссылка; КонецЕсли; КонецПроцедуры // Базовые проверки корректности данных предопределенных вариантов отчетов. Процедура ПроверитьЗаполнениеПредопределенного(Отказ) Если ПометкаУдаления Или Не Предопределенный Тогда Возврат; ИначеЕсли Не ЗначениеЗаполнено(Отчет) Тогда ТекстОшибки = НеЗаполненоПоле("Отчет"); ИначеЕсли Не ЗначениеЗаполнено(ТипОтчета) Тогда ТекстОшибки = НеЗаполненоПоле("ТипОтчета"); ИначеЕсли ТипОтчета <> ВариантыОтчетовКлиентСервер.ТипОтчета(Отчет) Тогда ТекстОшибки = НСтр("ru = 'Противоречивые значения полей ""%1"" и ""%2""'"); ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, "ТипОтчета", "Отчет"); ИначеЕсли Не ЗначениеЗаполнено(ПредопределенныйВариант) И (ТипОтчета = Перечисления.ТипыОтчетов.Внутренний Или ТипОтчета = Перечисления.ТипыОтчетов.Расширение) Тогда ТекстОшибки = НеЗаполненоПоле("ПредопределенныйВариант"); Иначе Возврат; КонецЕсли; ВызватьИсключение ТекстОшибки; КонецПроцедуры Функция НеЗаполненоПоле(ИмяПоля) Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не заполнено поле ""%1""'"), ИмяПоля); КонецФункции #КонецОбласти #КонецЕсли

Catalogs/ВариантыОтчетов/Forms/РазмещениеВРазделах/Form/Module

#Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) УстановитьУсловноеОформление(); Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; СмешаннаяВажность = НСтр("ru = 'Различная'"); // Контроль количества вариантов осуществляется до открытия формы. ИзменяемыеВарианты.ЗагрузитьЗначения(Параметры.Варианты); КоличествоВариантов = ИзменяемыеВарианты.Количество(); ЗаполнитьРазделы(); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) Если СообщенияОбОшибках <> Неопределено Тогда Отказ = Истина; ОчиститьСообщения(); СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Неопределено, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 |Подробности: |%2'"), СообщенияОбОшибках.Текст, СообщенияОбОшибках.Подробно), РежимДиалогаВопрос.ОК); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоПодсистем &НаКлиенте Процедура ДеревоПодсистемИспользованиеПриИзменении(Элемент) ВариантыОтчетовКлиент.ДеревоПодсистемИспользованиеПриИзменении(ЭтотОбъект, Элемент); КонецПроцедуры &НаКлиенте Процедура ДеревоПодсистемВажностьПриИзменении(Элемент) ВариантыОтчетовКлиент.ДеревоПодсистемВажностьПриИзменении(ЭтотОбъект, Элемент); КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура Разместить(Команда) ЗаписатьНаСервере(); ТекстОповещения = НСтр("ru = 'Изменены настройки вариантов отчетов (%1 шт.).'"); ТекстОповещения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОповещения, Формат(ИзменяемыеВарианты.Количество(), "ЧН=0; ЧГ=0")); ПоказатьОповещениеПользователя(, , ТекстОповещения); ВариантыОтчетовКлиент.ОбновитьОткрытыеФормы(); Закрыть(); КонецПроцедуры &НаКлиенте Процедура СнятьФлажки(Команда) СнятьФлажкиРазделов(); Элементы.ДеревоПодсистем.Развернуть(ДеревоПодсистем.ПолучитьЭлементы()[0].ПолучитьИдентификатор(), Истина); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаСервере Процедура УстановитьУсловноеОформление() УсловноеОформление.Элементы.Очистить(); Элемент = УсловноеОформление.Элементы.Добавить(); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДеревоПодсистемВажность.Имя); ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоПодсистем.Важность"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("СмешаннаяВажность"); Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЗаблокированныйРеквизитЦвет); ВариантыОтчетов.УстановитьУсловноеОформлениеДереваПодсистем(ЭтотОбъект); КонецПроцедуры &НаСервере Процедура СнятьФлажкиРазделов() ДеревоПриемник = РеквизитФормыВЗначение("ДеревоПодсистем", Тип("ДеревоЗначений")); Найденные = ДеревоПриемник.Строки.НайтиСтроки(Новый Структура("Использование", 1), Истина); Для Каждого СтрокаДерева Из Найденные Цикл СтрокаДерева.Использование = 0; СтрокаДерева.Модифицированность = Истина; КонецЦикла; Найденные = ДеревоПриемник.Строки.НайтиСтроки(Новый Структура("Использование", 2), Истина); Для Каждого СтрокаДерева Из Найденные Цикл СтрокаДерева.Использование = 0; СтрокаДерева.Модифицированность = Истина; КонецЦикла; ЗначениеВРеквизитФормы(ДеревоПриемник, "ДеревоПодсистем"); КонецПроцедуры &НаСервере Процедура ЗаполнитьРазделы() ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ВариантыОтчетов.Ссылка, | ВариантыОтчетов.ПредопределенныйВариант, | ВЫБОР | КОГДА ВариантыОтчетов.ПометкаУдаления | ТОГДА 1 | КОГДА &ПолныеПраваНаВарианты = ЛОЖЬ | И ВариантыОтчетов.Автор <> &ТекущийПользователь | ТОГДА 2 | КОГДА НЕ ВариантыОтчетов.Отчет В (&ОтчетыПользователя) | ТОГДА 3 | КОГДА ВариантыОтчетов.Ссылка В (&ОтключенныеВариантыПрограммы) | ТОГДА 4 | ИНАЧЕ 0 | КОНЕЦ КАК Причина |ПОМЕСТИТЬ втВарианты |ИЗ | Справочник.ВариантыОтчетов КАК ВариантыОтчетов |ГДЕ | ВариантыОтчетов.Ссылка В(&МассивВариантов) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | втВарианты.Ссылка КАК Ссылка, | РазмещениеКонфигурации.Подсистема КАК Подсистема, | РазмещениеКонфигурации.Важный КАК Важный, | РазмещениеКонфигурации.СмТакже КАК СмТакже |ПОМЕСТИТЬ втОбщие |ИЗ | втВарианты КАК втВарианты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Размещение КАК РазмещениеКонфигурации | ПО (втВарианты.Причина = 0) | И втВарианты.ПредопределенныйВариант = РазмещениеКонфигурации.Ссылка | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | втВарианты.Ссылка, | РазмещениеРасширений.Подсистема, | РазмещениеРасширений.Важный, | РазмещениеРасширений.СмТакже |ИЗ | втВарианты КАК втВарианты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Размещение КАК РазмещениеРасширений | ПО (втВарианты.Причина = 0) | И втВарианты.ПредопределенныйВариант = РазмещениеРасширений.Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВариантыОтчетовРазмещение.Ссылка КАК Ссылка, | ВариантыОтчетовРазмещение.Использование КАК Использование, | ВариантыОтчетовРазмещение.Подсистема КАК Подсистема, | ВариантыОтчетовРазмещение.Важный КАК Важный, | ВариантыОтчетовРазмещение.СмТакже КАК СмТакже |ПОМЕСТИТЬ втРазделенные |ИЗ | втВарианты КАК втВарианты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Размещение КАК ВариантыОтчетовРазмещение | ПО (втВарианты.Причина = 0) | И втВарианты.Ссылка = ВариантыОтчетовРазмещение.Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | втВарианты.Ссылка, | втВарианты.Причина КАК Причина |ИЗ | втВарианты КАК втВарианты |ГДЕ | втВарианты.Причина <> 0 | |УПОРЯДОЧИТЬ ПО | Причина |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЕСТЬNULL(НастройкиРазделенных.Подсистема, НастройкиОбщих.Подсистема) КАК Ссылка, | СУММА(1) КАК Количество, | ВЫБОР | КОГДА ЕСТЬNULL(НастройкиРазделенных.Важный, НастройкиОбщих.Важный) = ИСТИНА | ТОГДА &ПредставлениеВажный | КОГДА ЕСТЬNULL(НастройкиРазделенных.СмТакже, НастройкиОбщих.СмТакже) = ИСТИНА | ТОГДА &ПредставлениеСмТакже | ИНАЧЕ """" | КОНЕЦ КАК Важность |ИЗ | втОбщие КАК НастройкиОбщих | ПОЛНОЕ СОЕДИНЕНИЕ втРазделенные КАК НастройкиРазделенных | ПО НастройкиОбщих.Ссылка = НастройкиРазделенных.Ссылка | И НастройкиОбщих.Подсистема = НастройкиРазделенных.Подсистема |ГДЕ | (НастройкиРазделенных.Использование = ИСТИНА | ИЛИ НастройкиРазделенных.Использование ЕСТЬ NULL ) | |СГРУППИРОВАТЬ ПО | ЕСТЬNULL(НастройкиРазделенных.Подсистема, НастройкиОбщих.Подсистема), | ВЫБОР | КОГДА ЕСТЬNULL(НастройкиРазделенных.Важный, НастройкиОбщих.Важный) = ИСТИНА | ТОГДА &ПредставлениеВажный | КОГДА ЕСТЬNULL(НастройкиРазделенных.СмТакже, НастройкиОбщих.СмТакже) = ИСТИНА | ТОГДА &ПредставлениеСмТакже | ИНАЧЕ """" | КОНЕЦ"; Запрос = Новый Запрос; Запрос.УстановитьПараметр("ПолныеПраваНаВарианты", ВариантыОтчетов.ПолныеПраваНаВарианты()); Запрос.УстановитьПараметр("ТекущийПользователь", Пользователи.АвторизованныйПользователь()); Запрос.УстановитьПараметр("МассивВариантов", ИзменяемыеВарианты.ВыгрузитьЗначения()); Запрос.УстановитьПараметр("ОтчетыПользователя", ВариантыОтчетов.ОтчетыТекущегоПользователя()); Запрос.УстановитьПараметр("ОтключенныеВариантыПрограммы", ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы()); Запрос.УстановитьПараметр("ПредставлениеВажный", ВариантыОтчетовКлиентСервер.ПредставлениеВажный()); Запрос.УстановитьПараметр("ПредставлениеСмТакже", ВариантыОтчетовКлиентСервер.ПредставлениеСмТакже()); Запрос.Текст = ТекстЗапроса; ВременныеТаблицы = Запрос.ВыполнитьПакет(); ОтфильтрованныеВарианты = ВременныеТаблицы[3].Выгрузить(); КоличествоОшибок = ОтфильтрованныеВарианты.Количество(); Если КоличествоОшибок > 0 Тогда СообщенияОбОшибках = Новый Структура("Текст, Подробно"); ТекущаяПричина = 0; СообщенияОбОшибках.Подробно = ""; Для Каждого СтрокаТаблицы Из ОтфильтрованныеВарианты Цикл Если ТекущаяПричина <> СтрокаТаблицы.Причина Тогда ТекущаяПричина = СтрокаТаблицы.Причина; СообщенияОбОшибках.Подробно = СообщенияОбОшибках.Подробно + Символы.ПС + Символы.ПС; Если ТекущаяПричина = 1 Тогда СообщенияОбОшибках.Подробно = СообщенияОбОшибках.Подробно + НСтр("ru = 'Помеченные на удаление:'"); ИначеЕсли ТекущаяПричина = 2 Тогда СообщенияОбОшибках.Подробно = СообщенияОбОшибках.Подробно + НСтр("ru = 'Недостаточно прав для изменения:'"); ИначеЕсли ТекущаяПричина = 3 Тогда СообщенияОбОшибках.Подробно = СообщенияОбОшибках.Подробно + НСтр("ru = 'Отчет отключен или недоступен по правам:'"); ИначеЕсли ТекущаяПричина = 4 Тогда СообщенияОбОшибках.Подробно = СообщенияОбОшибках.Подробно + НСтр("ru = 'Вариант отчета отключен по функциональной опции:'"); КонецЕсли; КонецЕсли; СообщенияОбОшибках.Подробно = СокрЛ(СообщенияОбОшибках.Подробно) + Символы.ПС + " - " + Строка(СтрокаТаблицы.Ссылка); ИзменяемыеВарианты.Удалить(ИзменяемыеВарианты.НайтиПоЗначению(СтрокаТаблицы.Ссылка)); КонецЦикла; КоличествоВариантов = ИзменяемыеВарианты.Количество(); Если КоличествоВариантов = 0 Тогда СообщенияОбОшибках.Текст = НСтр("ru = 'Недостаточно прав для размещения в разделах выбранных вариантов отчетов.'"); Иначе СообщенияОбОшибках.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Недостаточно прав для размещения в разделах некоторых вариантов отчетов (%1).'"), Формат(КоличествоОшибок, "ЧГ=")); КонецЕсли; СообщенияОбОшибках = Новый ФиксированнаяСтруктура(СообщенияОбОшибках); КонецЕсли; ВхожденияПодсистем = ВременныеТаблицы[4].Выгрузить(); ДеревоИсточник = ВариантыОтчетовПовтИсп.ПодсистемыТекущегоПользователя(); ДеревоПриемник = РеквизитФормыВЗначение("ДеревоПодсистем", Тип("ДеревоЗначений")); ДеревоПриемник.Строки.Очистить(); ДобавитьПодсистемыВДерево(ДеревоПриемник, ДеревоИсточник, ВхожденияПодсистем); ЗначениеВРеквизитФормы(ДеревоПриемник, "ДеревоПодсистем"); КонецПроцедуры &НаСервере Процедура ЗаписатьНаСервере() ДеревоПриемник = РеквизитФормыВЗначение("ДеревоПодсистем", Тип("ДеревоЗначений")); ИзмененныеРазделы = ДеревоПриемник.Строки.НайтиСтроки(Новый Структура("Модифицированность", Истина), Истина); НачатьТранзакцию(); Попытка Блокировка = Новый БлокировкаДанных; Для Каждого ВариантОтчета Из ИзменяемыеВарианты Цикл ЭлементБлокировки = Блокировка.Добавить(Метаданные.Справочники.ВариантыОтчетов.ПолноеИмя()); ЭлементБлокировки.УстановитьЗначение("Ссылка", ВариантОтчета.Значение); КонецЦикла; Блокировка.Заблокировать(); Для Каждого ВариантОтчета Из ИзменяемыеВарианты Цикл ВариантОбъект = ВариантОтчета.Значение.ПолучитьОбъект(); ВариантыОтчетов.ДеревоПодсистемЗаписать(ВариантОбъект, ИзмененныеРазделы); ВариантОбъект.Записать(); КонецЦикла; ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ВызватьИсключение; КонецПопытки; КонецПроцедуры &НаСервере Процедура ДобавитьПодсистемыВДерево(ПриемникРодитель, ИсточникРодитель, ВхожденияПодсистем) Для Каждого Источник Из ИсточникРодитель.Строки Цикл Приемник = ПриемникРодитель.Строки.Добавить(); ЗаполнитьЗначенияСвойств(Приемник, Источник); ВхожденияЭтойПодсистемы = ВхожденияПодсистем.Скопировать(Новый Структура("Ссылка", Приемник.Ссылка)); Если ВхожденияЭтойПодсистемы.Количество() = 1 Тогда Приемник.Важность = ВхожденияЭтойПодсистемы[0].Важность; ИначеЕсли ВхожденияЭтойПодсистемы.Количество() = 0 Тогда Приемник.Важность = ""; Иначе Приемник.Важность = СмешаннаяВажность; // Так же используется для условного оформления. КонецЕсли; ВхожденияВариантов = ВхожденияЭтойПодсистемы.Итог("Количество"); Если ВхожденияВариантов = КоличествоВариантов Тогда Приемник.Использование = 1; ИначеЕсли ВхожденияВариантов = 0 Тогда Приемник.Использование = 0; Иначе Приемник.Использование = 2; КонецЕсли; // Рекурсия ДобавитьПодсистемыВДерево(Приемник, Источник, ВхожденияПодсистем); КонецЦикла; КонецПроцедуры #КонецОбласти

Catalogs/ВариантыОтчетов/Forms/СбросНастроекРазмещения/Form/Module

 #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; Если Не Параметры.Свойство("Варианты") Или ТипЗнч(Параметры.Варианты) <> Тип("Массив") Тогда ТекстОшибки = НСтр("ru = 'Не указаны варианты отчетов.'"); Возврат; КонецЕсли; ИзменяемыеВарианты.ЗагрузитьЗначения(Параметры.Варианты); Отфильтровать(); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) Если Не ПустаяСтрока(ТекстОшибки) Тогда Отказ = Истина; ПоказатьПредупреждение(, ТекстОшибки); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура КомандаСбросить(Команда) КоличествоВыбранныхВариантов = ИзменяемыеВарианты.Количество(); Если КоличествоВыбранныхВариантов = 0 Тогда ПоказатьПредупреждение(, НСтр("ru = 'Не указаны варианты отчетов.'")); Возврат; КонецЕсли; КоличествоВариантов = СброситьНастройкиРазмещенияСервер(ИзменяемыеВарианты); Если КоличествоВариантов = 1 И КоличествоВыбранныхВариантов = 1 Тогда СсылкаВарианта = ИзменяемыеВарианты[0].Значение; ОповещениеЗаголовок = НСтр("ru = 'Сброшены настройки размещения варианта отчета'"); ОповещениеСсылка = ПолучитьНавигационнуюСсылку(СсылкаВарианта); ОповещениеТекст = Строка(СсылкаВарианта); ПоказатьОповещениеПользователя(ОповещениеЗаголовок, ОповещениеСсылка, ОповещениеТекст); Иначе ОповещениеТекст = НСтр("ru = 'Сброшены настройки размещения |вариантов отчетов (%1 шт.).'"); ОповещениеТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОповещениеТекст, Формат(КоличествоВариантов, "ЧН=0; ЧГ=0")); ПоказатьОповещениеПользователя(, , ОповещениеТекст); КонецЕсли; ВариантыОтчетовКлиент.ОбновитьОткрытыеФормы(); Закрыть(); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции //////////////////////////////////////////////////////////////////////////////// // Вызов сервера &НаСервереБезКонтекста Функция СброситьНастройкиРазмещенияСервер(Знач ИзменяемыеВарианты) КоличествоВариантов = 0; НачатьТранзакцию(); Попытка Блокировка = Новый БлокировкаДанных; Для Каждого ЭлементСписка Из ИзменяемыеВарианты Цикл ЭлементБлокировки = Блокировка.Добавить(Метаданные.Справочники.ВариантыОтчетов.ПолноеИмя()); ЭлементБлокировки.УстановитьЗначение("Ссылка", ЭлементСписка.Значение); КонецЦикла; Блокировка.Заблокировать(); Для Каждого ЭлементСписка Из ИзменяемыеВарианты Цикл ВариантОбъект = ЭлементСписка.Значение.ПолучитьОбъект(); Если ВариантыОтчетов.СброситьНастройкиВариантаОтчета(ВариантОбъект) Тогда ВариантОбъект.Записать(); КоличествоВариантов = КоличествоВариантов + 1; КонецЕсли; КонецЦикла; ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ВызватьИсключение; КонецПопытки; Возврат КоличествоВариантов; КонецФункции //////////////////////////////////////////////////////////////////////////////// // Сервер &НаСервере Процедура Отфильтровать() КоличествоДоФильтрации = ИзменяемыеВарианты.Количество(); Запрос = Новый Запрос; Запрос.УстановитьПараметр("МассивВариантов", ИзменяемыеВарианты.ВыгрузитьЗначения()); Запрос.УстановитьПараметр("ТипВнутренний", Перечисления.ТипыОтчетов.Внутренний); Запрос.УстановитьПараметр("ТипРасширение", Перечисления.ТипыОтчетов.Расширение); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ВариантыОтчетовРазмещение.Ссылка |ИЗ | Справочник.ВариантыОтчетов КАК ВариантыОтчетовРазмещение |ГДЕ | ВариантыОтчетовРазмещение.Ссылка В(&МассивВариантов) | И ВариантыОтчетовРазмещение.Пользовательский = ЛОЖЬ | И ВариантыОтчетовРазмещение.ТипОтчета В (&ТипВнутренний, &ТипРасширение) | И ВариантыОтчетовРазмещение.ПометкаУдаления = ЛОЖЬ"; МассивВариантов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); ИзменяемыеВарианты.ЗагрузитьЗначения(МассивВариантов); КоличествоПослеФильтрации = ИзменяемыеВарианты.Количество(); Если КоличествоДоФильтрации <> КоличествоПослеФильтрации Тогда Если КоличествоПослеФильтрации = 0 Тогда ТекстОшибки = НСтр("ru = 'Сброс настроек размещения выбранных вариантов отчетов не требуется по одной или нескольким причинам: |- Выбраны пользовательские варианты отчетов. |- Выбраны помеченные на удаление варианты отчетов. |- Выбраны варианты дополнительных или внешних отчетов.'"); Возврат; КонецЕсли; КонецЕсли; КонецПроцедуры #КонецОбласти

Catalogs/ВариантыОтчетов/Forms/СбросПользовательскихНастроек/Form/Module

 #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; Если Не Параметры.Свойство("Варианты") Или ТипЗнч(Параметры.Варианты) <> Тип("Массив") Тогда ТекстОшибки = НСтр("ru = 'Не указаны варианты отчетов.'"); Возврат; КонецЕсли; Если Не ЕстьПользовательскиеНастройки(Параметры.Варианты) Тогда ТекстОшибки = НСтр("ru = 'Пользовательские настройки выбранных вариантов отчетов (%1 шт) не заданы или уже сброшены.'"); ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, Формат(Параметры.Варианты.Количество(), "ЧН=0; ЧГ=0")); Возврат; КонецЕсли; ИзменяемыеВарианты.ЗагрузитьЗначения(Параметры.Варианты); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) Если Не ПустаяСтрока(ТекстОшибки) Тогда Отказ = Истина; ПоказатьПредупреждение(, ТекстОшибки); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура КомандаСбросить(Команда) КоличествоВариантов = ИзменяемыеВарианты.Количество(); Если КоличествоВариантов = 0 Тогда ПоказатьПредупреждение(, НСтр("ru = 'Не указаны варианты отчетов.'")); Возврат; КонецЕсли; СброситьНастройкиПользователейСервер(ИзменяемыеВарианты); Если КоличествоВариантов = 1 Тогда СсылкаВарианта = ИзменяемыеВарианты[0].Значение; ОповещениеЗаголовок = НСтр("ru = 'Сброшены пользовательские настройки варианта отчета'"); ОповещениеСсылка = ПолучитьНавигационнуюСсылку(СсылкаВарианта); ОповещениеТекст = Строка(СсылкаВарианта); ПоказатьОповещениеПользователя(ОповещениеЗаголовок, ОповещениеСсылка, ОповещениеТекст); Иначе ОповещениеТекст = НСтр("ru = 'Сброшены пользовательские настройки |вариантов отчетов (%1 шт.).'"); ОповещениеТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОповещениеТекст, Формат(КоличествоВариантов, "ЧН=0; ЧГ=0")); ПоказатьОповещениеПользователя(, , ОповещениеТекст); КонецЕсли; Закрыть(); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции //////////////////////////////////////////////////////////////////////////////// // Вызов сервера &НаСервереБезКонтекста Процедура СброситьНастройкиПользователейСервер(Знач ИзменяемыеВарианты) НачатьТранзакцию(); Попытка Блокировка = Новый БлокировкаДанных; Для Каждого ЭлементСписка Из ИзменяемыеВарианты Цикл ЭлементБлокировки = Блокировка.Добавить(Метаданные.Справочники.ВариантыОтчетов.ПолноеИмя()); ЭлементБлокировки.УстановитьЗначение("Ссылка", ЭлементСписка.Значение); КонецЦикла; Блокировка.Заблокировать(); РегистрыСведений.НастройкиВариантовОтчетов.СброситьНастройки(ИзменяемыеВарианты.ВыгрузитьЗначения()); ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ВызватьИсключение; КонецПопытки; КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // Сервер &НаСервере Функция ЕстьПользовательскиеНастройки(МассивВариантов) Запрос = Новый Запрос; Запрос.УстановитьПараметр("МассивВариантов", МассивВариантов); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | ИСТИНА КАК ЕстьПользовательскиеНастройки |ИЗ | РегистрСведений.НастройкиВариантовОтчетов КАК Настройки |ГДЕ | Настройки.Вариант В(&МассивВариантов)"; ЕстьПользовательскиеНастройки = НЕ Запрос.Выполнить().Пустой(); Возврат ЕстьПользовательскиеНастройки; КонецФункции #КонецОбласти

Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Form/Module

#Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) УстановитьУсловноеОформление(); Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Возврат; КонецЕсли; ПараметрыКлиента = ВариантыОтчетов.ПараметрыКлиента(); ВключаяПодчиненные = Истина; ДеревоЗначений = ВариантыОтчетовПовтИсп.ПодсистемыТекущегоПользователя().Скопировать(); ДеревоПодсистемЗаполнитьПолноеПредставление(ДеревоЗначений.Строки); ЗначениеВРеквизитФормы(ДеревоЗначений, "ДеревоПодсистем"); ДеревоПодсистемТекущаяСтрока = -1; Элементы.ДеревоПодсистем.ТекущаяСтрока = 0; Если Параметры.РежимВыбора = Истина Тогда РежимРаботыФормы = "Выбор"; РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; Элементы.Список.Отображение = ОтображениеТаблицы.Список; ИначеЕсли Параметры.Свойство("РазделСсылка") Или Параметры.Свойство("РазделСсылка") Тогда РежимРаботыФормы = "ВсеОтчетыРаздела"; МассивОбхода = Новый Массив; МассивОбхода.Добавить(ДеревоПодсистем.ПолучитьЭлементы()[0]); Пока МассивОбхода.Количество() > 0 Цикл СтрокиРодителя = МассивОбхода[0].ПолучитьЭлементы(); МассивОбхода.Удалить(0); Для Каждого СтрокаДерева Из СтрокиРодителя Цикл Если СтрокаДерева.Ссылка = Параметры.РазделСсылка Тогда Элементы.ДеревоПодсистем.ТекущаяСтрока = СтрокаДерева.ПолучитьИдентификатор(); МассивОбхода.Очистить(); Прервать; Иначе МассивОбхода.Добавить(СтрокаДерева); КонецЕсли; КонецЦикла; КонецЦикла; Иначе РежимРаботыФормы = "Список"; ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "Изменить", "Отображение", ОтображениеКнопки.КартинкаИТекст); ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "РазместитьВРазделах", "ТолькоВоВсехДействиях", Ложь); КонецЕсли; ГлобальныеНастройки = ВариантыОтчетов.ГлобальныеНастройки(); Элементы.СтрокаПоиска.ПодсказкаВвода = ГлобальныеНастройки.Поиск.ПодсказкаВвода; КлючСохраненияПоложенияОкна = РежимРаботыФормы; КлючНазначенияИспользования = РежимРаботыФормы; УстановитьСвойствоСпискаПоПараметруФормы("РежимВыбора"); УстановитьСвойствоСпискаПоПараметруФормы("ВыборГруппИЭлементов"); УстановитьСвойствоСпискаПоПараметруФормы("МножественныйВыбор"); УстановитьСвойствоСпискаПоПараметруФормы("ТекущаяСтрока"); Если Параметры.РежимВыбора Тогда ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ВЫБРАТЬ", "КнопкаПоУмолчанию", Истина); Иначе ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ВЫБРАТЬ", "Видимость", Ложь); КонецЕсли; ПолныеПраваНаВарианты = ВариантыОтчетов.ПолныеПраваНаВарианты(); Если Не ПолныеПраваНаВарианты Тогда ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ОтборТипОтчета", "Видимость", Ложь); КонецЕсли; СписокВыбора = Элементы.ОтборТипОтчета.СписокВыбора; СписокВыбора.Добавить(1, НСтр("ru = 'Все, кроме внешних'")); СписокВыбора.Добавить(Перечисления.ТипыОтчетов.Внутренний, НСтр("ru = 'Внутренние'")); СписокВыбора.Добавить(Перечисления.ТипыОтчетов.Расширение, НСтр("ru = 'Расширения'")); СписокВыбора.Добавить(Перечисления.ТипыОтчетов.Дополнительный, НСтр("ru = 'Дополнительные'")); СписокВыбора.Добавить(Перечисления.ТипыОтчетов.Внешний, НСтр("ru = 'Внешние'")); Параметры.Свойство("СтрокаПоиска", СтрокаПоиска); Если Параметры.Отбор.Свойство("ТипОтчета", ОтборТипОтчета) Тогда Параметры.Отбор.Удалить("ТипОтчета"); КонецЕсли; Если Параметры.Свойство("ТолькоВарианты") Тогда Если Параметры.ТолькоВарианты Тогда ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( Список, "КлючВарианта", "", ВидСравненияКомпоновкиДанных.НеРавно, , , РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный); КонецЕсли; КонецЕсли; ПерсональныеНастройкиСписка = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( ВариантыОтчетовКлиентСервер.ПолноеИмяПодсистемы(), "Справочник.ВариантыОтчетов.ФормаСписка"); Если ПерсональныеНастройкиСписка <> Неопределено Тогда Элементы.СтрокаПоиска.СписокВыбора.ЗагрузитьЗначения(ПерсональныеНастройкиСписка.СтрокаПоискаСписокВыбора); КонецЕсли; Список.Параметры.УстановитьЗначениеПараметра("ТипВнутренний", Перечисления.ТипыОтчетов.Внутренний); Список.Параметры.УстановитьЗначениеПараметра("ТипРасширение", Перечисления.ТипыОтчетов.Расширение); Список.Параметры.УстановитьЗначениеПараметра("ТипДополнительный", Перечисления.ТипыОтчетов.Дополнительный); Список.Параметры.УстановитьЗначениеПараметра("ДоступныеОтчеты", ВариантыОтчетов.ОтчетыТекущегоПользователя()); Список.Параметры.УстановитьЗначениеПараметра("ОтключенныеВариантыПрограммы", ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы()); ТекущийЭлемент = Элементы.Список; ВариантыОтчетов.ДополнитьОтборыИзСтруктуры(Список.КомпоновщикНастроек.Настройки.Отбор, Параметры.Отбор); Параметры.Отбор.Очистить(); ОбновитьСодержимоеСписка("ПриСозданииНаСервере"); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) Если РежимРаботыФормы = "ВсеОтчетыРаздела" ИЛИ РежимРаботыФормы = "Выбор" Тогда Элементы.ДеревоПодсистем.Развернуть(ДеревоПодсистемТекущаяСтрока, Истина); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ИмяСобытия = ВариантыОтчетовКлиентСервер.ИмяСобытияИзменениеВарианта() Или ИмяСобытия = "Запись_НаборКонстант" Тогда ДеревоПодсистемТекущаяСтрока = -1; ПодключитьОбработчикОжидания("ДеревоПодсистемОбработчикАктивизацииСтроки", 0.1, Истина); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовШапкиФормы &НаКлиенте Процедура ОтборТипОтчетаПриИзменении(Элемент) ОбновитьСодержимоеСписка(); КонецПроцедуры &НаКлиенте Процедура ОтборТипОтчетаОчистка(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ОтборТипОтчета = Неопределено; ОбновитьСодержимоеСписка(); КонецПроцедуры &НаКлиенте Процедура СтрокаПоискаПриИзменении(Элемент) ОбновитьСодержимоеСпискаКлиент("СтрокаПоискаПриИзменении"); КонецПроцедуры &НаКлиенте Процедура ВключаяПодчиненныеПриИзменении(Элемент) ДеревоПодсистемТекущаяСтрока = -1; ПодключитьОбработчикОжидания("ДеревоПодсистемОбработчикАктивизацииСтроки", 0.1, Истина); КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоПодсистем &НаКлиенте Процедура ДеревоПодсистемПередНачаломИзменения(Элемент, Отказ) Отказ = Истина; КонецПроцедуры &НаКлиенте Процедура ДеревоПодсистемПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) Отказ = Истина; КонецПроцедуры &НаКлиенте Процедура ДеревоПодсистемПередУдалением(Элемент, Отказ) Отказ = Истина; КонецПроцедуры &НаКлиенте Процедура ДеревоПодсистемПриАктивизацииСтроки(Элемент) ПодключитьОбработчикОжидания("ДеревоПодсистемОбработчикАктивизацииСтроки", 0.1, Истина); КонецПроцедуры &НаКлиенте Процедура ДеревоПодсистемПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) СтандартнаяОбработка = Ложь; Если Строка = Неопределено Тогда Возврат; КонецЕсли; ПараметрыРазмещения = Новый Структура("Варианты, Действие, Приемник, Источник"); //МассивВариантов, Всего, Представление ПараметрыРазмещения.Варианты = Новый Структура("Массив, Всего, Представление"); ПараметрыРазмещения.Варианты.Массив = ПараметрыПеретаскивания.Значение; ПараметрыРазмещения.Варианты.Всего = ПараметрыПеретаскивания.Значение.Количество(); Если ПараметрыРазмещения.Варианты.Всего = 0 Тогда Возврат; КонецЕсли; СтрокаПриемник = ДеревоПодсистем.НайтиПоИдентификатору(Строка); Если СтрокаПриемник = Неопределено ИЛИ СтрокаПриемник.Приоритет = "" Тогда Возврат; КонецЕсли; ПараметрыРазмещения.Приемник = Новый Структура("Ссылка, ПолноеПредставление, Идентификатор"); ЗаполнитьЗначенияСвойств(ПараметрыРазмещения.Приемник, СтрокаПриемник); ПараметрыРазмещения.Приемник.Идентификатор = СтрокаПриемник.ПолучитьИдентификатор(); СтрокаИсточник = Элементы.ДеревоПодсистем.ТекущиеДанные; ПараметрыРазмещения.Источник = Новый Структура("Ссылка, ПолноеПредставление, Идентификатор"); Если СтрокаИсточник = Неопределено ИЛИ СтрокаИсточник.Приоритет = "" Тогда ПараметрыРазмещения.Действие = "Копирование"; Иначе ЗаполнитьЗначенияСвойств(ПараметрыРазмещения.Источник, СтрокаИсточник); ПараметрыРазмещения.Источник.Идентификатор = СтрокаИсточник.ПолучитьИдентификатор(); Если ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Копирование Тогда ПараметрыРазмещения.Действие = "Копирование"; Иначе ПараметрыРазмещения.Действие = "Перемещение"; КонецЕсли; КонецЕсли; Если ПараметрыРазмещения.Источник.Ссылка = ПараметрыРазмещения.Приемник.Ссылка Тогда ПоказатьПредупреждение(, НСтр("ru = 'Выбранные варианты отчетов уже в данном разделе.'")); Возврат; КонецЕсли; Если ПараметрыРазмещения.Варианты.Всего = 1 Тогда Если ПараметрыРазмещения.Действие = "Копирование" Тогда ШаблонВопроса = НСтр("ru = 'Разместить ""%1"" в ""%4""?'"); Иначе ШаблонВопроса = НСтр("ru = 'Переместить ""%1"" из ""%3"" в ""%4""?'"); КонецЕсли; ПараметрыРазмещения.Варианты.Представление = Строка(ПараметрыРазмещения.Варианты.Массив[0]); Иначе ПараметрыРазмещения.Варианты.Представление = ""; Для Каждого ВариантСсылка Из ПараметрыРазмещения.Варианты.Массив Цикл ПараметрыРазмещения.Варианты.Представление = ПараметрыРазмещения.Варианты.Представление + ?(ПараметрыРазмещения.Варианты.Представление = "", "", ", ") + Строка(ВариантСсылка); Если СтрДлина(ПараметрыРазмещения.Варианты.Представление) > 23 Тогда ПараметрыРазмещения.Варианты.Представление = Лев(ПараметрыРазмещения.Варианты.Представление, 20) + "..."; Прервать; КонецЕсли; КонецЦикла; Если ПараметрыРазмещения.Действие = "Копирование" Тогда ШаблонВопроса = НСтр("ru = 'Разместить варианты отчетов ""%1"" (%2 шт.) в ""%4""?'"); Иначе ШаблонВопроса = НСтр("ru = 'Переместить варианты отчетов ""%1"" (%2 шт.) из ""%3"" в ""%4""?'"); КонецЕсли; КонецЕсли; ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ШаблонВопроса, ПараметрыРазмещения.Варианты.Представление, Формат(ПараметрыРазмещения.Варианты.Всего, "ЧГ=0"), ПараметрыРазмещения.Источник.ПолноеПредставление, ПараметрыРазмещения.Приемник.ПолноеПредставление); Обработчик = Новый ОписаниеОповещения("ДеревоПодсистемПеретаскиваниеЗавершение", ЭтотОбъект, ПараметрыРазмещения); ПоказатьВопрос(Обработчик, ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Да); КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовТаблицыФормыСписок &НаКлиенте Процедура СписокПередНачаломИзменения(Элемент, Отказ) Отказ = Истина; ВариантыОтчетовКлиент.ПоказатьНастройкиОтчета(Элементы.Список.ТекущаяСтрока); КонецПроцедуры &НаКлиенте Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) Если РежимРаботыФормы = "ВсеОтчетыРаздела" Тогда СтандартнаяОбработка = Ложь; ВариантыОтчетовКлиент.ОткрытьФормуОтчета(ЭтотОбъект, Элементы.Список.ТекущиеДанные); ИначеЕсли РежимРаботыФормы = "Список" Тогда СтандартнаяОбработка = Ложь; ВариантыОтчетовКлиент.ПоказатьНастройкиОтчета(ВыбраннаяСтрока); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура ВыполнитьПоиск(Команда) ОбновитьСодержимоеСпискаКлиент("ВыполнитьПоиск"); КонецПроцедуры &НаКлиенте Процедура Изменить(Команда) ВариантыОтчетовКлиент.ПоказатьНастройкиОтчета(Элементы.Список.ТекущаяСтрока); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаСервере Процедура ДеревоПодсистемЗаполнитьПолноеПредставление(НаборСтрок, ПредставлениеРодителя = "") Для Каждого СтрокаДерева Из НаборСтрок Цикл Если ПустаяСтрока(СтрокаДерева.Имя) Тогда СтрокаДерева.ПолноеПредставление = ""; ИначеЕсли ПустаяСтрока(ПредставлениеРодителя) Тогда СтрокаДерева.ПолноеПредставление = СтрокаДерева.Представление; Иначе СтрокаДерева.ПолноеПредставление = ПредставлениеРодителя + "." + СтрокаДерева.Представление; КонецЕсли; ДеревоПодсистемЗаполнитьПолноеПредставление(СтрокаДерева.Строки, СтрокаДерева.ПолноеПредставление); КонецЦикла; КонецПроцедуры &НаСервере Процедура УстановитьУсловноеОформление() УсловноеОформление.Элементы.Очистить(); Элемент = УсловноеОформление.Элементы.Добавить(); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Описание.Имя); ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.Описание"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено; Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПоясняющийТекст); КонецПроцедуры &НаКлиенте Процедура ДеревоПодсистемПеретаскиваниеЗавершение(Ответ, ПараметрыРазмещения) Экспорт Если Ответ <> КодВозвратаДиалога.Да Тогда Возврат; КонецЕсли; РезультатВыполнения = РазместитьВариантыВПодсистеме(ПараметрыРазмещения); ВариантыОтчетовКлиент.ОбновитьОткрытыеФормы(); Если ПараметрыРазмещения.Варианты.Всего = РезультатВыполнения.Размещено Тогда Если ПараметрыРазмещения.Варианты.Всего = 1 Тогда Если ПараметрыРазмещения.Действие = "Перемещение" Тогда Шаблон = НСтр("ru = 'Успешно перемещен в ""%1"".'"); Иначе Шаблон = НСтр("ru = 'Успешно размещен в ""%1"".'"); КонецЕсли; Текст = ПараметрыРазмещения.Варианты.Представление; Ссылка = ПолучитьНавигационнуюСсылку(ПараметрыРазмещения.Варианты.Массив[0]); Иначе Если ПараметрыРазмещения.Действие = "Перемещение" Тогда Шаблон = НСтр("ru = 'Успешно перемещены в ""%1"".'"); Иначе Шаблон = НСтр("ru = 'Успешно размещены в ""%1"".'"); КонецЕсли; Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Варианты отчетов (%1).'"), Формат(ПараметрыРазмещения.Варианты.Всего, "ЧН=0; ЧГ=0")); Ссылка = Неопределено; КонецЕсли; Шаблон = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, ПараметрыРазмещения.Приемник.ПолноеПредставление); ПоказатьОповещениеПользователя(Шаблон, Ссылка, Текст); Иначе ТекстОшибок = ""; Если Не ПустаяСтрока(РезультатВыполнения.НеМогутРазмещаться) Тогда ТекстОшибок = ?(ТекстОшибок = "", "", ТекстОшибок + Символы.ПС + Символы.ПС) + НСтр("ru = 'Не могут размещаться в командном интерфейсе:'") + Символы.ПС + РезультатВыполнения.НеМогутРазмещаться; КонецЕсли; Если Не ПустаяСтрока(РезультатВыполнения.УжеРазмещены) Тогда ТекстОшибок = ?(ТекстОшибок = "", "", ТекстОшибок + Символы.ПС + Символы.ПС) + НСтр("ru = 'Уже размещены в этом разделе:'") + Символы.ПС + РезультатВыполнения.УжеРазмещены; КонецЕсли; Если ПараметрыРазмещения.Действие = "Перемещение" Тогда Шаблон = НСтр("ru = 'Перемещено вариантов отчетов: %1 из %2. |Подробности: |%3'"); Иначе Шаблон = НСтр("ru = 'Размещено вариантов отчетов: %1 из %2. |Подробности: |%3'"); КонецЕсли; СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Неопределено, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, РезультатВыполнения.Размещено, ПараметрыРазмещения.Варианты.Всего, ТекстОшибок), РежимДиалогаВопрос.ОК); КонецЕсли; КонецПроцедуры &НаСервере Процедура УстановитьСвойствоСпискаПоПараметруФормы(Ключ) Если Параметры.Свойство(Ключ) И ЗначениеЗаполнено(Параметры[Ключ]) Тогда Элементы.Список[Ключ] = Параметры[Ключ]; КонецЕсли; КонецПроцедуры &НаСервере Процедура ОбновитьСодержимоеСписка(Знач Событие = "") ИзменилисьПерсональныеНастройки = Ложь; Если ЗначениеЗаполнено(СтрокаПоиска) Тогда СписокВыбора = Элементы.СтрокаПоиска.СписокВыбора; ЭлементСписка = СписокВыбора.НайтиПоЗначению(СтрокаПоиска); Если ЭлементСписка = Неопределено Тогда СписокВыбора.Вставить(0, СтрокаПоиска); ИзменилисьПерсональныеНастройки = Истина; Если СписокВыбора.Количество() > 10 Тогда СписокВыбора.Удалить(10); КонецЕсли; Иначе Индекс = СписокВыбора.Индекс(ЭлементСписка); Если Индекс <> 0 Тогда СписокВыбора.Сдвинуть(Индекс, -Индекс); ИзменилисьПерсональныеНастройки = Истина; КонецЕсли; КонецЕсли; ТекущийЭлемент = Элементы.СтрокаПоиска; КонецЕсли; Если Событие = "СтрокаПоискаПриИзменении" И ИзменилисьПерсональныеНастройки Тогда ПерсональныеНастройкиСписка = Новый Структура("СтрокаПоискаСписокВыбора"); ПерсональныеНастройкиСписка.СтрокаПоискаСписокВыбора = Элементы.СтрокаПоиска.СписокВыбора.ВыгрузитьЗначения(); ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( ВариантыОтчетовКлиентСервер.ПолноеИмяПодсистемы(), "Справочник.ВариантыОтчетов.ФормаСписка", ПерсональныеНастройкиСписка); КонецЕсли; ДеревоПодсистемТекущаяСтрока = Элементы.ДеревоПодсистем.ТекущаяСтрока; СтрокаДерева = ДеревоПодсистем.НайтиПоИдентификатору(ДеревоПодсистемТекущаяСтрока); Если СтрокаДерева = Неопределено Тогда Возврат; КонецЕсли; ВсеПодсистемы = Не ЗначениеЗаполнено(СтрокаДерева.ПолноеИмя); ПараметрыПоиска = Новый Структура; ПараметрыПоиска.Вставить("ПометкаУдаления", Ложь); Если ЗначениеЗаполнено(СтрокаПоиска) Тогда ПараметрыПоиска.Вставить("СтрокаПоиска", СтрокаПоиска); Элементы.Список.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни; Иначе Элементы.Список.НачальноеОтображениеДерева = НачальноеОтображениеДерева.НеРаскрывать; КонецЕсли; ПараметрыПоиска.Вставить("ЖесткийОтборПоПодсистемам", Не ВсеПодсистемы); Если Не ВсеПодсистемы Или ЗначениеЗаполнено(СтрокаПоиска) Тогда МассивПодсистем = Новый Массив; Если Не ВсеПодсистемы Тогда МассивПодсистем.Добавить(СтрокаДерева.Ссылка); КонецЕсли; Если ВсеПодсистемы Или ВключаяПодчиненные Тогда ДобавитьРекурсивно(МассивПодсистем, СтрокаДерева.ПолучитьЭлементы()); КонецЕсли; ПараметрыПоиска.Вставить("Подсистемы", МассивПодсистем); КонецЕсли; Если ЗначениеЗаполнено(ОтборТипОтчета) Тогда МассивТиповОтчетов = Новый Массив; Если ОтборТипОтчета = 1 Тогда МассивТиповОтчетов.Добавить(Перечисления.ТипыОтчетов.Внутренний); МассивТиповОтчетов.Добавить(Перечисления.ТипыОтчетов.Расширение); МассивТиповОтчетов.Добавить(Перечисления.ТипыОтчетов.Дополнительный); Иначе МассивТиповОтчетов.Добавить(ОтборТипОтчета); КонецЕсли; ПараметрыПоиска.Вставить("ТипыОтчетов", МассивТиповОтчетов); КонецЕсли; РезультатПоиска = ВариантыОтчетов.НайтиСсылки(ПараметрыПоиска); ВариантыПользователя = ?(РезультатПоиска = Неопределено, Null, РезультатПоиска.Ссылки); Список.Параметры.УстановитьЗначениеПараметра("ВариантыПользователя", ВариантыПользователя); КонецПроцедуры &НаКлиенте Процедура ДеревоПодсистемОбработчикАктивизацииСтроки() Если ДеревоПодсистемТекущаяСтрока <> Элементы.ДеревоПодсистем.ТекущаяСтрока Тогда ОбновитьСодержимоеСписка(); КонецЕсли; КонецПроцедуры &НаСервере Процедура ДобавитьРекурсивно(МассивПодсистем, КоллекцияСтрокДерева) Для Каждого СтрокаДерева Из КоллекцияСтрокДерева Цикл МассивПодсистем.Добавить(СтрокаДерева.Ссылка); ДобавитьРекурсивно(МассивПодсистем, СтрокаДерева.ПолучитьЭлементы()); КонецЦикла; КонецПроцедуры &НаСервере Процедура ДеревоПодсистемЗаписатьСвойствоВМассив(МассивСтрокДерева, ИмяСвойства, МассивСсылок) Для Каждого СтрокаДерева Из МассивСтрокДерева Цикл МассивСсылок.Добавить(СтрокаДерева[ИмяСвойства]); ДеревоПодсистемЗаписатьСвойствоВМассив(СтрокаДерева.ПолучитьЭлементы(), ИмяСвойства, МассивСсылок); КонецЦикла; КонецПроцедуры &НаСервере Функция РазместитьВариантыВПодсистеме(ПараметрыРазмещения) ИсключаемыеПодсистемы = Новый Массив; Если ПараметрыРазмещения.Действие = "Перемещение" Тогда СтрокаИсточник = ДеревоПодсистем.НайтиПоИдентификатору(ПараметрыРазмещения.Источник.Идентификатор); ИсключаемыеПодсистемы.Добавить(СтрокаИсточник.Ссылка); ДеревоПодсистемЗаписатьСвойствоВМассив(СтрокаИсточник.ПолучитьЭлементы(), "Ссылка", ИсключаемыеПодсистемы); КонецЕсли; Размещено = 0; УжеРазмещены = ""; НеМогутРазмещаться = ""; НачатьТранзакцию(); Попытка Для Каждого ВариантСсылка Из ПараметрыРазмещения.Варианты.Массив Цикл Если ВариантСсылка.ТипОтчета = Перечисления.ТипыОтчетов.Внешний Тогда НеМогутРазмещаться = ?(НеМогутРазмещаться = "", "", НеМогутРазмещаться + Символы.ПС) + " " + Строка(ВариантСсылка) + " (" + НСтр("ru = 'внешний'") + ")"; Продолжить; ИначеЕсли ВариантСсылка.ПометкаУдаления Тогда НеМогутРазмещаться = ?(НеМогутРазмещаться = "", "", НеМогутРазмещаться + Символы.ПС) + " " + Строка(ВариантСсылка) + " (" + НСтр("ru = 'помечен на удаление'") + ")"; Продолжить; КонецЕсли; ЕстьИзменения = Ложь; ВариантОбъект = ВариантСсылка.ПолучитьОбъект(); СтрокаПриемник = ВариантОбъект.Размещение.Найти(ПараметрыРазмещения.Приемник.Ссылка, "Подсистема"); Если СтрокаПриемник = Неопределено Тогда СтрокаПриемник = ВариантОбъект.Размещение.Добавить(); СтрокаПриемник.Подсистема = ПараметрыРазмещения.Приемник.Ссылка; КонецЕсли; // Удаление строки из исходной подсистемы. // Важно помнить что исключение предопределенного варианта из подсистемы выполняется путем выключения флажка // подсистемы. Если ПараметрыРазмещения.Действие = "Перемещение" Тогда Для Каждого ИсключаемаяПодсистема Из ИсключаемыеПодсистемы Цикл СтрокаИсточник = ВариантОбъект.Размещение.Найти(ИсключаемаяПодсистема, "Подсистема"); Если СтрокаИсточник <> Неопределено Тогда Если СтрокаИсточник.Использование Тогда СтрокаИсточник.Использование = Ложь; Если Не ЕстьИзменения Тогда ЗаполнитьЗначенияСвойств(СтрокаПриемник, СтрокаИсточник, "Важный, СмТакже"); ЕстьИзменения = Истина; КонецЕсли; КонецЕсли; СтрокаИсточник.Важный = Ложь; СтрокаИсточник.СмТакже = Ложь; ИначеЕсли Не ВариантОбъект.Пользовательский Тогда СтрокаИсточник = ВариантОбъект.Размещение.Добавить(); СтрокаИсточник.Подсистема = ИсключаемаяПодсистема; ЕстьИзменения = Истина; КонецЕсли; КонецЦикла; КонецЕсли; // Регистрация строки в подсистеме-приемнике. Если Не СтрокаПриемник.Использование Тогда ЕстьИзменения = Истина; СтрокаПриемник.Использование = Истина; КонецЕсли; Если ЕстьИзменения Тогда Размещено = Размещено + 1; ВариантОбъект.Записать(); Иначе УжеРазмещены = ?(УжеРазмещены = "", "", УжеРазмещены + Символы.ПС) + " " + Строка(ВариантСсылка); КонецЕсли; КонецЦикла; ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ВызватьИсключение; КонецПопытки; Если ПараметрыРазмещения.Действие = "Перемещение" И Размещено > 0 Тогда Элементы.ДеревоПодсистем.ТекущаяСтрока = ПараметрыРазмещения.Приемник.Идентификатор; ОбновитьСодержимоеСписка(); КонецЕсли; Возврат Новый Структура("Размещено,УжеРазмещены,НеМогутРазмещаться", Размещено, УжеРазмещены, НеМогутРазмещаться); КонецФункции &НаКлиенте Процедура ОбновитьСодержимоеСпискаКлиент(Событие) Замер = НачатьЗамер(Событие); ОбновитьСодержимоеСписка(Событие); ЗакончитьЗамер(Замер); КонецПроцедуры &НаКлиенте Функция НачатьЗамер(Событие) Если Не ПараметрыКлиента.ВыполнятьЗамеры Тогда Возврат Неопределено; КонецЕсли; Если ЗначениеЗаполнено(СтрокаПоиска) И (Событие = "СтрокаПоискаПриИзменении" Или Событие = "ВыполнитьПоиск") Тогда Имя = "СписокОтчетов.Поиск"; Иначе Возврат Неопределено; КонецЕсли; Комментарий = ПараметрыКлиента.ПрефиксЗамеров; Если ЗначениеЗаполнено(СтрокаПоиска) Тогда Комментарий = Комментарий + "; " + НСтр("ru = 'Поиск:'") + " " + Строка(СтрокаПоиска) + "; " + НСтр("ru = 'Включая подчиненные:'") + " " + Строка(ВключаяПодчиненные); Иначе Комментарий = Комментарий + "; " + НСтр("ru = 'Без поиска'"); КонецЕсли; Замер = Новый Структура("МодульОценкаПроизводительностиКлиент, Идентификатор"); Замер.МодульОценкаПроизводительностиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОценкаПроизводительностиКлиент"); Замер.Идентификатор = Замер.МодульОценкаПроизводительностиКлиент.НачатьЗамерВремени(Ложь, Имя); Замер.МодульОценкаПроизводительностиКлиент.УстановитьКомментарийЗамера(Замер.Идентификатор, Комментарий); Возврат Замер; КонецФункции &НаКлиенте Процедура ЗакончитьЗамер(Замер) Если Замер <> Неопределено Тогда Замер.МодульОценкаПроизводительностиКлиент.ЗавершитьЗамерВремени(Замер.Идентификатор); КонецЕсли; КонецПроцедуры #КонецОбласти

Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Form/Module

#Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) УстановитьУсловноеОформление(); Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; Если Параметры.Свойство("ПараметрыОткрытияФормыОтчета", ПараметрыОткрытияФормыОтчета) Тогда Возврат; КонецЕсли; ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект); Доступен = ?(Объект.ТолькоДляАвтора, "1", "2"); // Чтение свойств предопределенного; // Заполнение реквизитов, связанных с предопределенным объектом при открытии. ПрочитатьСвойстваПредопределенного(Истина); ПолныеПраваНаВарианты = ВариантыОтчетов.ПолныеПраваНаВарианты(); ПравоНаЭтотВариант = ПолныеПраваНаВарианты Или Объект.Автор = Пользователи.АвторизованныйПользователь(); Если Не ПравоНаЭтотВариант Тогда ТолькоПросмотр = Истина; Элементы.ДеревоПодсистем.ТолькоПросмотр = Истина; КонецЕсли; Если Объект.ПометкаУдаления Тогда Элементы.ДеревоПодсистем.ТолькоПросмотр = Истина; КонецЕсли; Если Не Объект.Пользовательский Тогда Элементы.Наименование.ТолькоПросмотр = Истина; Элементы.Доступен.ТолькоПросмотр = Истина; Элементы.Автор.ТолькоПросмотр = Истина; Элементы.Автор.АвтоОтметкаНезаполненного = Ложь; КонецЕсли; ЭтоВнешний = (Объект.ТипОтчета = Перечисления.ТипыОтчетов.Внешний); Если ЭтоВнешний Тогда Элементы.ДеревоПодсистем.ТолькоПросмотр = Истина; КонецЕсли; Элементы.Доступен.ТолькоПросмотр = Не ПолныеПраваНаВарианты; Элементы.Автор.ТолькоПросмотр = Не ПолныеПраваНаВарианты; Элементы.ВидимостьПоУмолчанию.ТолькоПросмотр = Не ПолныеПраваНаВарианты; Элементы.ТехническаяИнформация.Видимость = ПолныеПраваНаВарианты; // Заполнение имени отчета для команды "Просмотр". Если Объект.ТипОтчета = Перечисления.ТипыОтчетов.Внутренний Или Объект.ТипОтчета = Перечисления.ТипыОтчетов.Расширение Тогда ИмяОтчета = Объект.Отчет.Имя; ИначеЕсли Объект.ТипОтчета = Перечисления.ТипыОтчетов.Дополнительный Тогда ИмяОтчета = Объект.Отчет.ИмяОбъекта; Иначе ИмяОтчета = Объект.Отчет; КонецЕсли; ПерезаполнитьДерево(Ложь); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) Если ПараметрыОткрытияФормыОтчета <> Неопределено Тогда Отказ = Истина; ВариантыОтчетовКлиент.ОткрытьФормуОтчета(Неопределено, ПараметрыОткрытияФормыОтчета); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если Источник <> ЭтотОбъект И (ИмяСобытия = ВариантыОтчетовКлиентСервер.ИмяСобытияИзменениеВарианта() Или ИмяСобытия = "Запись_НаборКонстант") Тогда ПерезаполнитьДерево(Истина); Элементы.ДеревоПодсистем.Развернуть(ДеревоПодсистем.ПолучитьЭлементы()[0].ПолучитьИдентификатор(), Истина); КонецЕсли; КонецПроцедуры &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) // Запись свойств, связанных с предопределенным вариантом отчета. Если ТипЗнч(СвойстваПредопределенного) = Тип("ФиксированнаяСтруктура") Тогда ТекущийОбъект.ВидимостьПоУмолчаниюПереопределена = Объект.ВидимостьПоУмолчанию <> СвойстваПредопределенного.ВидимостьПоУмолчанию; Если Не ПустаяСтрока(Объект.Описание) И НРег(СокрЛП(Объект.Описание)) = НРег(СокрЛП(СвойстваПредопределенного.Описание)) Тогда ТекущийОбъект.Описание = ""; КонецЕсли; КонецЕсли; // Запись дерева подсистем. ДеревоПриемник = РеквизитФормыВЗначение("ДеревоПодсистем", Тип("ДеревоЗначений")); Если ТекущийОбъект.ЭтоНовый() Тогда ИзмененныеРазделы = ДеревоПриемник.Строки.НайтиСтроки(Новый Структура("Использование", 1), Истина); Иначе ИзмененныеРазделы = ДеревоПриемник.Строки.НайтиСтроки(Новый Структура("Модифицированность", Истина), Истина); КонецЕсли; ВариантыОтчетов.ДеревоПодсистемЗаписать(ТекущийОбъект, ИзмененныеРазделы); КонецПроцедуры &НаСервере Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) ПерезаполнитьДерево(Ложь); ПрочитатьСвойстваПредопределенного(Ложь); КонецПроцедуры &НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) ПараметрОповещения = Новый Структура("Ссылка, Наименование, Автор, Описание"); ЗаполнитьЗначенияСвойств(ПараметрОповещения, Объект); Оповестить(ВариантыОтчетовКлиентСервер.ИмяСобытияИзменениеВарианта(), ПараметрОповещения, ЭтотОбъект); СтандартныеПодсистемыКлиент.РазвернутьУзлыДерева(ЭтотОбъект, "ДеревоПодсистем", "*", Истина); КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовШапкиФормы &НаКлиенте Процедура ОписаниеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ВариантыОтчетовКлиент.РедактироватьМногострочныйТекст(ЭтотОбъект, Элемент.ТекстРедактирования, Объект, "Описание", НСтр("ru = 'Описание'")); КонецПроцедуры &НаКлиенте Процедура ДоступенПриИзменении(Элемент) Объект.ТолькоДляАвтора = (ЭтотОбъект.Доступен = "1"); КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоПодсистем &НаКлиенте Процедура ДеревоПодсистемИспользованиеПриИзменении(Элемент) ВариантыОтчетовКлиент.ДеревоПодсистемИспользованиеПриИзменении(ЭтотОбъект, Элемент); КонецПроцедуры &НаКлиенте Процедура ДеревоПодсистемВажностьПриИзменении(Элемент) ВариантыОтчетовКлиент.ДеревоПодсистемВажностьПриИзменении(ЭтотОбъект, Элемент); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаСервере Процедура УстановитьУсловноеОформление() УсловноеОформление.Элементы.Очистить(); ВариантыОтчетов.УстановитьУсловноеОформлениеДереваПодсистем(ЭтотОбъект); КонецПроцедуры &НаСервере Функция ПерезаполнитьДерево(Прочитать) ВыделенныеСтроки = ОтчетыСервер.ЗапомнитьВыделенныеСтроки(ЭтотОбъект, "ДеревоПодсистем", "Ссылка"); Если Прочитать Тогда ЭтотОбъект.Прочитать(); КонецЕсли; ДеревоПриемник = ВариантыОтчетов.ДеревоПодсистемСформировать(ЭтотОбъект, Объект); ЗначениеВРеквизитФормы(ДеревоПриемник, "ДеревоПодсистем"); ОтчетыСервер.ВосстановитьВыделенныеСтроки(ЭтотОбъект, "ДеревоПодсистем", ВыделенныеСтроки); Возврат Истина; КонецФункции &НаСервере Процедура ПрочитатьСвойстваПредопределенного(ПервоеЧтение) Если ПервоеЧтение Тогда Если Не Объект.Пользовательский И (Объект.ТипОтчета = Перечисления.ТипыОтчетов.Внутренний Или Объект.ТипОтчета = Перечисления.ТипыОтчетов.Расширение) И ЗначениеЗаполнено(Объект.ПредопределенныйВариант) Тогда // Чтение настроек предопределенного. Сведения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.ПредопределенныйВариант, "ВидимостьПоУмолчанию, Описание"); СвойстваПредопределенного = Новый ФиксированнаяСтруктура(Сведения); Иначе Возврат; // Не предопределенный. КонецЕсли; Иначе Если ТипЗнч(СвойстваПредопределенного) <> Тип("ФиксированнаяСтруктура") Тогда Возврат; // Не предопределенный. КонецЕсли; КонецЕсли; Если Объект.ВидимостьПоУмолчаниюПереопределена = Ложь Тогда Объект.ВидимостьПоУмолчанию = СвойстваПредопределенного.ВидимостьПоУмолчанию; КонецЕсли; Если ПустаяСтрока(Объект.Описание) Тогда Объект.Описание = СвойстваПредопределенного.Описание; КонецЕсли; КонецПроцедуры #КонецОбласти

Catalogs/ВедомостьНаВыплатуЗарплатыВБанкПрисоединенныеФайлы/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс // Возвращает список реквизитов, которые разрешается редактировать // с помощью обработки группового изменения объектов. // // Возвращаемое значение: // Массив - значения: // * Строка - имя реквизита присоединенного файла, который можно редактировать // в групповой обработке. // Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); КонецФункции #КонецОбласти #КонецЕсли

Catalogs/ВедомостьНаВыплатуЗарплатыВБанкПрисоединенныеФайлы/ObjectModule



Catalogs/ВедомостьНаВыплатуЗарплатыВКассуПрисоединенныеФайлы/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс // Возвращает список реквизитов, которые разрешается редактировать // с помощью обработки группового изменения объектов. // // Возвращаемое значение: // Массив - значения: // * Строка - имя реквизита присоединенного файла, который можно редактировать // в групповой обработке. // Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); КонецФункции #КонецОбласти #КонецЕсли

Catalogs/ВедомостьНаВыплатуЗарплатыВКассуПрисоединенныеФайлы/ObjectModule



Catalogs/ВедомостьУплатыАДВ_11ПрисоединенныеФайлы/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс // Возвращает список реквизитов, которые разрешается редактировать // с помощью обработки группового изменения объектов. // // Возвращаемое значение: // Массив - значения: // * Строка - имя реквизита присоединенного файла, который можно редактировать // в групповой обработке. // Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); КонецФункции #КонецОбласти #КонецЕсли

Catalogs/ВедомостьУплатыАДВ_11ПрисоединенныеФайлы/ObjectModule



Catalogs/ВерсииРасширений/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область СлужебныйПрограммныйИнтерфейс // См. ОбщегоНазначенияПереопределяемый.ПриДобавленииОбработчиковУстановкиПараметровСеанса. Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса, УстановленныеПараметры) Экспорт Если ИменаПараметровСеанса = Неопределено Или ИменаПараметровСеанса.Найти("УстановленныеРасширения") <> Неопределено Тогда ПараметрыСеанса.УстановленныеРасширения = КонтрольныеСуммыРасширений(); УстановленныеПараметры.Добавить("УстановленныеРасширения"); КонецЕсли; Если ИменаПараметровСеанса = Неопределено Или ИменаПараметровСеанса.Найти("ПодключенныеРасширения") <> Неопределено Тогда Расширения = РасширенияКонфигурации.Получить(, ИсточникРасширенийКонфигурации.СеансАктивные); ПараметрыСеанса.ПодключенныеРасширения = КонтрольныеСуммыРасширений(Расширения); УстановленныеПараметры.Добавить("ПодключенныеРасширения"); КонецЕсли; Если ИменаПараметровСеанса <> Неопределено И ИменаПараметровСеанса.Найти("ВерсияРасширений") <> Неопределено Тогда ПараметрыСеанса.ВерсияРасширений = ВерсияРасширений(); УстановленныеПараметры.Добавить("ВерсияРасширений"); КонецЕсли; Если ИменаПараметровСеанса = Неопределено И ТекущийРежимЗапуска() <> Неопределено Тогда ЗарегистрироватьИспользованиеВерсииРасширений(); КонецЕсли; КонецПроцедуры // Расширения подключаются только в разделенном режиме, когда // вход в область данных выполнен под разделенным пользователем, // поэтому обновление кэшей допустимо выполнять только в этом случае. // Функция УстановленныеРасширенияДоступны() Экспорт Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса"); СеансЗапущенБезРазделителей = МодульРаботаВМоделиСервиса.СеансЗапущенБезРазделителей(); Иначе СеансЗапущенБезРазделителей = Истина; КонецЕсли; Возврат Не ОбщегоНазначения.РазделениеВключено() Или Не СеансЗапущенБезРазделителей; КонецФункции // Возвращает контрольные суммы всех установленных расширений. // // Вызывается при запуске для установки параметра сеанса УстановленныеРасширения, // который требуется для анализа наличия расширений и контроля динамического обновления, // а также из формы установки расширений конфигурации в режиме 1С:Предприятия. // // Параметры: // Расширения - Неопределено - получить контрольные суммы установленных расширений. // - ДанныеФормыКоллекция - получить контрольные суммы из указанного списка. // // Возвращаемое значение: // Строка - строки вида "<Имя расширения> (<Версия расширения>) <Контрольная сумма>". // Функция КонтрольныеСуммыРасширений(Расширения = Неопределено) Экспорт Если Расширения = Неопределено Тогда Расширения = РасширенияКонфигурации.Получить(); КонецЕсли; Список = Новый СписокЗначений; Для Каждого Расширение Из Расширения Цикл Если ТипЗнч(Расширение) = Тип("РасширениеКонфигурации") Тогда КонтрольнаяСумма = Base64Строка(Расширение.ХешСумма); Иначе КонтрольнаяСумма = Расширение.КонтрольнаяСумма; КонецЕсли; Список.Добавить(Расширение.Имя + " (" + Расширение.Версия + ") " + КонтрольнаяСумма); КонецЦикла; Если Список.Количество() <> 0 Тогда Список.Добавить("#" + Метаданные.Имя + " (" + Метаданные.Версия + ")"); КонецЕсли; КонтрольныеСуммы = ""; Для Каждого Элемент Из Список Цикл КонтрольныеСуммы = КонтрольныеСуммы + Символы.ПС + Элемент.Значение; КонецЦикла; Возврат СокрЛ(КонтрольныеСуммы); КонецФункции // Возвращает признак изменения состава расширений после запуска сеанса. Функция РасширенияИзмененыДинамически() Экспорт УстановитьПривилегированныйРежим(Истина); Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса"); СеансЗапущенБезРазделителей = МодульРаботаВМоделиСервиса.СеансЗапущенБезРазделителей(); Иначе СеансЗапущенБезРазделителей = Истина; КонецЕсли; // При входе неразделенного администратора в область получить список неразделенных расширений невозможно. // Считаем что они не изменились. Если ОбщегоНазначения.РазделениеВключено() И СеансЗапущенБезРазделителей И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда Возврат Ложь; КонецЕсли; Возврат ПараметрыСеанса.УстановленныеРасширения <> КонтрольныеСуммыРасширений(); КонецФункции // Добавляет сведения, что сеанс начал использование версии метаданных. Процедура ЗарегистрироватьИспользованиеВерсииРасширений() Экспорт Если Не УстановленныеРасширенияДоступны() Тогда Возврат; КонецЕсли; ВерсияРасширений = ПараметрыСеанса.ВерсияРасширений; Если Не ЗначениеЗаполнено(ВерсияРасширений) Тогда Возврат; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 2 | ИСТИНА КАК ЗначениеИстина |ИЗ | Справочник.ВерсииРасширений КАК ВерсииРасширений"; // Если справочник изменяется в другом сеансе, тогда нужно дождаться окончания изменений. Блокировка = Новый БлокировкаДанных; ЭлементБлокировки = Блокировка.Добавить("Справочник.ВерсииРасширений"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый; НачатьТранзакцию(); Попытка Блокировка.Заблокировать(); РезультатыЗапроса = Запрос.ВыполнитьПакет(); ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ВызватьИсключение; КонецПопытки; Если РезультатыЗапроса[0].Выбрать().Количество() < 2 Тогда Возврат; КонецЕсли; ТекущийСеанс = ПолучитьТекущийСеансИнформационнойБазы(); НачалоСеанса = ТекущийСеанс.НачалоСеанса; НомерСеанса = ТекущийСеанс.НомерСеанса; НаборЗаписей = РегистрыСведений.СеансыВерсийРасширений.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.НомерСеанса.Установить(НомерСеанса); НаборЗаписей.Отбор.НачалоСеанса.Установить(НачалоСеанса); НаборЗаписей.Отбор.ВерсияРасширений.Установить(ВерсияРасширений); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.НомерСеанса = НомерСеанса; НоваяЗапись.НачалоСеанса = НачалоСеанса; НоваяЗапись.ВерсияРасширений = ВерсияРасширений; НаборЗаписей.ОбменДанными.Загрузка = Истина; НаборЗаписей.Записать(); КонецПроцедуры // Удаляет устаревшие версии метаданных. Процедура УдалитьУстаревшиеВерсииПараметров() Экспорт Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущаяВерсияРасширений", ПараметрыСеанса.ВерсияРасширений); Запрос.Текст = "ВЫБРАТЬ | ВерсииРасширений.Ссылка КАК ВерсияРасширений, | СеансыВерсийРасширений.НомерСеанса КАК НомерСеанса, | СеансыВерсийРасширений.НачалоСеанса КАК НачалоСеанса |ИЗ | Справочник.ВерсииРасширений КАК ВерсииРасширений | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СеансыВерсийРасширений КАК СеансыВерсийРасширений | ПО (СеансыВерсийРасширений.ВерсияРасширений = ВерсииРасширений.Ссылка) |ГДЕ | ВерсииРасширений.Ссылка <> &ТекущаяВерсияРасширений |ИТОГИ ПО | ВерсияРасширений |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ ПЕРВЫЕ 1 | ВерсииРасширений.Ссылка КАК ВерсияРасширений, | ВерсииРасширений.ПоследняяДатаДобавленияВторойВерсии |ИЗ | Справочник.ВерсииРасширений КАК ВерсииРасширений |ГДЕ | ВерсииРасширений.ПоследняяДатаДобавленияВторойВерсии <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ ПЕРВЫЕ 1 | ВерсииРасширений.Ссылка КАК ВерсияРасширений, | ВерсииРасширений.ДатаПервогоВходаПослеУдаленияВсехРасширений |ИЗ | Справочник.ВерсииРасширений КАК ВерсииРасширений |ГДЕ | ВерсииРасширений.ДатаПервогоВходаПослеУдаленияВсехРасширений <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)"; // Если справочник ВерсииРасширений или регистр сведений СеансыВерсийРасширений изменяются в другом сеансе, // тогда нужно дождаться окончания изменений. Блокировка = Новый БлокировкаДанных; ЭлементБлокировки = Блокировка.Добавить("Справочник.ВерсииРасширений"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый; ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.СеансыВерсийРасширений"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый; НачатьТранзакцию(); Попытка Блокировка.Заблокировать(); РезультатыЗапроса = Запрос.ВыполнитьПакет(); ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ВызватьИсключение; КонецПопытки; Выгрузка = РезультатыЗапроса[0].Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам); МассивСеансов = ПолучитьСеансыИнформационнойБазы(); // Версия, которая была первой при очередном добавлении второй версии // (в самом начале или после удаления устаревших версий) может // использоваться сеансами, которые были открыты до этого события. ВерсияИспользуемаяВНезарегистрированныхСеансах = Неопределено; ДатаОкончанияСеансовИспользующихРасширенияБезРегистрации = '00010101'; Если ЗначениеЗаполнено(ПараметрыСеанса.УстановленныеРасширения) Тогда Если Не РезультатыЗапроса[1].Пустой() Тогда Свойства = РезультатыЗапроса[1].Выгрузить()[0]; ДатаОкончанияСеансовИспользующихРасширенияБезРегистрации = Свойства.ПоследняяДатаДобавленияВторойВерсии; ПерваяВерсия = Свойства.ВерсияРасширений; КонецЕсли; Иначе Если Не РезультатыЗапроса[2].Пустой() Тогда Свойства = РезультатыЗапроса[2].Выгрузить()[0]; ДатаОкончанияСеансовИспользующихРасширенияБезРегистрации = Свойства.ДатаПервогоВходаПослеУдаленияВсехРасширений; ПерваяВерсия = Свойства.ВерсияРасширений; КонецЕсли; КонецЕсли; ПроверяемыеПриложения = Новый Соответствие; ПроверяемыеПриложения.Вставить("1CV8", Истина); ПроверяемыеПриложения.Вставить("1CV8C", Истина); ПроверяемыеПриложения.Вставить("WebClient", Истина); ПроверяемыеПриложения.Вставить("COMConnection", Истина); ПроверяемыеПриложения.Вставить("WSConnection", Истина); ПроверяемыеПриложения.Вставить("BackgroundJob", Истина); ПроверяемыеПриложения.Вставить("SystemBackgroundJob", Истина); Сеансы = Новый Соответствие; Для Каждого Сеанс Из МассивСеансов Цикл Если ПроверяемыеПриложения.Получить(Сеанс.ИмяПриложения) = Неопределено Тогда Продолжить; КонецЕсли; Сеансы.Вставить(Сеанс.НомерСеанса, Сеанс.НачалоСеанса); Если Сеанс.НачалоСеанса < ДатаОкончанияСеансовИспользующихРасширенияБезРегистрации Тогда ВерсияИспользуемаяВНезарегистрированныхСеансах = ПерваяВерсия; КонецЕсли; КонецЦикла; // Удаление устаревших версий метаданных. ВерсииУдалялись = Ложь; Для Каждого ОписаниеВерсии Из Выгрузка.Строки Цикл ВерсияИспользуется = Ложь; Для Каждого Строка Из ОписаниеВерсии.Строки Цикл Если СеансСуществует(Строка, Сеансы) Тогда ВерсияИспользуется = Истина; Прервать; КонецЕсли; КонецЦикла; ТекущаяВерсия = ОписаниеВерсии.ВерсияРасширений; Если ВерсияИспользуется Или ТекущаяВерсия = ВерсияИспользуемаяВНезарегистрированныхСеансах Тогда Продолжить; КонецЕсли; Объект = ТекущаяВерсия.ПолучитьОбъект(); Объект.Удалить(); ВерсииУдалялись = Истина; КонецЦикла; // Отключение регламентного задания, если осталась только одна версия расширений. // Достаточно полной разделяемой блокировки справочника ВерсииРасширений и // регистра сведений СеансыВерсийРасширений (исключительную ставить избыточно и // крайне плохо, так как это задержит вход в другие сеансы). // Взаимоблокировки исключены использованием разделяемых блокировок на всю таблицу в целом, // что допустимо и необходимо для механизма регистрации использования версий. Блокировка = Новый БлокировкаДанных; ЭлементБлокировки = Блокировка.Добавить("Справочник.ВерсииРасширений"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 2 | ВерсииРасширений.Ссылка КАК Ссылка, | ВерсииРасширений.ДатаПервогоВходаПослеУдаленияВсехРасширений |ИЗ | Справочник.ВерсииРасширений КАК ВерсииРасширений"; НачатьТранзакцию(); Попытка Блокировка.Заблокировать(); Выгрузка = Запрос.Выполнить().Выгрузить(); Если Выгрузка.Количество() < 2 Тогда Если Выгрузка.Количество() = 0 Тогда ВключитьЗаданиеУдалениеУстаревшихПараметровРаботыВерсийРасширений(Ложь); Иначе // Удаление всех регистраций использования метаданных. ВсеЗаписи = РегистрыСведений.СеансыВерсийРасширений.СоздатьНаборЗаписей(); ВсеЗаписи.Записать(); Если ЗначениеЗаполнено(ПараметрыСеанса.УстановленныеРасширения) Тогда ВключитьЗаданиеУдалениеУстаревшихПараметровРаботыВерсийРасширений(Ложь); КонецЕсли; Если ВерсииУдалялись И ЗначениеЗаполнено(Выгрузка[0].ДатаПервогоВходаПослеУдаленияВсехРасширений) Тогда Объект = Выгрузка[0].Ссылка.ПолучитьОбъект(); Объект.ДатаПервогоВходаПослеУдаленияВсехРасширений = Неопределено; Объект.Записать(); КонецЕсли; КонецЕсли; Иначе // Удаление устаревших регистраций использования метаданных. ВсеЗаписи = РегистрыСведений.СеансыВерсийРасширений.СоздатьНаборЗаписей(); ВсеЗаписи.Прочитать(); Для Каждого Строка Из ВсеЗаписи Цикл Если СеансСуществует(Строка, Сеансы) Тогда Продолжить; КонецЕсли; НаборЗаписей = РегистрыСведений.СеансыВерсийРасширений.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.НомерСеанса.Установить(Строка.НомерСеанса); НаборЗаписей.Отбор.НачалоСеанса.Установить(Строка.НачалоСеанса); НаборЗаписей.Отбор.ВерсияРасширений.Установить(Строка.ВерсияРасширений); НаборЗаписей.Записать(); КонецЦикла; КонецЕсли; ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ВызватьИсключение; КонецПопытки; КонецПроцедуры // Вызывается из формы УстановленныеРасширения. Процедура ПриУдаленииВсехРасширений() Экспорт ЗарегистрироватьПервыйВходПослеУдаленияВсехРасширений(); ВключитьЗаданиеУдалениеУстаревшихПараметровРаботыВерсийРасширений(Истина); КонецПроцедуры // Включает/Отключает регламентное задание УдалениеУстаревшихПараметровРаботыВерсийРасширений. Процедура ВключитьЗаданиеУдалениеУстаревшихПараметровРаботыВерсийРасширений(Включить) Экспорт РегламентныеЗаданияСервер.УстановитьИспользованиеПредопределенногоРегламентногоЗадания( Метаданные.РегламентныеЗадания.УдалениеУстаревшихПараметровРаботыВерсийРасширений, Включить); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции // Возвращает текущую версию расширений. // Для поиска версии используется описание подключенных расширений. // Функция ВерсияРасширений() Если Не УстановленныеРасширенияДоступны() Тогда Возврат ПустаяСсылка(); КонецЕсли; Если Не ЗначениеЗаполнено(ПараметрыСеанса.УстановленныеРасширения) Тогда ЗарегистрироватьПервыйВходПослеУдаленияВсехРасширений(); КонецЕсли; ОписаниеРасширений = ПараметрыСеанса.ПодключенныеРасширения; Если Не ЗначениеЗаполнено(ОписаниеРасширений) Тогда Возврат ПустаяСсылка(); КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВерсииРасширений.Ссылка КАК Ссылка, | ВерсииРасширений.ОписаниеМетаданных КАК ОписаниеРасширений |ИЗ | Справочник.ВерсииРасширений КАК ВерсииРасширений"; // Если справочник изменяется в другом сеансе, тогда нужно дождаться окончания изменений. Блокировка = Новый БлокировкаДанных; ЭлементБлокировки = Блокировка.Добавить("Справочник.ВерсииРасширений"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый; НачатьТранзакцию(); Попытка Блокировка.Заблокировать(); Выборка = Запрос.Выполнить().Выбрать(); ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ВызватьИсключение; КонецПопытки; Если ВерсияНайдена(Выборка, ОписаниеРасширений) Тогда ВерсияРасширений = Выборка.Ссылка; Иначе // Создание новой версии расширений. Блокировка = Новый БлокировкаДанных; ЭлементБлокировки = Блокировка.Добавить("Справочник.ВерсииРасширений"); НачатьТранзакцию(); Попытка // Повторная проверка, что версия еще не создана, // что маловероятно, но возможно между транзакциями. // Сразу исключительная блокировка недопустима, так как это // замедлит вход пользователей в другие сеансы. Выборка = Запрос.Выполнить().Выбрать(); Если ВерсияНайдена(Выборка, ОписаниеРасширений) Тогда ВерсияРасширений = Выборка.Ссылка; Иначе Блокировка.Заблокировать(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВерсииРасширений.Ссылка КАК Ссылка |ИЗ | Справочник.ВерсииРасширений КАК ВерсииРасширений"; Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() И Выборка.Количество() = 1 Тогда Объект = Выборка.Ссылка.ПолучитьОбъект(); // Тут должна быть именно ТекущаяДата(), так как // именно она устанавливается в поле НачалоСеанса. Объект.ПоследняяДатаДобавленияВторойВерсии = ТекущаяДата(); Объект.ОбменДанными.Загрузка = Истина; Объект.Записать(); ВключитьЗаданиеУдалениеУстаревшихПараметровРаботыВерсийРасширений(Истина); КонецЕсли; Объект = СоздатьЭлемент(); Объект.ОписаниеМетаданных = ОписаниеРасширений; Объект.ОбменДанными.Загрузка = Истина; Объект.Записать(); ВерсияРасширений = Объект.Ссылка; КонецЕсли; ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ВызватьИсключение; КонецПопытки; КонецЕсли; Возврат ВерсияРасширений; КонецФункции // Для функции ВерсияРасширений. Функция ВерсияНайдена(Выборка, ОписаниеРасширений) Пока Выборка.Следующий() Цикл Если Выборка.ОписаниеРасширений = ОписаниеРасширений Тогда Возврат Истина; КонецЕсли; КонецЦикла; Возврат Ложь; КонецФункции // Для процедуры УдалитьУстаревшиеВерсииПараметров. Функция СеансСуществует(ОписаниеСеанса, СуществующиеСеансы) НачалоСеанса = СуществующиеСеансы[ОписаниеСеанса.НомерСеанса]; Возврат НачалоСеанса <> Неопределено И НачалоСеанса > (ОписаниеСеанса.НачалоСеанса - 30) И (ОписаниеСеанса.НачалоСеанса + 30) > НачалоСеанса; КонецФункции // Для функции ВерсияРасширений и процедуры ПриУдаленииВсехРасширений. Процедура ЗарегистрироватьПервыйВходПослеУдаленияВсехРасширений() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 2 | ВерсииРасширений.Ссылка КАК Ссылка, | ВерсииРасширений.ДатаПервогоВходаПослеУдаленияВсехРасширений |ИЗ | Справочник.ВерсииРасширений КАК ВерсииРасширений"; Выгрузка = Запрос.Выполнить().Выгрузить(); Если Выгрузка.Количество() = 1 И Не ЗначениеЗаполнено(Выгрузка[0].ДатаПервогоВходаПослеУдаленияВсехРасширений) Тогда Объект = Выгрузка[0].Ссылка.ПолучитьОбъект(); // Тут должна быть именно ТекущаяДата(), так как // именно она устанавливается в поле НачалоСеанса. Объект.ДатаПервогоВходаПослеУдаленияВсехРасширений = ТекущаяДата(); Объект.Записать(); КонецЕсли; КонецПроцедуры #КонецОбласти #КонецЕсли

Catalogs/ВерсииРасширений/ObjectModule

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

Catalogs/ВерсииРасширений/Forms/ФормаСписка/Form/Module

 #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ТолькоПросмотр = Истина; КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура ВключитьВозможностьРедактирования(Команда) ТолькоПросмотр = Ложь; Элементы.ФормаВключитьВозможностьРедактирования.Доступность = Ложь; КонецПроцедуры #КонецОбласти

Catalogs/ВерсииРасширений/Forms/ФормаЭлемента/Form/Module

 #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ТолькоПросмотр = Истина; КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура ВключитьВозможностьРедактирования(Команда) ТолькоПросмотр = Ложь; Элементы.ФормаВключитьВозможностьРедактирования.Доступность = Ложь; КонецПроцедуры #КонецОбласти

Catalogs/ВерсииФайлов/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс #Область ДляВызоваИзДругихПодсистем // СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов // Возвращает реквизиты объекта, которые разрешается редактировать // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: // Массив - список имен реквизитов объекта. Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт РедактируемыеРеквизиты = Новый Массив; РедактируемыеРеквизиты.Добавить("Комментарий"); Возврат РедактируемыеРеквизиты; КонецФункции // Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов #КонецОбласти #КонецОбласти #КонецЕсли #Область ОбработчикиСобытий Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) Если ВидФормы = "ФормаОбъекта" Тогда СтандартнаяОбработка = Ложь; ВыбраннаяФорма = "Обработка.РаботаСФайлами.Форма.ВерсияПрисоединенногоФайла"; КонецЕсли; КонецПроцедуры #КонецОбласти

Catalogs/ВерсииФайлов/ObjectModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ОбработчикиСобытий Процедура ПередЗаписью(Отказ) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; Если ДополнительныеСвойства.Свойство("КонвертацияФайлов") Тогда Возврат; КонецЕсли; Если ДополнительныеСвойства.Свойство("РазмещениеФайловВТомах") Тогда Возврат; КонецЕсли; Если ЭтоНовый() Тогда РодительскаяВерсия = Владелец.ТекущаяВерсия; КонецЕсли; Если Не ЭтоНовый() Тогда УстановленаПометкаУдаления = ПометкаУдаления И Не ПометкаУдаленияВИБ(); КонецЕсли; // Выполним установку индекса пиктограммы при записи объекта. ИндексКартинки = РаботаСФайламиСлужебныйКлиентСервер.ПолучитьИндексПиктограммыФайла(Расширение); Если СтатусИзвлеченияТекста.Пустая() Тогда СтатусИзвлеченияТекста = Перечисления.СтатусыИзвлеченияТекстаФайлов.НеИзвлечен; КонецЕсли; Если ТипЗнч(Владелец) = Тип("СправочникСсылка.Файлы") Тогда Наименование = СокрЛП(ПолноеНаименование); КонецЕсли; Если Владелец.ТекущаяВерсия = Ссылка Тогда Если ПометкаУдаления = Истина И Владелец.ПометкаУдаления <> Истина Тогда ВызватьИсключение НСтр("ru = 'Активную версию нельзя удалить.'"); КонецЕсли; ИначеЕсли РодительскаяВерсия.Пустая() Тогда Если ПометкаУдаления = Истина И Владелец.ПометкаУдаления <> Истина Тогда ВызватьИсключение НСтр("ru = 'Первую версию нельзя удалить.'"); КонецЕсли; ИначеЕсли ПометкаУдаления = Истина И Владелец.ПометкаУдаления <> Истина Тогда // Очищаем у версий, дочерних к помеченной, ссылку на родительскую - // переставляем на родительскую версию удаляемой версии. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВерсииФайлов.Ссылка КАК Ссылка |ИЗ | Справочник." + Метаданные.НайтиПоТипу(ТипЗнч(Ссылка)).Имя + " КАК ВерсииФайлов |ГДЕ | ВерсииФайлов.РодительскаяВерсия = &РодительскаяВерсия"; Запрос.УстановитьПараметр("РодительскаяВерсия", Ссылка); Результат = Запрос.Выполнить(); НачатьТранзакцию(); Попытка Если Не Результат.Пустой() Тогда Выборка = Результат.Выбрать(); Выборка.Следующий(); БлокировкаДанных = Новый БлокировкаДанных; ЭлементБлокировкиДанных = БлокировкаДанных.Добавить(Метаданные.НайтиПоТипу(ТипЗнч(Выборка.Ссылка)).ПолноеИмя()); ЭлементБлокировкиДанных.УстановитьЗначение("Ссылка", Выборка.Ссылка); БлокировкаДанных.Заблокировать(); Объект = Выборка.Ссылка.ПолучитьОбъект(); ЗаблокироватьДанныеДляРедактирования(Объект.Ссылка); Объект.РодительскаяВерсия = РодительскаяВерсия; Объект.Записать(); КонецЕсли; ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ВызватьИсключение; КонецПопытки; КонецЕсли; КонецПроцедуры Процедура ПередУдалением(Отказ) Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда Если НЕ Том.Пустая() И ОбщегоНазначения.СсылкаСуществует(Том) Тогда ПолныйПуть = РаботаСФайламиСлужебный.ПолныйПутьТома(Том) + ПутьКФайлу; Попытка Файл = Новый Файл(ПолныйПуть); Файл.УстановитьТолькоЧтение(Ложь); УдалитьФайлы(ПолныйПуть); ПутьСПодкаталогом = Файл.Путь; МассивФайловВКаталоге = НайтиФайлы(ПутьСПодкаталогом, "*.*"); Если МассивФайловВКаталоге.Количество() = 0 Тогда УдалитьФайлы(ПутьСПодкаталогом); КонецЕсли; Исключение ЗаписьЖурналаРегистрации(НСтр("ru = 'Файлы.Ошибка удаления файла.'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,, Файл, ОписаниеОшибки()); КонецПопытки; КонецЕсли; КонецЕсли; // Проверку ОбменДанными.Загрузка следует выполнять начиная с этой строки. // Сначала требуется физически удалить файл, а потом уже сведения о нем в информационной базе. // Иначе данные о расположении файла будут недоступны. Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции // Возвращает текущее значение пометки удаления в информационной базе. Функция ПометкаУдаленияВИБ() УстановитьПривилегированныйРежим(Истина); ИмяСправочникаВерсийФайлов = Метаданные.НайтиПоТипу(ТипЗнч(Ссылка)).Имя; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВерсииФайлов.ПометкаУдаления |ИЗ | Справочник." + ИмяСправочникаВерсийФайлов + " КАК ВерсииФайлов |ГДЕ | ВерсииФайлов.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Результат = Запрос.Выполнить(); Если Не Результат.Пустой() Тогда Выборка = Результат.Выбрать(); Выборка.Следующий(); Возврат Выборка.ПометкаУдаления; КонецЕсли; Возврат Неопределено; КонецФункции #КонецОбласти #КонецЕсли

Catalogs/ВерсииФайлов/Forms/ФормаВыбора/Form/Module

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

Catalogs/ВерсииФайлов/Forms/ФормаСписка/Form/Module

 #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Возврат; КонецЕсли; // Оформление помеченных на удаление. ЭлементУсловногоОформления = Список.УсловноеОформление.Элементы.Добавить(); ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("TextColor"); ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение; ЭлементЦветаОформления.Использование = Истина; ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПометкаУдаления"); ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбораДанных.ПравоеЗначение = Истина; ЭлементОтбораДанных.Использование = Истина; КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ИмяСобытия = "Запись_Файл" И Параметр.Свойство("Событие") И ( Параметр.Событие = "ЗаконченоРедактирование" ИЛИ Параметр.Событие = "ВерсияСохранена") Тогда Элементы.Список.Обновить(); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовШапкиФормы &НаКлиенте Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(ВладелецФайла(ВыбраннаяСтрока), ВыбраннаяСтрока, УникальныйИдентификатор); РаботаСФайламиСлужебныйКлиент.ОткрытьВерсиюФайла(Неопределено, ДанныеФайла, УникальныйИдентификатор); КонецПроцедуры &НаКлиенте Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) Отказ = Истина; КонецПроцедуры &НаКлиенте Процедура СписокПередУдалением(Элемент, Отказ) ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(Элементы.Список.ТекущаяСтрока); Если ДанныеФайла.ТекущаяВерсия = Элементы.Список.ТекущаяСтрока Тогда ПоказатьПредупреждение(, НСтр("ru = 'Активную версию нельзя удалить.'")); Отказ = Истина; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура СписокПередНачаломИзменения(Элемент, Отказ) Отказ = Истина; ОткрытьКарточкуФайла(); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаКлиенте Процедура ОткрытьКарточкуФайла() ТекущиеДанные = Элементы.Список.ТекущиеДанные; Если ТекущиеДанные <> Неопределено Тогда Версия = ТекущиеДанные.Ссылка; ПараметрыОткрытияФормы = Новый Структура("Ключ", Версия); ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ВерсияПрисоединенногоФайла", ПараметрыОткрытияФормы); КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция ВладелецФайла(ВыбраннаяСтрока) Возврат ВыбраннаяСтрока.Владелец; КонецФункции #КонецОбласти

Catalogs/ВетеринарноСопроводительныйДокументВЕТИС/ManagerModule

 #Область ОбработчикиСобытий Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Если Данные.ТребуетсяЗагрузка = Истина Тогда Представление = НСтр("ru = 'не загружено'"); ИначеЕсли ЗначениеЗаполнено(Данные.Дата) Тогда Представление = Строка(Данные.Форма) + " от " + Формат(Данные.Дата, "ДЛФ=D"); Иначе Представление = Данные.Форма; КонецЕсли; КонецПроцедуры Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка) Поля.Добавить("Форма"); Поля.Добавить("Дата"); Поля.Добавить("Ссылка"); Поля.Добавить("Наименование"); Поля.Добавить("ТребуетсяЗагрузка"); СтандартнаяОбработка = Ложь; КонецПроцедуры #КонецОбласти #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс Функция НайтиПоДаннымXDTO(ОбъектXDTO, ПараметрыОбмена) Экспорт СправочникСсылка = ИнтеграцияВЕТИС.СсылкаПоИдентификатору(ПараметрыОбмена, "ВетеринарноСопроводительныйДокументВЕТИС", ОбъектXDTO.uuid); Если ЗначениеЗаполнено(СправочникСсылка) Тогда Возврат СправочникСсылка; КонецЕсли; ТекстЗапроса = "ВЫБРАТЬ ПЕРВЫЕ 1 | ВетеринарноСопроводительныйДокументВЕТИС.Ссылка КАК Ссылка |ИЗ | Справочник.ВетеринарноСопроводительныйДокументВЕТИС КАК ВетеринарноСопроводительныйДокументВЕТИС |ГДЕ | ВетеринарноСопроводительныйДокументВЕТИС.СерияБланкаСтрогойОтчетности = &СерияБланкаСтрогойОтчетности | И ВетеринарноСопроводительныйДокументВЕТИС.НомерБланкаСтрогойОтчетности = &НомерБланкаСтрогойОтчетности | И ВетеринарноСопроводительныйДокументВЕТИС.Дата = &Дата"; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр("СерияБланкаСтрогойОтчетности", ОбъектXDTO.issueSeries); Запрос.УстановитьПараметр("НомерБланкаСтрогойОтчетности", ОбъектXDTO.issueNumber); Запрос.УстановитьПараметр("Дата", ОбъектXDTO.issueDate); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Возврат Справочники.ВетеринарноСопроводительныйДокументВЕТИС.ПустаяСсылка(); КонецЕсли; Выборка = Результат.Выбрать(); Выборка.Следующий(); Возврат Выборка.Ссылка; КонецФункции #Область ПроцедурыИФункцииПечатиФормы // Заполняет список команд печати. // // Параметры: // КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати. // Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт // ВСД расширенная этикетка КомандаПечати = КомандыПечати.Добавить(); КомандаПечати.МенеджерПечати = "Обработка.ПечатьЭтикетокВЕТИС"; КомандаПечати.Идентификатор = "ВСДРасширеннаяЭтикетка"; КомандаПечати.Представление = НСтр("ru = 'Сжатое представление с расширенной информацией'"); УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,"Тип",Перечисления.ТипыВетеринарныхДокументовВЕТИС.Производственный,ВидСравнения.НеРавно); УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,"Идентификатор","",ВидСравненияКомпоновкиДанных.Заполнено); // ВСД сжатая этикетка КомандаПечати = КомандыПечати.Добавить(); КомандаПечати.МенеджерПечати = "Обработка.ПечатьЭтикетокВЕТИС"; КомандаПечати.Идентификатор = "ВСДСжатаяЭтикетка"; КомандаПечати.Представление = НСтр("ru = 'Сжатое представление'"); УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,"Тип",Перечисления.ТипыВетеринарныхДокументовВЕТИС.Производственный,ВидСравнения.НеРавно); УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,"Идентификатор","",ВидСравненияКомпоновкиДанных.Заполнено); КонецПроцедуры Функция ПолучитьДанныеДляПечатнойФормыРасширеннойЭтикеткиВСД(ПараметрыПечати, МассивОбъектов) Экспорт Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка",МассивОбъектов); Запрос.Текст = "ВЫБРАТЬ | ВетеринарноСопроводительныйДокументВЕТИС.Ссылка КАК Ссылка, | ВетеринарноСопроводительныйДокументВЕТИС.Форма КАК Форма, | ВетеринарноСопроводительныйДокументВЕТИС.Дата КАК ДатаДокумента, | ВетеринарноСопроводительныйДокументВЕТИС.Статус КАК Статус, | ВетеринарноСопроводительныйДокументВЕТИС.ГрузоотправительХозяйствующийСубъект КАК Грузоотправитель, | ВетеринарноСопроводительныйДокументВЕТИС.ГрузоотправительХозяйствующийСубъект.Контрагент.ИНН КАК ГрузоотправительИНН, | ВетеринарноСопроводительныйДокументВЕТИС.ТипТТН КАК ТипТТН, | ВетеринарноСопроводительныйДокументВЕТИС.СерияТТН КАК СерияТТН, | ВетеринарноСопроводительныйДокументВЕТИС.НомерТТН КАК НомерТТН, | ВетеринарноСопроводительныйДокументВЕТИС.ДатаТТН КАК ДатаТТН, | ВетеринарноСопроводительныйДокументВЕТИС.ГрузополучательХозяйствующийСубъект КАК Грузополучатель, | ВетеринарноСопроводительныйДокументВЕТИС.ГрузополучательХозяйствующийСубъект.Контрагент.ИНН КАК ГрузополучательИНН, | ВетеринарноСопроводительныйДокументВЕТИС.ГрузополучательПредприятие КАК ГрузополучательПредприятие, | ВетеринарноСопроводительныйДокументВЕТИС.ГрузополучательПредприятие.АдресПредставление КАК ГрузополучательПредприятиеАдрес, | ВетеринарноСопроводительныйДокументВЕТИС.Идентификатор КАК Идентификатор, | ВетеринарноСопроводительныйДокументВЕТИС.Продукция КАК Продукция, | ВетеринарноСопроводительныйДокументВЕТИС.КоличествоВЕТИС КАК Количество, | ВетеринарноСопроводительныйДокументВЕТИС.ЕдиницаИзмеренияВЕТИС КАК ЕдиницаИзмерения, | ВетеринарноСопроводительныйДокументВЕТИС.ДатаПроизводстваСтрока КАК ДатаПроизводстваСтрока, | ВетеринарноСопроводительныйДокументВЕТИС.ДатаПроизводстваТочностьЗаполнения КАК ДатаПроизводстваТочностьЗаполнения, | ВетеринарноСопроводительныйДокументВЕТИС.ДатаПроизводстваНачалоПериода КАК ДатаПроизводстваНачалоПериода, | ВетеринарноСопроводительныйДокументВЕТИС.ДатаПроизводстваКонецПериода КАК ДатаПроизводстваКонецПериода, | ВетеринарноСопроводительныйДокументВЕТИС.Производители.( | Производитель КАК ПроизводительПредприятие, | Производитель.АдресПредставление КАК ПроизводительПредприятиеАдрес) КАК Производители |ИЗ | Справочник.ВетеринарноСопроводительныйДокументВЕТИС КАК ВетеринарноСопроводительныйДокументВЕТИС |ГДЕ | ВетеринарноСопроводительныйДокументВЕТИС.Ссылка В(&Ссылка) |ИТОГИ ПО | Ссылка"; Возврат Запрос.Выполнить(); КонецФункции Функция ПолучитьДанныеДляПечатнойФормыСжатойЭтикеткиВСД(ПараметрыПечати, МассивОбъектов) Экспорт Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка",МассивОбъектов); Запрос.Текст = "ВЫБРАТЬ | ВетеринарноСопроводительныйДокументВЕТИС.Ссылка КАК Ссылка, | ВетеринарноСопроводительныйДокументВЕТИС.ГрузоотправительХозяйствующийСубъект КАК Грузоотправитель, | ВетеринарноСопроводительныйДокументВЕТИС.ГрузоотправительХозяйствующийСубъект.Контрагент.ИНН КАК ГрузоотправительИНН, | ВетеринарноСопроводительныйДокументВЕТИС.Идентификатор КАК Идентификатор |ИЗ | Справочник.ВетеринарноСопроводительныйДокументВЕТИС КАК ВетеринарноСопроводительныйДокументВЕТИС |ГДЕ | ВетеринарноСопроводительныйДокументВЕТИС.Ссылка В(&Ссылка) |ИТОГИ ПО | Ссылка"; Возврат Запрос.Выполнить(); КонецФункции #КонецОбласти #КонецОбласти #КонецЕсли #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область СлужебныйПрограммныйИнтерфейс #КонецОбласти #Область СлужебныеПроцедурыИФункции #КонецОбласти #КонецЕсли

Catalogs/ВетеринарноСопроводительныйДокументВЕТИС/ObjectModule

 #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ОбработчикиСобытий Процедура ПриКопировании(ОбъектКопирования) Идентификатор = ""; ИдентификаторВерсии = ""; Статус = Перечисления.СтатусыВетеринарныхДокументовВЕТИС.Оформлен; КонецПроцедуры Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура")Тогда ЗаполнитьЗначенияСвойств(ЭтотОбъект,ДанныеЗаполнения); КонецЕсли; Тип = Перечисления.ТипыВетеринарныхДокументовВЕТИС.Транспортный; Статус = Перечисления.СтатусыВетеринарныхДокументовВЕТИС.Оформлен; ЭкспертизаРезультат = Перечисления.РезультатыЛабораторныхИсследованийВЕТИС.НеПодвергнутаВСЭ; БлагополучиеМестности = НСтр("ru='Местность благополучна по заразным болезням животных'"); ДатаПроизводстваТочностьЗаполнения = Перечисления.ТочностьЗаполненияПериодаВЕТИС.ДДММГГГГ; СрокГодностиТочностьЗаполнения = Перечисления.ТочностьЗаполненияПериодаВЕТИС.ДДММГГГГ; Если ЗначениеЗаполнено(ГрузоотправительПредприятие) И Маршрут.Количество() = 0 Тогда НоваяСтрока = Маршрут.Добавить(); НоваяСтрока.Предприятие = ГрузоотправительПредприятие; НоваяСтрока.СПерегрузкой = Истина; КонецЕсли; КонецПроцедуры Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Электронный = ЗначениеЗаполнено(Идентификатор); ТипЖивыеЖивотные = ИнтеграцияВЕТИСВызовСервера.ПродукцияПринадлежитТипуЖивыеЖивотные(Продукция); Шаблон = НСтр("ru = 'Поле ""%1"" не заполнено'"); Если НЕ ЗначениеЗаполнено(ДатаПроизводстваНачалоПериода) И НЕ ЗначениеЗаполнено(ДатаПроизводстваСтрока) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( СтрШаблон(Шаблон, ИнтеграцияВЕТИСКлиентСервер.ПредставлениеПоляДатаПроизводства(ТипЖивыеЖивотные)),, "НадписьДатаПроизводства",, Отказ); КонецЕсли; Если НЕ ЗначениеЗаполнено(СрокГодностиНачалоПериода) И НЕ ЗначениеЗаполнено(СрокГодностиСтрока) И НЕ ТипЖивыеЖивотные Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( СтрШаблон(Шаблон, НСтр("ru = 'Срок годности'")),, "НадписьСрокГодности",, Отказ); КонецЕсли; МассивНепроверяемыхРеквизитов = Новый Массив; Если Электронный Тогда МассивНепроверяемыхРеквизитов.Добавить("СерияБланкаСтрогойОтчетности"); МассивНепроверяемыхРеквизитов.Добавить("НомерБланкаСтрогойОтчетности"); Иначе Если Производители.Количество() = 0 Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( СтрШаблон(Шаблон, НСтр("ru = 'Производители'")),, "НадписьПроизводители",, Отказ); КонецЕсли; МассивНепроверяемыхРеквизитов.Добавить("Идентификатор"); КонецЕсли; Если НЕ ТипЖивыеЖивотные Тогда МассивНепроверяемыхРеквизитов.Добавить("ПериодНахожденияЖивотныхНаТерриторииТС"); МассивНепроверяемыхРеквизитов.Добавить("КоличествоПериодовНахожденияЖивотныхНаТерриторииТС"); Иначе Если НЕ ПериодНахожденияЖивотныхНаТерриторииТС = Перечисления.ПериодыНахожденияЖивотныхНаТерриторииТСВЕТИС.ЗначениеВМесяцах Тогда МассивНепроверяемыхРеквизитов.Добавить("КоличествоПериодовНахожденияЖивотныхНаТерриторииТС"); КонецЕсли; КонецЕсли; Если Тип = Перечисления.ТипыВетеринарныхДокументовВЕТИС.Производственный Тогда МассивНепроверяемыхРеквизитов.Добавить("БлагополучиеМестности"); МассивНепроверяемыхРеквизитов.Добавить("Цель"); КонецЕсли; ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов); КонецПроцедуры #КонецОбласти #КонецЕсли

Catalogs/ВетеринарноСопроводительныйДокументВЕТИС/Forms/АннулироватьДокумент/Form/Module

 #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Возврат; КонецЕсли; Параметры.Свойство("ВетеринарноСопроводительныйДокумент", ВетеринарноСопроводительныйДокумент); Параметры.Свойство("ХозяйствующийСубъект", ХозяйствующийСубъект); Параметры.Свойство("Идентификатор", Идентификатор); Если ВетеринарноСопроводительныйДокумент.Пустая() ИЛИ ХозяйствующийСубъект.Пустая() ИЛИ ПустаяСтрока(Идентификатор) Тогда Отказ = Истина; КонецЕсли; ЗаполнитьИменаСтраниц(); СтраницыФормы = Элементы.ГруппаСтраницы; СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы[ИменаСтраниц[0]]; ЦветГиперссылки = ЦветаСтиля.ЦветГиперссылкиГИСМ; ЦветПроблема = ЦветаСтиля.ЦветТекстаПроблемаЕГАИС; КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовФормы &НаКлиенте Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница) УстановитьТекущуюСтраницуНавигации(ЭтотОбъект); Если ТекущаяСтраница = Элемент.ПодчиненныеЭлементы.СтраницаЗапросОжидание Тогда ВыполнениеЗаявкиВЕТИСНачало(); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура КомандаДалее(Команда) СтраницыФормы = Элементы.ГруппаСтраницы; ИндексСтраницы = ИменаСтраниц.Найти(СтраницыФормы.ТекущаяСтраница.Имя); Если ИменаСтраниц[ИндексСтраницы] = "СтраницаИсходныеДанные" И ПустаяСтрока(ПричинаАннулирования) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Необходимо указать причину аннулирования ветеринарного сертификата.'"),, "ПричинаАннулирования"); Возврат; КонецЕсли; Если ИменаСтраниц[ИндексСтраницы + 1] = "СтраницаЗапросОшибка" И ПустаяСтрока(НадписьОшибка) Тогда СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы[ИменаСтраниц[ИндексСтраницы + 2]]; Иначе СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы[ИменаСтраниц[ИндексСтраницы + 1]]; КонецЕсли; ГруппаСтраницыПриСменеСтраницы(СтраницыФормы, СтраницыФормы.ТекущаяСтраница); КонецПроцедуры &НаКлиенте Процедура КомандаНазад(Команда) СтраницыФормы = Элементы.ГруппаСтраницы; ИндексСтраницы = ИменаСтраниц.Найти(СтраницыФормы.ТекущаяСтраница.Имя); Если ИменаСтраниц[ИндексСтраницы - 1] = "СтраницаЗапросОшибка" И ПустаяСтрока(НадписьОшибка) Тогда СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы[ИменаСтраниц[ИндексСтраницы - 2]]; Иначе СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы[ИменаСтраниц[ИндексСтраницы - 1]]; КонецЕсли; ГруппаСтраницыПриСменеСтраницы(СтраницыФормы, СтраницыФормы.ТекущаяСтраница); КонецПроцедуры &НаКлиенте Процедура КомандаВНачало(Команда) СтраницыФормы = Элементы.ГруппаСтраницы; СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы[ИменаСтраниц[0]]; ГруппаСтраницыПриСменеСтраницы(СтраницыФормы, СтраницыФормы.ТекущаяСтраница); КонецПроцедуры &НаКлиенте Процедура НадписьОшибкаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Если СтрНачинаетсяС(НавигационнаяСсылкаФорматированнойСтроки, "ОткрытьИсходящееСообщение") Тогда ПоказатьЗначение(, ИсходящееСообщение); ИначеЕсли СтрНачинаетсяС(НавигационнаяСсылкаФорматированнойСтроки, "ОткрытьВходящееСообщение") Тогда ПоказатьЗначение(, ВходящееСообщение); КонецЕсли; КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаКлиенте Процедура ВыполнениеЗаявкиВЕТИСНачало() ОчиститьСообщения(); КоличествоЭлементов = 1000; РезультатОбмена = ЗаявкиВЕТИСВызовСервера.ПодготовитьЗапросНаАннулированиеВетеринарногоСопроводительногоДокументаПоUUID( ХозяйствующийСубъект, Идентификатор, ПричинаАннулирования, УникальныйИдентификатор); ОбработатьРезультатОбменаСВЕТИС(РезультатОбмена); КонецПроцедуры &НаКлиенте Процедура ВыполнениеЗаявкиВЕТИСОкончание() ОповеститьОбИзменениях(); ПоказатьУспешныйРезультатОбмена(); КонецПроцедуры &НаКлиенте Процедура ОповеститьОбИзменениях() Оповестить( ИнтеграцияИСКлиентСервер.ИмяСобытияИзмененоСостояние(ИнтеграцияИСКлиентСервер.ПодсистемаВЕТИС()), Новый Структура("Ссылка, ОбъектИзменен", ВетеринарноСопроводительныйДокумент, Истина)); КонецПроцедуры &НаКлиенте Процедура ОбработатьРезультатОбменаСВЕТИС(РезультатОбмена) Если РезультатОбмена.Ожидать <> Неопределено Тогда ИсходящееСообщение = РезультатОбмена.Изменения[0].ИсходящееСообщение; СформироватьТекстОжидание(); КонецЕсли; ИнтеграцияВЕТИСКлиент.ОбработатьРезультатОбмена(РезультатОбмена, ЭтотОбъект,, ОповещениеПриЗавершенииОбмена(), Ложь); КонецПроцедуры &НаКлиенте Процедура ВыполнитьОбменОбработкаОжидания() ИнтеграцияВЕТИСКлиент.ПродолжитьВыполнениеОбмена(ЭтотОбъект,, ОповещениеПриЗавершенииОбмена(), Ложь); КонецПроцедуры &НаКлиенте Функция ОповещениеПриЗавершенииОбмена() ОписаниеОповещения = Новый ОписаниеОповещения("ОбработатьРезультатОбменаСВЕТИСЗавершение", ЭтотОбъект); Возврат ОписаниеОповещения; КонецФункции &НаКлиенте Процедура ОбработатьРезультатОбменаСВЕТИСЗавершение(Изменения, ДополнительныеПараметры) Экспорт ДанныеДляОбработки = Неопределено; Для Каждого ЭлементДанных Из Изменения Цикл Если ЭлементДанных.Операция = ПредопределенноеЗначение("Перечисление.ВидыОперацийВЕТИС.ЗапросНаАннулированиеВСД") Тогда ДанныеДляОбработки = ЭлементДанных; ИначеЕсли ЭлементДанных.Операция = ПредопределенноеЗначение("Перечисление.ВидыОперацийВЕТИС.ОтветНаЗапросНаАннулированиеВСД") Тогда ДанныеДляОбработки = ЭлементДанных; Прервать; КонецЕсли; КонецЦикла; Если ДанныеДляОбработки = Неопределено Тогда Возврат; КонецЕсли; ВходящееСообщение = ДанныеДляОбработки.ВходящееСообщение; Если ДанныеДляОбработки.НовыйСтатус = ПредопределенноеЗначение("Перечисление.СтатусыОбработкиСообщенийВЕТИС.ЗаявкаОтклонена") ИЛИ НЕ ПустаяСтрока(ДанныеДляОбработки.ТекстОшибки) Тогда ПоказатьОшибкуОбмена(ДанныеДляОбработки.ТекстОшибки); ИначеЕсли ДанныеДляОбработки.НовыйСтатус = ПредопределенноеЗначение("Перечисление.СтатусыОбработкиСообщенийВЕТИС.ЗаявкаВыполнена") Тогда ВыполнениеЗаявкиВЕТИСОкончание(); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПоказатьОшибкуОбмена(ТекстОшибки) Строки = Новый Массив(); Если ЗначениеЗаполнено(ИсходящееСообщение) Тогда Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Запрос'"),, ЦветГиперссылки,, "ОткрытьИсходящееСообщение")); Иначе Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Запрос'"))); КонецЕсли; Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'на аннулирование сертификата'"))); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'завершился с'"))); Строки.Добавить(" "); Если ЗначениеЗаполнено(ВходящееСообщение) Тогда Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'ошибкой'"),, ЦветГиперссылки,, "ОткрытьВходящееСообщение")); Иначе Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'ошибкой'"))); КонецЕсли; Строки.Добавить(":"); Строки.Добавить(Символы.ПС); Строки.Добавить(Новый ФорматированнаяСтрока(ТекстОшибки,, ЦветПроблема)); НадписьОшибка = Новый ФорматированнаяСтрока(Строки); СтраницыФормы = Элементы.ГруппаСтраницы; СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы.СтраницаЗапросОшибка; ГруппаСтраницыПриСменеСтраницы(СтраницыФормы, СтраницыФормы.ТекущаяСтраница); КонецПроцедуры &НаКлиенте Процедура ПоказатьУспешныйРезультатОбмена() Строки = Новый Массив(); Строки.Добавить(НСтр("ru = 'На'")); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'запрос'"),, ЦветГиперссылки,, "ОткрытьИсходящееСообщение")); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'на аннулирование сертификата'"))); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'получен'"))); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'ответ'"),, ЦветГиперссылки,, "ОткрытьВходящееСообщение")); Строки.Добавить("."); Строки.Добавить(Символы.ПС); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'сертификат аннулирован.'"))); ТекстРезультат = Новый ФорматированнаяСтрока(Строки); СтраницыФормы = Элементы.ГруппаСтраницы; СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы.СтраницаЗапросРезультат; ГруппаСтраницыПриСменеСтраницы(СтраницыФормы, СтраницыФормы.ТекущаяСтраница); КонецПроцедуры &НаСервере Процедура ЗаполнитьИменаСтраниц() СтраницыФормы = Новый Массив(); СтраницыФормы.Добавить("СтраницаИсходныеДанные"); СтраницыФормы.Добавить("СтраницаЗапросОжидание"); СтраницыФормы.Добавить("СтраницаЗапросОшибка"); СтраницыФормы.Добавить("СтраницаЗапросРезультат"); ИменаСтраниц = Новый ФиксированныйМассив(СтраницыФормы); КонецПроцедуры // ЗаполнитьИменаСтраниц() &НаКлиенте Процедура СформироватьТекстОжидание() Строки = Новый Массив(); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Запрос'"),, ЦветГиперссылки,, "ОткрытьИсходящееСообщение")); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'на аннулирование сертификата'"))); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'передан в ВЕТИС.'"))); Строки.Добавить(Символы.ПС); Строки.Добавить(Новый ФорматированнаяСтрока( НСтр("ru = 'Получение ответа от сервера может занять продолжительное время. |Дождитесь ответа или закройте окно для продолжения |выполнения операции в фоновом режиме.'"))); НадписьОжидание = Новый ФорматированнаяСтрока(Строки); КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура УстановитьТекущуюСтраницуНавигации(Форма) СтраницыФормы = Форма.Элементы.ГруппаСтраницы; СтраницыНавигации = Форма.Элементы.Навигация; ИндексСтраницы = Форма.ИменаСтраниц.Найти(СтраницыФормы.ТекущаяСтраница.Имя); КоличествоСтраниц = Форма.ИменаСтраниц.Количество(); Если ИндексСтраницы = 0 Тогда СтраницыНавигации.ТекущаяСтраница = СтраницыНавигации.ПодчиненныеЭлементы.НавигацияНачало; Форма.Элементы.НачалоДалее.КнопкаПоУмолчанию = Истина; ИначеЕсли ИндексСтраницы = (КоличествоСтраниц - 1) Тогда СтраницыНавигации.ТекущаяСтраница = СтраницыНавигации.ПодчиненныеЭлементы.НавигацияОкончание; Форма.Элементы.ОкончаниеЗакрыть.КнопкаПоУмолчанию = Истина; ИначеЕсли СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы.СтраницаЗапросОшибка Тогда СтраницыНавигации.ТекущаяСтраница = СтраницыНавигации.ПодчиненныеЭлементы.НавигацияОшибка; Форма.Элементы.ОшибкаНазад.КнопкаПоУмолчанию = Истина; Иначе СтраницыНавигации.ТекущаяСтраница = СтраницыНавигации.ПодчиненныеЭлементы.НавигацияПродолжение; Если НЕ Форма.Элементы.ПродолжениеДалее.КнопкаПоУмолчанию Тогда Форма.Элементы.ПродолжениеДалее.КнопкаПоУмолчанию = Истина; КонецЕсли; Если СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы.СтраницаЗапросОжидание Тогда Форма.Элементы.ПродолжениеДалее.Доступность = Ложь; Иначе Форма.Элементы.ПродолжениеДалее.Доступность = Истина; КонецЕсли; КонецЕсли; КонецПроцедуры #КонецОбласти

Catalogs/ВетеринарноСопроводительныйДокументВЕТИС/Forms/ЗагрузкаИдентификаторовВСДИзВнешнихФайлов/Form/Module

 #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Возврат; КонецЕсли; ИнициализироватьТабличныйДокумент(); КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура Загрузить(Команда) Закрыть(Идентификаторы()); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаСервере Процедура ИнициализироватьТабличныйДокумент() Макет = Справочники.ВетеринарноСопроводительныйДокументВЕТИС.ПолучитьМакет("ЗагрузкаИдентификаторовВСДИзВнешнихФайлов"); ТабличныйДокумент.Очистить(); ОбластьТовар = Макет.ПолучитьОбласть("КодыВСД"); ТабличныйДокумент.Присоединить(ОбластьТовар); ТабличныйДокумент.ФиксацияСверху = 1; КонецПроцедуры &НаСервере Функция Идентификаторы() Экспорт Таблица = Новый ТаблицаЗначений; Таблица.Колонки.Добавить("Идентификатор", Метаданные.ОпределяемыеТипы.УникальныйИдентификаторВЕТИС.Тип); КоличествоСтрок = ТабличныйДокумент.ВысотаТаблицы; Для НомерСтроки = 2 По КоличествоСтрок Цикл Идентификатор = СокрЛП(ТабличныйДокумент.Область("R" + НомерСтроки + "C2").Текст); Если СтроковыеФункцииКлиентСервер.ЭтоУникальныйИдентификатор(Идентификатор) Тогда НоваяСтрока = Таблица.Добавить(); НоваяСтрока.Идентификатор = Идентификатор; КонецЕсли; КонецЦикла; Возврат Таблица.ВыгрузитьКолонку("Идентификатор"); КонецФункции #КонецОбласти

Catalogs/ВетеринарноСопроводительныйДокументВЕТИС/Forms/ЗапросВСД/Form/Module

 #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Возврат; КонецЕсли; ЗаполнитьИменаСтраниц(); ХозяйствующийСубъект = Параметры.ХозяйствующийСубъект; Предприятие = Параметры.Предприятие; Если ЗначениеЗаполнено(Параметры.Идентификатор) Тогда СтрокаТЧ = ИсходящиеЗапросы.Добавить(); СтрокаТЧ.НомерСтроки = ИсходящиеЗапросы.Количество(); СтрокаТЧ.Идентификатор = Параметры.Идентификатор; КонецЕсли; ИнтеграцияИСПереопределяемый.НастроитьПодключаемоеОборудование(ЭтотОбъект); СтраницыФормы = Элементы.ГруппаСтраницы; СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы[ИменаСтраниц[0]]; УстановитьТекущуюСтраницуНавигации(ЭтотОбъект); ЦветГиперссылки = ЦветаСтиля.ЦветГиперссылкиГИСМ; ЦветПроблема = ЦветаСтиля.ЦветТекстаПроблемаЕГАИС; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) ПоддерживаемыеТипыПодключаемогоОборудования = "СканерШтрихкода"; ОповещениеПриПодключении = Новый ОписаниеОповещения("ПодключитьОборудованиеЗавершение", ЭтотОбъект); МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы( ОповещениеПриПодключении, ЭтотОбъект, ПоддерживаемыеТипыПодключаемогоОборудования); КонецПроцедуры &НаКлиенте Процедура ПриЗакрытии() ОповещениеПриОтключении = Новый ОписаниеОповещения("ОтключитьОборудованиеЗавершение", ЭтотОбъект); МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(ОповещениеПриОтключении, ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура ВнешнееСобытие(Источник, Событие, Данные) Если Не ЭтотОбъект.ВводДоступен() Тогда Возврат; КонецЕсли; ОписаниеСобытия = Новый Структура; ОписаниеСобытия.Вставить("Источник", Источник); ОписаниеСобытия.Вставить("Событие" , Событие); ОписаниеСобытия.Вставить("Данные" , Данные); Результат = МенеджерОборудованияКлиент.ПолучитьСобытиеОтУстройства(ОписаниеСобытия); Если Результат <> Неопределено И Результат.Источник = "ПодключаемоеОборудование" И Результат.ИмяСобытия = "ScanData" И Найти(ЭтотОбъект.ПоддерживаемыеТипыПодключаемогоОборудования, "СканерШтрихкода") > 0 Тогда Если Результат.Параметр[1] = Неопределено Тогда Штрихкод = Результат.Параметр[0]; // Достаем штрихкод из основных данных Иначе Штрихкод = Результат.Параметр[1][1]; // Достаем штрихкод из дополнительных данных КонецЕсли; Если СтроковыеФункцииКлиентСервер.ЭтоУникальныйИдентификатор(Штрихкод) Тогда СтрокаТЧ = ИсходящиеЗапросы.Добавить(); СтрокаТЧ.НомерСтроки = ИсходящиеЗапросы.Количество(); СтрокаТЧ.Идентификатор = Штрихкод; Иначе Идентификатор = ИдентификаторИзШтрихкода(Штрихкод); Если Идентификатор <> Неопределено Тогда СтрокаТЧ = ИсходящиеЗапросы.Добавить(); СтрокаТЧ.НомерСтроки = ИсходящиеЗапросы.Количество(); СтрокаТЧ.Идентификатор = Идентификатор; Иначе ОбщегоНазначенияКлиентСервер.СообщитьПользователю( СтрШаблон( НСтр("ru = 'Из штрихкода %1 не удалось получить идентификатор ВСД'"), Штрихкод)); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура КомандаДалее(Команда) Если Не ПроверитьЗаполнение() Тогда Возврат; КонецЕсли; СтраницыФормы = Элементы.ГруппаСтраницы; ИндексСтраницы = ИменаСтраниц.Найти(СтраницыФормы.ТекущаяСтраница.Имя); Если ИменаСтраниц[ИндексСтраницы + 1] = "СтраницаЗапросОшибка" И ПустаяСтрока(ТекстОшибка) Тогда СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы[ИменаСтраниц[ИндексСтраницы + 2]]; Иначе СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы[ИменаСтраниц[ИндексСтраницы + 1]]; КонецЕсли; ГруппаСтраницыПриСменеСтраницы(СтраницыФормы, СтраницыФормы.ТекущаяСтраница); КонецПроцедуры &НаКлиенте Процедура КомандаНазад(Команда) СтраницыФормы = Элементы.ГруппаСтраницы; ИндексСтраницы = ИменаСтраниц.Найти(СтраницыФормы.ТекущаяСтраница.Имя); Если ИменаСтраниц[ИндексСтраницы - 1] = "СтраницаЗапросОшибка" И ПустаяСтрока(ТекстОшибка) Тогда СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы[ИменаСтраниц[ИндексСтраницы - 2]]; Иначе СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы[ИменаСтраниц[ИндексСтраницы - 1]]; КонецЕсли; ГруппаСтраницыПриСменеСтраницы(СтраницыФормы, СтраницыФормы.ТекущаяСтраница); КонецПроцедуры &НаКлиенте Процедура КомандаВНачало(Команда) СтраницыФормы = Элементы.ГруппаСтраницы; СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы[ИменаСтраниц[0]]; ГруппаСтраницыПриСменеСтраницы(СтраницыФормы, СтраницыФормы.ТекущаяСтраница); КонецПроцедуры &НаКлиенте Процедура ТекстОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Если СтрНачинаетсяС(НавигационнаяСсылкаФорматированнойСтроки, "ОткрытьИсходящееСообщение") Тогда ПоказатьЗначение(, ИсходящееСообщение); ИначеЕсли СтрНачинаетсяС(НавигационнаяСсылкаФорматированнойСтроки, "ОткрытьВходящееСообщение") Тогда ПоказатьЗначение(, ВходящееСообщение); ИначеЕсли СтрНачинаетсяС(НавигационнаяСсылкаФорматированнойСтроки, "ОткрытьРезультат") Тогда ЗагруженныеВСД = Новый Массив; Для Каждого СтрокаТЧ Из ВходящиеСообщения Цикл Если ЗначениеЗаполнено(СтрокаТЧ.ВСД) Тогда ЗагруженныеВСД.Добавить(СтрокаТЧ.ВСД); КонецЕсли; КонецЦикла; ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Ссылка", ЗагруженныеВСД); ОткрытьФорму( "Справочник.ВетеринарноСопроводительныйДокументВЕТИС.ФормаСписка", Новый Структура("Отбор", ПараметрыОтбора), ЭтотОбъект,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); ИначеЕсли СтрНачинаетсяС(НавигационнаяСсылкаФорматированнойСтроки, "ОткрытьИсходящиеСообщения") Тогда МассивСообщений = Новый Массив; Для Каждого СтрокаТЧ Из ИсходящиеСообщения Цикл Если ЗначениеЗаполнено(СтрокаТЧ.ИсходящееСообщение) Тогда МассивСообщений.Добавить(СтрокаТЧ.ИсходящееСообщение); КонецЕсли; КонецЦикла; ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Ссылка", МассивСообщений); ОткрытьФорму( "Справочник.ВЕТИСПрисоединенныеФайлы.ФормаСписка", Новый Структура("Отбор", ПараметрыОтбора), ЭтотОбъект,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); ИначеЕсли СтрНачинаетсяС(НавигационнаяСсылкаФорматированнойСтроки, "ОткрытьВходящиеСообщения") Тогда МассивСообщений = Новый Массив; Для Каждого СтрокаТЧ Из ВходящиеСообщения Цикл Если ЗначениеЗаполнено(СтрокаТЧ.ВходящееСообщение) Тогда МассивСообщений.Добавить(СтрокаТЧ.ВходящееСообщение); КонецЕсли; КонецЦикла; ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Ссылка", МассивСообщений); ОткрытьФорму( "Справочник.ВЕТИСПрисоединенныеФайлы.ФормаСписка", Новый Структура("Отбор", ПараметрыОтбора), ЭтотОбъект,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); Иначе ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку(НавигационнаяСсылкаФорматированнойСтроки); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ЗагрузитьИзВнешнегоФайла(Команда) ОткрытьФорму( "Справочник.ВетеринарноСопроводительныйДокументВЕТИС.Форма.ЗагрузкаИдентификаторовВСДИзВнешнихФайлов",, ЭтотОбъект,,,, Новый ОписаниеОповещения("ОбработатьРезультатЗагрузкиВСДИзВнешнегоФайла", ЭтотОбъект)); КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовФормы &НаКлиенте Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница) УстановитьТекущуюСтраницуНавигации(ЭтотОбъект); Если ТекущаяСтраница = Элемент.ПодчиненныеЭлементы.СтраницаЗапросОжидание Тогда ВыполнениеЗаявкиВЕТИСНачало(); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ИдентификаторыВСДПриИзменении(Элемент) ИнтеграцияВЕТИСКлиент.ПронумероватьТаблицу(ЭтотОбъект, "ИсходящиеЗапросы"); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции #Область ВыполнениеЗаявокВЕТИС_API &НаСервере Функция ВыполнениеЗаявкиВЕТИСНачалоНаСервере() ИсходящиеСообщения.Очистить(); ВходящиеСообщения.Очистить(); Идентификаторы = Новый Массив; Для Каждого СтрокаТЧ Из ИсходящиеЗапросы Цикл Идентификаторы.Добавить(СтрокаТЧ.Идентификатор); КонецЦикла; РезультатОбмена = ЗаявкиВЕТИСВызовСервера.ПодготовитьЗапросВетеринарноСопроводительногоДокументаПоUUID( ХозяйствующийСубъект, Предприятие, Идентификаторы, УникальныйИдентификатор); Возврат РезультатОбмена; КонецФункции &НаКлиенте Процедура ВыполнениеЗаявкиВЕТИСНачало() РезультатОбмена = ВыполнениеЗаявкиВЕТИСНачалоНаСервере(); ОбработатьРезультатОбменаСВЕТИС(РезультатОбмена); КонецПроцедуры &НаКлиенте Процедура ВыполнениеЗаявкиВЕТИСОкончание() ПоказатьУспешныйРезультатОбмена(); КонецПроцедуры &НаКлиенте Процедура ОбработатьРезультатОбменаСВЕТИС(РезультатОбмена) Если РезультатОбмена.Ожидать <> Неопределено Тогда Для Каждого СтрокаТЧ Из РезультатОбмена.Изменения Цикл ИсходящееСообщение = СтрокаТЧ.ИсходящееСообщение; НоваяСтрока = ИсходящиеСообщения.Добавить(); НоваяСтрока.ИсходящееСообщение = СтрокаТЧ.ИсходящееСообщение; КонецЦикла; СформироватьТекстОжидание(); КонецЕсли; ИнтеграцияВЕТИСКлиент.ОбработатьРезультатОбмена(РезультатОбмена, ЭтотОбъект,, ОповещениеПриЗавершенииОбмена(), Ложь); КонецПроцедуры &НаКлиенте Процедура ВыполнитьОбменОбработкаОжидания() ИнтеграцияВЕТИСКлиент.ПродолжитьВыполнениеОбмена(ЭтотОбъект,, ОповещениеПриЗавершенииОбмена(), Ложь); КонецПроцедуры &НаКлиенте Функция ОповещениеПриЗавершенииОбмена() ОписаниеОповещения = Новый ОписаниеОповещения("ПослеПолученияРезультатОбработкиЗаявки", ЭтотОбъект); Возврат ОписаниеОповещения; КонецФункции &НаКлиенте Процедура ПослеПолученияРезультатОбработкиЗаявки(Изменения, ДополнительныеПараметры) Экспорт КоличествоОшибок = 0; КоличествоОбъектов = 0; ТекстОшибки = ""; Для Каждого ЭлементДанных Из Изменения Цикл Если ЭлементДанных.Операция = ПредопределенноеЗначение("Перечисление.ВидыОперацийВЕТИС.ОтветНаЗапросВСД") Тогда ВходящееСообщение = ЭлементДанных.ВходящееСообщение; ВСД = ЭлементДанных.Объект; ТекстОшибки = ЭлементДанных.ТекстОшибки; НоваяСтрока = ВходящиеСообщения.Добавить(); НоваяСтрока.ВходящееСообщение = ЭлементДанных.ВходящееСообщение; НоваяСтрока.ВСД = ЭлементДанных.Объект; НоваяСтрока.ТекстОшибки = ЭлементДанных.ТекстОшибки; Если ЗначениеЗаполнено(ЭлементДанных.Объект) Тогда КоличествоОбъектов = КоличествоОбъектов + 1; КонецЕсли; Если ЗначениеЗаполнено(ЭлементДанных.ТекстОшибки) Тогда КоличествоОшибок = КоличествоОшибок + 1; КонецЕсли; КонецЕсли; КонецЦикла; Если КоличествоОшибок = 0 И КоличествоОбъектов = 0 Тогда Возврат; КонецЕсли; Если КоличествоОшибок > 0 И КоличествоОбъектов = 0 Тогда ПоказатьОшибкуОбмена(ТекстОшибки); ИначеЕсли КоличествоОбъектов > 0 Тогда ВыполнениеЗаявкиВЕТИСОкончание(); КонецЕсли; КонецПроцедуры #КонецОбласти #Область УправлениеИнтерфейсом &НаКлиенте Процедура СформироватьТекстОжидание() Строки = Новый Массив(); Если ИсходящиеСообщения.Количество() = 1 Тогда Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Запрос'"),, ЦветГиперссылки,, "ОткрытьИсходящееСообщение")); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'ВСД по идентификатору'"))); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'передан в ВЕТИС.'"))); Иначе Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Запросы'"),, ЦветГиперссылки,, "ОткрытьИсходящиеСообщения")); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'ВСД по идентификаторам'"))); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'переданы в ВЕТИС.'"))); КонецЕсли; Строки.Добавить(Символы.ПС); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Получение ответа от сервера может занять продолжительное время.'"))); ТекстОжидание = Новый ФорматированнаяСтрока(Строки); КонецПроцедуры &НаКлиенте Процедура ПоказатьОшибкуОбмена(ТекстОшибки) Строки = Новый Массив(); Если ИсходящиеСообщения.Количество() = 1 Тогда Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Запрос'"),, ЦветГиперссылки,, "ОткрытьИсходящееСообщение")); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'ВСД по идентификатору'"))); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'завершился с'"))); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'ошибкой'"),, ЦветГиперссылки,, "ОткрытьВходящееСообщение")); Строки.Добавить(":"); Строки.Добавить(Символы.ПС); Иначе Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Запросы'"),, ЦветГиперссылки,, "ОткрытьИсходящиеСообщения")); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'ВСД по идентификаторам'"))); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'завершились с'"))); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'ошибками'"),, ЦветГиперссылки,, "ОткрытьВходящиеСообщения")); Строки.Добавить(":"); Строки.Добавить(Символы.ПС); КонецЕсли; Строки.Добавить(Новый ФорматированнаяСтрока(ТекстОшибки,, ЦветПроблема)); ТекстОшибка = Новый ФорматированнаяСтрока(Строки); СтраницыФормы = Элементы.ГруппаСтраницы; СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы.СтраницаЗапросОшибка; ГруппаСтраницыПриСменеСтраницы(СтраницыФормы, СтраницыФормы.ТекущаяСтраница); КонецПроцедуры &НаКлиенте Процедура ПоказатьУспешныйРезультатОбмена() Строки = Новый Массив(); Строки.Добавить(НСтр("ru = 'На'")); Строки.Добавить(" "); Если ИсходящиеЗапросы.Количество() = 1 Тогда Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'запрос'"),, ЦветГиперссылки,, "ОткрытьИсходящееСообщение")); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'ВСД по идентификатору'"))); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'получен'"))); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'ответ'"),, ЦветГиперссылки,, "ОткрытьВходящееСообщение")); Строки.Добавить("."); Строки.Добавить(Символы.ПС); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Загружен документ'"))); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(Строка(ВСД),, ЦветГиперссылки,, ПолучитьНавигационнуюСсылку(ВСД))); Иначе КоличествоВСД = 0; Для Каждого СтрокаТЧ Из ВходящиеСообщения Цикл Если ЗначениеЗаполнено(СтрокаТЧ.ВСД) Тогда КоличествоВСД = КоличествоВСД + 1; КонецЕсли; КонецЦикла; Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'запросы'"),, ЦветГиперссылки,, "ОткрытьИсходящиеСообщения")); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'ВСД по идентификаторам'"))); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'получены'"))); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'ответы'"),, ЦветГиперссылки,, "ОткрытьВходящиеСообщения")); Строки.Добавить("."); Строки.Добавить(Символы.ПС); Строки.Добавить( Новый ФорматированнаяСтрока( СтрШаблон( НСтр("ru = 'Загружено документов: %1'"), КоличествоВСД),, ЦветГиперссылки,, "ОткрытьРезультат")); КонецЕсли; ТекстРезультат = Новый ФорматированнаяСтрока(Строки); СтраницыФормы = Элементы.ГруппаСтраницы; СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы.СтраницаЗапросРезультат; ГруппаСтраницыПриСменеСтраницы(СтраницыФормы, СтраницыФормы.ТекущаяСтраница); КонецПроцедуры &НаСервере Процедура ЗаполнитьИменаСтраниц() СтраницыФормы = Новый Массив(); СтраницыФормы.Добавить("СтраницаИсходныеДанные"); СтраницыФормы.Добавить("СтраницаЗапросОжидание"); СтраницыФормы.Добавить("СтраницаЗапросОшибка"); СтраницыФормы.Добавить("СтраницаЗапросРезультат"); ИменаСтраниц = Новый ФиксированныйМассив(СтраницыФормы); КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура УстановитьТекущуюСтраницуНавигации(Форма) СтраницыФормы = Форма.Элементы.ГруппаСтраницы; СтраницыНавигации = Форма.Элементы.Навигация; ИндексСтраницы = Форма.ИменаСтраниц.Найти(СтраницыФормы.ТекущаяСтраница.Имя); КоличествоСтраниц = Форма.ИменаСтраниц.Количество(); Если ИндексСтраницы = 0 Тогда СтраницыНавигации.ТекущаяСтраница = СтраницыНавигации.ПодчиненныеЭлементы.НавигацияНачало; Форма.Элементы.НачалоДалее.КнопкаПоУмолчанию = Истина; ИначеЕсли ИндексСтраницы = (КоличествоСтраниц - 1) Тогда СтраницыНавигации.ТекущаяСтраница = СтраницыНавигации.ПодчиненныеЭлементы.НавигацияОкончание; Форма.Элементы.ОкончаниеЗакрыть.КнопкаПоУмолчанию = Истина; ИначеЕсли СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы.СтраницаЗапросОшибка Тогда СтраницыНавигации.ТекущаяСтраница = СтраницыНавигации.ПодчиненныеЭлементы.НавигацияОшибка; Форма.Элементы.ОшибкаНазад.КнопкаПоУмолчанию = Истина; Иначе СтраницыНавигации.ТекущаяСтраница = СтраницыНавигации.ПодчиненныеЭлементы.НавигацияПродолжение; Если НЕ Форма.Элементы.ПродолжениеДалее.КнопкаПоУмолчанию Тогда Форма.Элементы.ПродолжениеДалее.КнопкаПоУмолчанию = Истина; КонецЕсли; КонецЕсли; Если СтраницыФормы.ТекущаяСтраница = СтраницыФормы.ПодчиненныеЭлементы.СтраницаЗапросОжидание Тогда СтраницыНавигации.Доступность = Ложь; Иначе СтраницыНавигации.Доступность = Истина; КонецЕсли; КонецПроцедуры #КонецОбласти #Область Оборудование &НаКлиенте Процедура ПодключитьОборудованиеЗавершение(РезультатВыполнения, Параметры) Экспорт Если НЕ РезультатВыполнения.Результат Тогда ТекстСообщения = НСтр( "ru = 'При подключении оборудования произошла ошибка:""%ОписаниеОшибки%"".'"); ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОписаниеОшибки%" , РезультатВыполнения.ОписаниеОшибки); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ОтключитьОборудованиеЗавершение(РезультатВыполнения, Параметры) Экспорт Если НЕ РезультатВыполнения.Результат Тогда ТекстСообщения = НСтр( "ru = 'При отключении оборудования произошла ошибка: ""%ОписаниеОшибки%"".'"); ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОписаниеОшибки%" , РезультатВыполнения.ОписаниеОшибки); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); КонецЕсли; КонецПроцедуры #КонецОбласти &НаКлиенте Процедура ОбработатьРезультатЗагрузкиВСДИзВнешнегоФайла(Результат, ДополнительныеПараметры) Экспорт Если ТипЗнч(Результат) <> Тип("Массив") Тогда Возврат; КонецЕсли; Для Каждого Идентификатор Из Результат Цикл СтрокаТЧ = ИсходящиеЗапросы.Добавить(); СтрокаТЧ.Идентификатор = Идентификатор; КонецЦикла; ИнтеграцияВЕТИСКлиент.ПронумероватьТаблицу(ЭтотОбъект, "ИсходящиеЗапросы"); КонецПроцедуры &НаСервере Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) Для Каждого СтрокаТЧ Из ИсходящиеЗапросы Цикл Если Не СтроковыеФункцииКлиентСервер.ЭтоУникальныйИдентификатор(СтрокаТЧ.Идентификатор) Тогда ТекстСообщения = СтрШаблон(НСтр("ru = 'Значение %1 не является идентификатором.'"), СтрокаТЧ.Идентификатор); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,, ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("ИсходящиеЗапросы", ИсходящиеЗапросы.Индекс(СтрокаТЧ) + 1, "Идентификатор"),, Отказ); КонецЕсли; КонецЦикла; КонецПроцедуры Функция ИдентификаторИзШтрихкода(Штрихкод) Идентификатор = Неопределено; СтруктураURI = ОбщегоНазначенияКлиентСервер.СтруктураURI(Штрихкод); ПараметрыURI = СтрРазделить( Сред(СтруктураURI.ПутьНаСервере, СтрНайти(СтруктураURI.ПутьНаСервере, "?")), "&"); Если ПараметрыURI.Количество() > 0 Тогда Для Каждого ПараметрURI Из ПараметрыURI Цикл ПараметрИЗначение = СтрРазделить(ПараметрURI, "="); Если ПараметрИЗначение.Количество() = 2 И ПараметрИЗначение[0] = "uuid" И СтроковыеФункцииКлиентСервер.ЭтоУникальныйИдентификатор(ПараметрИЗначение[1]) Тогда Идентификатор = ПараметрИЗначение[1]; Прервать; КонецЕсли; КонецЦикла; КонецЕсли; Возврат Идентификатор; КонецФункции #КонецОбласти

Catalogs/ВетеринарноСопроводительныйДокументВЕТИС/Forms/Иммунизация/Form/Module

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

Catalogs/ВетеринарноСопроводительныйДокументВЕТИС/Forms/ЛабораторныеИсследования/Form/Module

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

Catalogs/ВетеринарноСопроводительныйДокументВЕТИС/Forms/ОшибкаПолученияСписковВСД/Form/Module

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

Catalogs/ВетеринарноСопроводительныйДокументВЕТИС/Forms/ПодборОформленныхВСД/Form/Module

#Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Возврат; КонецЕсли; РеквизитыОтбора = ИнтеграцияВЕТИСКлиентСервер.РеквизитыПодбораВСДВоВходящуюТранспортнуюОперацию(); Отбор = Новый Структура; Для каждого ЭлементОбязательногоОтбора Из Параметры.Отбор Цикл ОбязательныйОтбор.Добавить(ЭлементОбязательногоОтбора.Значение, ЭлементОбязательногоОтбора.Ключ, Истина); Отбор.Вставить(ЭлементОбязательногоОтбора.Ключ, ЭлементОбязательногоОтбора.Значение); КонецЦикла; Если Параметры.Свойство("ОформлениеБумажногоВСД") Тогда Отбор.Вставить("ОформлениеБумажногоВСД", Параметры.ОформлениеБумажногоВСД); КонецЕсли; ПредставлениеОтбораПоСтроке(); ИсключенияВСД.ЗагрузитьЗначения(Параметры.ПодобранныеВДокументСтроки); Элементы.ДоступныеВСДПометка.Видимость = Параметры.МножественныйВыбор; Элементы.ДоступныеВСД.МножественныйВыбор = Параметры.МножественныйВыбор; Элементы.ДоступныеВСД.РежимВыделения = ?(Параметры.МножественныйВыбор, РежимВыделенияТаблицы.Множественный, РежимВыделенияТаблицы.Одиночный); ЗаполнитьТаблицуДоступныеВСД(); КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовФормы &НаКлиенте Процедура ДоступныеВСДВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) Если Не Элементы.ДоступныеВСДПометка.Видимость Тогда Закрыть(ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ДоступныеВСД.НайтиПоИдентификатору(ВыбраннаяСтрока).Ссылка)); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура Выбрать(Команда) ВыбранныеВСД = Новый Массив; Если Элементы.ДоступныеВСДПометка.Видимость Тогда ВыбранныеВСД = ПроверитьВозможностьВыбораИВернутьВыбранные(); ИначеЕсли Элементы.ДоступныеВСД.ТекущиеДанные = Неопределено Тогда Иначе ВыбранныеВСД.Добавить(Элементы.ДоступныеВСД.ТекущиеДанные.Ссылка); КонецЕсли; Если ВыбранныеВСД.Количество() Тогда Закрыть(ВыбранныеВСД); КонецЕсли; КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаСервере Процедура ПредставлениеОтбораПоСтроке() СтруктураОтбора = Отбор; МассивСтрокОтбора = Новый Массив; Если СтруктураОтбора.Свойство("ГрузоотправительХозяйствующийСубъект") И СтруктураОтбора.Свойство("ГрузоотправительПредприятие") Тогда МассивСтрокОтбора.Добавить(НСтр("ru = 'Грузоотправитель:'")); МассивСтрокОтбора.Добавить(" "); МассивСтрокОтбора.Добавить(ПредставлениеЗначения(СтруктураОтбора.ГрузоотправительХозяйствующийСубъект)); МассивСтрокОтбора.Добавить(" / "); МассивСтрокОтбора.Добавить(ПредставлениеЗначения(СтруктураОтбора.ГрузоотправительПредприятие)); ИначеЕсли СтруктураОтбора.Свойство("ГрузоотправительХозяйствующийСубъект") Тогда МассивСтрокОтбора.Добавить(НСтр("ru = 'Грузоотправитель (хозяйствующий субъект):'")); МассивСтрокОтбора.Добавить(" "); МассивСтрокОтбора.Добавить(ПредставлениеЗначения(СтруктураОтбора.ГрузоотправительХозяйствующийСубъект)); ИначеЕсли СтруктураОтбора.Свойство("ГрузоотправительПредприятие") Тогда МассивСтрокОтбора.Добавить(НСтр("ru = 'Грузоотправитель (предприятие):'")); МассивСтрокОтбора.Добавить(" "); МассивСтрокОтбора.Добавить(ПредставлениеЗначения(СтруктураОтбора.ГрузоотправительПредприятие)); КонецЕсли; Если МассивСтрокОтбора.Количество() Тогда ПредставлениеОтбораПоГрузоотправителю = Новый ФорматированнаяСтрока(МассивСтрокОтбора); Иначе Элементы.ПредставлениеОтбораПоГрузоотправителю.Видимость = Ложь; КонецЕсли; МассивСтрокОтбора.Очистить(); Если СтруктураОтбора.Свойство("ГрузополучательХозяйствующийСубъект") И СтруктураОтбора.Свойство("ГрузополучательПредприятие") Тогда МассивСтрокОтбора.Добавить(НСтр("ru = 'Грузополучатель:'")); МассивСтрокОтбора.Добавить(" "); МассивСтрокОтбора.Добавить(ПредставлениеЗначения(СтруктураОтбора.ГрузополучательХозяйствующийСубъект)); МассивСтрокОтбора.Добавить(" / "); МассивСтрокОтбора.Добавить(ПредставлениеЗначения(СтруктураОтбора.ГрузополучательПредприятие)); ИначеЕсли СтруктураОтбора.Свойство("ГрузополучательХозяйствующийСубъект") Тогда МассивСтрокОтбора.Добавить(НСтр("ru = 'Грузополучатель (хозяйствующий субъект):'")); МассивСтрокОтбора.Добавить(" "); МассивСтрокОтбора.Добавить(ПредставлениеЗначения(СтруктураОтбора.ГрузополучательХозяйствующийСубъект)); ИначеЕсли СтруктураОтбора.Свойство("ГрузополучательПредприятие") Тогда МассивСтрокОтбора.Добавить(НСтр("ru = 'Грузополучатель (предприятие):'")); МассивСтрокОтбора.Добавить(" "); МассивСтрокОтбора.Добавить(ПредставлениеЗначения(СтруктураОтбора.ГрузополучательПредприятие)); КонецЕсли; Если МассивСтрокОтбора.Количество() Тогда ПредставлениеОтбораПоГрузополучателю = Новый ФорматированнаяСтрока(МассивСтрокОтбора); Иначе Элементы.ПредставлениеОтбораПоГрузополучателю.Видимость = Ложь; КонецЕсли; МассивСтрокОтбора.Очистить(); Если СтруктураОтбора.Свойство("ПеревозчикХозяйствующийСубъект") И СтруктураОтбора.Свойство("СпособХранения") Тогда МассивСтрокОтбора.Добавить(НСтр("ru = 'Перевозчик:'")); МассивСтрокОтбора.Добавить(" "); МассивСтрокОтбора.Добавить(ПредставлениеЗначения(СтруктураОтбора.ПеревозчикХозяйствующийСубъект)); МассивСтрокОтбора.Добавить(" / "); МассивСтрокОтбора.Добавить(НСтр("ru = 'Способ хранения:'")); МассивСтрокОтбора.Добавить(" "); МассивСтрокОтбора.Добавить(ПредставлениеЗначения(СтруктураОтбора.СпособХранения, Ложь)); ИначеЕсли СтруктураОтбора.Свойство("ПеревозчикХозяйствующийСубъект") Тогда МассивСтрокОтбора.Добавить(НСтр("ru = 'Перевозчик:'")); МассивСтрокОтбора.Добавить(" "); МассивСтрокОтбора.Добавить(ПредставлениеЗначения(СтруктураОтбора.ПеревозчикХозяйствующийСубъект)); ИначеЕсли СтруктураОтбора.Свойство("СпособХранения") Тогда МассивСтрокОтбора.Добавить(НСтр("ru = 'Способ хранения:'")); МассивСтрокОтбора.Добавить(" "); МассивСтрокОтбора.Добавить(ПредставлениеЗначения(СтруктураОтбора.СпособХранения, Ложь)); КонецЕсли; Если МассивСтрокОтбора.Количество() Тогда ПредставлениеОтбораПоДругимРеквизитам = Новый ФорматированнаяСтрока(МассивСтрокОтбора); Иначе Элементы.ПредставлениеОтбораПоДругимРеквизитам.Видимость = Ложь; КонецЕсли; МассивСтрокОтбора.Очистить(); МассивСтрокОтбора = Новый Массив; ТТННеУказан = Ложь; Если СтруктураОтбора.Свойство("ТипТТН") Тогда Если ЗначениеЗаполнено(СтруктураОтбора.ТипТТН) Тогда МассивСтрокОтбора.Добавить(ПредставлениеЗначения(СтруктураОтбора.ТипТТН, Ложь) + ":"); Иначе ТТННеУказан = Истина; КонецЕсли; КонецЕсли; Если СтруктураОтбора.Свойство("СерияТТН") Тогда МассивСтрокОтбора.Добавить(НСтр("ru = 'серия'") + " " + СтруктураОтбора.СерияТТН); КонецЕсли; Если СтруктураОтбора.Свойство("НомерТТН") Тогда МассивСтрокОтбора.Добавить(НСтр("ru = '№'") + СтруктураОтбора.НомерТТН); КонецЕсли; Если СтруктураОтбора.Свойство("ДатаТТН") Тогда МассивСтрокОтбора.Добавить(НСтр("ru = 'от'") + " " + СтруктураОтбора.ДатаТТН); КонецЕсли; Если МассивСтрокОтбора.Количество() Тогда Если ТТННеУказан Тогда ПредставлениеОтбораПоТТН = Новый ФорматированнаяСтрока(НСтр("ru = 'ТТН не указан'")); Иначе ПредставлениеОтбораПоТТН = Новый ФорматированнаяСтрока(СтрСоединить(МассивСтрокОтбора, " ")); КонецЕсли; Иначе Элементы.ПредставлениеОтбораПоТТН.Видимость = Ложь; КонецЕсли; МассивСтрокОтбора.Очистить(); Если СтруктураОтбора.Свойство("ТипТранспорта") Тогда МассивСтрокОтбора = Новый Массив; Если СтруктураОтбора.Свойство("НомерТранспортногоСредства") Тогда МассивСтрокОтбора.Добавить("№ " + СтруктураОтбора.НомерТранспортногоСредства); Иначе МассивСтрокОтбора.Добавить(НСтр("ru = '№ <не заполнено>'")); КонецЕсли; ЭтоАвтомобиль = СтруктураОтбора.ТипТранспорта = ПредопределенноеЗначение("Перечисление.ТипыТранспортаВЕТИС.Автомобиль"); Если ЭтоАвтомобиль И СтруктураОтбора.Свойство("НомерАвтомобильногоПрицепа") Тогда МассивСтрокОтбора.Добавить(СтрШаблон(НСтр("ru = 'прицеп №%1'"), СтруктураОтбора.НомерАвтомобильногоПрицепа)); КонецЕсли; Если ЭтоАвтомобиль И СтруктураОтбора.Свойство("НомерАвтомобильногоКонтейнера") Тогда МассивСтрокОтбора.Добавить(СтрШаблон(НСтр("ru = 'контейнер №%1'"), СтруктураОтбора.НомерАвтомобильногоКонтейнера)); КонецЕсли; КонецЕсли; Если МассивСтрокОтбора.Количество() Тогда ПредставлениеОтбораПоТранспортномуСредству = СтрШаблон("%1 (%2)", СтруктураОтбора.ТипТранспорта, СтрСоединить(МассивСтрокОтбора, ", ")); Иначе Элементы.ПредставлениеОтбораПоТранспортномуСредству.Видимость = Ложь; КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция ПредставлениеЗначения(Значение, ПолучатьНавигационнуюСсылку = Истина) Если Не ЗначениеЗаполнено(Значение) Тогда Возврат НСтр("ru = '< пусто >'"); ИначеЕсли ПолучатьНавигационнуюСсылку Тогда Возврат Новый ФорматированнаяСтрока(Строка(Значение),,,, ПолучитьНавигационнуюСсылку(Значение)); Иначе Возврат Строка(Значение); КонецЕсли; КонецФункции &НаСервере Процедура ЗаполнитьТаблицуДоступныеВСД() Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", ИсключенияВСД.ВыгрузитьЗначения()); МассивТекстовЗапроса = Новый Массив; ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ВСД.Ссылка КАК Ссылка |ПОМЕСТИТЬ ДоступныеВСДБезТранспортныхСредств |ИЗ | Справочник.ВетеринарноСопроводительныйДокументВЕТИС КАК ВСД |ГДЕ | НЕ ВСД.Ссылка В (&Ссылка)"; ШаблонСтрокиОтбораЗапроса = Символы.ПС + Символы.Таб + "И ВСД.ИмяПоляПереопределяемый = &ИмяПоляПереопределяемый"; Для каждого ЭлементОбязательногоОтбора Из Отбор Цикл Если ЭтоПолеТранспорта(ЭлементОбязательногоОтбора.Ключ) Тогда Продолжить; ИначеЕсли ЭлементОбязательногоОтбора.Ключ = "ОформлениеБумажногоВСД" Тогда СтрокаОтбора = Символы.ПС + Символы.Таб + "И ВСД.Идентификатор %ВидСравнения """""; СтрокаОтбора = СтрЗаменить(СтрокаОтбора, "%ВидСравнения", ?(ЭлементОбязательногоОтбора.Значение, "=", "<>")); ТекстЗапроса = ТекстЗапроса + СтрокаОтбора; Продолжить; КонецЕсли; СтрокаОтбораЗапроса = СтрЗаменить(ШаблонСтрокиОтбораЗапроса, "ИмяПоляПереопределяемый", ЭлементОбязательногоОтбора.Ключ); ТекстЗапроса = ТекстЗапроса + СтрокаОтбораЗапроса; Запрос.УстановитьПараметр(ЭлементОбязательногоОтбора.Ключ, ЭлементОбязательногоОтбора.Значение); Элементы["ДоступныеВСД"+ЭлементОбязательногоОтбора.Ключ].Видимость = Ложь; КонецЦикла; МассивТекстовЗапроса.Добавить(ТекстЗапроса); ТекстЗапроса = "ВЫБРАТЬ | ВетеринарноСопроводительныйДокументВЕТИСМаршрут.Ссылка КАК Ссылка, | МАКСИМУМ(ВетеринарноСопроводительныйДокументВЕТИСМаршрут.НомерСтроки) КАК НомерСтроки |ПОМЕСТИТЬ МаксимальныеНомераСтрокВСДТранспортныхСредств |ИЗ | Справочник.ВетеринарноСопроводительныйДокументВЕТИС.Маршрут КАК ВетеринарноСопроводительныйДокументВЕТИСМаршрут |ГДЕ | (ВетеринарноСопроводительныйДокументВЕТИСМаршрут.НомерСтроки = 1 | ИЛИ ВетеринарноСопроводительныйДокументВЕТИСМаршрут.СПерегрузкой | И ВетеринарноСопроводительныйДокументВЕТИСМаршрут.НомерТранспортногоСредства <> """""""") | И ВетеринарноСопроводительныйДокументВЕТИСМаршрут.Ссылка В | (ВЫБРАТЬ | ДоступныеВСДБезТранспортныхСредств.Ссылка | ИЗ | ДоступныеВСДБезТранспортныхСредств КАК ДоступныеВСДБезТранспортныхСредств) | |СГРУППИРОВАТЬ ПО | ВетеринарноСопроводительныйДокументВЕТИСМаршрут.Ссылка | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ВетеринарноСопроводительныйДокументВЕТИСМаршрут.Ссылка, | 0 |ИЗ | Справочник.ВетеринарноСопроводительныйДокументВЕТИС КАК ВетеринарноСопроводительныйДокументВЕТИС | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВетеринарноСопроводительныйДокументВЕТИС.Маршрут КАК ВетеринарноСопроводительныйДокументВЕТИСМаршрут | ПО ВетеринарноСопроводительныйДокументВЕТИС.Ссылка = ВетеринарноСопроводительныйДокументВЕТИСМаршрут.Ссылка |ГДЕ | ВетеринарноСопроводительныйДокументВЕТИСМаршрут.Ссылка В | (ВЫБРАТЬ | ДоступныеВСДБезТранспортныхСредств.Ссылка | ИЗ | ДоступныеВСДБезТранспортныхСредств КАК ДоступныеВСДБезТранспортныхСредств) | И ВетеринарноСопроводительныйДокументВЕТИСМаршрут.Ссылка ЕСТЬ NULL"; МассивТекстовЗапроса.Добавить(ТекстЗапроса); ТекстЗапроса = "ВЫБРАТЬ | ВетеринарноСопроводительныйДокументВЕТИС.Ссылка КАК Ссылка, | ВетеринарноСопроводительныйДокументВЕТИС.Продукция КАК Продукция, | ВетеринарноСопроводительныйДокументВЕТИС.КоличествоВЕТИС КАК КоличествоВЕТИС, | ВетеринарноСопроводительныйДокументВЕТИС.ЕдиницаИзмеренияВЕТИС КАК ЕдиницаИзмеренияВЕТИС, | ВетеринарноСопроводительныйДокументВЕТИС.СрокГодностиСтрока КАК СрокГодностиСтрока, | ВетеринарноСопроводительныйДокументВЕТИС.СрокГодностиТочностьЗаполнения КАК СрокГодностиТочностьЗаполнения, | ВетеринарноСопроводительныйДокументВЕТИС.СрокГодностиНачалоПериода КАК СрокГодностиНачалоПериода, | ВетеринарноСопроводительныйДокументВЕТИС.СрокГодностиКонецПериода КАК СрокГодностиКонецПериода, | ВетеринарноСопроводительныйДокументВЕТИС.ДатаПроизводстваСтрока КАК ДатаПроизводстваСтрока, | ВетеринарноСопроводительныйДокументВЕТИС.ДатаПроизводстваТочностьЗаполнения КАК ДатаПроизводстваТочностьЗаполнения, | ВетеринарноСопроводительныйДокументВЕТИС.ДатаПроизводстваНачалоПериода КАК ДатаПроизводстваНачалоПериода, | ВетеринарноСопроводительныйДокументВЕТИС.ДатаПроизводстваКонецПериода КАК ДатаПроизводстваКонецПериода, | ВетеринарноСопроводительныйДокументВЕТИС.ГрузоотправительХозяйствующийСубъект КАК ГрузоотправительХозяйствующийСубъект, | ВетеринарноСопроводительныйДокументВЕТИС.ГрузоотправительПредприятие КАК ГрузоотправительПредприятие, | ВетеринарноСопроводительныйДокументВЕТИС.ГрузополучательХозяйствующийСубъект КАК ГрузополучательХозяйствующийСубъект, | ВетеринарноСопроводительныйДокументВЕТИС.ГрузополучательПредприятие КАК ГрузополучательПредприятие, | ВетеринарноСопроводительныйДокументВЕТИС.ПеревозчикХозяйствующийСубъект КАК ПеревозчикХозяйствующийСубъект, | ВетеринарноСопроводительныйДокументВЕТИС.СпособХранения КАК СпособХранения, | ВетеринарноСопроводительныйДокументВЕТИС.ТипТТН КАК ТипТТН, | ВетеринарноСопроводительныйДокументВЕТИС.СерияТТН КАК СерияТТН, | ВетеринарноСопроводительныйДокументВЕТИС.НомерТТН КАК НомерТТН, | ВетеринарноСопроводительныйДокументВЕТИС.ДатаТТН КАК ДатаТТН, | ЕСТЬNULL(ДанныеТранспорта.ТипТранспорта, ЗНАЧЕНИЕ(Перечисление.ТипыТранспортаВЕТИС.ПустаяСсылка)) КАК ТипТранспорта, | ЕСТЬNULL(ДанныеТранспорта.НомерТранспортногоСредства, """") КАК НомерТранспортногоСредства, | ЕСТЬNULL(ДанныеТранспорта.НомерАвтомобильногоПрицепа, """") КАК НомерАвтомобильногоПрицепа, | ЕСТЬNULL(ДанныеТранспорта.НомерАвтомобильногоКонтейнера, """") КАК НомерАвтомобильногоКонтейнера, | ВетеринарноСопроводительныйДокументВЕТИС.Маршрут.( | Предприятие КАК Предприятие, | Адрес КАК Адрес, | ТипТранспорта КАК ТипТранспорта | ) КАК Маршрут |ИЗ | МаксимальныеНомераСтрокВСДТранспортныхСредств КАК МаксимальныеНомераСтрокВСДТранспортныхСредств | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВетеринарноСопроводительныйДокументВЕТИС КАК ВетеринарноСопроводительныйДокументВЕТИС | ПО МаксимальныеНомераСтрокВСДТранспортныхСредств.Ссылка = ВетеринарноСопроводительныйДокументВЕТИС.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВетеринарноСопроводительныйДокументВЕТИС.Маршрут КАК ДанныеТранспорта | ПО МаксимальныеНомераСтрокВСДТранспортныхСредств.Ссылка = ДанныеТранспорта.Ссылка | И МаксимальныеНомераСтрокВСДТранспортныхСредств.НомерСтроки = ДанныеТранспорта.НомерСтроки |ГДЕ | ИСТИНА"; ШаблонСтрокиОтбораЗапроса = Символы.ПС + Символы.Таб + "И ДанныеТранспорта.ИмяПоляПереопределяемый = &ИмяПоляПереопределяемый"; Для каждого ЭлементОбязательногоОтбора Из Отбор Цикл Если ЭтоПолеТранспорта(ЭлементОбязательногоОтбора.Ключ) Тогда СтрокаОтбораЗапроса = СтрЗаменить(ШаблонСтрокиОтбораЗапроса, "ИмяПоляПереопределяемый", ЭлементОбязательногоОтбора.Ключ); ТекстЗапроса = ТекстЗапроса + СтрокаОтбораЗапроса; Запрос.УстановитьПараметр(ЭлементОбязательногоОтбора.Ключ, ЭлементОбязательногоОтбора.Значение); Элементы["ДоступныеВСД"+ЭлементОбязательногоОтбора.Ключ].Видимость = Ложь; КонецЕсли; КонецЦикла; МассивТекстовЗапроса.Добавить(ТекстЗапроса); МассивТекстовЗапроса.Добавить("УНИЧТОЖИТЬ ДоступныеВСДБезТранспортныхСредств"); МассивТекстовЗапроса.Добавить("УНИЧТОЖИТЬ МаксимальныеНомераСтрокВСДТранспортныхСредств"); Запрос.Текст = СтрСоединить(МассивТекстовЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов()); Выборка = Запрос.Выполнить().Выбрать(); ДоступныеВСД.Очистить(); Пока Выборка.Следующий() Цикл НоваяСтрокаВСД = ДоступныеВСД.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрокаВСД,Выборка); НоваяСтрокаВСД.СрокГодностиПредставление = ИнтеграцияВЕТИСКлиентСервер.ПредставлениеПериодаВЕТИС(Выборка.СрокГодностиТочностьЗаполнения,Выборка.СрокГодностиНачалоПериода,Выборка.СрокГодностиКонецПериода,Выборка.СрокГодностиСтрока); НоваяСтрокаВСД.ДатаПроизводстваПредставление = ИнтеграцияВЕТИСКлиентСервер.ПредставлениеПериодаВЕТИС(Выборка.ДатаПроизводстваТочностьЗаполнения,Выборка.ДатаПроизводстваНачалоПериода,Выборка.ДатаПроизводстваКонецПериода,Выборка.ДатаПроизводстваСтрока); КонецЦикла; КонецПроцедуры &НаСервере Функция ПроверитьВозможностьВыбораИВернутьВыбранные() ВыбранныеВСД = Новый Массив; РеквизитыОтбора = ИнтеграцияВЕТИСКлиентСервер.РеквизитыПодбораВСДВоВходящуюТранспортнуюОперацию(); СтрокаРеквизитов = ОбщегоНазначенияКлиентСервер.КлючиСтруктурыВСтроку(РеквизитыОтбора); ВыбранныеСтроки = ДоступныеВСД.НайтиСтроки(Новый Структура("Пометка",Истина)); Если ВыбранныеСтроки.Количество() Тогда ЗаполнитьЗначенияСвойств(РеквизитыОтбора, ВыбранныеСтроки.Получить(0)); Для Каждого СтрокаВСД Из ВыбранныеСтроки Цикл КоллекцииИдентичны = Истина; Для каждого РеквизитОтбора Из РеквизитыОтбора Цикл Если РеквизитОтбора.Значение <> СтрокаВСД[РеквизитОтбора.Ключ] Тогда КоллекцииИдентичны = Ложь; Прервать; КонецЕсли; КонецЦикла; Если КоллекцииИдентичны Тогда ВыбранныеВСД.Добавить(СтрокаВСД.Ссылка); Иначе ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Подобраны различные ВСД.'")); Возврат Новый Массив; КонецЕсли; КонецЦикла; КонецЕсли; Возврат ВыбранныеВСД; КонецФункции &НаКлиентеНаСервереБезКонтекста Функция ЭтоПолеТранспорта(ИмяПоля) Возврат СтрНайти("ТипТранспорта,НомерТранспортногоСредства,НомерАвтомобильногоПрицепа,НомерАвтомобильногоКонтейнера", ИмяПоля) <> 0; КонецФункции #КонецОбласти

Catalogs/ВетеринарноСопроводительныйДокументВЕТИС/Forms/ФормаСписка/Form/Module

#Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) УстановитьУсловноеОформление(); Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Возврат; КонецЕсли; СтруктураБыстрогоОтбора = Неопределено; Если Параметры.Свойство("СтруктураБыстрогоОтбора", СтруктураБыстрогоОтбора) Тогда ИнтеграцияВЕТИСКлиентСервер.ОтборПоЗначениюСпискаПриСозданииНаСервере(Список, "ОрганизацииВЕТИС", ОрганизацииВЕТИС, СтруктураБыстрогоОтбора, Ложь); ОрганизацияВЕТИС = СтруктураБыстрогоОтбора.ОрганизацияВЕТИС; ОрганизацииВЕТИСПредставление = СтруктураБыстрогоОтбора.ОрганизацииВЕТИСПредставление; ИнтеграцияВЕТИС.ОтборПоОрганизацииПриСозданииНаСервере(ЭтотОбъект,"Отбор"); ИнтеграцияВЕТИСКлиентСервер.УстановитьОтборОрганизацияПредприятиеВЕТИС(Список, ОрганизацииВЕТИС,"Грузоотправитель,Грузополучатель"); КонецЕсли; ЦветГиперссылки = ЦветаСтиля.ЦветГиперссылкиГИСМ; ВывестиИнформациюОВидеТипеПродукции(ЭтаФорма); // СтандартныеПодсистемы.ПодключаемыеКоманды ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); // Конец СтандартныеПодсистемы.ПодключаемыеКоманды КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовШапкиФормы #Область ОтборПоОрганизацииВЕТИС &НаКлиенте Процедура ОтборОрганизацииВЕТИСПриИзменении(Элемент) ИнтеграцияВЕТИСКлиентСервер.НастроитьОтборПоОрганизацииВЕТИС(ЭтаФорма, ОрганизацииВЕТИС,"Грузоотправитель,Грузополучатель","Отбор"); КонецПроцедуры &НаКлиенте Процедура ОтборОрганизацииВЕТИСНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ИнтеграцияВЕТИСКлиент.ОткрытьФормуВыбораОрганизацийВЕТИС( ЭтотОбъект, "Отбор", ИнтеграцияВЕТИСКлиент.ОтборОрганизацияВЕТИСПрефиксы(),,"Грузоотправитель,Грузополучатель"); КонецПроцедуры &НаКлиенте Процедура ОтборОрганизацииВЕТИСОчистка(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ИнтеграцияВЕТИСКлиент.ОбработатьВыборОрганизацийВЕТИС( ЭтотОбъект, Неопределено, Истина, "Отбор", ИнтеграцияВЕТИСКлиент.ОтборОрганизацияВЕТИСПрефиксы(),"Грузоотправитель,Грузополучатель"); КонецПроцедуры &НаКлиенте Процедура ОтборОрганизацииВЕТИСОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ИнтеграцияВЕТИСКлиентСервер.НастроитьОтборПоОрганизацииВЕТИС(ЭтаФорма, ВыбранноеЗначение,"Грузоотправитель,Грузополучатель","Отбор"); КонецПроцедуры &НаКлиенте Процедура ОтборОрганизацияВЕТИСПриИзменении(Элемент) ИнтеграцияВЕТИСКлиентСервер.НастроитьОтборПоОрганизацииВЕТИС(ЭтаФорма, ОрганизацииВЕТИС,"Грузоотправитель,Грузополучатель","Отбор"); КонецПроцедуры &НаКлиенте Процедура ОтборОрганизацияВЕТИСНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ИнтеграцияВЕТИСКлиент.ОткрытьФормуВыбораОрганизацийВЕТИС( ЭтотОбъект, "Отбор", ИнтеграцияВЕТИСКлиент.ОтборОрганизацияВЕТИСПрефиксы(),,"Грузоотправитель,Грузополучатель"); КонецПроцедуры &НаКлиенте Процедура ОтборОрганизацияВЕТИСОчистка(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ИнтеграцияВЕТИСКлиент.ОбработатьВыборОрганизацийВЕТИС( ЭтотОбъект, Неопределено, Истина, "Отбор", ИнтеграцияВЕТИСКлиент.ОтборОрганизацияВЕТИСПрефиксы(),"Грузоотправитель,Грузополучатель"); КонецПроцедуры &НаКлиенте Процедура ОтборОрганизацияВЕТИСОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ИнтеграцияВЕТИСКлиентСервер.НастроитьОтборПоОрганизацииВЕТИС(ЭтаФорма, ВыбранноеЗначение,"Грузоотправитель,Грузополучатель","Отбор"); КонецПроцедуры #КонецОбласти &НаКлиенте Процедура ОтборТипПриИзменении(Элемент) УстановитьОтборТип(); КонецПроцедуры &НаКлиенте Процедура ОтборСтатусПриИзменении(Элемент) УстановитьОтборСтатус(); КонецПроцедуры &НаКлиенте Процедура ОписаниеПродукцииОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Если НавигационнаяСсылкаФорматированнойСтроки = "ИзменитьВидПродукции" Тогда ОткрытьФормыВыбораВидаПродукции(); Возврат; ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ОчиститьИерархию" Тогда ОчиститьИерархию(); ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ОтборПоПродукции" Тогда ОчиститьВидПродукции(); ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ОтборПоТипуПродукции" Тогда ОчиститьВидПродукцииПродукцию(); КонецЕсли; ОбработатьИзменениеОтбораПопродукции(); КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовТаблицыФормыСписок &НаКлиенте Процедура СписокПриАктивизацииСтроки(Элемент) // СтандартныеПодсистемы.ПодключаемыеКоманды ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); // Конец СтандартныеПодсистемы.ПодключаемыеКоманды КонецПроцедуры &НаСервереБезКонтекста Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) ВидыПериодов = СтрРазделить("ДатаПроизводства,СрокГодности",","); Для каждого Строка Из Строки Цикл ДанныеСтроки = Строка.Значение.Данные; Для каждого ВидПериода Из ВидыПериодов Цикл Если ДанныеСтроки.Свойство(ВидПериода) Тогда ПредставлениеПериода = ИнтеграцияВЕТИСКлиентСервер.ПредставлениеПериодаВЕТИС( ДанныеСтроки[ВидПериода+"ТочностьЗаполнения"], ДанныеСтроки[ВидПериода+"НачалоПериода"], ДанныеСтроки[ВидПериода+"КонецПериода"], ДанныеСтроки[ВидПериода+"Строка"]); ДанныеСтроки[ВидПериода] = ПредставлениеПериода; КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаСервере Процедура УстановитьУсловноеОформление() УсловноеОформление.Элементы.Очистить(); Элемент = УсловноеОформление.Элементы.Добавить(); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ГрузополучательХозяйствующийСубъект.Имя); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ГрузополучательПредприятие.Имя); ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.Тип"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыВетеринарныхДокументовВЕТИС.Производственный; Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не используется>'")); Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПоясняющийТекст); //Элемент = УсловноеОформление.Элементы.Добавить(); //ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); //ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СрокГодности.Имя); // //ГруппаОтбор = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); //ГруппаОтбор.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; // //ОтборЭлемента = ГруппаОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.СрокГодностиКонецПериода"); //ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше; //ОтборЭлемента.ПравоеЗначение = ТекущаяДата(); // //ОтборЭлемента = ГруппаОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.СрокГодностиКонецПериода"); //ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено; // //Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаТребуетВниманияГИСМ); КонецПроцедуры &НаКлиенте Процедура УстановитьОтборТип() ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( ЭтаФорма.Список, "Тип", ЭтаФорма.Тип, ВидСравненияКомпоновкиДанных.Равно,, ЗначениеЗаполнено(ЭтаФорма.Тип)); КонецПроцедуры &НаКлиенте Процедура УстановитьОтборСтатус() ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( ЭтаФорма.Список, "Статус", ЭтаФорма.Статус, ВидСравненияКомпоновкиДанных.Равно,, ЗначениеЗаполнено(ЭтаФорма.Статус)); КонецПроцедуры #Область ОтборПоПродукции &НаКлиенте Процедура ОбработатьИзменениеОтбораПопродукции() ВывестиИнформациюОВидеТипеПродукции(ЭтаФорма); УстановитьОтборПродукция(); КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура ВывестиИнформациюОВидеТипеПродукции(Форма) ЦветГиперссылки = Форма.ЦветГиперссылки; Если ЗначениеЗаполнено(Форма.ТипПродукции) Тогда СтрокаСсылка = Новый ФорматированнаяСтрока( Строка(Форма.ТипПродукции), Новый Шрифт(,,,,Истина), ЦветГиперссылки,, "ОтборПоТипуПродукции"); ОписаниеПродукцииПодсказка = Строка(Форма.ТипПродукции); ОписаниеПродукции = Новый ФорматированнаяСтрока(СтрокаСсылка); Если ЗначениеЗаполнено(Форма.Продукция) Тогда СтрокаПродукция = Строка(Форма.Продукция); ДлиннаяСтрока = СтрДлина(СтрокаПродукция)>30; СтрокаСсылка = Новый ФорматированнаяСтрока( Лев(СтрокаПродукция,30), Новый Шрифт(,,,,Истина), ЦветГиперссылки,, "ОтборПоПродукции"); ОписаниеПродукции = Новый ФорматированнаяСтрока(ОписаниеПродукции, " > ", СтрокаСсылка, ?(ДлиннаяСтрока,"...","")); ОписаниеПродукцииПодсказка = ОписаниеПродукцииПодсказка + " > " + СтрокаПродукция; КонецЕсли; Если ЗначениеЗаполнено(Форма.ВидПродукции) Тогда СтрокаВидПродукции = Строка(Форма.ВидПродукции); ДлиннаяСтрока = СтрДлина(СтрокаВидПродукции)>30; СтрокаСсылка = Новый ФорматированнаяСтрока( Лев(СтрокаВидПродукции,30), Новый Шрифт(,,,,Истина), ЦветГиперссылки,, "ОтборПоВидуПродукции"); ОписаниеПродукции = Новый ФорматированнаяСтрока(ОписаниеПродукции, " > ", СтрокаСсылка, ?(ДлиннаяСтрока,"...",""), " "); ОписаниеПродукцииПодсказка = ОписаниеПродукцииПодсказка + " > " + СтрокаВидПродукции; КонецЕсли; СтрокаСсылка = Новый ФорматированнаяСтрока( НСтр("ru='изменить'"), Новый Шрифт(,,,,Истина), ЦветГиперссылки,, "ИзменитьВидПродукции"); ОписаниеПродукции = Новый ФорматированнаяСтрока(ОписаниеПродукции, " ", "(", СтрокаСсылка, " ", НСтр("ru='или'"), " "); СтрокаСсылка = Новый ФорматированнаяСтрока( НСтр("ru='очистить'"), Новый Шрифт(,,,,Истина), ЦветГиперссылки,, "ОчиститьИерархию"); Форма.ОписаниеПродукции = Новый ФорматированнаяСтрока(ОписаниеПродукции, СтрокаСсылка, ")"); Иначе Форма.ОписаниеПродукции = Новый ФорматированнаяСтрока( НСтр("ru='Выбрать группу продукции'"), Новый Шрифт(,,,,Истина), ЦветГиперссылки,, "ИзменитьВидПродукции"); КонецЕсли; Форма.Элементы.ОписаниеПродукции.Подсказка = ОписаниеПродукцииПодсказка; КонецПроцедуры &НаКлиенте Процедура ОткрытьФормыВыбораВидаПродукции() СтандартнаяОбработка = Ложь; ОткрытьФорму("Обработка.КлассификаторыВЕТИС.Форма.КлассификаторИерархииПродукции",,ЭтаФорма,,,, Новый ОписаниеОповещения("КлассификаторПродукцииПриЗавершенииВыбора",ЭтотОбъект)); КонецПроцедуры &НаКлиенте Процедура КлассификаторПродукцииПриЗавершенииВыбора(Результат, ДопПараметры) Экспорт Если Результат <> Неопределено Тогда ПолучитьИерархиюПродукции(Результат); КонецЕсли; УстановитьОтборПродукция(); КонецПроцедуры &НаСервере Функция ПолучитьИерархиюПродукции(ВыбраннаяПродукция) Результат = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВыбраннаяПродукция, "ТипПродукции, Продукция"); Если ЗначениеЗаполнено(Результат.Продукция) Тогда ВидПродукции = ВыбраннаяПродукция; Продукция = Результат.Продукция; ТипПродукции = Результат.ТипПродукции; ИначеЕсли ЗначениеЗаполнено(Результат.ТипПродукции) Тогда ВидПродукции = Неопределено; Продукция = ВыбраннаяПродукция; ТипПродукции = Результат.ТипПродукции; Иначе ВидПродукции = Неопределено; Продукция = Неопределено; ТипПродукции = ВыбраннаяПродукция; КонецЕсли; ВывестиИнформациюОВидеТипеПродукции(ЭтаФорма); КонецФункции &НаКлиенте Процедура ОчиститьИерархию() ВидПродукции = Неопределено; Продукция = Неопределено; ТипПродукции = Неопределено; ОтборыИзменились = Истина; КонецПроцедуры &НаКлиенте Процедура ОчиститьВидПродукции() ВидПродукции = Неопределено; ОтборыИзменились = Истина; КонецПроцедуры &НаКлиенте Процедура ОчиститьВидПродукцииПродукцию() ВидПродукции = Неопределено; Продукция = Неопределено; ОтборыИзменились = Истина; КонецПроцедуры &НаКлиенте Процедура УстановитьОтборПродукция() ПродукцияОтбор = Неопределено; Если ЗначениеЗаполнено(ВидПродукции) Тогда ПродукцияОтбор = ВидПродукции; ИначеЕсли ЗначениеЗаполнено(Продукция) Тогда ПродукцияОтбор = Продукция; ИначеЕсли ЗначениеЗаполнено(ТипПродукции) Тогда ПродукцияОтбор = ТипПродукции; КонецЕсли; ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( ЭтаФорма.Список, "Продукция", ПродукцияОтбор, ВидСравненияКомпоновкиДанных.ВИерархии,, ЗначениеЗаполнено(ПродукцияОтбор)); КонецПроцедуры #КонецОбласти #КонецОбласти #Область ОбработчикиКомандФормы // СтандартныеПодсистемы.ПодключаемыеКоманды &НаКлиенте Процедура Подключаемый_ВыполнитьКоманду(Команда) ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список); КонецПроцедуры &НаСервере Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.Список, Результат); КонецПроцедуры &НаКлиенте Процедура Подключаемый_ОбновитьКоманды() ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список); КонецПроцедуры // Конец СтандартныеПодсистемы.ПодключаемыеКоманды &НаКлиенте Процедура ЗапроситьВСДПоИдентификатору(Команда) ПараметрыОткрытия = Новый Структура; ОрганизацииВЕТИСДляОбмена = ИнтеграцияВЕТИСКлиент.ОрганизацииВЕТИСДляОбмена(ЭтотОбъект); Если ОрганизацииВЕТИСДляОбмена <> Неопределено И ОрганизацииВЕТИСДляОбмена.Количество() = 1 Тогда ОрганизацияВЕТИСДляОбмена = ОрганизацииВЕТИСДляОбмена[0]; ПараметрыОткрытия.Вставить("ХозяйствующийСубъект", ОрганизацияВЕТИСДляОбмена.Организация); Если ОрганизацияВЕТИСДляОбмена.Предприятия.Количество() = 1 Тогда ПараметрыОткрытия.Вставить("Предприятие", ОрганизацияВЕТИСДляОбмена.Предприятия[0]); КонецЕсли; КонецЕсли; ОткрытьФорму( "Справочник.ВетеринарноСопроводительныйДокументВЕТИС.Форма.ЗапросВСД", ПараметрыОткрытия, ЭтотОбъект); КонецПроцедуры #КонецОбласти

Catalogs/ВетеринарноСопроводительныйДокументВЕТИС/Forms/ФормаЭлемента/Form/Module

 #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Возврат; КонецЕсли; ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект); Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда ПриСозданииЧтенииНаСервере(); КонецЕсли; // СтандартныеПодсистемы.ПодключаемыеКоманды ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); // Конец СтандартныеПодсистемы.ПодключаемыеКоманды КонецПроцедуры &НаСервере Процедура ПриЧтенииНаСервере(ТекущийОбъект) Для Каждого СтрокаТЧТекущийОбъект Из ТекущийОбъект.Маршрут Цикл СтрокаТЧОбъект = Объект.Маршрут[ТекущийОбъект.Маршрут.Индекс(СтрокаТЧТекущийОбъект)]; СтрокаТЧОбъект.ДанныеАдресаСтруктура = СтрокаТЧТекущийОбъект.ДанныеАдреса.Получить(); КонецЦикла; ПриСозданииЧтенииНаСервере(); // СтандартныеПодсистемы.ПодключаемыеКоманды ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); // Конец СтандартныеПодсистемы.ПодключаемыеКоманды КонецПроцедуры &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) ТекущийОбъект.Маршрут.Очистить(); Для Каждого СтрокаТЧОбъект Из Объект.Маршрут Цикл СтрокаТЧТекущийОбъект = ТекущийОбъект.Маршрут.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаТЧТекущийОбъект, СтрокаТЧОбъект); СтрокаТЧТекущийОбъект.ДанныеАдреса = Новый ХранилищеЗначения(СтрокаТЧОбъект.ДанныеАдресаСтруктура); КонецЦикла; Если Не ЗначениеЗаполнено(Объект.Идентификатор) Тогда // Бумажный ВСД. Если ТекущийОбъект.ИсторияСтатусов.Количество() > 0 Тогда ТекущийОбъект.ИсторияСтатусов.Очистить(); КонецЕсли; СтрокаТабличнойЧасти = ТекущийОбъект.ИсторияСтатусов.Добавить(); СтрокаТабличнойЧасти.ФИО = ИсторияСтатусовФИО; СтрокаТабличнойЧасти.Должность = ИсторияСтатусовДолжность; СтрокаТабличнойЧасти.НаименованиеОрганизации = ИсторияСтатусовНаименованиеОрганизации; СтрокаТабличнойЧасти.ДатаИзменения = Объект.Дата; СтрокаТабличнойЧасти.Статус = Перечисления.СтатусыВетеринарныхДокументовВЕТИС.Оформлен; КонецЕсли; КонецПроцедуры &НаСервере Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) Для Каждого СтрокаТЧТекущийОбъект Из ТекущийОбъект.Маршрут Цикл СтрокаТЧОбъект = Объект.Маршрут[ТекущийОбъект.Маршрут.Индекс(СтрокаТЧТекущийОбъект)]; СтрокаТЧОбъект.ДанныеАдресаСтруктура = СтрокаТЧТекущийОбъект.ДанныеАдреса.Получить(); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) // СтандартныеПодсистемы.ПодключаемыеКоманды ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); // Конец СтандартныеПодсистемы.ПодключаемыеКоманды КонецПроцедуры &НаКлиенте Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) ИнтеграцияВЕТИСКлиент.ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка, Объект); КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ИмяСобытия = ИнтеграцияИСКлиентСервер.ИмяСобытияИзмененоСостояние(ИнтеграцияИСКлиентСервер.ПодсистемаВЕТИС()) И Параметр.Ссылка = Объект.Ссылка Тогда Если Параметр.Свойство("ОбъектИзменен") И Параметр.ОбъектИзменен Тогда Прочитать(); КонецЕсли; КонецЕсли; Если ИмяСобытия = ИнтеграцияИСКлиентСервер.ИмяСобытияВыполненОбмен(ИнтеграцияИСКлиентСервер.ПодсистемаВЕТИС()) И (Параметр = Неопределено Или (ТипЗнч(Параметр) = Тип("Структура") И Параметр.ОбновлятьСтатусВЕТИСВФормахДокументов)) Тогда Прочитать(); КонецЕсли; СобытияФормВЕТИСКлиентПереопределяемый.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник); КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовШапкиФормы &НаКлиенте Процедура ДатаПроизводстваОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ОбработатьВводПериода(НавигационнаяСсылкаФорматированнойСтроки); КонецПроцедуры &НаКлиенте Процедура СрокГодностиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ОбработатьВводПериода(НавигационнаяСсылкаФорматированнойСтроки); КонецПроцедуры &НаКлиенте Процедура ПродукцияПриИзменении(Элемент) СписокЕдиницИзмерения = ДоступныеЕдиницыИзменения(Объект.Продукция); Если СписокЕдиницИзмерения.Найти(Объект.ЕдиницаИзмеренияВЕТИС) = Неопределено Тогда Объект.ЕдиницаИзмеренияВЕТИС = Неопределено; Если СписокЕдиницИзмерения.Количество() Тогда Объект.ЕдиницаИзмеренияВЕТИС = СписокЕдиницИзмерения[0]; КонецЕсли; КонецЕсли; Элементы.ЕдиницаИзмеренияВЕТИС.СписокВыбора.ЗагрузитьЗначения(СписокЕдиницИзмерения); НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, Элемент.Имя); КонецПроцедуры &НаКлиенте Процедура ПродукцияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Если ВыбранноеЗначение.Пустая() Тогда ОписаниеОповещения = Новый ОписаниеОповещения( "ОткрытьФормуПроизвольнаяПродукцияЗавершение", ЭтотОбъект); ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Ключ", Объект.Продукция); ОткрытьФорму("Справочник.ПродукцияВЕТИС.Форма.ПроизвольнаяПродукция", ПараметрыФормы, ЭтотОбъект,,,, ОписаниеОповещения); СтандартнаяОбработка = Ложь; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура СкоропортящаясяПродукцияПриИзменении(Элемент) Если Объект.СкоропортящаясяПродукция Тогда ТочностьЗаполнение = ПредопределенноеЗначение("Перечисление.ТочностьЗаполненияПериодаВЕТИС.ДДММГГГГЧЧ"); Иначе ТочностьЗаполнение = ПредопределенноеЗначение("Перечисление.ТочностьЗаполненияПериодаВЕТИС.ДДММГГГГ"); КонецЕсли; Объект.ДатаПроизводстваТочностьЗаполнения = ТочностьЗаполнение; Объект.СрокГодностиТочностьЗаполнения = ТочностьЗаполнение; КонецПроцедуры &НаКлиенте Процедура НадписьСвязанныеДокументыНажатие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ПараметрыФормы = ИнтеграцияВЕТИСКлиентСервер.ПараметрыФормыРедактированияСвязанныхДокументов(ТипЗнч(Объект.Ссылка)); ПараметрыФормы.ТаблицаСвязанныхДокументов = Объект.СвязанныеДокументы; ПараметрыФормы.ТолькоПросмотр = ТолькоПросмотр; ДополнительныеПараметры = Новый Структура("ИмяТЧ", "СвязанныеДокументы"); ОписаниеОповещения = Новый ОписаниеОповещения( "ОткрытьФормуРедактированияТабличнойЧастиЗавершение", ЭтотОбъект, ДополнительныеПараметры); ОткрытьФорму( "ОбщаяФорма.СвязанныеДокументыВЕТИС", ПараметрыФормы, ЭтотОбъект,,,, ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры &НаКлиенте Процедура НадписьПроизводителиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ОткрытьФормуРедактированияТабличнойЧасти( НавигационнаяСсылкаФорматированнойСтроки, "ОбщаяФорма.ПроизводителиВЕТИС"); КонецПроцедуры &НаКлиенте Процедура НадписьПроизводственныеПартииНажатие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ОткрытьФормуРедактированияТабличнойЧасти( "ПроизводственныеПартии", "ОбщаяФорма.ПроизводственныеПартииВЕТИС"); КонецПроцедуры &НаКлиенте Процедура НадписьУпаковкиШтрихкодыНажатие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ПараметрыФормы = Новый Структура; Параметрыформы.Вставить("Упаковки", Объект.УпаковкиВЕТИС); Параметрыформы.Вставить("ШтрихкодыУпаковок", Объект.ШтрихкодыУпаковок); ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр); ОписаниеОповещения = Новый ОписаниеОповещения("НадписьУпаковкиШтрихкодыНажатиеЗавершение",ЭтотОбъект); ОткрытьФорму("ОбщаяФорма.УпаковкиШтрихкодыВЕТИС", ПараметрыФормы, ЭтотОбъект,,,, ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры &НаКлиенте Процедура НадписьТранспортноеСредствоОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; РежимРаботыФормы = Новый Структура("ВидПунктаМаршрута"); РежимРаботыФормы.ВидПунктаМаршрута = Новый Структура("Видимость", Ложь); ПараметрыФормы = ИнтеграцияВЕТИСКлиентСервер.СтруктураДанныхПунктаМаршрута(); Если Объект.Маршрут.Количество() Тогда ЗаполнитьЗначенияСвойств(ПараметрыФормы, Объект.Маршрут[0], "ТипТранспорта,НомерТранспортногоСредства,НомерАвтомобильногоПрицепа,НомерАвтомобильногоКонтейнера"); КонецЕсли; ПараметрыФормы.Вставить("РежимРаботыФормы", РежимРаботыФормы); ПараметрыФормы.Вставить("ТолькоПросмотр" , ТолькоПросмотр); ОписаниеОповещения = Новый ОписаниеОповещения( "НадписьТранспортноеСредствоОбработкаНавигационнойСсылкиЗавершение", ЭтотОбъект); ОткрытьФорму("ОбщаяФорма.ПунктМаршрутаВЕТИС", ПараметрыФормы, ЭтаФорма,,,,ОписаниеОповещения); КонецПроцедуры &НаКлиенте Процедура НадписьПунктыМаршрутаНажатие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ОткрытьФормуРедактированияПунктовМаршрута(); КонецПроцедуры &НаКлиенте Процедура НадписьИсследованияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ОткрытьФормуРедактированияТабличнойЧасти( НавигационнаяСсылкаФорматированнойСтроки, "Справочник.ВетеринарноСопроводительныйДокументВЕТИС.Форма."+НавигационнаяСсылкаФорматированнойСтроки); КонецПроцедуры &НаКлиенте Процедура ПериодНахожденияЖивотныхНаТерриторииТСПриИзменении(Элемент) НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, "ПериодНахожденияТС"); КонецПроцедуры &НаКлиенте Процедура ГрузоотправительХозяйствующийСубъектПриИзменении(Элемент) ПриИзмененииГрузоотправителя(); НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, "ГрузоотправительХозяйствующийСубъект,ГрузоотправительПредприятие,Маршрут"); КонецПроцедуры &НаКлиенте Процедура ГрузоотправительПредприятиеПриИзменении(Элемент) ПриИзмененииГрузоотправителя(); НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, "ГрузоотправительПредприятие,Маршрут"); КонецПроцедуры &НаКлиенте Процедура ГрузополучательХозяйствующийСубъектПриИзменении(Элемент) НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, "ГрузополучательХозяйствующийСубъект,Маршрут"); КонецПроцедуры &НаКлиенте Процедура ГрузополучательПредприятиеПриИзменении(Элемент) НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, "ГрузополучательПредприятие,Маршрут"); КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура Аннулировать(Команда) ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("ВетеринарноСопроводительныйДокумент", Объект.Ссылка); ПараметрыФормы.Вставить("ХозяйствующийСубъект", Объект.ГрузоотправительХозяйствующийСубъект); ПараметрыФормы.Вставить("Идентификатор", Объект.Идентификатор); ОткрытьФорму("Справочник.ВетеринарноСопроводительныйДокументВЕТИС.Форма.АннулироватьДокумент", ПараметрыФормы, ЭтотОбъект,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры &НаКлиенте Процедура ОткрытьЧерезБраузер(Команда) Если ЗначениеЗаполнено(Объект.Идентификатор)Тогда ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку(ИнтеграцияВЕТИСКлиентСервер.ПутьКСерверуСИнформациейПоВСД()+Объект.Идентификатор); Иначе ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Идектификатор документа не заполнен!'"),,,"Объект.Идентификатор"); КонецЕсли; КонецПроцедуры // СтандартныеПодсистемы.ПодключаемыеКоманды &НаКлиенте Процедура Подключаемый_ВыполнитьКоманду(Команда) ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект); КонецПроцедуры &НаСервере Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат); КонецПроцедуры &НаКлиенте Процедура Подключаемый_ОбновитьКоманды() ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); КонецПроцедуры // Конец СтандартныеПодсистемы.ПодключаемыеКоманды &НаКлиенте Процедура ЗапроситьВСДПоИдентификатору(Команда) ПараметрыОткрытия = Новый Структура; ПараметрыОткрытия.Вставить("ХозяйствующийСубъект", Объект.ГрузополучательХозяйствующийСубъект); ПараметрыОткрытия.Вставить("Предприятие", Объект.ГрузополучательПредприятие); ПараметрыОткрытия.Вставить("Идентификатор", Объект.Идентификатор); ОткрытьФорму( "Справочник.ВетеринарноСопроводительныйДокументВЕТИС.Форма.ЗапросВСД", ПараметрыОткрытия, ЭтотОбъект); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаКлиенте Процедура ОбработатьВводПериода(ВидПериода) ДополнительныеПараметры = Новый Структура; ДополнительныеПараметры.Вставить("ВидПериода", ВидПериода); ОбработчикОповещения = Новый ОписаниеОповещения("ОбработатьВводПериодаЗавершение", ЭтотОбъект, ДополнительныеПараметры); Если ВидПериода = "СрокГодности" Тогда ИнтеграцияВЕТИСКлиент.ОткрытьФормуРедактированияСрокаГодности(ЭтотОбъект, Объект, ОбработчикОповещения, ТолькоПросмотр); Иначе ИнтеграцияВЕТИСКлиент.ОткрытьФормуРедактированияДатыПроизводства(ЭтотОбъект, Объект, ОбработчикОповещения, ТолькоПросмотр); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ОбработатьВводПериодаЗавершение(Результат, ДополнительныеПараметры) Экспорт Если ТипЗнч(Результат) = Тип("Структура") Тогда НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, "Период"); Модифицированность = Истина; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ОткрытьФормуПроизвольнаяПродукцияЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт Если РезультатЗакрытия = Неопределено Тогда Возврат; КонецЕсли; Объект.Продукция = РезультатЗакрытия; НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, "Продукция"); Модифицированность = Истина; КонецПроцедуры &НаКлиенте Процедура НадписьУпаковкиШтрихкодыНажатиеЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт Если РезультатЗакрытия = Неопределено Тогда Возврат; КонецЕсли; Объект.УпаковкиВЕТИС.Очистить(); Объект.ШтрихкодыУпаковок.Очистить(); Для каждого Строка Из РезультатЗакрытия.Упаковки Цикл ЗаполнитьЗначенияСвойств(Объект.УпаковкиВЕТИС.Добавить(), Строка); КонецЦикла; Для каждого Строка Из РезультатЗакрытия.ШтрихкодыУпаковок Цикл ЗаполнитьЗначенияСвойств(Объект.ШтрихкодыУпаковок.Добавить(), Строка); КонецЦикла; НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, "Упаковки"); Модифицированность = Истина; КонецПроцедуры &НаКлиенте Процедура НадписьТранспортноеСредствоОбработкаНавигационнойСсылкиЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт Если РезультатЗакрытия = Неопределено Тогда Возврат; КонецЕсли; Если Объект.Маршрут.Количество() = 0 Тогда СтрокаТабЧасти = Объект.Маршрут.Добавить(); Иначе СтрокаТабЧасти = Объект.Маршрут[0]; КонецЕсли; ЗаполнитьЗначенияСвойств(СтрокаТабЧасти, РезультатЗакрытия, "ТипТранспорта,НомерТранспортногоСредства,НомерАвтомобильногоПрицепа,НомерАвтомобильногоКонтейнера"); НастроитьЗависимыеЭлементыФормы(ЭтаФорма, "ТранспортноеСредство"); Модифицированность = Истина; КонецПроцедуры &НаСервере Функция АдресВоВременномХранилищеТабличнойЧастиПунктыМаршрута() ДокументОбъект = ДанныеФормыВЗначение(Объект, Тип("СправочникОбъект.ВетеринарноСопроводительныйДокументВЕТИС")); Маршрут = ДокументОбъект.Маршрут.Выгрузить(); Маршрут.Очистить(); Для Каждого СтрокаТЧОбъект Из Объект.Маршрут Цикл СтрокаТЧ = Маршрут.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаТЧ, СтрокаТЧОбъект); СтрокаТЧ.ДанныеАдреса = Новый ХранилищеЗначения(СтрокаТЧОбъект.ДанныеАдресаСтруктура); КонецЦикла; АдресВоВременномХранилище = ПоместитьВоВременноеХранилище( Маршрут, УникальныйИдентификатор); Возврат АдресВоВременномХранилище; КонецФункции &НаСервере Процедура ЗагрузитьПунктыМаршрута(АдресВоВременномХранилище) Данные = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище); Объект.Маршрут.Очистить(); Для Каждого СтрокаТЧ Из Данные Цикл НоваяСтрока = Объект.Маршрут.Добавить(); НоваяСтрока.Идентификатор = СтрокаТЧ.Идентификатор; НоваяСтрока.Предприятие = СтрокаТЧ.Предприятие; НоваяСтрока.Адрес = СтрокаТЧ.Адрес; НоваяСтрока.АдресПредставление = СтрокаТЧ.АдресПредставление; НоваяСтрока.ДанныеАдресаСтруктура = СтрокаТЧ.ДанныеАдреса; НоваяСтрока.СПерегрузкой = СтрокаТЧ.СПерегрузкой; НоваяСтрока.ТипТранспорта = СтрокаТЧ.ТипТранспорта; НоваяСтрока.НомерТранспортногоСредства = СтрокаТЧ.НомерТранспортногоСредства; НоваяСтрока.НомерАвтомобильногоПрицепа = СтрокаТЧ.НомерАвтомобильногоПрицепа; НоваяСтрока.НомерАвтомобильногоКонтейнера = СтрокаТЧ.НомерАвтомобильногоКонтейнера; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ПриИзмененииГрузоотправителя() Если Объект.Маршрут.Количество() = 0 Тогда СтрокаОтправитель = Объект.Маршрут.Добавить(); СтрокаОтправитель.ТипТранспорта = ПредопределенноеЗначение("Перечисление.ТипыТранспортаВЕТИС.Автомобиль"); Иначе СтрокаОтправитель = Объект.Маршрут[0]; КонецЕсли; СтрокаОтправитель.СПерегрузкой = Истина; СтрокаОтправитель.Предприятие = Объект.ГрузоотправительПредприятие; КонецПроцедуры &НаКлиенте Процедура ОткрытьФормуРедактированияПунктовМаршрута() ПараметрыОткрытияФормы = Новый Структура; ПараметрыОткрытияФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр); ПараметрыОткрытияФормы.Вставить("АдресВоВременномХранилище", АдресВоВременномХранилищеТабличнойЧастиПунктыМаршрута()); ПараметрыОткрытияФормы.Вставить("БлокироватьПервуюСтроку", Истина); ПараметрыОткрытияФормы.Вставить("ХозяйствующийСубъект", Объект.ГрузоотправительХозяйствующийСубъект); ОткрытьФорму( "ОбщаяФорма.ПунктыМаршрутаВЕТИС", ПараметрыОткрытияФормы, ЭтотОбъект,,,, Новый ОписаниеОповещения("ОбработатьРезультатРедактированияПунктовМаршрута", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры &НаКлиенте Процедура ОбработатьРезультатРедактированияПунктовМаршрута(АдресВоВременномХранилище, ДополнительныеПараметры) Экспорт Если ТипЗнч(АдресВоВременномХранилище) <> Тип("Строка") Тогда Возврат; КонецЕсли; ЗагрузитьПунктыМаршрута(АдресВоВременномХранилище); НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, "ТранспортноеСредство,Маршрут"); Модифицированность = Истина; КонецПроцедуры &НаКлиенте Процедура ОткрытьФормуРедактированияТабличнойЧасти(ИмяТЧ, ИмяФормы, ДополнительныеПараметрыФормы = Неопределено) ПараметрыФормы = Новый Структура(ИмяТЧ, Объект[ИмяТЧ]); ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр); Если ДополнительныеПараметрыФормы <> Неопределено Тогда Для каждого КлючИЗначение Из ДополнительныеПараметрыФормы Цикл ПараметрыФормы.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); КонецЦикла; КонецЕсли; ДополнительныеПараметры = Новый Структура("ИмяТЧ", ИмяТЧ); ОписаниеОповещения = Новый ОписаниеОповещения( "ОткрытьФормуРедактированияТабличнойЧастиЗавершение", ЭтотОбъект, ДополнительныеПараметры); ОткрытьФорму( ИмяФормы, ПараметрыФормы, ЭтотОбъект,,,, ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры &НаКлиенте Процедура ОткрытьФормуРедактированияТабличнойЧастиЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт Если РезультатЗакрытия <> Неопределено Тогда ИмяТЧ = Неопределено; Если ДополнительныеПараметры.Свойство("ИмяТЧ", ИмяТЧ) Тогда Объект[ИмяТЧ].Очистить(); Для каждого Строка Из РезультатЗакрытия Цикл ЗаполнитьЗначенияСвойств(Объект[ИмяТЧ].Добавить(), Строка); КонецЦикла; НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, ИмяТЧ); Модифицированность = Истина; КонецЕсли; КонецЕсли; КонецПроцедуры &НаСервере Процедура ПриСозданииЧтенииНаСервере() ЗаполнитьСлужебныеРеквизиты(); НастроитьЭлементыФормы(); КонецПроцедуры &НаСервере Процедура ЗаполнитьСлужебныеРеквизиты() Электронный = ЗначениеЗаполнено(Объект.Идентификатор); Если Электронный Тогда Представление = Строка(Объект.Тип) + " " + НСтр("ru='электронный ВСД (%1), идентификатор:'"); Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( Представление, НРег(Объект.Статус)); Иначе Представление = НСтр("ru='Бумажный ВСД, серия:'"); КонецЕсли; Если Объект.ИсторияСтатусов.Количество() Тогда СтрокаТабличнойЧасти = Объект.ИсторияСтатусов[Объект.ИсторияСтатусов.Количество()-1]; ИсторияСтатусовФИО = СтрокаТабличнойЧасти.ФИО; ИсторияСтатусовДолжность = СтрокаТабличнойЧасти.Должность; ИсторияСтатусовНаименованиеОрганизации = СтрокаТабличнойЧасти.НаименованиеОрганизации; КонецЕсли; ЦветГиперссылкиОбычный = ЦветаСтиля.ЦветГиперссылкиГИСМ; ЦветГиперссылкиОсобыйТекст = ЦветаСтиля.ЦветОсобогоТекста; КонецПроцедуры &НаСервере Процедура НастроитьЭлементыФормы() Если Электронный Тогда Элементы.ПредставлениеЭлектронный.Заголовок = Представление; Иначе Элементы.ПредставлениеБумажный.Заголовок = Представление; КонецЕсли; Элементы.ГруппаЭлектронныйБумажный.ТекущаяСтраница = ?(Электронный, Элементы.СтраницаЭлектронный, Элементы.СтраницаБумажный); НастроитьЗависимыеЭлементыФормы(ЭтотОбъект); Если Электронный Тогда ТолькоПросмотр = НЕ ОбщегоНазначенияКлиентСервер.РежимОтладки(); Элементы.ИсторияСтатусовФИО.АвтоОтметкаНезаполненного = Ложь; Элементы.ИсторияСтатусовДолжность.АвтоОтметкаНезаполненного = Ложь; Элементы.ИсторияСтатусовНаименованиеОрганизации.АвтоОтметкаНезаполненного = Ложь; КонецЕсли; Если Объект.Тип = Перечисления.ТипыВетеринарныхДокументовВЕТИС.Производственный Тогда Элементы.НадписьСвязанныеДокументы.Видимость = Ложь; Элементы.ГруппаМаршрут.Видимость = Ложь; Элементы.БлагополучиеМестности.Видимость = Ложь; Элементы.Цель.Видимость = Ложь; КонецЕсли; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура НастроитьЗависимыеЭлементыФормы(Форма, СписокРеквизитов = "") Элементы = Форма.Элементы; Объект = Форма.Объект; Инициализация = ПустаяСтрока(СписокРеквизитов); СтруктураРеквизитов = Новый Структура(СписокРеквизитов); Если СтруктураРеквизитов.Свойство("Период") ИЛИ Инициализация Тогда Для каждого ВидПериода Из СтрРазделить("ДатаПроизводства,СрокГодности",",") Цикл ПредставлениеПериода = ИнтеграцияВЕТИСКлиентСервер.ПредставлениеПериодаВЕТИС( Объект[ВидПериода+"ТочностьЗаполнения"], Объект[ВидПериода+"НачалоПериода"], Объект[ВидПериода+"КонецПериода"], Объект[ВидПериода+"Строка"]); Если ПустаяСтрока(ПредставлениеПериода) Тогда Форма["Надпись"+ВидПериода] = Новый ФорматированнаяСтрока(НСтр("ru = 'указать'"),,Форма.ЦветГиперссылкиОсобыйТекст,,ВидПериода); Иначе Форма["Надпись"+ВидПериода] = Новый ФорматированнаяСтрока(ПредставлениеПериода,,Форма.ЦветГиперссылкиОбычный,,ВидПериода); КонецЕсли; КонецЦикла; КонецЕсли; Если СтруктураРеквизитов.Свойство("ГрузоотправительХозяйствующийСубъект") ИЛИ СтруктураРеквизитов.Свойство("ГрузоотправительПредприятие") ИЛИ Инициализация Тогда ПредставленияГрузоотправителя = ИнтеграцияВЕТИСВызовСервера.ПредставленияСопоставлений( Объект.ГрузоотправительХозяйствующийСубъект, Объект.ГрузоотправительПредприятие, "Грузоотправитель"); Форма.НадписьГрузоотправительХозяйствующийСубъект = ПредставленияГрузоотправителя.КонтрагентХозяйствующегоСубъекта.Представление; Форма.НадписьГрузоотправительПредприятие = ПредставленияГрузоотправителя.ТорговыйОбъект.Представление; КонецЕсли; Если СтруктураРеквизитов.Свойство("ГрузополучательХозяйствующийСубъект") ИЛИ СтруктураРеквизитов.Свойство("ГрузополучательПредприятие") ИЛИ Инициализация Тогда ПредставленияГрузополучателя = ИнтеграцияВЕТИСВызовСервера.ПредставленияСопоставлений( Объект.ГрузополучательХозяйствующийСубъект, Объект.ГрузополучательПредприятие, "Грузополучатель"); Форма.НадписьГрузополучательХозяйствующийСубъект = ПредставленияГрузополучателя.КонтрагентХозяйствующегоСубъекта.Представление; Форма.НадписьГрузополучательПредприятие = ПредставленияГрузополучателя.ТорговыйОбъект.Представление; КонецЕсли; Если СтруктураРеквизитов.Свойство("Тип") ИЛИ Инициализация Тогда Производственный = Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыВетеринарныхДокументовВЕТИС.Производственный"); Элементы.ГруппаГрузоотправитель.ОтображатьЗаголовок = НЕ Производственный; Элементы.ГруппаГрузополучатель.Видимость = НЕ Производственный; Элементы.ГруппаТТН.Видимость = НЕ Производственный; КонецЕсли; Если СтруктураРеквизитов.Свойство("Продукция") ИЛИ Инициализация Тогда Форма.ТипЖивыеЖивотные = ИнтеграцияВЕТИСВызовСервера.ПродукцияПринадлежитТипуЖивыеЖивотные(Объект.Продукция); Элементы.СрокГодности.Видимость = НЕ Форма.ТипЖивыеЖивотные; Элементы.НадписьУпаковкиШтрихкоды.Видимость = НЕ Форма.ТипЖивыеЖивотные; Элементы.ДатаПроизводства.Заголовок = ИнтеграцияВЕТИСКлиентСервер.ПредставлениеПоляДатаПроизводства(Форма.ТипЖивыеЖивотные); Элементы.ГруппаЖивотныеНаТерриторииТС.Видимость = Форма.ТипЖивыеЖивотные; Если Инициализация Тогда Элементы.ЕдиницаИзмеренияВЕТИС.СписокВыбора.Очистить(); Если ЗначениеЗаполнено(Объект.Продукция) Тогда Элементы.ЕдиницаИзмеренияВЕТИС.СписокВыбора.ЗагрузитьЗначения(ДоступныеЕдиницыИзменения(Объект.Продукция)); КонецЕсли; КонецЕсли; КонецЕсли; Если СтруктураРеквизитов.Свойство("СвязанныеДокументы") ИЛИ Инициализация Тогда Количество = Объект.СвязанныеДокументы.Количество(); Форма.НадписьСвязанныеДокументы = НСтр("ru = 'Связанные документы'") + ?(Количество > 0, " ("+Количество+")", ""); КонецЕсли; Если СтруктураРеквизитов.Свойство("Производители") ИЛИ Инициализация Тогда ПараметрыНадписи = Новый Структура; ПараметрыНадписи.Вставить("ПараметрыДляПодстановки", "Производитель"); Если НЕ Форма.Электронный Тогда ПараметрыНадписи.Вставить("ПустоеКоличество", ""); КонецЕсли; ПредставлениеПроизводители = ИнтеграцияВЕТИСКлиентСервер.СформироватьНадписьПоДаннымТабличнойЧасти( Объект.Производители, ПараметрыНадписи); Если ПустаяСтрока(ПредставлениеПроизводители) Тогда Форма.НадписьПроизводители = Новый ФорматированнаяСтрока(НСтр("ru = 'указать'"),,Форма.ЦветГиперссылкиОсобыйТекст,,"Производители"); Иначе Форма.НадписьПроизводители = Новый ФорматированнаяСтрока(ПредставлениеПроизводители,,Форма.ЦветГиперссылкиОбычный,,"Производители"); КонецЕсли; КонецЕсли; Если СтруктураРеквизитов.Свойство("ПроизводственныеПартии") ИЛИ Инициализация Тогда Форма.НадписьПроизводственныеПартии = ИнтеграцияВЕТИСКлиентСервер.СформироватьНадписьПоДаннымТабличнойЧасти( Объект.ПроизводственныеПартии, "ИдентификаторПартии"); КонецЕсли; Если СтруктураРеквизитов.Свойство("Упаковки") ИЛИ Инициализация Тогда Параметры = Новый Структура; Параметры.Вставить("ПараметрыДляПодстановки", "УпаковкаВЕТИС,КоличествоУпаковокВЕТИС"); Параметры.Вставить("КоличествоВыводимых", 2); Параметры.Вставить("ШаблонСтроки", "%1 (%2)"); Форма.НадписьУпаковкиШтрихкоды = ИнтеграцияВЕТИСКлиентСервер.СформироватьНадписьПоДаннымТабличнойЧасти( Объект.УпаковкиВЕТИС, Параметры); КонецЕсли; Если СтруктураРеквизитов.Свойство("ПериодНахожденияТС") ИЛИ Инициализация Тогда Элементы.КоличествоПериодовНахожденияЖивотныхНаТерриторииТС.АвтоОтметкаНезаполненного = Объект.ПериодНахожденияЖивотныхНаТерриторииТС = ПредопределенноеЗначение("Перечисление.ПериодыНахожденияЖивотныхНаТерриторииТСВЕТИС.ЗначениеВМесяцах"); Элементы.КоличествоПериодовНахожденияЖивотныхНаТерриторииТС.Доступность = Объект.ПериодНахожденияЖивотныхНаТерриторииТС = ПредопределенноеЗначение("Перечисление.ПериодыНахожденияЖивотныхНаТерриторииТСВЕТИС.ЗначениеВМесяцах"); КонецЕсли; Если СтруктураРеквизитов.Свойство("Статус") Или Инициализация Тогда Элементы.Аннулировать.Видимость = Форма.Электронный И (Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыВетеринарныхДокументовВЕТИС.Транспортный")) И (Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыВетеринарныхДокументовВЕТИС.Оформлен")); Элементы.ОткрытьЧерезБраузер.Видимость = Форма.Электронный И (Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыВетеринарныхДокументовВЕТИС.Транспортный") ИЛИ Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыВетеринарныхДокументовВЕТИС.Возвратный")); Элементы.Погасить.Видимость = ЗначениеЗаполнено(Объект.Ссылка) И (Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыВетеринарныхДокументовВЕТИС.Оформлен")); Элементы.ЗапроситьВСДПоИдентификатору.Видимость = Форма.Электронный; КонецЕсли; Если СтруктураРеквизитов.Свойство("ТранспортноеСредство") ИЛИ Инициализация Тогда Если Объект.Маршрут.Количество() = 0 ИЛИ НЕ ЗначениеЗаполнено(Объект.Маршрут[0].ТипТранспорта) Тогда Цвет = Форма.ЦветГиперссылкиОсобыйТекст; НадписьТранспортноеСредство = НСтр("ru = 'указать'"); Иначе Цвет = Форма.ЦветГиперссылкиОбычный; СтрокаТабЧасти = Объект.Маршрут[0]; НадписьТранспортноеСредство = СтрШаблон( "%1 (%2)", СтрокаТабЧасти.ТипТранспорта, ИнтеграцияВЕТИСКлиентСервер.ПредставлениеДанныхТранспортногоСредства( СтрокаТабЧасти, Ложь)); КонецЕсли; Форма.НадписьТранспортноеСредство = Новый ФорматированнаяСтрока(НадписьТранспортноеСредство,,Цвет,,"ТранспортноеСредство"); КонецЕсли; Если СтруктураРеквизитов.Свойство("Маршрут") ИЛИ Инициализация Тогда Параметры = Новый Структура; Параметры.Вставить("ПараметрыДляПодстановки", "Предприятие,АдресПредставление"); Параметры.Вставить("ПустоеЗначение", ""); Параметры.Вставить("РазделительВыводимых"," - "); Параметры.Вставить("КоличествоВыводимых", 2); Параметры.Вставить("ШаблонСтроки", "%1%2"); Форма.НадписьПунктыМаршрута = ИнтеграцияВЕТИСКлиентСервер.СформироватьНадписьПоДаннымТабличнойЧасти( Объект.Маршрут, Параметры); Если ЗначениеЗаполнено(Объект.ГрузополучательПредприятие) Тогда Форма.НадписьПунктыМаршрута = СтрШаблон("%1 - %2", Форма.НадписьПунктыМаршрута, Объект.ГрузополучательПредприятие); КонецЕсли; КонецЕсли; Если СтруктураРеквизитов.Свойство("Иммунизация") ИЛИ СтруктураРеквизитов.Свойство("ЛабораторныеИсследования") ИЛИ Инициализация Тогда МассивСтрок = Новый Массив; Количество = Объект.ЛабораторныеИсследования.Количество(); КоличествоСтрокой = ?(Количество > 0, " ("+Количество+")", ""); МассивСтрок.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Лабораторные исследования'") + КоличествоСтрокой,,Форма.ЦветГиперссылкиОбычный,,"ЛабораторныеИсследования")); Разделитель = " "; МассивСтрок.Добавить(Лев(Разделитель, СтрДлина(Разделитель)-СтрДлина(КоличествоСтрокой))); Количество = Объект.Иммунизация.Количество(); МассивСтрок.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Иммунизация'") + ?(Количество > 0, " ("+Количество+")", ""),,Форма.ЦветГиперссылкиОбычный,,"Иммунизация")); Форма.НадписьИсследования = Новый ФорматированнаяСтрока(МассивСтрок); КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция ДоступныеЕдиницыИзменения(Продукция) ДоступныеЕдиницыИзменения = Новый Массив; Если ЗначениеЗаполнено(Продукция) Тогда ДоступныеЕдиницыИзменения = ИнтеграцияВЕТИСПовтИсп.ДоступныеЕдиницыИзменения(Продукция); КонецЕсли; Возврат ДоступныеЕдиницыИзменения; КонецФункции &НаКлиенте Процедура Погасить(Команда) ОткрытьФорму("Документ.ВходящаяТранспортнаяОперацияВЕТИС.ФормаОбъекта", Новый Структура("Основание",Объект.Ссылка), ЭтотОбъект); КонецПроцедуры &НаСервере Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) МассивНепроверяемыхРеквизитов = Новый Массив; Если Электронный Тогда МассивНепроверяемыхРеквизитов.Добавить("ИсторияСтатусовФИО"); МассивНепроверяемыхРеквизитов.Добавить("ИсторияСтатусовДолжность"); МассивНепроверяемыхРеквизитов.Добавить("ИсторияСтатусовНаименованиеОрганизации"); КонецЕсли; ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов); КонецПроцедуры #КонецОбласти

Catalogs/ВЕТИСПрисоединенныеФайлы/ManagerModule

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

Catalogs/ВЕТИСПрисоединенныеФайлы/ObjectModule



Catalogs/ВЕТИСПрисоединенныеФайлы/Forms/ФормаЗапросОтвет/Form/Module

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

Catalogs/ВЕТИСПрисоединенныеФайлы/Forms/ФормаОшибки/Form/Module

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

Catalogs/ВЕТИСПрисоединенныеФайлы/Forms/ФормаПротоколОбмена/Form/Module

 #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) УстановитьУсловноеОформление(); Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; Если Параметры.Свойство("Документ") И ЗначениеЗаполнено(Параметры.Документ) Тогда Документ = Параметры.Документ; Если ЗначениеЗаполнено(Документ) И НЕ Метаданные.ОпределяемыеТипы.ДокументыВЕТИС.Тип.СодержитТип(ТипЗнч(Документ)) Тогда РеквизитыДокументаОснования = Новый ФиксированнаяСтруктура( ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Документ, "Ссылка, Проведен")); КонецЕсли; Иначе ВызватьИсключение НСтр("ru = 'Протокол обмена может быть открыт только в контексте документа.'"); КонецЕсли; Действия = Новый Структура; Действия.Вставить("Передать", Новый Массив); Действия.Вставить("Подтвердить", Новый Массив); Действия.Вставить("Отменить", Новый Массив); Действия.Передать.Добавить(Перечисления.ДальнейшиеДействияПоВзаимодействиюВЕТИС.ПередайтеДанные); Действия.Подтвердить.Добавить(Перечисления.ДальнейшиеДействияПоВзаимодействиюВЕТИС.ПодтвердитеУсловияПеремещения); Действия.Отменить.Добавить(Перечисления.ДальнейшиеДействияПоВзаимодействиюВЕТИС.ОтменитеОперацию); Действия.Отменить.Добавить(Перечисления.ДальнейшиеДействияПоВзаимодействиюВЕТИС.ОтменитеПередачуДанных); ПодключенныеХозяйствующиеСубъектыДокумента.ЗагрузитьЗначения(ПредприятияХозяйствующиеСубъектыВЕТИС.ПодключенныеХозяйствующиеСубъектыДокумента(Документ)); Если ПодключенныеХозяйствующиеСубъектыДокумента.Количество() = 0 Тогда Элементы.ВыполнитьОбмен.Доступность = Ложь; КонецЕсли; ЗаполнитьДеревоФайлов(); // ИнтеграцияИС Если РеквизитыДокументаОснования <> Неопределено Тогда ИнтеграцияИС.ПриСозданииНаСервереВФормеДокументаОснования(ЭтотОбъект, РеквизитыДокументаОснования); КонецЕсли; // Конец ИнтеграцияИС КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) РазвернутьДеревоРекурсивно(ДеревоФайлов, Элементы.ДеревоФайлов); КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) ПерезаполнитьДерево = Ложь; Если ИмяСобытия = ИнтеграцияИСКлиентСервер.ИмяСобытияИзмененоСостояние(ИнтеграцияИСКлиентСервер.ПодсистемаВЕТИС()) И (Параметр.Ссылка = Документ Или (Параметр.Свойство("Основание") И Параметр.Основание = Документ)) Тогда ПерезаполнитьДерево = Истина; КонецЕсли; Если ИмяСобытия = ИнтеграцияИСКлиентСервер.ИмяСобытияВыполненОбмен(ИнтеграцияИСКлиентСервер.ПодсистемаВЕТИС()) И (Параметр = Неопределено Или (ТипЗнч(Параметр) = Тип("Структура") И Параметр.ОбновлятьСтатусВЕТИСВФормахДокументов)) Тогда ПерезаполнитьДерево = Истина; КонецЕсли; Если СтрНачинаетсяС(ИмяСобытия, ИнтеграцияИСКлиентСервер.ИмяСобытияИзмененОбъект(ИнтеграцияИСКлиентСервер.ПодсистемаВЕТИС())) Тогда ПерезаполнитьДерево = Истина; КонецЕсли; Если ПерезаполнитьДерево Тогда ЗаполнитьДеревоФайлов(); РазвернутьДеревоРекурсивно(ДеревоФайлов, Элементы.ДеревоФайлов); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовШапки &НаКлиенте Процедура ДеревоФайловВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) ДанныеСтроки = Элементы.ДеревоФайлов.ДанныеСтроки(ВыбраннаяСтрока); Если ДанныеСтроки = Неопределено Тогда Возврат; КонецЕсли; Если ЗначениеЗаполнено(ДанныеСтроки.Файл) Тогда ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Ключ", ДанныеСтроки.Файл); ПараметрыФормы.Вставить("Заголовок", СтрШаблон(НСтр("ru = 'Сообщения операции: %1'"), ДанныеСтроки.Операция)); ОткрытьФорму( "Справочник.ВЕТИСПрисоединенныеФайлы.Форма.ФормаЗапросОтвет", ПараметрыФормы, ЭтотОбъект,, ВариантОткрытияОкна.ОтдельноеОкно,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); ИначеЕсли ДанныеСтроки.ПолучитьЭлементы().Количество() > 0 Тогда СтандартнаяОбработка = Ложь; ПоказатьЗначение(,ДанныеСтроки.Документ); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура Обновить(Команда) ЗаполнитьДеревоФайлов(); РазвернутьДеревоРекурсивно(ДеревоФайлов, Элементы.ДеревоФайлов); КонецПроцедуры &НаКлиенте Процедура ВыполнитьОбмен(Команда) ИнтеграцияВЕТИСКлиент.ВыполнитьОбмен(ЭтотОбъект, ПодключенныеХозяйствующиеСубъектыДокумента.ВыгрузитьЗначения()); КонецПроцедуры &НаКлиенте Процедура ПоказатьСообщенияXML(Команда) ДанныеСтроки = Элементы.ДеревоФайлов.ТекущиеДанные; Если ДанныеСтроки = Неопределено Тогда Возврат; КонецЕсли; Если ЗначениеЗаполнено(ДанныеСтроки.Файл) Тогда ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Ключ", ДанныеСтроки.Файл); ПараметрыФормы.Вставить("Заголовок", СтрШаблон(НСтр("ru = 'Сообщения операции: %1'"), ДанныеСтроки.Операция)); ОткрытьФорму( "Справочник.ВЕТИСПрисоединенныеФайлы.Форма.ФормаЗапросОтвет", ПараметрыФормы, ЭтотОбъект,, ВариантОткрытияОкна.ОтдельноеОкно,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); Иначе ПоказатьПредупреждение(,НСтр("ru = 'Команда не может быть выполнена для указанного объекта.'")); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура Передать(Команда) ТекущиеДанные = Элементы.ДеревоФайлов.ТекущиеДанные; Если ТекущиеДанные = Неопределено Тогда Возврат; КонецЕсли; ДальнейшееДействие = Неопределено; Для Каждого ЭлементСписка Из ТекущиеДанные.ДальнейшиеДействия Цикл Если Действия.Передать.Найти(ЭлементСписка.Значение) <> Неопределено Тогда ДальнейшееДействие = ЭлементСписка.Значение; Прервать; КонецЕсли; КонецЦикла; Если ДальнейшееДействие = Неопределено Тогда ПоказатьПредупреждение(,НСтр("ru = 'Команда не может быть выполнена для указанного объекта.'")); Возврат; КонецЕсли; ИнтеграцияВЕТИСКлиент.ПодготовитьКПередаче( ТекущиеДанные.Документ, ДальнейшееДействие); КонецПроцедуры &НаКлиенте Процедура Отменить(Команда) ТекущиеДанные = Элементы.ДеревоФайлов.ТекущиеДанные; Если ТекущиеДанные = Неопределено Тогда Возврат; КонецЕсли; ДальнейшееДействие = Неопределено; Для Каждого ЭлементСписка Из ТекущиеДанные.ДальнейшиеДействия Цикл Если Действия.Отменить.Найти(ЭлементСписка.Значение) <> Неопределено Тогда ДальнейшееДействие = ЭлементСписка.Значение; Прервать; КонецЕсли; КонецЦикла; Если ДальнейшееДействие = Неопределено Тогда ПоказатьПредупреждение(,НСтр("ru = 'Команда не может быть выполнена для указанного объекта.'")); Возврат; КонецЕсли; ИнтеграцияВЕТИСКлиент.ПодготовитьКПередаче( ТекущиеДанные.Документ, ДальнейшееДействие); КонецПроцедуры &НаКлиенте Процедура Подтвердить(Команда) ТекущиеДанные = Элементы.ДеревоФайлов.ТекущиеДанные; Если ТекущиеДанные = Неопределено Тогда Возврат; КонецЕсли; ДальнейшееДействие = Неопределено; Для Каждого ЭлементСписка Из ТекущиеДанные.ДальнейшиеДействия Цикл Если Действия.Подтвердить.Найти(ЭлементСписка.Значение) <> Неопределено Тогда ДальнейшееДействие = ЭлементСписка.Значение; Прервать; КонецЕсли; КонецЦикла; Если ДальнейшееДействие = Неопределено Тогда ПоказатьПредупреждение(,НСтр("ru = 'Команда не может быть выполнена для указанного объекта.'")); Возврат; КонецЕсли; ИнтеграцияВЕТИСКлиент.ПодготовитьКПередаче( ТекущиеДанные.Документ, ДальнейшееДействие); КонецПроцедуры &НаКлиенте Процедура РассчитатьСтатус(Команда) ОчиститьСообщения(); ТекущиеДанные = Элементы.ДеревоФайлов.ТекущиеДанные; Если ТекущиеДанные = Неопределено Тогда Возврат; КонецЕсли; РассчитатьСтатусНаСервере(ТекущиеДанные.Документ); Оповестить(ИнтеграцияИСКлиентСервер.ИмяСобытияВыполненОбмен(ИнтеграцияИСКлиентСервер.ПодсистемаВЕТИС())); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаСервере Процедура УстановитьУсловноеОформление() УсловноеОформление.Элементы.Очистить(); #Область ДеревоЗачеркнутый Элемент = УсловноеОформление.Элементы.Добавить(); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДеревоФайловПредставление.Имя); ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоФайлов.УсловноеОформление"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = "УсловноеОформлениеЗачеркнутый"; Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(,,,,,Истина)); #КонецОбласти #Область ДеревоСерый Элемент = УсловноеОформление.Элементы.Добавить(); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДеревоФайловПредставление.Имя); ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоФайлов.УсловноеОформление"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = "УсловноеОформлениеСерый"; Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет); #КонецОбласти #Область ДеревоЖирный Элемент = УсловноеОформление.Элементы.Добавить(); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДеревоФайловПредставление.Имя); ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоФайлов.УсловноеОформление"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = "УсловноеОформлениеЖирный"; Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(,,Истина)); #КонецОбласти #Область ДеревоОтказ Элемент = УсловноеОформление.Элементы.Добавить(); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДеревоФайловПредставление.Имя); ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоФайлов.УсловноеОформление"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = "УсловноеОформлениеОшибка"; Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПоясняющийОшибкуТекст); #КонецОбласти #Область ДатаНеПередана СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект, "ДеревоФайлов.Дата", Элементы.ДеревоФайловДата.Имя); // Представление даты "<не передано>" ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); ЭлементУсловногоОформления.Использование = Истина; ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ДеревоФайловДата"); ПредставлениеЭлемента = НСтр("ru = 'Представление даты ""<не передано>""'"); ЭлементУсловногоОформления.Представление = ПредставлениеЭлемента; ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоФайлов" + "." + "Дата"); ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбораДанных.ПравоеЗначение = '00010101'; ЭлементОтбораДанных.Использование = Истина; ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не передано>'")); ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет); #КонецОбласти КонецПроцедуры &НаСервере Процедура РассчитатьСтатусНаСервере(ДокументСсылка) ИнтеграцияВЕТИС.РассчитатьСтатусДокументаВЕТИСПоДаннымПротоколаОбмена(ДокументСсылка); КонецПроцедуры &НаСервере Функция ПредставлениеОперации(СтрокаПоследовательности, ДокументСсылка, ВыборкаПоФайлам = Неопределено) Если СтрокаПоследовательности = Неопределено Тогда Возврат ""; ИначеЕсли СтрокаПоследовательности.ТипСообщения = Перечисления.ТипыЗапросовЕГАИС.Исходящий Тогда Если ВыборкаПоФайлам = Неопределено Тогда Возврат ИнтеграцияВЕТИС.ОписаниеОперацииПередачиДанных(СтрокаПоследовательности.Операция, Неопределено, Неопределено); Иначе Возврат ИнтеграцияВЕТИС.ОписаниеОперацииПередачиДанных(СтрокаПоследовательности.Операция, Неопределено, ВыборкаПоФайлам.Версия); КонецЕсли; ИначеЕсли СтрокаПоследовательности.ТипСообщения = Перечисления.ТипыЗапросовЕГАИС.Входящий Тогда Возврат ИнтеграцияВЕТИС.ОписаниеОперацииПолученияДанных(СтрокаПоследовательности.Операция); Иначе Возврат Строка(СтрокаПоследовательности.Операция); КонецЕсли; КонецФункции &НаСервере Функция ТаблицаДокументы(Документ = Неопределено) ТаблицаДокументы = Новый ТаблицаЗначений; ТаблицаДокументы.Колонки.Добавить("Ссылка", Метаданные.Справочники.ВЕТИСПрисоединенныеФайлы.Реквизиты.Документ.Тип); ТаблицаДокументы.Колонки.Добавить("Статус", Метаданные.РегистрыСведений.СтатусыДокументовВЕТИС.Ресурсы.Статус.Тип); ТаблицаДокументы.Колонки.Добавить("ДальнейшееДействие1", Новый ОписаниеТипов("ПеречислениеСсылка.ДальнейшиеДействияПоВзаимодействиюВЕТИС")); ТаблицаДокументы.Колонки.Добавить("ДальнейшееДействие2", Новый ОписаниеТипов("ПеречислениеСсылка.ДальнейшиеДействияПоВзаимодействиюВЕТИС")); ТаблицаДокументы.Колонки.Добавить("ДальнейшееДействие3", Новый ОписаниеТипов("ПеречислениеСсылка.ДальнейшиеДействияПоВзаимодействиюВЕТИС")); Если Документ <> Неопределено Тогда Запрос = Новый Запрос( "ВЫБРАТЬ | Таблица.Документ КАК Ссылка, | Таблица.Статус КАК Статус, | Таблица.ДальнейшееДействие1 КАК ДальнейшееДействие1, | Таблица.ДальнейшееДействие2 КАК ДальнейшееДействие2, | Таблица.ДальнейшееДействие3 КАК ДальнейшееДействие3 |ИЗ | РегистрСведений.СтатусыДокументовВЕТИС КАК Таблица |ГДЕ | Таблица.Документ = &ДокументСсылка |"); Запрос.УстановитьПараметр("ДокументСсылка", Документ); УстановитьПривилегированныйРежим(Истина); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда ЗаполнитьЗначенияСвойств(ТаблицаДокументы.Добавить(), Выборка); КонецЕсли; КонецЕсли; Возврат ТаблицаДокументы; КонецФункции &НаСервере Процедура ЗаполнитьПоОснованиюДокументаИнвентаризацияПродукцииВЕТИС(ДокументОснование) МетаданныеДокумента = Метаданные.Документы.ИнвентаризацияПродукцииВЕТИС; ЗаполнитьПоОснованиюДокументаВЕТИС(МетаданныеДокумента, ДокументОснование); КонецПроцедуры &НаСервере Процедура ЗаполнитьПоОснованиюДокументаВходящаяТранспортнаяОперацияВЕТИС(ДокументОснование) МетаданныеДокумента = Метаданные.Документы.ВходящаяТранспортнаяОперацияВЕТИС; ЗаполнитьПоОснованиюДокументаВЕТИС(МетаданныеДокумента, ДокументОснование, Ложь); КонецПроцедуры &НаСервере Процедура ЗаполнитьПоОснованиюДокументаИсходящаяТранспортнаяОперацияВЕТИС(ДокументОснование) МетаданныеДокумента = Метаданные.Документы.ИсходящаяТранспортнаяОперацияВЕТИС; ЗаполнитьПоОснованиюДокументаВЕТИС(МетаданныеДокумента, ДокументОснование); КонецПроцедуры &НаСервере Процедура ЗаполнитьПоОснованиюДокументаПроизводственнаяОперацияВЕТИС(ДокументОснование) МетаданныеДокумента = Метаданные.Документы.ПроизводственнаяОперацияВЕТИС; ЗаполнитьПоОснованиюДокументаВЕТИС(МетаданныеДокумента, ДокументОснование); КонецПроцедуры &НаСервере Процедура ЗаполнитьПоОснованиюДокументаВЕТИС(МетаданныеДокументаВЕТИС, ДокументОснование, ДобавитьГиперссылку = Истина) ШаблонТекстаЗапроса = "ВЫБРАТЬ | ТаблицаДокумента.Ссылка КАК Ссылка, | СтатусыДокументовВЕТИС.Статус КАК Статус, | СтатусыДокументовВЕТИС.ДальнейшееДействие1 КАК ДальнейшееДействие1, | СтатусыДокументовВЕТИС.ДальнейшееДействие2 КАК ДальнейшееДействие2, | СтатусыДокументовВЕТИС.ДальнейшееДействие3 КАК ДальнейшееДействие3 |ИЗ | Документ.%1 КАК ТаблицаДокумента | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыДокументовВЕТИС КАК СтатусыДокументовВЕТИС | ПО СтатусыДокументовВЕТИС.Документ = ТаблицаДокумента.Ссылка |ГДЕ | ТаблицаДокумента.ДокументОснование = &ДокументОснование | |УПОРЯДОЧИТЬ ПО | ТаблицаДокумента.Дата"; Запрос = Новый Запрос; Запрос.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ШаблонТекстаЗапроса, МетаданныеДокументаВЕТИС.Имя); Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование); ТаблицаДокументы = ТаблицаДокументы(); УстановитьПривилегированныйРежим(Истина); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ЗаполнитьЗначенияСвойств(ТаблицаДокументы.Добавить(), Выборка); КонецЦикла; ЗаполнитьПоДокументу(ТаблицаДокументы, Истина); Если НЕ ДобавитьГиперссылку Тогда Возврат; КонецЕсли; Запрос.Текст = "ВЫБРАТЬ | СтатусыОформленияДокументовВЕТИС.Документ, | СтатусыОформленияДокументовВЕТИС.СтатусОформления КАК Статус |ИЗ | РегистрСведений.СтатусыОформленияДокументовВЕТИС КАК СтатусыОформленияДокументовВЕТИС |ГДЕ | СтатусыОформленияДокументовВЕТИС.Основание = &ДокументОснование"; Выборка = Запрос.Выполнить().Выбрать(); СтатусыОформления = Новый Структура; Пока Выборка.Следующий() Цикл СтатусыОформления.Вставить(Выборка.Документ.Метаданные().Имя, Выборка.Статус); КонецЦикла; Если СтатусыОформления[МетаданныеДокументаВЕТИС.Имя] <> Перечисления.СтатусыОформленияДокументовВЕТИС.Оформлено Тогда ПравоДобавления = ПравоДоступа("Добавление", МетаданныеДокументаВЕТИС); Шаблон = ИнтеграцияИС.ШаблонПредставленияДокументаВЕТИСДляПоляИнтеграции( МетаданныеДокументаВЕТИС, ДокументОснование); Если ПравоДобавления Тогда ТекстНадписи = Шаблон.ПредставлениеКомандыСоздать; ИмяКоманды = Шаблон.ИмяКомандыСоздать; Иначе ТекстНадписи = Шаблон.ДокументНеСоздан; ИмяКоманды = Неопределено; КонецЕсли; Если ЗначениеЗаполнено(ТекстНадписи) Тогда ФорматированнаяСтрока = Новый ФорматированнаяСтрока( ТекстНадписи, , ?(ЗначениеЗаполнено(ИмяКоманды), ЦветаСтиля.ГиперссылкаЦвет, Неопределено), , ИмяКоманды); Строки = Новый Массив; Если ЗначениеЗаполнено(ТекстДокументаВЕТИС) Тогда Строки.Добавить(ТекстДокументаВЕТИС); Строки.Добавить(", "); КонецЕсли; Строки.Добавить(ФорматированнаяСтрока); ТекстДокументаВЕТИС = Новый ФорматированнаяСтрока(Строки); КонецЕсли; КонецЕсли; КонецПроцедуры &НаСервере Процедура ЗаполнитьПоДокументу(ТаблицаДокументы, ОтображатьСИерархией = Ложь) Запрос = Новый Запрос( "ВЫБРАТЬ | ВременнаяТаблицаДокументы.Ссылка КАК Ссылка |ПОМЕСТИТЬ ВременнаяТаблицаДокументы |ИЗ | &ТаблицаДокументы КАК ВременнаяТаблицаДокументы |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВЕТИСПрисоединенныеФайлы.Документ КАК Документ, | ВЕТИСПрисоединенныеФайлы.Ссылка КАК Ссылка, | ВЕТИСПрисоединенныеФайлы.ТипСообщения КАК ТипСообщения, | ВЕТИСПрисоединенныеФайлы.Операция КАК Операция, | ВЕТИСПрисоединенныеФайлы.СообщениеОснование КАК СообщениеОснование, | ВЕТИСПрисоединенныеФайлы.СтатусОбработки КАК СтатусОбработки, | ВЕТИСПрисоединенныеФайлы.ДатаСоздания КАК ДатаСоздания, | ВЕТИСПрисоединенныеФайлы.Версия КАК Версия |ПОМЕСТИТЬ втСообщения |ИЗ | Справочник.ВЕТИСПрисоединенныеФайлы КАК ВЕТИСПрисоединенныеФайлы | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВременнаяТаблицаДокументы КАК ВременнаяТаблицаДокументы | ПО ВЕТИСПрисоединенныеФайлы.Документ = ВременнаяТаблицаДокументы.Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Сообщения.Документ КАК Документ, | Сообщения.Ссылка КАК Ссылка, | Сообщения.ТипСообщения КАК ТипСообщения, | Сообщения.Операция КАК Операция, | Сообщения.СообщениеОснование КАК СообщениеОснование, | Сообщения.СтатусОбработки КАК СтатусОбработки, | Сообщения.ДатаСоздания КАК ДатаСоздания, | Сообщения.Версия КАК Версия |ПОМЕСТИТЬ Сообщения |ИЗ | втСообщения КАК Сообщения | ЛЕВОЕ СОЕДИНЕНИЕ втСообщения КАК ОтветыНаПередачуДанных | ПО Сообщения.Ссылка = ОтветыНаПередачуДанных.СообщениеОснование | И Сообщения.Операция = ОтветыНаПередачуДанных.Операция | И (ОтветыНаПередачуДанных.ТипСообщения = ЗНАЧЕНИЕ(Перечисление.ТипыЗапросовЕГАИС.Входящий)) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОчередьСообщенийВЕТИС КАК ОчередьПередачиДанныхВЕТИС | ПО (ОчередьПередачиДанныхВЕТИС.Сообщение = Сообщения.Ссылка) |ГДЕ | Сообщения.ТипСообщения = ЗНАЧЕНИЕ(Перечисление.ТипыЗапросовЕГАИС.Исходящий) | И (ОчередьПередачиДанныхВЕТИС.Сообщение ЕСТЬ НЕ NULL | ИЛИ ОтветыНаПередачуДанных.Ссылка ЕСТЬ НЕ NULL) | ИЛИ Сообщения.ТипСообщения = ЗНАЧЕНИЕ(Перечисление.ТипыЗапросовЕГАИС.Входящий) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ПередачаДанных.Документ КАК Документ, | ПередачаДанных.Ссылка КАК Запрос, | ПередачаДанных.ДатаСоздания КАК ЗапросДатаСоздания, | ЕСТЬNULL(ОтветыНаПередачуДанных.Ссылка, &ПустаяСсылка) КАК ОтветНаПередачуДанных, | ЕСТЬNULL(ОтветыНаПередачуДанных.ДатаСоздания, ДАТАВРЕМЯ(1, 1, 1)) КАК ОтветНаПередачуДанныхДатаСоздания, | ЕСТЬNULL(ОтветыНаПередачуДанных.СтатусОбработки, НЕОПРЕДЕЛЕНО) КАК ОтветНаПередачуДанныхСостояниеОбработки, | ЕСТЬNULL(ПолученныеРезультатыЗапросовВЕТИС.Ссылка, &ПустаяСсылка) КАК ПолученРезультатЗапросаВЕТИС, | ЕСТЬNULL(ПолученныеРезультатыЗапросовВЕТИС.ДатаСоздания, ДАТАВРЕМЯ(1, 1, 1)) КАК ПолученРезультатЗапросаВЕТИСДатаСоздания, | ЕСТЬNULL(ПолученныеРезультатыЗапросовВЕТИС.СтатусОбработки, НЕОПРЕДЕЛЕНО) КАК ПолученРезультатЗапросаВЕТИССостояниеОбработки, | ЕСТЬNULL(ОтветыНаЗапросыВЕТИС.Ссылка, &ПустаяСсылка) КАК ОтветНаЗапросВЕТИС, | ЕСТЬNULL(ОтветыНаЗапросыВЕТИС.ДатаСоздания, ДАТАВРЕМЯ(1, 1, 1)) КАК ОтветНаЗапросВЕТИСДатаСоздания, | ЕСТЬNULL(ОтветыНаЗапросыВЕТИС.СтатусОбработки, НЕОПРЕДЕЛЕНО) КАК ОтветНаЗапросВЕТИССостояниеОбработки |ИЗ | Сообщения КАК ПередачаДанных | ЛЕВОЕ СОЕДИНЕНИЕ Сообщения КАК ОтветыНаПередачуДанных | ПО ПередачаДанных.Ссылка = ОтветыНаПередачуДанных.СообщениеОснование | И ПередачаДанных.Операция = ОтветыНаПередачуДанных.Операция | ЛЕВОЕ СОЕДИНЕНИЕ Сообщения КАК ПолученныеРезультатыЗапросовВЕТИС | ПО ПередачаДанных.Ссылка = ПолученныеРезультатыЗапросовВЕТИС.СообщениеОснование | И (ПолученныеРезультатыЗапросовВЕТИС.Операция В (&ПолученРезультатЗапросаВЕТИС)) | ЛЕВОЕ СОЕДИНЕНИЕ Сообщения КАК ОтветыНаЗапросыВЕТИС | ПО ПередачаДанных.Ссылка = ОтветыНаЗапросыВЕТИС.СообщениеОснование | И (ОтветыНаЗапросыВЕТИС.Операция В (&ОтветНаЗапросВЕТИС)) | |УПОРЯДОЧИТЬ ПО | ПередачаДанных.ДатаСоздания, | ЕСТЬNULL(ОтветыНаПередачуДанных.ДатаСоздания, ДАТАВРЕМЯ(1, 1, 1)) УБЫВ, | ЕСТЬNULL(ПолученныеРезультатыЗапросовВЕТИС.ДатаСоздания, ДАТАВРЕМЯ(1, 1, 1)) УБЫВ, | ЕСТЬNULL(ОтветыНаЗапросыВЕТИС.ДатаСоздания, ДАТАВРЕМЯ(1, 1, 1)) УБЫВ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВременнаяТаблицаДокументы.Ссылка КАК Документ, | ЕСТЬNULL(Запрос.Ссылка, &ПустаяСсылка) КАК Ссылка, | ЕСТЬNULL(Запрос.Операция, НЕОПРЕДЕЛЕНО) КАК Операция, | ЕСТЬNULL(Запрос.ДатаСоздания, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаСоздания, | ЕСТЬNULL(Запрос.Версия, 1) КАК Версия |ИЗ | ВременнаяТаблицаДокументы КАК ВременнаяТаблицаДокументы | ЛЕВОЕ СОЕДИНЕНИЕ Сообщения КАК Запрос | ПО Запрос.Документ = ВременнаяТаблицаДокументы.Ссылка | И ((Запрос.ТипСообщения = ЗНАЧЕНИЕ(Перечисление.ТипыЗапросовЕГАИС.Исходящий) | И Запрос.СообщениеОснование = &ПустаяСсылка) | ИЛИ | (Запрос.ТипСообщения = ЗНАЧЕНИЕ(Перечисление.ТипыЗапросовЕГАИС.Входящий) | И Запрос.СообщениеОснование <> &ПустаяСсылка | И Запрос.Операция В (&ОтветНаЗапросВЕТИС))) |УПОРЯДОЧИТЬ ПО | Запрос.ДатаСоздания |ИТОГИ | МАКСИМУМ(ДатаСоздания) |ПО | Документ"); Запрос.УстановитьПараметр("ТаблицаДокументы", ТаблицаДокументы); Запрос.УстановитьПараметр("ПустаяСсылка", Справочники.ВЕТИСПрисоединенныеФайлы.ПустаяСсылка()); Запрос.УстановитьПараметр("ОтветНаЗапросВЕТИС", Справочники.ВЕТИСПрисоединенныеФайлы.ОтветыНаЗапросыВЕТИС()); Запрос.УстановитьПараметр("ПолученРезультатЗапросаВЕТИС", Справочники.ВЕТИСПрисоединенныеФайлы.ПолученныеРезультатыЗапросовВЕТИС()); Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; УстановитьПривилегированныйРежим(Истина); Результат = Запрос.ВыполнитьПакет(); ДанныеСообщений = Результат[Результат.Количество() - 2].Выгрузить(); ВыборкаПоДокументам = Результат[Результат.Количество() - 1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоДокументам.Следующий() Цикл ПолноеИмя = ВыборкаПоДокументам.Документ.Метаданные().ПолноеИмя(); МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмя); ПоследовательностьОпераций = МенеджерОбъекта.ПоследовательностьОпераций(ВыборкаПоДокументам.Документ); Если ОтображатьСИерархией Тогда СтрокаПервогоУровня = ДеревоФайлов.ПолучитьЭлементы().Добавить(); СтрокаПервогоУровня.Документ = ВыборкаПоДокументам.Документ; СтрокаПервогоУровня.Представление = ВыборкаПоДокументам.Документ; СтрокаПервогоУровня.ИндексКартинки = 5; Иначе СтрокаПервогоУровня = ДеревоФайлов; КонецЕсли; Операция = Неопределено; ЕстьОшибка = Ложь; ТребуетсяОжидание = Ложь; ВыборкаПоФайлам = ВыборкаПоДокументам.Выбрать(); Пока ВыборкаПоФайлам.Следующий() Цикл Операция = ВыборкаПоФайлам.Операция; Если НЕ ЗначениеЗаполнено(ВыборкаПоФайлам.Ссылка) Тогда // Если по документу еще не создано файлов Если ЗначениеЗаполнено(ПоследовательностьОпераций) Тогда Операция = ПоследовательностьОпераций[0].Операция; Иначе Операция = Неопределено; КонецЕсли; КонецЕсли; ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Операция", Операция); НайденныеСтроки = ПоследовательностьОпераций.НайтиСтроки(ПараметрыОтбора); Если НайденныеСтроки.Количество() = 0 Тогда СтрокаПоследовательности = Неопределено; Иначе СтрокаПоследовательности = НайденныеСтроки[НайденныеСтроки.Количество() - 1]; КонецЕсли; СтрокаВторогоУровня = СтрокаПервогоУровня.ПолучитьЭлементы().Добавить(); СтрокаВторогоУровня.Документ = ВыборкаПоФайлам.Документ; СтрокаВторогоУровня.Файл = ВыборкаПоФайлам.Ссылка; СтрокаВторогоУровня.Операция = Операция; СтрокаВторогоУровня.Дата = ВыборкаПоФайлам.ДатаСоздания; СтрокаВторогоУровня.Представление = ПредставлениеОперации(СтрокаПоследовательности, ВыборкаПоФайлам.Документ, ВыборкаПоФайлам); СтрокаВторогоУровня.ИндексКартинки = ИндексКартинки(СтрокаПоследовательности); Если СтрокаПоследовательности <> Неопределено И СтрокаПоследовательности.ТипСообщения = Перечисления.ТипыЗапросовЕГАИС.Исходящий Тогда ВозвращаемоеЗначение = ОбработатьПередачуДанных( ДанныеСообщений.Найти(ВыборкаПоФайлам.Ссылка, "Запрос"), СтрокаВторогоУровня, СтрокаПоследовательности); ЕстьОшибка = ВозвращаемоеЗначение.Ошибка; ТребуетсяОжидание = ВозвращаемоеЗначение.Ожидание; Иначе ЕстьОшибка = Ложь; ТребуетсяОжидание = Ложь; КонецЕсли; Если Не ТребуетсяОжидание И СтрокаПоследовательности <> Неопределено Тогда Для Каждого ДальнейшееДействие Из СтрокаПоследовательности.ДальнейшиеДействия Цикл СтрокаВторогоУровня.ДальнейшиеДействия.Добавить(ДальнейшееДействие); КонецЦикла; КонецЕсли; КонецЦикла; Если ЕстьОшибка Тогда СтрокаПоследовательности = ИнтеграцияВЕТИС.ПредыдущаяОперация(ПоследовательностьОпераций, СтрокаПоследовательности); КонецЕсли; Если СтрокаПоследовательности <> Неопределено Тогда Индекс = ПоследовательностьОпераций.Индекс(СтрокаПоследовательности); Для Итератор = Индекс + 1 По ПоследовательностьОпераций.Количество() - 1 Цикл СтрокаСледующаяОперация = ПоследовательностьОпераций.Получить(Итератор); Если СтрокаСледующаяОперация.Индекс = 0 Или СтрокаПоследовательности.Индекс = СтрокаСледующаяОперация.Индекс Тогда СтрокаВторогоУровня = СтрокаПервогоУровня.ПолучитьЭлементы().Добавить(); СтрокаВторогоУровня.Документ = ВыборкаПоДокументам.Документ; СтрокаВторогоУровня.Операция = СтрокаСледующаяОперация.Операция; СтрокаВторогоУровня.УсловноеОформление = "УсловноеОформлениеСерый"; СтрокаВторогоУровня.Представление = ПредставлениеОперации(СтрокаСледующаяОперация, СтрокаВторогоУровня.Документ, Неопределено); СтрокаВторогоУровня.ИндексКартинки = ИндексКартинки(СтрокаСледующаяОперация, Истина); Для Каждого ДальнейшееДействие Из СтрокаСледующаяОперация.ДальнейшиеДействия Цикл СтрокаВторогоУровня.ДальнейшиеДействия.Добавить(ДальнейшееДействие); КонецЦикла; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры &НаСервере Функция ОбработатьПередачуДанных(СтрокаТЧ, СтрокаВторогоУровня, Последовательность) ВозвращаемоеЗначение = Новый Структура; ВозвращаемоеЗначение.Вставить("Ошибка", Ложь); ВозвращаемоеЗначение.Вставить("Ожидание", Ложь); Если СтрокаТЧ <> Неопределено И ЗначениеЗаполнено(СтрокаТЧ.ОтветНаПередачуДанных) Тогда Если ЗначениеЗаполнено(СтрокаТЧ.ОтветНаПередачуДанных) И СтрокаТЧ.ОтветНаПередачуДанныхСостояниеОбработки = Перечисления.СтатусыОбработкиСообщенийВЕТИС.Ошибка Тогда ВозвращаемоеЗначение.Ошибка = Истина; ИначеЕсли ЗначениеЗаполнено(СтрокаТЧ.ПолученРезультатЗапросаВЕТИС) И СтрокаТЧ.ПолученРезультатЗапросаВЕТИССостояниеОбработки = Перечисления.СтатусыОбработкиСообщенийВЕТИС.Ошибка Тогда ВозвращаемоеЗначение.Ошибка = Истина; ИначеЕсли ЗначениеЗаполнено(СтрокаТЧ.ОтветНаЗапросВЕТИС) И СтрокаТЧ.ОтветНаЗапросВЕТИССостояниеОбработки = Перечисления.СтатусыОбработкиСообщенийВЕТИС.Ошибка Тогда ВозвращаемоеЗначение.Ошибка = Истина; КонецЕсли; Если ВозвращаемоеЗначение.Ошибка Тогда СтрокаВторогоУровня.УсловноеОформление = "УсловноеОформлениеОшибка"; СтрокаВторогоУровня.ИндексКартинки = 4; // Ошибка КонецЕсли; ИначеЕсли СтрокаТЧ <> Неопределено И ЗначениеЗаполнено(СтрокаТЧ.Запрос) Тогда СтрокаВторогоУровня.ИндексКартинки = 3; Иначе СтрокаВторогоУровня.УсловноеОформление = "УсловноеОформлениеСерый"; СтрокаВторогоУровня.ИндексКартинки = 7; КонецЕсли; Возврат ВозвращаемоеЗначение; КонецФункции &НаСервере Функция ИндексКартинки(СтрокаПоследовательности, Серый = Ложь) ИндексКартинки = 0; Смещение = 0; Если Серый Тогда Смещение = 6; КонецЕсли; Если СтрокаПоследовательности = Неопределено Тогда ИндексКартинки = 0; ИначеЕсли СтрокаПоследовательности.ТипСообщения = Перечисления.ТипыЗапросовЕГАИС.Исходящий Тогда ИндексКартинки = 1 + Смещение; ИначеЕсли СтрокаПоследовательности.ТипСообщения = Перечисления.ТипыЗапросовЕГАИС.Входящий Тогда ИндексКартинки = 2 + Смещение; КонецЕсли; Возврат ИндексКартинки; КонецФункции &НаСервере Процедура ЗаполнитьДеревоФайлов() ТекстДокументаВЕТИС = ""; ДеревоФайлов.ПолучитьЭлементы().Очистить(); Строки = Новый Массив; Строки.Добавить(НСтр("ru = 'Основание:'")); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(Строка(Документ),,,,ПолучитьНавигационнуюСсылку(Документ))); ТекстДокумент = Новый ФорматированнаяСтрока(Строки); ТипДокумента = ТипЗнч(Документ); ЭтоДокументОснование = Ложь; Если Метаданные.ОпределяемыеТипы.ОснованиеВходящаяТранспортнаяОперацияВЕТИС.Тип.Типы().Найти(ТипДокумента) <> Неопределено Тогда ЗаполнитьПоОснованиюДокументаВходящаяТранспортнаяОперацияВЕТИС(Документ); ЭтоДокументОснование = Истина; КонецЕсли; Если Метаданные.ОпределяемыеТипы.ОснованиеИнвентаризацияПродукцииВЕТИС.Тип.Типы().Найти(ТипДокумента) <> Неопределено Тогда ЗаполнитьПоОснованиюДокументаИнвентаризацияПродукцииВЕТИС(Документ); ЭтоДокументОснование = Истина; КонецЕсли; Если Метаданные.ОпределяемыеТипы.ОснованиеИсходящаяТранспортнаяОперацияВЕТИС.Тип.Типы().Найти(ТипДокумента) <> Неопределено Тогда ЗаполнитьПоОснованиюДокументаИсходящаяТранспортнаяОперацияВЕТИС(Документ); ЭтоДокументОснование = Истина; КонецЕсли; Если Метаданные.ОпределяемыеТипы.ОснованиеПроизводственнаяОперацияВЕТИС.Тип.Типы().Найти(ТипДокумента) <> Неопределено Тогда ЗаполнитьПоОснованиюДокументаПроизводственнаяОперацияВЕТИС(Документ); ЭтоДокументОснование = Истина; КонецЕсли; Если НЕ ЭтоДокументОснование ИЛИ Метаданные.Справочники.ВЕТИСПрисоединенныеФайлы.Реквизиты.Документ.Тип.Типы().Найти(ТипДокумента) <> Неопределено Тогда Строки = Новый Массив; Строки.Добавить(НСтр("ru = 'Документ:'")); Строки.Добавить(" "); Строки.Добавить(Новый ФорматированнаяСтрока(Строка(Документ),,,,ПолучитьНавигационнуюСсылку(Документ))); ТекстДокумент = Новый ФорматированнаяСтрока(Строки); ЗаполнитьПоДокументу(ТаблицаДокументы(Документ)); КонецЕсли; Элементы.ИнтеграцияВЕТИС_ИнформацияОДокументах.Видимость = Истина; КонецПроцедуры &НаКлиенте Процедура РазвернутьДеревоРекурсивно(СтрокаДерева, ЭлементФормы) КоллекцияЭлементов = СтрокаДерева.ПолучитьЭлементы(); Для каждого Элемент Из КоллекцияЭлементов Цикл ЭлементФормы.Развернуть(Элемент.ПолучитьИдентификатор()); РазвернутьДеревоРекурсивно(Элемент, ЭлементФормы); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ДеревоФайловПриАктивизацииСтроки(Элемент) ТекущиеДанные = Элементы.ДеревоФайлов.ТекущиеДанные; Если ТекущиеДанные = Неопределено Тогда Возврат; КонецЕсли; КомандыПередать = Новый Массив; КомандыПередать.Добавить(Элементы.ДеревоФайловДействиеПередать); КомандыПередать.Добавить(Элементы.ДеревоФайловКонтекстноеМенюДействиеПередать); Для Каждого Элемент Из КомандыПередать Цикл Элемент.Доступность = Ложь; КонецЦикла; КомандыПодтвердить = Новый Массив; КомандыПодтвердить.Добавить(Элементы.ДеревоФайловДействиеПодтвердить); КомандыПодтвердить.Добавить(Элементы.ДеревоФайловКонтекстноеМенюДействиеПодтвердить); Для Каждого Элемент Из КомандыПодтвердить Цикл Элемент.Доступность = Ложь; КонецЦикла; КомандыОтменить = Новый Массив; КомандыОтменить.Добавить(Элементы.ДеревоФайловДействиеОтменить); КомандыОтменить.Добавить(Элементы.ДеревоФайловКонтекстноеМенюДействиеОтменить); Для Каждого Элемент Из КомандыОтменить Цикл Элемент.Доступность = Ложь; КонецЦикла; Для Каждого ЭлементСписка Из ТекущиеДанные.ДальнейшиеДействия Цикл Если Действия.Передать.Найти(ЭлементСписка.Значение) <> Неопределено Тогда Для Каждого Элемент Из КомандыПередать Цикл Элемент.Доступность = Истина; КонецЦикла; ИначеЕсли Действия.Подтвердить.Найти(ЭлементСписка.Значение) <> Неопределено Тогда Для Каждого Элемент Из КомандыПодтвердить Цикл Элемент.Доступность = Истина; КонецЦикла; ИначеЕсли Действия.Отменить.Найти(ЭлементСписка.Значение) <> Неопределено Тогда Для Каждого Элемент Из КомандыОтменить Цикл Элемент.Доступность = Истина; КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ТекстДокументаВЕТИСОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) // ИнтеграцияИС Если РеквизитыДокументаОснования <> Неопределено Тогда ИнтеграцияИСКлиент.ОбработкаНавигационнойСсылкиВФормеДокументаОснования( ЭтотОбъект, РеквизитыДокументаОснования, Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка); КонецЕсли; // Конец ИнтеграцияИС КонецПроцедуры &НаКлиенте Процедура ВыполнитьОбменОбработкаОжидания() ИнтеграцияВЕТИСКлиент.ПродолжитьВыполнениеОбмена(ЭтотОбъект); КонецПроцедуры #КонецОбласти

Catalogs/ВЕТИСПрисоединенныеФайлы/Forms/ФормаСписка/Form/Module

 #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) УстановитьУсловноеОформление(); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции Процедура УстановитьУсловноеОформление() УсловноеОформление.Элементы.Очистить(); СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект, "Список.ДатаСоздания", Элементы.ДатаСоздания.Имя); КонецПроцедуры #КонецОбласти

Catalogs/ВЕТИСПрисоединенныеФайлы/Forms/ФормаЭлемента/Form/Module

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

Catalogs/ВидыАлкогольнойПродукции/ManagerModule

 #Область ОбработчикиСобытий Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) ИнтеграцияЕГАИСВызовСервера.ПриПолученииФормыСправочника( "ВидыАлкогольнойПродукции", ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка); КонецПроцедуры #КонецОбласти

Catalogs/ВидыАлкогольнойПродукции/Forms/ФормаВыбора/Form/Module

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

Catalogs/ВидыАлкогольнойПродукции/Forms/ФормаСписка/Form/Module

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

Catalogs/ВидыАлкогольнойПродукции/Forms/ФормаЭлемента/Form/Module

 #Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) СобытияФормЕГАИСПереопределяемый.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка); КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) СобытияФормЕГАИСКлиентПереопределяемый.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник); КонецПроцедуры &НаСервере Процедура ПриЧтенииНаСервере(ТекущийОбъект) СобытияФормЕГАИСПереопределяемый.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); КонецПроцедуры &НаКлиенте Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) СобытияФормЕГАИСКлиентПереопределяемый.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи); КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда) СобытияФормЕГАИСКлиентПереопределяемый.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда); КонецПроцедуры #КонецОбласти

Catalogs/ВидыВзаиморасчетов/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс // СтандартныеПодсистемы.ВерсионированиеОбъектов // Определяет настройки объекта для подсистемы ВерсионированиеОбъектов. // // Параметры: // Настройки - Структура - настройки подсистемы. Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт КонецПроцедуры // Конец СтандартныеПодсистемы.ВерсионированиеОбъектов #КонецОбласти #КонецЕсли

Catalogs/ВидыВзаиморасчетов/ObjectModule



Catalogs/ВидыВзаиморасчетов/Forms/ФормаВыбора/Form/Module

 &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // СтандартныеПодсистемы.ВерсионированиеОбъектов ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект); // Конец СтандартныеПодсистемы.ВерсионированиеОбъектов КонецПроцедуры

Catalogs/ВидыВзаиморасчетов/Forms/ФормаСписка/Form/Module

 &НаКлиенте Процедура ИзменитьВыделенные(Команда) ГрупповоеИзменениеОбъектовКлиент.ИзменитьВыделенные(Элементы.Список); КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // СтандартныеПодсистемы.ВерсионированиеОбъектов ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект); // Конец СтандартныеПодсистемы.ВерсионированиеОбъектов МожноРедактировать = ПравоДоступа("Редактирование", Метаданные.Справочники.ВидыВзаиморасчетов); Элементы.СписокКонтекстноеМенюИзменитьВыделенные.Видимость = МожноРедактировать; КонецПроцедуры

Catalogs/ВидыВзаиморасчетов/Forms/ФормаЭлемента/Form/Module

/////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // СтандартныеПодсистемы.ВерсионированиеОбъектов ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект); // Конец СтандартныеПодсистемы.ВерсионированиеОбъектов КонецПроцедуры

Catalogs/ВидыВычетовНДФЛ/Forms/ФормаВыбора/Form/Module

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

Catalogs/ВидыВычетовНДФЛ/Forms/ФормаСписка/Form/Module

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

Catalogs/ВидыВычетовНДФЛ/Forms/ФормаЭлемента/Form/Module

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

Catalogs/ВидыДеятельностиЕНВД/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ОбработчикиСобытий Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Поля.Добавить("КодВидаДеятельности"); Поля.Добавить("Наименование"); КонецПроцедуры Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Представление = СокрЛП(Данные.КодВидаДеятельности) + ?(ЗначениеЗаполнено(Данные.КодВидаДеятельности), " ", "") + СокрЛП(Данные.Наименование); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции // Возвращает верхнюю границу индекса автонаименований видов деятельности. // Используется в форме справочника для генерации наименований справочника вида "Новое наименование 1" // // Параметры: // КодВидаДеятельности - СправочникСсылка.КлассификаторВидовПредпринимательскойДеятельностиЕНВД // ТекущийЭлемент - СправочникСсылка.ВидыДеятельностиЕНВД - ссылка на текущий элемент // // Возвращаемое значение: // Число - верхняя граница индекса // Функция МаксимальныйИндексВидаДеятельности(КодВидаДеятельности, Организация, ТекущийЭлемент) Экспорт Если Не ЗначениеЗаполнено(КодВидаДеятельности) Тогда Возврат Неопределено; КонецЕсли; // Значение автонаименование для первого элемента Наименование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(КодВидаДеятельности, "Наименование"); Запрос = Новый Запрос; Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("КодВидаДеятельности", КодВидаДеятельности); Запрос.УстановитьПараметр("ШаблонНаименования", Наименование + "%"); Запрос.УстановитьПараметр("ТекущийЭлемент", ТекущийЭлемент); Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | ВидыДеятельностиЕНВД.Наименование КАК Наименование |ИЗ | Справочник.ВидыДеятельностиЕНВД КАК ВидыДеятельностиЕНВД |ГДЕ | ВидыДеятельностиЕНВД.Владелец = &Организация | И ВидыДеятельностиЕНВД.КодВидаДеятельности = &КодВидаДеятельности | И ВидыДеятельностиЕНВД.Наименование ПОДОБНО &ШаблонНаименования | И ВидыДеятельностиЕНВД.Ссылка <> &ТекущийЭлемент | |УПОРЯДОЧИТЬ ПО | Наименование"; Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда // Это первый элемент в справочнике или для других элементов с таким же кодом задано уникальное наименование Возврат Неопределено; КонецЕсли; ДлинаНаименования = СтрДлина(Наименование); МаксимальныйИндекс = 0; ОписаниеТипаИндекса = ОбщегоНазначения.ОписаниеТипаЧисло(10, 0); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл ОкончаниеНаименования = СокрЛП(Сред(Выборка.Наименование, ДлинаНаименования + 1)); Если ПустаяСтрока(ОкончаниеНаименования) Тогда Продолжить; КонецЕсли; ОкночаниеЯвляетсяИндексом = СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(ОкончаниеНаименования); Если ОкночаниеЯвляетсяИндексом Тогда МаксимальныйИндекс = Макс(ОписаниеТипаИндекса.ПривестиЗначение(ОкончаниеНаименования), МаксимальныйИндекс); КонецЕсли; КонецЦикла; Возврат МаксимальныйИндекс; КонецФункции // Возвращает список выбора для полей "Налоговая инспекция" // // Параметры: // Организация - СправочникСсылка.Организации // Период - Дата - налоговый период // // Возвращаемое значение: // СписокЗначений - список для установки в качестве списка выбора поля // Функция СписокВыбораНалоговыхИнспекций(Организация, Период = Неопределено) Экспорт СписокВыбора = Новый СписокЗначений; ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | ВидыДеятельностиЕНВД.РегистрацияВНалоговомОргане, | ВЫБОР | КОГДА ВидыДеятельностиЕНВД.Подразделение.ОбособленноеПодразделение ЕСТЬ NULL | ТОГДА ЛОЖЬ | ИНАЧЕ ВидыДеятельностиЕНВД.Подразделение.ОбособленноеПодразделение | КОНЕЦ КАК ОбособленноеПодразделение |ПОМЕСТИТЬ ВТ_РегистрацииВКачествеПлательщикаЕНВД |ИЗ | Справочник.ВидыДеятельностиЕНВД КАК ВидыДеятельностиЕНВД |ГДЕ | ВидыДеятельностиЕНВД.Владелец = &Владелец | И НЕ ВидыДеятельностиЕНВД.ПометкаУдаления | И &УсловиеПоПериоду |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | РегистрацииВНалоговомОргане.Ссылка, | РегистрацииВНалоговомОргане.Наименование КАК Наименование, | РегистрацииВНалоговомОргане.КПП КАК КПП, | ВЫБОР | КОГДА НЕ ВТ_РегистрацииВКачествеПлательщикаЕНВД.РегистрацияВНалоговомОргане ЕСТЬ NULL | И НЕ ВТ_РегистрацииВКачествеПлательщикаЕНВД.ОбособленноеПодразделение | ТОГДА 0 | КОГДА НЕ ВТ_РегистрацииВКачествеПлательщикаЕНВД.РегистрацияВНалоговомОргане ЕСТЬ NULL | ТОГДА 1 | КОГДА РегистрацииВНалоговомОргане.КПП ПОДОБНО &ШаблонКПП | ТОГДА 2 | ИНАЧЕ 3 | КОНЕЦ КАК Порядок |ИЗ | Справочник.РегистрацииВНалоговомОргане КАК РегистрацииВНалоговомОргане | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_РегистрацииВКачествеПлательщикаЕНВД КАК ВТ_РегистрацииВКачествеПлательщикаЕНВД | ПО (ВТ_РегистрацииВКачествеПлательщикаЕНВД.РегистрацияВНалоговомОргане = РегистрацииВНалоговомОргане.Ссылка) |ГДЕ | РегистрацииВНалоговомОргане.Владелец = &Владелец | И НЕ РегистрацииВНалоговомОргане.ПометкаУдаления | |УПОРЯДОЧИТЬ ПО | Порядок, | Наименование, | РегистрацииВНалоговомОргане.Ссылка"; ЭтоЮрЛицо = ОбщегоНазначенияБПВызовСервераПовтИсп.ЭтоЮрЛицо(Организация); Если ЭтоЮрЛицо Тогда КодПричиныПостановкиНаУчет = УчетЕНВД.КодПричиныПостановкиНаУчет(Организация); ШаблонКПП = "____" + КодПричиныПостановкиНаУчет + "___"; Иначе ШаблонКПП = ""; КонецЕсли; Запрос = Новый Запрос; Запрос.УстановитьПараметр("Владелец", ОбщегоНазначенияБПВызовСервераПовтИсп.ГоловнаяОрганизация(Организация)); Запрос.УстановитьПараметр("ШаблонКПП", ШаблонКПП); Если ЗначениеЗаполнено(Период) Тогда Запрос.УстановитьПараметр("НачалоКвартала", НачалоКвартала(Период)); Запрос.УстановитьПараметр("КонецКвартала", НачалоДня(КонецКвартала(Период))); Запрос.УстановитьПараметр("ПустаяДата", '00010101'); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеПоПериоду", "(ВидыДеятельностиЕНВД.ДатаПрекращения > &НачалоКвартала ИЛИ ВидыДеятельностиЕНВД.ДатаПрекращения = &ПустаяДата) | И (ВидыДеятельностиЕНВД.ДатаНачала <= &КонецКвартала ИЛИ ВидыДеятельностиЕНВД.ДатаНачала = &ПустаяДата)"); Иначе ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеПоПериоду", "ИСТИНА"); КонецЕсли; Запрос.Текст = ТекстЗапроса; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Если ЭтоЮрЛицо Тогда Представление = СтрШаблон(НСтр("ru = '%1 – КПП %2'"), Выборка.Наименование, Выборка.КПП); Иначе Представление = Выборка.Наименование; КонецЕсли; СписокВыбора.Добавить(Выборка.Ссылка, Представление); КонецЦикла; Возврат СписокВыбора; КонецФункции Функция ПодразделениеЗаполненоКорректно(ТекущийЭлемент, Организация, Подразделение, КодНалоговогоОргана, ТекстОшибки = "") Экспорт Если Не ЗначениеЗаполнено(Подразделение) Или Не ЗначениеЗаполнено(КодНалоговогоОргана) Тогда Возврат Истина; КонецЕсли; Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", ТекущийЭлемент); Запрос.УстановитьПараметр("Владелец", Организация); Запрос.УстановитьПараметр("Подразделение", Подразделение); Запрос.УстановитьПараметр("КодНалоговогоОргана", КодНалоговогоОргана); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | ВидыДеятельностиЕНВД.Ссылка КАК ВидДеятельности, | ВидыДеятельностиЕНВД.РегистрацияВНалоговомОргане.Наименование КАК НалоговаяИнспекция |ИЗ | Справочник.ВидыДеятельностиЕНВД КАК ВидыДеятельностиЕНВД |ГДЕ | НЕ ВидыДеятельностиЕНВД.ПометкаУдаления | И ВидыДеятельностиЕНВД.Ссылка <> &Ссылка | И ВидыДеятельностиЕНВД.Подразделение = &Подразделение | И ВидыДеятельностиЕНВД.РегистрацияВНалоговомОргане.Код <> &КодНалоговогоОргана"; Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда ТекстОшибки = СтрШаблон(НСтр("ru = 'Подразделение ""%1"" уже зарегистрировано в %2 (%3)'"), Подразделение, Выборка.НалоговаяИнспекция, Выборка.ВидДеятельности); Возврат Ложь; КонецЕсли; Возврат Истина; КонецФункции #КонецОбласти #КонецЕсли

Catalogs/ВидыДеятельностиЕНВД/ObjectModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ОбработчикиСобытий Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда Если ДанныеЗаполнения.Свойство("Владелец") Тогда Если ТипЗнч(ДанныеЗаполнения.Владелец) = Тип("СписокЗначений") И ДанныеЗаполнения.Количество() > 0 Тогда ДанныеЗаполнения.Владелец = БухгалтерскийУчетПереопределяемый.ГоловнаяОрганизация(ДанныеЗаполнения.Владелец[0].Значение); КонецЕсли; Иначе Если ДанныеЗаполнения.Свойство("Организация") Тогда ДанныеЗаполнения.Вставить("Владелец", ДанныеЗаполнения.Организация); Иначе ДанныеЗаполнения.Вставить("Владелец", БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация")); КонецЕсли; КонецЕсли; Если Не ДанныеЗаполнения.Свойство("ДатаНачала") Тогда ДанныеЗаполнения.Вставить("ДатаНачала", НачалоКвартала(ОбщегоНазначения.ТекущаяДатаПользователя())); КонецЕсли; Иначе Владелец = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация"); ДатаНачала = НачалоКвартала(ОбщегоНазначения.ТекущаяДатаПользователя()); КонецЕсли; КонецПроцедуры Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) МассивНепроверяемыхРеквизитов = Новый Массив; Если ЗначениеЗаполнено(КодВидаДеятельности) Тогда Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(КодВидаДеятельности, "РегистрацияПоМестуНахожденияОрганизации") Тогда МассивНепроверяемыхРеквизитов.Добавить("КодПоОКТМО"); КонецЕсли; КонецЕсли; Если ЗначениеЗаполнено(ДатаНачала) И ЗначениеЗаполнено(ДатаПрекращения) Тогда Если ДатаПрекращения <= ДатаНачала Тогда ТекстОшибки = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения("Поле", "Корректность", Метаданные().Реквизиты.ДатаПрекращения.Синоним); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ЭтотОбъект, "ДатаПрекращения", , Отказ); КонецЕсли; КонецЕсли; ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов); КонецПроцедуры Процедура ПередЗаписью(Отказ) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; Если ЗначениеЗаполнено(КодВидаДеятельности) И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(КодВидаДеятельности, "РегистрацияПоМестуНахожденияОрганизации") Тогда Адрес = ""; КодПоОКТМО = ""; КонецЕсли; АдресСтрокой = УправлениеКонтактнойИнформацией.ПредставлениеКонтактнойИнформации(Адрес); КонецПроцедуры Процедура ПриКопировании(ОбъектКопирования) ДатаНачала = НачалоКвартала(ОбщегоНазначения.ТекущаяДатаПользователя()); ДатаПрекращения = '00010101'; КонецПроцедуры #КонецОбласти #КонецЕсли

Catalogs/ВидыДеятельностиЕНВД/Forms/ВмененныйДоход/Form/Module

#Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Организация = Параметры.Организация; НачалоПериода = Параметры.НачалоПериода; КонецПериода = Параметры.КонецПериода; Заголовок = СтрШаблон( НСтр("ru = 'Вмененный доход%1'"), БухгалтерскиеОтчетыКлиентСервер.ПолучитьПредставлениеПериода(НачалоПериода, КонецПериода)); ЗаполнитьСписок(); КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ИмяСобытия = "ИзмененВидДеятельностиОрганизации" Тогда Если ТипЗнч(Параметр) = Тип("СправочникСсылка.Организации") И Параметр = Организация Тогда ЗаполнитьСписок(); КонецЕсли; КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовТаблицыФормыСписок &НаКлиенте Процедура СписокПередНачаломИзменения(Элемент, Отказ) Отказ = Истина; ТекущиеДанные = Элементы.Список.ТекущиеДанные; Если ТекущиеДанные <> Неопределено Тогда ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("ИзменениеВидаДеятельностиЗавершение", ЭтотОбъект); СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("Ключ", ТекущиеДанные.ВидДеятельности); ОткрытьФорму("Справочник.ВидыДеятельностиЕНВД.ФормаОбъекта", СтруктураПараметров, ЭтотОбъект, , , , ОписаниеОповещенияОЗакрытии) КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ИзменениеВидаДеятельностиЗавершение(Результат, ДополнительныеПараметры) Экспорт ЗаполнитьСписок(); КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура Обновить(Команда) ЗаполнитьСписок(); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаСервере Процедура ЗаполнитьСписок() Экспорт Если НачалоПериода > КонецПериода Тогда Список.Очистить(); Возврат; КонецЕсли; ТаблицаСписка = Новый ТаблицаЗначений; ТаблицаСписка.Колонки.Добавить("ВидДеятельности", Новый ОписаниеТипов("СправочникСсылка.ВидыДеятельностиЕНВД")); ТаблицаСписка.Колонки.Добавить("Наименование", ОбщегоНазначения.ОписаниеТипаСтрока(50)); ТаблицаСписка.Колонки.Добавить("Сумма", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2)); Период = КонецКвартала(НачалоПериода); Пока Период <= КонецКвартала(КонецПериода) Цикл ВидыДеятельности = УчетЕНВД.ПоказателиВидовДеятельности(Период, Организация); Если ВидыДеятельности = Неопределено Тогда Период = КонецКвартала(ДобавитьМесяц(Период, 3)); // Следующий квартал Продолжить; КонецЕсли; ВидыДеятельности.Колонки.Добавить("Сумма", ОбщегоНазначения.ОписаниеТипаЧисло(15, 2)); Для Каждого ВидДеятельности Из ВидыДеятельности Цикл ПараметрыРасчетаСуммыНалога = УчетЕНВДКлиентСервер.НовыеПараметрыРасчетаСуммыНалога(); ЗаполнитьЗначенияСвойств(ПараметрыРасчетаСуммыНалога, ВидДеятельности); ПараметрыРасчетаСуммыНалога.Период = Период; НоваяСтрока = ТаблицаСписка.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, ВидДеятельности); НоваяСтрока.Сумма = УчетЕНВДКлиентСервер.ВмененныйДоходЗаКвартал(ПараметрыРасчетаСуммыНалога); КонецЦикла; Период = КонецКвартала(ДобавитьМесяц(Период, 3)); // Следующий квартал КонецЦикла; Если ТаблицаСписка <> Неопределено Тогда ТаблицаСписка.Свернуть("ВидДеятельности, Наименование", "Сумма"); ТаблицаСписка.Сортировать("ВидДеятельности", Новый СравнениеЗначений); Список.Загрузить(ТаблицаСписка); СуммаИтог = ОбщегоНазначенияБПВызовСервера.ФорматСумм(ТаблицаСписка.Итог("Сумма")); Элементы.СписокСумма.ТекстПодвала = ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаИтог, , "0.00", " "); Иначе Элементы.СписокСумма.ТекстПодвала = ""; КонецЕсли; КонецПроцедуры #КонецОбласти

Catalogs/ВидыДеятельностиЕНВД/Forms/ФормаВыбора/Form/Module

#Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) УстановленОтборПоВладельцу = Параметры.Отбор.Свойство("Владелец"); ВидимостьОрганизации = Не УстановленОтборПоВладельцу И Справочники.Организации.ИспользуетсяНесколькоОрганизаций(); Элементы.Владелец.Видимость = ВидимостьОрганизации; Элементы.Список.Шапка = ВидимостьОрганизации; Параметры.Свойство("Организация", Организация); Параметры.Свойство("РегистрацияВНалоговомОргане", ОтборРегистрацияВНалоговомОргане); ОтборРегистрацияВНалоговомОрганеИспользование = ЗначениеЗаполнено(ОтборРегистрацияВНалоговомОргане); Если ЗначениеЗаполнено(Организация) Тогда ОтборыСписковКлиентСервер.УстановитьБыстрыйОтбор(ЭтотОбъект, "РегистрацияВНалоговомОргане"); КонецЕсли; ЗаполнитьСписокВыбораНалоговыхИнспекций(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ИмяСобытия = "ИзмененВидДеятельностиОрганизации" Тогда Если Параметр = Организация Тогда ЗаполнитьСписокВыбораНалоговыхИнспекций(ЭтотОбъект); КонецЕсли; КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовШапкиФормы &НаКлиенте Процедура ОтборРегистрацияВНалоговомОрганеИспользованиеПриИзменении(Элемент) ОтборыСписковКлиентСервер.УстановитьБыстрыйОтбор(ЭтотОбъект, "РегистрацияВНалоговомОргане"); КонецПроцедуры &НаКлиенте Процедура ОтборНалоговаяИнспекцияПриИзменении(Элемент) ОтборыСписковКлиентСервер.УстановитьБыстрыйОтбор(ЭтотОбъект, "РегистрацияВНалоговомОргане"); КонецПроцедуры &НаКлиенте Процедура СписокВыборЗначения(Элемент, Значение, СтандартнаяОбработка) Если ЭтотОбъект.ОписаниеОповещенияОЗакрытии <> Неопределено Тогда Регистрация = РегистрацияВНалоговомОрганеВыбранногоВидаДеятельности(Значение); Если ЗначениеЗаполнено(Регистрация) Тогда ДополнительныеПараметры = ЭтотОбъект.ОписаниеОповещенияОЗакрытии.ДополнительныеПараметры; ДополнительныеПараметры.Вставить("РегистрацияВНалоговомОргане", Регистрация); КонецЕсли; КонецЕсли; КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаКлиентеНаСервереБезКонтекста Процедура ЗаполнитьСписокВыбораНалоговыхИнспекций(Форма) Элементы = Форма.Элементы; Элементы.ОтборРегистрацияВНалоговомОргане.СписокВыбора.Очистить(); Если ЗначениеЗаполнено(Форма.Организация) Тогда СписокВыбораНалоговыхИнспекций = СписокВыбораНалоговыхИнспекций(Форма.Организация); Для Каждого НалоговаяИнспекция Из СписокВыбораНалоговыхИнспекций Цикл Элементы.ОтборРегистрацияВНалоговомОргане.СписокВыбора.Добавить(НалоговаяИнспекция.Значение, НалоговаяИнспекция.Представление); КонецЦикла; Элементы.ГруппаОтборРегистрацияВНалоговомОргане.Видимость = (СписокВыбораНалоговыхИнспекций.Количество() > 1); Иначе Элементы.ГруппаОтборРегистрацияВНалоговомОргане.Видимость = Ложь; КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция СписокВыбораНалоговыхИнспекций(Организация) Возврат Справочники.ВидыДеятельностиЕНВД.СписокВыбораНалоговыхИнспекций(Организация); КонецФункции &НаСервереБезКонтекста Функция РегистрацияВНалоговомОрганеВыбранногоВидаДеятельности(ВыбранныеВидыДеятельности) Если ТипЗнч(ВыбранныеВидыДеятельности) = Тип("Массив") Тогда Если ВыбранныеВидыДеятельности.Количество() = 0 Тогда Возврат Неопределено; Иначе ВидДеятельности = ВыбранныеВидыДеятельности[0]; КонецЕсли; Иначе ВидДеятельности = ВыбранныеВидыДеятельности; КонецЕсли; Если НЕ ЗначениеЗаполнено(ВидДеятельности) Тогда Возврат Неопределено; КонецЕсли; Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта( ВидДеятельности, "РегистрацияВНалоговомОргане"); КонецФункции #КонецОбласти

Catalogs/ВидыДеятельностиЕНВД/Forms/ФормаВыбораПричиныЗаявления/Form/Module

#Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Список.Добавить("1", НСтр("ru = 'Прекращение предпринимательской деятельности'")); Список.Добавить("2", НСтр("ru = 'Переход на иной режим налогообложения'")); Список.Добавить("3", НСтр("ru = 'Нарушение условий применения ЕНВД'")); Список.Добавить("4", НСтр("ru = 'Иное'")); КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовТаблицыФормыСписок &НаКлиенте Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) ТекущиеДанные = Элементы.Список.ТекущиеДанные; Если ТекущиеДанные <> Неопределено Тогда Закрыть(ТекущиеДанные.Значение); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура ОК(Команда) ТекущиеДанные = Элементы.Список.ТекущиеДанные; Если ТекущиеДанные <> Неопределено Тогда Закрыть(ТекущиеДанные.Значение); КонецЕсли; КонецПроцедуры #КонецОбласти

Catalogs/ВидыДеятельностиЕНВД/Forms/ФормаСписка/Form/Module

#Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Перем ОтборВладелец; ИспользуетсяНесколькоОрганизаций = Справочники.Организации.ИспользуетсяНесколькоОрганизаций(); Если ИспользуетсяНесколькоОрганизаций Тогда УстановленОтборПоВладельцу = Параметры.Отбор.Свойство("Владелец", ОтборВладелец); Если УстановленОтборПоВладельцу Тогда ОтборОрганизация = ОтборВладелец; Иначе ОтборОрганизация = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация"); ОтборОрганизацияИспользование = ЗначениеЗаполнено(ОтборОрганизация); ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора( Список.КомпоновщикНастроек.ФиксированныеНастройки.Отбор, "Владелец", ОтборОрганизация, , , ОтборОрганизацияИспользование); КонецЕсли; КонецЕсли; Элементы.Владелец.Видимость = Не УстановленОтборПоВладельцу И ИспользуетсяНесколькоОрганизаций; Элементы.ГруппаОтборОрганизация.Видимость = Не УстановленОтборПоВладельцу И ИспользуетсяНесколькоОрганизаций; Элементы.ОтборОрганизацияНадпись.Видимость = УстановленОтборПоВладельцу И ИспользуетсяНесколькоОрганизаций; ВестиУчетЮридическогоЛица = ПолучитьФункциональнуюОпцию("ВестиУчетЮридическогоЛица"); ВестиУчетИндивидуальногоПредпринимателя = ПолучитьФункциональнуюОпцию("ВестиУчетИндивидуальногоПредпринимателя"); ФормыЗавленияОПостановкеНаУчет = Новый Массив; ФормыЗавленияОСнятииСУчета = Новый Массив; Если ВестиУчетЮридическогоЛица Тогда ФормыЗавленияОПостановкеНаУчет.Добавить("ЕНВД-1"); ФормыЗавленияОСнятииСУчета.Добавить("ЕНВД-3"); КонецЕсли; Если ВестиУчетИндивидуальногоПредпринимателя Тогда ФормыЗавленияОПостановкеНаУчет.Добавить("ЕНВД-2"); ФормыЗавленияОСнятииСУчета.Добавить("ЕНВД-4"); КонецЕсли; Элементы.ФормаПостановкаНаУчет.Заголовок = СтрШаблон("%1 (%2)", НСтр("ru = 'Постановка на учет'"), СтрСоединить(ФормыЗавленияОПостановкеНаУчет, ", ")); Элементы.ФормаСнятиеСУчета.Заголовок = СтрШаблон("%1 (%2)", НСтр("ru = 'Снятие с учета'"), СтрСоединить(ФормыЗавленияОСнятииСУчета, ", ")); КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ИмяСобытия = "ИзменениеОсновнойОрганизации" И Не УстановленОтборПоВладельцу Тогда ОтборОрганизация = Параметр; ОтборОрганизацияИспользование = ЗначениеЗаполнено(ОтборОрганизация); ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора( Список.КомпоновщикНастроек.ФиксированныеНастройки.Отбор, "Владелец", ОтборОрганизация, , , ОтборОрганизацияИспользование); КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовШапкиФормы &НаКлиенте Процедура ОтборОрганизацияИспользованиеПриИзменении(Элемент) ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора( Список.КомпоновщикНастроек.ФиксированныеНастройки.Отбор, "Владелец", ОтборОрганизация, , , ОтборОрганизацияИспользование); КонецПроцедуры &НаКлиенте Процедура ОтборОрганизацияПриИзменении(Элемент) Если ЗначениеЗаполнено(ОтборОрганизация) Тогда ОтборОрганизацияИспользование = Истина; КонецЕсли; ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора( Список.КомпоновщикНастроек.ФиксированныеНастройки.Отбор, "Владелец", ОтборОрганизация, , , ОтборОрганизацияИспользование); КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура ПостановкаНаУчет(Команда) ВидыЗаявлений = Новый Соответствие; Если ВестиУчетЮридическогоЛица Тогда ЭтоЮрЛицо = Истина; ВидыЗаявлений.Вставить(ЭтоЮрЛицо, ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ФормаЕНВД1")); КонецЕсли; Если ВестиУчетИндивидуальногоПредпринимателя Тогда ЭтоЮрЛицо = Ложь; ВидыЗаявлений.Вставить(ЭтоЮрЛицо, ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ФормаЕНВД2")); КонецЕсли; СоздатьЗаявления(ВидыЗаявлений); КонецПроцедуры &НаКлиенте Процедура СнятиеСУчета(Команда) ВидыЗаявлений = Новый Соответствие; Если ВестиУчетЮридическогоЛица Тогда ЭтоЮрЛицо = Истина; ВидыЗаявлений.Вставить(ЭтоЮрЛицо, ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ФормаЕНВД3")); КонецЕсли; Если ВестиУчетИндивидуальногоПредпринимателя Тогда ЭтоЮрЛицо = Ложь; ВидыЗаявлений.Вставить(ЭтоЮрЛицо, ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ФормаЕНВД4")); КонецЕсли; СоздатьЗаявления(ВидыЗаявлений); КонецПроцедуры &НаКлиенте Процедура ИзменитьВыделенные(Команда) ГрупповоеИзменениеОбъектовКлиент.ИзменитьВыделенные(Элементы.Список); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаКлиенте Процедура СоздатьЗаявления(ВидыЗаявлений) ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки; МассивРегистраций = Новый Массив; УникальныеЗначенияРегистраций = Новый Соответствие; Для Каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл ТекущиеДанные = Элементы.Список.ДанныеСтроки(ВыделеннаяСтрока); РегистрацияВНалоговомОргане = ТекущиеДанные.РегистрацияВНалоговомОргане; Если УникальныеЗначенияРегистраций[РегистрацияВНалоговомОргане] <> Неопределено Тогда Продолжить; КонецЕсли; МассивРегистраций.Добавить(РегистрацияВНалоговомОргане); УникальныеЗначенияРегистраций.Вставить(РегистрацияВНалоговомОргане, Истина); КонецЦикла; Для Каждого РегистрацияВНалоговомОргане Из МассивРегистраций Цикл МассивВидовДеятельности = Новый Массив; Организация = Неопределено; Для Каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл ТекущиеДанные = Элементы.Список.ДанныеСтроки(ВыделеннаяСтрока); Если ТекущиеДанные.РегистрацияВНалоговомОргане = РегистрацияВНалоговомОргане Тогда Если Организация = Неопределено Или Организация = ТекущиеДанные.Владелец Тогда МассивВидовДеятельности.Добавить(ТекущиеДанные.Ссылка); Организация = ТекущиеДанные.Владелец; КонецЕсли; КонецЕсли; КонецЦикла; Если МассивВидовДеятельности.Количество() <> 0 Тогда ВидЗаявления = ВидыЗаявлений.Получить(ОбщегоНазначенияБПВызовСервераПовтИсп.ЭтоЮрЛицо(Организация)); Если ВидЗаявления = Неопределено Тогда Продолжить; КонецЕсли; ОткрытьФормуЗаявления(ВидЗаявления, Организация, РегистрацияВНалоговомОргане, МассивВидовДеятельности); КонецЕсли; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ОткрытьФормуЗаявления(ВидЗаявления, Организация, РегистрацияВНалоговомОргане, ВидыДеятельности) ПараметрыЗаполнения = Новый Структура; ПараметрыЗаполнения.Вставить("ВидыДеятельности", ВидыДеятельности); ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Организация", Организация); ПараметрыФормы.Вставить("НалоговыйОрган", РегистрацияВНалоговомОргане); ПараметрыФормы.Вставить("ПараметрыЗаполнения", ПараметрыЗаполнения); ПараметрыФормы.Вставить("СформироватьФормуОтчетаАвтоматически", Истина); УчетЕНВДКлиент.ОткрытьФормуЗаявления(ВидЗаявления, ПараметрыФормы, ЭтотОбъект); КонецПроцедуры #КонецОбласти

Catalogs/ВидыДеятельностиЕНВД/Forms/ФормаЭлемента/Form/Module

#Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) УстановитьУсловноеОформление(); Если ЗначениеЗаполнено(Объект.Владелец) Тогда ВладелецЮрЛицо = ОбщегоНазначенияБПВызовСервераПовтИсп.ЭтоЮрЛицо(Объект.Владелец); КонецЕсли; ИспользуетсяНесколькоОрганизаций = Справочники.Организации.ИспользуетсяНесколькоОрганизаций(); Элементы.Владелец.Видимость = Не ЗначениеЗаполнено(Объект.Владелец) И ИспользуетсяНесколькоОрганизаций; Элементы.ВладелецНадпись.Видимость = ЗначениеЗаполнено(Объект.Владелец) И ИспользуетсяНесколькоОрганизаций; ВидКонтактнойИнформацииАдреса = Новый Структура; ВидКонтактнойИнформацииАдреса.Вставить("Тип", Перечисления.ТипыКонтактнойИнформации.Адрес); ВидКонтактнойИнформацииАдреса.Вставить("ТолькоНациональныйАдрес", Истина); ВидКонтактнойИнформацииАдреса.Вставить("ВключатьСтрануВПредставление", Ложь); ВидКонтактнойИнформацииАдреса.Вставить("СкрыватьНеактуальныеАдреса", Истина); Если Не ПустаяСтрока(Объект.Адрес) Тогда АдресМестаОсуществленияДетельности = УправлениеКонтактнойИнформацией.ПредставлениеКонтактнойИнформации(Объект.Адрес); Иначе АдресМестаОсуществленияДетельности = УправлениеКонтактнойИнформациейКлиентСервер.ТекстПустогоАдресаВВидеГиперссылки(); КонецЕсли; КомментарийАдреса = УправлениеКонтактнойИнформацией.КомментарийКонтактнойИнформации(Объект.Адрес); Период = ОбщегоНазначения.ТекущаяДатаПользователя(); ПрочитатьЗначенияРеквизитовФормы(); ПрочитатьРегистрациюВНалоговомОргане(); УправлениеФормой(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда Модифицированность = Истина; ЗаполнитьЗначенияСвойств(РегистрацияВНалоговомОргане, ВыбранноеЗначение); Если ВыбранноеЗначение.Свойство("Представитель") Тогда ОтчетностьПодписываетПредставитель = ?(ЗначениеЗаполнено(РегистрацияВНалоговомОргане.Представитель), 1, 0); КонецЕсли; КонецЕсли; УправлениеФормой(ЭтотОбъект); КонецПроцедуры &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Если РегистрацияВНалоговомОргане.Ссылка.Пустая() И Не ПустаяСтрока(РегистрацияВНалоговомОргане.Код) Тогда // При записи будет создана новая регистрация ТекущийОбъект.РегистрацияВНалоговомОргане = Справочники.РегистрацииВНалоговомОргане.ПолучитьСсылку(УникальныйИдентификатор); КонецЕсли КонецПроцедуры &НаСервере Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Если Не РегистрацияВНалоговомОргане.Ссылка.Пустая() Или Не ПустаяСтрока(РегистрацияВНалоговомОргане.Код) Тогда РегистрацияВНалоговомОрганеОбъект = РеквизитФормыВЗначение("РегистрацияВНалоговомОргане"); Если Не РегистрацияВНалоговомОргане.Ссылка.Пустая() Тогда РегистрацияВНалоговомОрганеОбъект.Заблокировать(); Иначе РегистрацияВНалоговомОрганеОбъект.УстановитьСсылкуНового(ТекущийОбъект.РегистрацияВНалоговомОргане); КонецЕсли; РегистрацияВНалоговомОрганеОбъект.Владелец = ОбщегоНазначенияБПВызовСервераПовтИсп.ГоловнаяОрганизация(ТекущийОбъект.Владелец); РегистрацияВНалоговомОрганеОбъект.Записать(); ЗначениеВРеквизитФормы(РегистрацияВНалоговомОрганеОбъект, "РегистрацияВНалоговомОргане"); КонецЕсли; ПериодТекущихЗначений = ?(Объект.Ссылка.Пустая(), Объект.ДатаНачала, Период); // Физический показатель ФизическиеПоказателиЕНВДКлючЗаписи = РегистрыСведений.ФизическиеПоказателиЕНВД.СоздатьКлючЗаписи( Новый Структура("Организация, ВидДеятельности", ТекущийОбъект.Владелец, ТекущийОбъект.Ссылка)); ЗаблокироватьДанныеДляРедактирования(ФизическиеПоказателиЕНВДКлючЗаписи); РегистрыСведений.ФизическиеПоказателиЕНВД.ЗаписатьФизическийПоказатель( ФизическийПоказатель, ФизическиеПоказателиЕНВДКлючЗаписи, ПериодТекущихЗначений); ПараметрыЗаписи.Вставить("ФизическиеПоказателиЕНВДКлючЗаписи", ФизическиеПоказателиЕНВДКлючЗаписи); // Корректирующий коэффициент, Налоговая ставка РегиональныеОсобенностиЕНВДКлючЗаписи = РегистрыСведений.РегиональныеОсобенностиЕНВД.СоздатьКлючЗаписи( Новый Структура("Организация, ВидДеятельности", ТекущийОбъект.Владелец, ТекущийОбъект.Ссылка)); ЗаблокироватьДанныеДляРедактирования(РегиональныеОсобенностиЕНВДКлючЗаписи); РегистрыСведений.РегиональныеОсобенностиЕНВД.ЗаписатьРегиональныеОсобенности( КорректирующийКоэффициент, НалоговаяСтавка, РегиональныеОсобенностиЕНВДКлючЗаписи, ПериодТекущихЗначений); ПараметрыЗаписи.Вставить("РегиональныеОсобенностиЕНВДКлючЗаписи", РегиональныеОсобенностиЕНВДКлючЗаписи); КонецПроцедуры &НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) Если ЗначениеЗаполнено(Объект.РегистрацияВНалоговомОргане) Тогда ОповеститьОбИзменении(Объект.РегистрацияВНалоговомОргане); КонецЕсли; ОповеститьОбИзменении(ПараметрыЗаписи.ФизическиеПоказателиЕНВДКлючЗаписи); ОповеститьОбИзменении(ПараметрыЗаписи.РегиональныеОсобенностиЕНВДКлючЗаписи); Оповестить("ИзмененВидДеятельностиОрганизации", Объект.Владелец, ЭтотОбъект); КонецПроцедуры &НаСервере Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) Если Не РегистрацияПоМестуНахожденияОрганизации И ПустаяСтрока(Объект.Адрес) Тогда ТекстСообщения = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения(, , НСтр("ru = 'Адрес места осуществления деятельности'")); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, , "АдресМестаОсуществленияДетельности", , Отказ); КонецЕсли; Если БухгалтерскийУчетПереопределяемый.ВестиУчетПоПодразделениям() Тогда ТекстОшибки = ""; Если Не Справочники.ВидыДеятельностиЕНВД.ПодразделениеЗаполненоКорректно( Объект.Ссылка, Объект.Владелец, Объект.Подразделение, РегистрацияВНалоговомОргане.Код, ТекстОшибки) Тогда ТекстСообщения = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения("Поле", "Корректность", "Подразделение") + ТекстОшибки; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, , "Подразделение", "Объект", Отказ); КонецЕсли; КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовШапкиФормы &НаКлиенте Процедура ВладелецПриИзменении(Элемент) ВладелецОбработатьИзменение(); КонецПроцедуры &НаКлиенте Процедура КодВидаДеятельностиПриИзменении(Элемент) Если ЗначениеЗаполнено(Объект.КодВидаДеятельности) Тогда СвойстваКодаВидаДеятельности = СвойстваКодаВидаДеятельности(Объект.КодВидаДеятельности); ЗаполнитьЗначенияСвойств(ЭтотОбъект, СвойстваКодаВидаДеятельности); Объект.Наименование = СвойстваКодаВидаДеятельности.Наименование + ОкончаниеНаименования(Объект.КодВидаДеятельности, Объект.Владелец, Объект.Ссылка); Если ЗначениеЗаполнено(Объект.Владелец) И РегистрацияПоМестуНахожденияОрганизации Тогда КодНалоговогоОрганаПоМестуНахожденияОрганизации = КодНалоговогоОрганаПоМестуНахождения(Объект.Владелец); Если Не ПустаяСтрока(КодНалоговогоОрганаПоМестуНахожденияОрганизации) И РегистрацияВНалоговомОргане.Код <> КодНалоговогоОрганаПоМестуНахожденияОрганизации Тогда РегистрацияВНалоговомОргане.Код = КодНалоговогоОрганаПоМестуНахожденияОрганизации; ЗаполнитьРегистрациюВНалоговомОрганеПоКоду(); КонецЕсли; КонецЕсли; УправлениеФормой(ЭтотОбъект); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура АдресМестаОсуществленияДетельностиНажатие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("ВидКонтактнойИнформации", ВидКонтактнойИнформацииАдреса); ПараметрыФормы.Вставить("ЗначенияПолей", Объект.Адрес); ПараметрыФормы.Вставить("Представление", ?(Не ПустаяСтрока(Объект.Адрес), АдресМестаОсуществленияДетельности, "")); ПараметрыФормы.Вставить("Комментарий", КомментарийАдреса); ПараметрыФормы.Вставить("Заголовок", НСтр("ru = 'Адрес места осуществления предпринимательской деятельности'")); Оповещение = Новый ОписаниеОповещения("АдресМестаОсуществленияДетельностиНажатиеЗавершение", ЭтотОбъект); УправлениеКонтактнойИнформациейКлиент.ОткрытьФормуКонтактнойИнформации(ПараметрыФормы, Элемент, Оповещение); КонецПроцедуры &НаКлиенте Процедура АдресМестаОсуществленияДетельностиНажатиеЗавершение(Знач Результат, Знач ДополнительныеПараметры) Экспорт Если ТипЗнч(Результат) <> Тип("Структура") Тогда Возврат; КонецЕсли; Объект.Адрес = Результат.КонтактнаяИнформация; КомментарийАдреса = Результат.Комментарий; Если Не ПустаяСтрока(Объект.Адрес) Тогда АдресМестаОсуществленияДетельности = Результат.Представление; СведенияОНалоговомОргане = СведенияОНалоговомОрганеПоАдресу(Объект.Адрес, ВладелецЮрЛицо); Если СведенияОНалоговомОргане <> Неопределено Тогда Если ЗначениеЗаполнено(СведенияОНалоговомОргане.КодПоОКТМО) Тогда Объект.КодПоОКТМО = СведенияОНалоговомОргане.КодПоОКТМО; КонецЕсли; Если ЗначениеЗаполнено(СведенияОНалоговомОргане.КодНалоговогоОргана) Тогда Если НЕ ЗначениеЗаполнено(РегистрацияВНалоговомОргане.Код) Тогда РегистрацияВНалоговомОргане.Код = СведенияОНалоговомОргане.КодНалоговогоОргана; ЗаполнитьРегистрациюВНалоговомОрганеПоКоду(Истина); ИначеЕсли РегистрацияВНалоговомОргане.Код <> СведенияОНалоговомОргане.КодНалоговогоОргана Тогда ТекстВопроса = СтрШаблон(НСтр("ru = 'Выбранный адрес обслуживается налоговой инспекцией с кодом %1. |Заменить налоговую инспекцию?'"), СведенияОНалоговомОргане.КодНалоговогоОргана); ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьРеквизитыНалоговойИнспекцииПоКодуЗавершение", ЭтотОбъект, СведенияОНалоговомОргане.КодНалоговогоОргана); ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет); КонецЕсли; КонецЕсли; КонецЕсли; Иначе АдресМестаОсуществленияДетельности = УправлениеКонтактнойИнформациейКлиентСервер.ТекстПустогоАдресаВВидеГиперссылки(); КонецЕсли; УправлениеФормой(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура ЗаполнитьРеквизитыНалоговойИнспекцииПоКодуЗавершение(РезультатыЗакрытия, КодНалоговогоОргана) Экспорт Если РезультатыЗакрытия = КодВозвратаДиалога.Да Тогда РегистрацияВНалоговомОргане.Код = КодНалоговогоОргана; ЗаполнитьРегистрациюВНалоговомОрганеПоКоду(Истина); КонецЕсли; УправлениеФормой(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура ДатаНачалаПриИзменении(Элемент) УправлениеФормой(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура ДатаПрекращенияПриИзменении(Элемент) УправлениеФормой(ЭтотОбъект); КонецПроцедуры #Область ГруппаНалоговыйОрган &НаКлиенте Процедура РегистрацияВНалоговомОрганеКПППриИзменении(Элемент) ЗаполнитьРегистрациюВНалоговомОрганеПоКоду(); УправлениеФормой(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура КодНалоговогоОрганаПриИзменении(Элемент) ЗаполнитьРегистрациюВНалоговомОрганеПоКоду(); УправлениеФормой(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура РегистрацияВНалоговомОрганеНаименованиеПриИзменении(Элемент) Модифицированность = Истина; УправлениеФормой(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура РегистрацияВНалоговомОрганеНаименованиеИФНСПриИзменении(Элемент) Модифицированность = Истина; КонецПроцедуры &НаКлиенте Процедура ПлатежныеРеквизитыФНСПредставлениеНажатие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ПараметрыФормы = Новый Структура(); ПараметрыФормы.Вставить("ВидГосударственногоОргана", ПредопределенноеЗначение("Перечисление.ВидыГосударственныхОрганов.НалоговыйОрган")); ПараметрыФормы.Вставить("КодГосударственногоОргана", РегистрацияВНалоговомОргане.Код); ПараметрыФормы.Вставить("НаименованиеГосударственногоОргана", РегистрацияВНалоговомОргане.НаименованиеИФНС); ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр); ОписаниеОповещения = Новый ОписаниеОповещения("ОбработатьИзменениеПлатежныхРеквизитовФНС", ЭтотОбъект, ПараметрыФормы); ОткрытьФорму("Справочник.Контрагенты.Форма.ПлатежныеРеквизитыГосударственныхОрганов", ПараметрыФормы, ЭтотОбъект, ЭтотОбъект, , , ОписаниеОповещения); КонецПроцедуры &НаКлиенте Процедура ОбработатьИзменениеПлатежныхРеквизитовФНС(Результат, ДополнительныеПараметры) Экспорт Если Результат = Истина Тогда ПлатежныеРеквизитыФНС = ПредставлениеПлатежныхРеквизитовФНС(ДополнительныеПараметры.КодГосударственногоОргана); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ОтчетностьПодписываетПредставительПриИзменении(Элемент) Модифицированность = Истина; Если ОтчетностьПодписываетПредставитель = 0 Тогда РегистрацияВНалоговомОргане.Представитель = Неопределено; РегистрацияВНалоговомОргане.УполномоченноеЛицоПредставителя = ""; РегистрацияВНалоговомОргане.ДокументПредставителя = ""; РегистрацияВНалоговомОргане.Доверенность = ""; КонецЕсли; УправлениеФормой(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура ПредставлениеПредставителяНажатие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ЗначенияЗаполнения = Новый Структура("Владелец, Представитель, УполномоченноеЛицоПредставителя, ДокументПредставителя, Доверенность"); ЗаполнитьЗначенияСвойств(ЗначенияЗаполнения, РегистрацияВНалоговомОргане); ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЗначенияЗаполнения); ОткрытьФорму("Справочник.РегистрацииВНалоговомОргане.Форма.ФормаПредставителя", ПараметрыФормы, ЭтотОбъект, КлючУникальности); КонецПроцедуры #КонецОбласти #Область ГруппаРасчетНалога &НаКлиенте Процедура ФизическийПоказательПриИзменении(Элемент) УправлениеФормой(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура КорректирующийКоэффициентПриИзменении(Элемент) УправлениеФормой(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура НалоговаяСтавкаПриИзменении(Элемент) УправлениеФормой(ЭтотОбъект); КонецПроцедуры #КонецОбласти #КонецОбласти #Область ОбработчикиКомандФормы &НаКлиенте Процедура ПостановкаНаУчетОрганизации(Команда) СоздатьЗаявление(ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ФормаЕНВД1")); КонецПроцедуры &НаКлиенте Процедура ПостановкаНаУчетИП(Команда) СоздатьЗаявление(ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ФормаЕНВД2")); КонецПроцедуры &НаКлиенте Процедура СнятиеСУчетаОрганизации(Команда) СоздатьЗаявление(ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ФормаЕНВД3")); КонецПроцедуры &НаКлиенте Процедура СнятиеСУчетаИП(Команда) СоздатьЗаявление(ПредопределенноеЗначение("Перечисление.ВидыУведомленийОСпецрежимахНалогообложения.ФормаЕНВД4")); КонецПроцедуры #Область ГруппаНалоговыйОрган &НаКлиенте Процедура ЗаполнитьРеквизитыНалоговогоОрганаПоКоду(Команда) Перем ОписаниеОшибки; Если Не ЗначениеЗаполнено(РегистрацияВНалоговомОргане.Код) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Поле ""Код инспекции"" не заполнено'"), , "РегистрацияВНалоговомОргане.Код"); ТекущийЭлемент = Элементы.КодНалоговогоОргана; Возврат; КонецЕсли; ЗаполнитьРегистрациюВНалоговомОрганеПоКоду(Истина, ОписаниеОшибки); Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда Если ОписаниеОшибки = "НеУказаныПараметрыАутентификации" Тогда ТекстВопроса = НСтр("ru='Для автоматического заполнения реквизитов контрагентов |необходимо подключиться к Интернет-поддержке пользователей. |Подключиться сейчас?'"); ПараметрыВопроса = Новый Структура("ВызовПослеПодключения", "ЗаполнитьСведенияОНалоговойИнспекцииПоКоду"); ОписаниеОповещения = Новый ОписаниеОповещения("ПодключитьИнтернетПоддержку", ЭтотОбъект, ПараметрыВопроса); ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет); Иначе ПоказатьПредупреждение(, ОписаниеОшибки); КонецЕсли; КонецЕсли; КонецПроцедуры #КонецОбласти #Область ГруппаРасчетНалога &НаКлиенте Процедура ФизическийПоказательИстория(Команда) Если Модифицированность Тогда Записать(); КонецЕсли; ОтборНабораЗаписей = Новый Структура; ОтборНабораЗаписей.Вставить("Организация", Объект.Владелец); ОтборНабораЗаписей.Вставить("ВидДеятельности", Объект.Ссылка); ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Отбор", ОтборНабораЗаписей); ОписаниеОповещения = Новый ОписаниеОповещения("ФизическийПоказательИсторияЗавершение", ЭтотОбъект); ОткрытьФорму("РегистрСведений.ФизическиеПоказателиЕНВД.Форма.ФормаИстории", ПараметрыФормы, ЭтотОбъект, , , , ОписаниеОповещения); КонецПроцедуры &НаКлиенте Процедура ФизическийПоказательИсторияЗавершение(Результат, ДополнительныеПараметры) Экспорт ПрочитатьЗначенияРеквизитовФормы("ФизическийПоказатель"); Оповестить("ИзмененВидДеятельностиОрганизации", Объект.Владелец, ЭтотОбъект); УправлениеФормой(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура РегиональныеОсобенностиИстория(Команда) Если Модифицированность Тогда Записать(); КонецЕсли; ОтборНабораЗаписей = Новый Структура; ОтборНабораЗаписей.Вставить("Организация", Объект.Владелец); ОтборНабораЗаписей.Вставить("ВидДеятельности", Объект.Ссылка); ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Отбор", ОтборНабораЗаписей); ОписаниеОповещения = Новый ОписаниеОповещения("РегиональныеОсобенностиИсторияЗавершение", ЭтотОбъект); ОткрытьФорму("РегистрСведений.РегиональныеОсобенностиЕНВД.Форма.ФормаИстории", ПараметрыФормы, ЭтотОбъект, , , , ОписаниеОповещения); КонецПроцедуры &НаКлиенте Процедура РегиональныеОсобенностиИсторияЗавершение(Результат, ДополнительныеПараметры) Экспорт ПрочитатьЗначенияРеквизитовФормы("КорректирующийКоэффициент, НалоговаяСтавка"); Оповестить("ИзмененВидДеятельностиОрганизации", Объект.Владелец, ЭтотОбъект); УправлениеФормой(ЭтотОбъект); КонецПроцедуры #КонецОбласти #КонецОбласти #Область СлужебныеПроцедурыИФункции &НаКлиентеНаСервереБезКонтекста Процедура УправлениеФормой(Форма) Объект = Форма.Объект; Элементы = Форма.Элементы; Элементы.КодВидаДеятельности.Подсказка = Форма.НаименованиеПолное; РегистрацияПоМестуОсуществленияДеятельности = ЗначениеЗаполнено(Объект.КодВидаДеятельности) И Не Форма.РегистрацияПоМестуНахожденияОрганизации; Элементы.АдресМестаОсуществленияДетельности.Видимость = РегистрацияПоМестуОсуществленияДеятельности; Элементы.КодПоОКТМО.Видимость = РегистрацияПоМестуОсуществленияДеятельности; // ГруппаСоздатьЗаявление Элементы.ФормаПостановкаНаУчетОрганизации.Видимость = Форма.ВладелецЮрЛицо; Элементы.ФормаПостановкаНаУчетИП.Видимость = Не Форма.ВладелецЮрЛицо; Элементы.ФормаСнятиеСУчетаОрганизации.Видимость = Форма.ВладелецЮрЛицо; Элементы.ФормаСнятиеСУчетаИП.Видимость = Не Форма.ВладелецЮрЛицо; // ГруппаНалоговыйОрган КодНалоговогоОрганаУказан = ЗначениеЗаполнено(Форма.РегистрацияВНалоговомОргане.Код); Элементы.РегистрацияВНалоговомОрганеНаименование.Доступность = КодНалоговогоОрганаУказан; Элементы.РегистрацияВНалоговомОрганеНаименованиеИФНС.Доступность = КодНалоговогоОрганаУказан; Элементы.ПлатежныеРеквизитыФНСПредставление.Доступность = КодНалоговогоОрганаУказан; Элементы.РегистрацияВНалоговомОрганеКПП.Видимость = Форма.ВладелецЮрЛицо; Элементы.РегистрацияВНалоговомОрганеКПП.Доступность = КодНалоговогоОрганаУказан; Элементы.ОтчетностьПодписываетПредставитель.Доступность = КодНалоговогоОрганаУказан; Элементы.ПредставлениеПредставителя.Доступность = КодНалоговогоОрганаУказан; Элементы.НадписьПредставительНеВыбран.Видимость = (Форма.ОтчетностьПодписываетПредставитель = 0); Элементы.ПредставлениеПредставителя.Видимость = (Форма.ОтчетностьПодписываетПредставитель = 1); Форма.ПредставлениеПредставителя = ПредставлениеГиперссылкиПредставитель(Форма.РегистрацияВНалоговомОргане); Элементы.ГруппаНалоговыйОрган.ЗаголовокСвернутогоОтображения = ЗаголовокГруппыНалоговыйОрган(Форма); // ГруппаРасчетНалога Элементы.ФизическийПоказатель.Заголовок = Форма.ИмяФизическогоПоказателя; Элементы.ФизическийПоказатель.РасширеннаяПодсказка.Заголовок = Форма.ПодсказкаФизическогоПоказателя; Элементы.ГруппаРасчетНалога.ЗаголовокСвернутогоОтображения = ЗаголовокГруппыРасчетНалога(Форма); РассчитатьСуммуНалога(Форма); КонецПроцедуры &НаСервере Процедура УстановитьУсловноеОформление() ЭлементУО = УсловноеОформление.Элементы.Добавить(); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "АдресМестаОсуществленияДетельности"); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Объект.Адрес", ВидСравненияКомпоновкиДанных.Равно, ""); ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненныйРеквизит); КонецПроцедуры &НаКлиенте Процедура СоздатьЗаявление(ВидЗаявления) Если Модифицированность Тогда Записать(); КонецЕсли; ПараметрыЗаполнения = Новый Структура; ПараметрыЗаполнения.Вставить("ВидыДеятельности", ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Ссылка)); ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Организация", Объект.Владелец); ПараметрыФормы.Вставить("НалоговыйОрган", Объект.РегистрацияВНалоговомОргане); ПараметрыФормы.Вставить("ПараметрыЗаполнения", ПараметрыЗаполнения); ПараметрыФормы.Вставить("СформироватьФормуОтчетаАвтоматически", Истина); УчетЕНВДКлиент.ОткрытьФормуЗаявления(ВидЗаявления, ПараметрыФормы, ЭтотОбъект); КонецПроцедуры &НаСервере Процедура ВладелецОбработатьИзменение() Если ЗначениеЗаполнено(Объект.Владелец) Тогда ВладелецЮрЛицо = ОбщегоНазначенияБПВызовСервераПовтИсп.ЭтоЮрЛицо(Объект.Владелец); КонецЕсли; Если РегистрацияВНалоговомОргане.Владелец <> Объект.Владелец Тогда Объект.РегистрацияВНалоговомОргане = Справочники.РегистрацииВНалоговомОргане.ПустаяСсылка(); КонецЕсли; ПрочитатьЗначенияРеквизитовФормы("ФизическийПоказатель, КорректирующийКоэффициент, НалоговаяСтавка"); ПрочитатьРегистрациюВНалоговомОргане(); УправлениеФормой(ЭтотОбъект); КонецПроцедуры &НаСервереБезКонтекста Функция СвойстваКодаВидаДеятельности(Знач КодВидаДеятельности) ИменаСвойств = "Наименование, НаименованиеПолное, РегистрацияПоМестуНахожденияОрганизации, |БазоваяДоходность, ИмяФизическогоПоказателя, ПодсказкаФизическогоПоказателя"; Если ЗначениеЗаполнено(КодВидаДеятельности) Тогда Свойства = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(КодВидаДеятельности, ИменаСвойств); Иначе Свойства = Новый Структура(ИменаСвойств); Свойства.Наименование = ""; Свойства.НаименованиеПолное = ""; Свойства.РегистрацияПоМестуНахожденияОрганизации = Ложь; Свойства.БазоваяДоходность = 0; Свойства.ИмяФизическогоПоказателя = НСтр("ru = 'Физический показатель'"); Свойства.ПодсказкаФизическогоПоказателя = ""; КонецЕсли; Возврат Свойства; КонецФункции &НаСервереБезКонтекста Функция ОкончаниеНаименования(Знач КодВидаДеятельности, Знач Владелец, Знач Ссылка) МаксимальныйИндекс = Справочники.ВидыДеятельностиЕНВД.МаксимальныйИндексВидаДеятельности(КодВидаДеятельности, Владелец, Ссылка); Если МаксимальныйИндекс = Неопределено Тогда Возврат ""; КонецЕсли; ИндексНаименования = МаксимальныйИндекс + 1; Возврат " " + ИндексНаименования; КонецФункции #Область СлужебныеПроцедурыИФункции_НалоговыйОрган &НаКлиентеНаСервереБезКонтекста Функция ЗаголовокГруппыНалоговыйОрган(Форма) Объект = Форма.Объект; ЗаголовокПоУмолчанию = НСтр("ru = 'Налоговая инспекция'"); Если ЗначениеЗаполнено(Форма.РегистрацияВНалоговомОргане.Код) Тогда Заголовок = СтрШаблон(НСтр("ru = '%1: %2 %3'"), ЗаголовокПоУмолчанию, Форма.РегистрацияВНалоговомОргане.Код, Форма.РегистрацияВНалоговомОргане.Наименование) Иначе Заголовок = ЗаголовокПоУмолчанию; КонецЕсли; Возврат Заголовок; КонецФункции &НаКлиенте Процедура ПодключитьИнтернетПоддержку(Ответ, ДополнительныеПараметры) Экспорт Если Ответ = КодВозвратаДиалога.Да Тогда Оповещение = Новый ОписаниеОповещения("ПодключитьИнтернетПоддержкуЗавершение", ЭтотОбъект, ДополнительныеПараметры); ИнтернетПоддержкаПользователейКлиент.ПодключитьИнтернетПоддержкуПользователей(Оповещение); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПодключитьИнтернетПоддержкуЗавершение(Результат, ДополнительныеПараметры) Экспорт Перем ВызовПослеПодключения, ОписаниеОшибки; Если Результат <> Неопределено И ДополнительныеПараметры.Свойство("ВызовПослеПодключения", ВызовПослеПодключения) И ВызовПослеПодключения = "ЗаполнитьСведенияОНалоговойИнспекцииПоКоду" Тогда ЗаполнитьРегистрациюВНалоговомОрганеПоКоду(Истина, ОписаниеОшибки); Если Не ПустаяСтрока(ОписаниеОшибки) Тогда ПоказатьПредупреждение(, ОписаниеОшибки); КонецЕсли; КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция СведенияОНалоговомОрганеПоАдресу(Адрес, ВладелецЮрЛицо) Если Не ЗначениеЗаполнено(Адрес) Тогда Возврат Неопределено; КонецЕсли; СведенияОНалоговомОрганеПоАдресу = АдресныйКлассификаторБП.КодыАдреса(Адрес, "Сервис1С"); КодНалоговогоОрганаПоАдресу = ?(ВладелецЮрЛицо, Формат(СведенияОНалоговомОрганеПоАдресу.КодИФНСЮЛ, "ЧЦ=4; ЧДЦ=; ЧВН=; ЧГ=0"), Формат(СведенияОНалоговомОрганеПоАдресу.КодИФНСФЛ, "ЧЦ=4; ЧДЦ=; ЧВН=; ЧГ=0")); Если ЗначениеЗаполнено(КодНалоговогоОрганаПоАдресу) Тогда Сведения = Новый Структура(); Сведения.Вставить("КодНалоговогоОргана", КодНалоговогоОрганаПоАдресу); Сведения.Вставить("КодПоОКТМО", Формат(СведенияОНалоговомОрганеПоАдресу.ОКТМО, "ЧДЦ=; ЧГ=0")); Сведения.Вставить("КодПоОКАТО", Формат(СведенияОНалоговомОрганеПоАдресу.OKATO, "ЧДЦ=; ЧГ=0")); Возврат Сведения; КонецЕсли; Возврат Неопределено; КонецФункции &НаСервере Процедура ЗаполнитьРегистрациюВНалоговомОрганеПоКоду(ПерезаполнятьСведения = Ложь, ОписаниеОшибки = "") Если Не ЗначениеЗаполнено(Объект.Владелец) Тогда Возврат; КонецЕсли; Модифицированность = Истина; КодНалоговогоОргана = СокрЛП(РегистрацияВНалоговомОргане.Код); КПП = РегистрацияВНалоговомОргане.КПП; Объект.РегистрацияВНалоговомОргане = Справочники.РегистрацииВНалоговомОргане.ПустаяСсылка(); ПрочитатьРегистрациюВНалоговомОргане(); РегистрацияВНалоговомОргане.Код = КодНалоговогоОргана; Если СтрДлина(КодНалоговогоОргана) = 4 Тогда Если ВладелецЮрЛицо И ПустаяСтрока(РегистрацияВНалоговомОргане.КПП) Тогда КодПричиныПостановкиНаУчет = УчетЕНВД.КодПричиныПостановкиНаУчет(Объект.Владелец); Если ПустаяСтрока(КПП) Тогда ШаблонКПП = КодНалоговогоОргана + КодПричиныПостановкиНаУчет + "___"; КППпоУмолчанию = КодНалоговогоОргана + КодПричиныПостановкиНаУчет + "001"; Иначе ШаблонКПП = КПП; КППпоУмолчанию = КПП; КонецЕсли; Иначе ШаблонКПП = ""; КППпоУмолчанию = ""; КонецЕсли; // Ищем подходящую регистрацию в справочнике Объект.РегистрацияВНалоговомОргане = Справочники.РегистрацииВНалоговомОргане.РегистрацияВНалоговомОргане( ОбщегоНазначенияБПВызовСервераПовтИсп.ГоловнаяОрганизация(Объект.Владелец), ШаблонКПП, КодНалоговогоОргана); Если ЗначениеЗаполнено(Объект.РегистрацияВНалоговомОргане) Тогда ПрочитатьРегистрациюВНалоговомОргане(); КонецЕсли; Если ПустаяСтрока(РегистрацияВНалоговомОргане.КПП) Тогда РегистрацияВНалоговомОргане.КПП = КППпоУмолчанию; КонецЕсли; Если Не ЗначениеЗаполнено(Объект.РегистрацияВНалоговомОргане) Или ПерезаполнятьСведения Тогда РеквизитыНалоговогоОргана = ДанныеГосударственныхОрганов.РеквизитыНалоговогоОрганаПоКоду(КодНалоговогоОргана); Если ЗначениеЗаполнено(РеквизитыНалоговогоОргана.ОписаниеОшибки) Тогда ОписаниеОшибки = РеквизитыНалоговогоОргана.ОписаниеОшибки; Возврат; КонецЕсли; Если НЕ ЗначениеЗаполнено(РеквизитыНалоговогоОргана.Ссылка) Тогда ДанныеГосударственныхОрганов.ОбновитьДанныеГосударственногоОргана(РеквизитыНалоговогоОргана); КонецЕсли; ПлатежныеРеквизитыФНСПредставление = ДанныеГосударственныхОрганов.ПредставлениеПлатежныхРеквизитовГосударственногоОргана(РеквизитыНалоговогоОргана); РегистрацияВНалоговомОргане.Наименование = РеквизитыНалоговогоОргана.Наименование; РегистрацияВНалоговомОргане.НаименованиеИФНС = РеквизитыНалоговогоОргана.ПолноеНаименование; КонецЕсли; КонецЕсли; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Функция ПредставлениеГиперссылкиПредставитель(РегистрацияВНалоговомОргане) Если ЗначениеЗаполнено(РегистрацияВНалоговомОргане.Представитель) Тогда Если ТипЗнч(РегистрацияВНалоговомОргане.Представитель) = Тип("СправочникСсылка.ФизическиеЛица") Или Не ЗначениеЗаполнено(РегистрацияВНалоговомОргане.УполномоченноеЛицоПредставителя) Тогда ПредставлениеПредставителя = РегистрацияВНалоговомОргане.Представитель; Иначе ПредставлениеПредставителя = СтрШаблон("%1 (%2)", РегистрацияВНалоговомОргане.УполномоченноеЛицоПредставителя, РегистрацияВНалоговомОргане.Представитель); КонецЕсли; Иначе ПредставлениеПредставителя = НСтр("ru = 'Заполнить'"); КонецЕсли; Возврат ПредставлениеПредставителя; КонецФункции &НаСервере Процедура ПрочитатьРегистрациюВНалоговомОргане() Если ЗначениеЗаполнено(Объект.РегистрацияВНалоговомОргане) Тогда ЗначениеВРеквизитФормы(Объект.РегистрацияВНалоговомОргане.ПолучитьОбъект(), "РегистрацияВНалоговомОргане"); Иначе ЗначениеВРеквизитФормы(Справочники.РегистрацииВНалоговомОргане.СоздатьЭлемент(), "РегистрацияВНалоговомОргане"); КонецЕсли; ОтчетностьПодписываетПредставитель = ?(ЗначениеЗаполнено(РегистрацияВНалоговомОргане.Представитель), 1, 0); ПлатежныеРеквизитыФНСПредставление = ПредставлениеПлатежныхРеквизитовФНС(РегистрацияВНалоговомОргане.Код); КонецПроцедуры &НаСервереБезКонтекста Функция ПредставлениеПлатежныхРеквизитовФНС(Знач Код) Если ЗначениеЗаполнено(Код) Тогда ГосударственныйОрган = ДанныеГосударственныхОрганов.ГосударственныйОрган(Перечисления.ВидыГосударственныхОрганов.НалоговыйОрган, Код); КонецЕсли; Представление = ДанныеГосударственныхОрганов.ПредставлениеПлатежныхРеквизитовГосударственногоОргана(ГосударственныйОрган); Возврат Представление; КонецФункции #КонецОбласти #Область СлужебныеПроцедурыИФункции_РасчетНалога &НаКлиентеНаСервереБезКонтекста Функция ЗаголовокГруппыРасчетНалога(Форма) Объект = Форма.Объект; Если ЗначениеЗаполнено(Объект.КодВидаДеятельности) Тогда МассивСтрок = Новый Массив; МассивСтрок.Добавить(Форма.ИмяФизическогоПоказателя + " = " + Форма.ФизическийПоказатель); МассивСтрок.Добавить(НСтр("ru = 'Коэффициент К2 = '") + Форма.КорректирующийКоэффициент); МассивСтрок.Добавить(НСтр("ru = 'Ставка = '") + Форма.НалоговаяСтавка + "%"); Возврат СтрСоединить(МассивСтрок, "; "); Иначе Возврат НСтр("ru = 'Расчет налога'"); КонецЕсли; КонецФункции &НаСервере Процедура ПрочитатьЗначенияРеквизитовФормы(ИменаРеквизитовСтрокой = "") Если Не ПустаяСтрока(ИменаРеквизитовСтрокой) Тогда ИменаРеквизитов = СтрРазделить(ИменаРеквизитовСтрокой, ","); КонецЕсли; Если ИменаРеквизитов = Неопределено Или ИменаРеквизитов.Найти("ФизическийПоказатель") <> Неопределено Тогда ФизическийПоказатель = РегистрыСведений.ФизическиеПоказателиЕНВД.ФизическийПоказательВидаДеятельности( Объект.Владелец, Объект.Ссылка, Период); КонецЕсли; Если ИменаРеквизитов = Неопределено Или ИменаРеквизитов.Найти("КоэффициентДефлятор") <> Неопределено Тогда КоэффициентДефлятор = УчетЕНВДКлиентСервер.КоэффициентДефлятор(Период); КонецЕсли; Если ИменаРеквизитов = Неопределено Или ИменаРеквизитов.Найти("КорректирующийКоэффициент") <> Неопределено Или ИменаРеквизитов.Найти("НалоговаяСтавка") <> Неопределено Тогда РегиональныеОсобенности = РегистрыСведений.РегиональныеОсобенностиЕНВД.РегиональныеОсобенностиВидаДеятельности( Объект.Владелец, Объект.Ссылка, Период); КорректирующийКоэффициент = РегиональныеОсобенности.КорректирующийКоэффициент; НалоговаяСтавка = РегиональныеОсобенности.НалоговаяСтавка; КонецЕсли; Если ИменаРеквизитов = Неопределено Или ИменаРеквизитов.Найти("НаименованиеПолное") <> Неопределено Или ИменаРеквизитов.Найти("ИмяФизическогоПоказателя") <> Неопределено Или ИменаРеквизитов.Найти("ПодсказкаФизическогоПоказателя") <> Неопределено Или ИменаРеквизитов.Найти("БазоваяДоходность") <> Неопределено Тогда СвойстваКодаВидаДеятельности = СвойстваКодаВидаДеятельности(Объект.КодВидаДеятельности); ЗаполнитьЗначенияСвойств(ЭтотОбъект, СвойстваКодаВидаДеятельности); КонецЕсли; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура РассчитатьСуммуНалога(Форма) ПараметрыРасчетаСуммыНалога = УчетЕНВДКлиентСервер.НовыеПараметрыРасчетаСуммыНалога(); ЗаполнитьЗначенияСвойств(ПараметрыРасчетаСуммыНалога, Форма.Объект, , "ДатаНачала, ДатаПрекращения"); ЗаполнитьЗначенияСвойств(ПараметрыРасчетаСуммыНалога, Форма); ПараметрыРасчетаСуммыНалога.ФизическийПоказатель1 = Форма.ФизическийПоказатель; ПараметрыРасчетаСуммыНалога.ФизическийПоказатель3 = Форма.ФизическийПоказатель; ПараметрыРасчетаСуммыНалога.ФизическийПоказатель2 = Форма.ФизическийПоказатель; Форма.ВмененныйДоход = УчетЕНВДКлиентСервер.ВмененныйДоходЗаКвартал(ПараметрыРасчетаСуммыНалога); Форма.СуммаНалога = Окр(Форма.ВмененныйДоход * ПараметрыРасчетаСуммыНалога.НалоговаяСтавка / 100, 0); КонецПроцедуры &НаСервереБезКонтекста Функция КодНалоговогоОрганаПоМестуНахождения(Организация) Если Не ЗначениеЗаполнено(Организация) Тогда Возврат ""; КонецЕсли; Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбщегоНазначенияБПВызовСервераПовтИсп.ГоловнаяОрганизация(Организация), "КодНалоговогоОргана"); КонецФункции #КонецОбласти #КонецОбласти

Catalogs/ВидыДеятельностиПредпринимателей/ManagerModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #КонецЕсли

Catalogs/ВидыДеятельностиПредпринимателей/ObjectModule

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда Процедура ПриЗаписи(Отказ) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; Если БухгалтерскийУчетВызовСервераПовтИсп.ИспользоватьОднуНоменклатурнуюГруппу() Тогда ПерваяНоменклатурнаяГруппа = РегистрыСведений.ВидыДеятельностиПредпринимателей.ПолучитьПервуюНоменклатурнуюГруппу(Ссылка, ХарактерДеятельности); Если НЕ ЗначениеЗаполнено(ПерваяНоменклатурнаяГруппа) Тогда МенеджерЗаписиРегистра = РегистрыСведений.ВидыДеятельностиПредпринимателей.СоздатьМенеджерЗаписи(); МенеджерЗаписиРегистра.НоменклатурнаяГруппа = НоменклатурнаяГруппа; МенеджерЗаписиРегистра.ВидДеятельности = Ссылка; МенеджерЗаписиРегистра.ХарактерДеятельности = ХарактерДеятельности; МенеджерЗаписиРегистра.Записать(Ложь); КонецЕсли; КонецЕсли; // Очистка регистра сведений от записей не соответствующих заданному характеру деятельности РегистрыСведений.ВидыДеятельностиПредпринимателей.ОчиститьСписокНоменклатуныхГрупп(Ссылка, ХарактерДеятельности); Если ЗначениеЗаполнено(НоменклатурнаяГруппа) Тогда Если НЕ РегистрыСведений.ВидыДеятельностиПредпринимателей.ПолучитьВидДеятельности(ХарактерДеятельности, НоменклатурнаяГруппа) = Ссылка Тогда // В качестве основной номенклатурной группы указана номенклатурная групппа // не связанная с видом деятельности НоменклатурнаяГруппа = Неопределено; КонецЕсли; КонецЕсли; КонецПроцедуры Процедура ПередЗаписью(Отказ) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; Если БухгалтерскийУчетВызовСервераПовтИсп.ИспользоватьОднуНоменклатурнуюГруппу() И НЕ ЗначениеЗаполнено(НоменклатурнаяГруппа) Тогда НоменклатурнаяГруппа = БухгалтерскийУчетВызовСервераПовтИсп.ОсновнаяНоменклатурнаяГруппа(); КонецЕсли; КонецПроцедуры #КонецЕсли

Catalogs/ВидыДеятельностиПредпринимателей/Forms/ФормаСписка/Form/Module

#Область ОбработчикиСобытийФормы &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // СтандартныеПодсистемы.ПодключаемыеКоманды ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); // Конец СтандартныеПодсистемы.ПодключаемыеКоманды МожноРедактировать = ПравоДоступа("Редактирование", Метаданные.Справочники.ВидыДеятельностиПредпринимателей); Элементы.СписокКонтекстноеМенюИзменитьВыделенные.Видимость = МожноРедактировать; КонецПроцедуры #КонецОбласти #Область Обра