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