Имя: Пароль:
1C
1С v8
Общий модуль. Ошибка при вызове процедуры
0 wwwqwert2014
 
27.05.14
19:42
Написал общий модуль. Он называется БухгалтерияСерверПовторно.
Почему процедуры, которые определены ВНУТРИ этого метода я не могу вызывать так:УстановитьПодразделениеПроводки(Проводка, ПодразделениеКт, "Кт");
а могу вызывать только так:
БухгалтерияСерверПовторно.УстановитьПодразделениеПроводки(Проводка, ПодразделениеДт, "Дт");    

в настройках модуля стоит галочка Сервер. и всё.

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

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


&НаСврвере
Процедура УстановитьПодразделениеПроводки(Проводка, Подразделение, ДтКт)
    
    Если Проводка["Счет" + ДтКт].УчетПоПодразделениям Тогда
        Проводка["Подразделение" + ДтКт] = Подразделение;
    КонецЕсли;
    
КонецПроцедуры

&НаСервере
Процедура УстановитьПодразделенияПроводки(Проводка, ПодразделениеДт, ПодразделениеКт) Экспорт
    
    ПараметрыОпции = Новый Структура("Организация", Проводка.Организация);
    ПоПодразделениям = ПолучитьФункциональнуюОпцию("ПоПодразделениям", ПараметрыОпции);
    
    Если ПоПодразделениям Тогда
        БухгалтерияСерверПовторно.УстановитьПодразделениеПроводки(Проводка, ПодразделениеДт, "Дт");    
        УстановитьПодразделениеПроводки(Проводка, ПодразделениеКт, "Кт");
    КонецЕсли;
    
    
КонецПроцедуры
1 wwwqwert2014
 
27.05.14
19:52
Проблема решена. Тема закрыта
2 simol
 
27.05.14
21:27
(1) порадуй решением
3 Kain_wrath
 
27.05.14
22:20
будет он делится сакральным знанием с кем попало
4 Любопытная
 
28.05.14
05:00
Глобальный – если флаг установлен, функции и процедуры из этого модуля становятся доступны в глобальном контексте. Т.е их можно вызвать в любом месте конфигурации, обращаясь без название общего модуля. Однако добавляется условие – название процедур и функций в этом общем модуле должны быть уникальны в рамках глобального контекста.

Элементарно же
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой