Имя: Пароль:
1C
1С v8
1C 82 Процедура или функция с указанным именем не определена
0 Adgjj
 
10.09.13
11:52
Ошибка:
Процедура или функция с указанным именем не определена (СоздатьНовыйДокументНаСервере)
        Если <<?>>СоздатьНовыйДокументНаСервере() = 0 Тогда

&НаСервере
Функция СоздатьНовыйДокументНаСервере()

&НаКлиенте
Процедура КнопкаВыполнитьНажатие(Кнопка)
    
        // Вставить содержимое обработчика.
        Если СоздатьНовыйДокументНаСервере() = 0 Тогда
                Сообщить("Не удалось создать новый документ");
        КонецЕсли;

    КонецПроцедуры
1 GROOVY
 
10.09.13
11:53
Бида.
2 Нуф-Нуф
 
10.09.13
11:54
(1)+1
3 Adgjj
 
10.09.13
11:55
видимо ошибка вам ясна
скажите пжл, как исправить
4 GROOVY
 
10.09.13
12:01
Мне кажется, что имеет место опечатка, либо в имени функции, либо в директиве компиляции. Особенно часть с первой буквой "С" это происходит, которая на самом деле "C".
5 Adgjj
 
10.09.13
13:40
в файловой версии ошибки нет
6 Fragster
 
модератор
10.09.13
13:41
&НаСервереБезКонтекста
7 Fragster
 
модератор
10.09.13
13:41
и вообще надо сразу сказать, что это модуль команды
8 Fragster
 
модератор
10.09.13
13:42
да и вообще отучиваться от контекстных вызовов
9 Adgjj
 
10.09.13
14:03
Спасибо, поясните, пжл, по-простому:
и вообще надо сразу сказать, что это модуль команды
да и вообще отучиваться от контекстных вызовов - а как надо
10 Fragster
 
модератор
10.09.13
14:04
Директивы компиляции
Каждая процедура и функция модуля формы, модуля команды и общего модуля управляемого приложения предваряется директивой компиляции, определяющей среду исполнения данной процедуры. Директива предваряется символом "&". Допустимые директивы:

&НаКлиенте (&AtClient) — определяет клиентскую процедуру (функцию);
&НаСервере (&AtServer) — определяет серверную процедуру (функцию);
&НаСервереБезКонтекста (&AtServerNoContext) — определяет серверную процедуру (функцию), исполняемую на сервере вне контекста формы. Переменные не могут быть внеконтекстными. В таких методах недоступен контекст формы (включая данные формы). Допустимыми являются вызовы только других внеконтекстных методов. При вызове этих методов не выполняется передача данных формы на сервер и обратно. Применение внеконтекстных методов позволяет существенно уменьшить объем передаваемых данных при вызове серверной процедуры из среды клиентского приложения;
&НаКлиентеНаСервереБезКонтекста (&AtClientAtServerNoContext) — определяет процедуру (функцию), исполняемую в модуле формы на клиенте и на сервере, не имеющую доступа к контексту формы, данным формы, переменным, но имеющую доступ к процедурам и функциям общих модулей – серверных, не глобальных и серверных и клиентских одновременно. Сама процедура (функция) доступна для клиентский, серверных контекстных и неконтекстных процедур и функций модуля формы. Из серверных внеконтекстных методов формы допускается вызов серверных методов общих модулей;
&НаКлиентеНаСервере (&AtClientAtServer) — определяет процедуру (функцию), исполняемую в модуле команды, выполняемую на клиенте и на сервере, имеющую доступ к процедурам и функциям общих модулей – серверных, не глобальных и серверных и клиентских одновременно, не имеющую доступ к переменным. Сама процедура (функция) доступна для клиентских серверных процедур и функций модуля команды.
Клиентская процедура (функция) исполняется в среде клиентского приложения. В такой процедуре доступен клиентский контекст формы и вызовы любых процедур модуля.

Серверная процедура (функция) исполняется в среде серверного приложения. В такой процедуре доступны данные формы, доступен серверный контекст формы и вызовы серверных и серверных внеконтекстных процедур модуля. При вызове такой процедуры данные формы будут передаваться  с клиента на сервер и обратно (по окончанию вызова).

Серверная процедура (функция), исполняемая вне контекста формы, (внеконтекстная) исполняется в среде серверного приложения. В такой процедуре (функции) недоступен контекст формы (включая данные формы). Допустимыми являются вызовы только других внеконтекстных процедур (функций). При вызове этих процедур (функций) не выполняется передача данных формы на сервер и обратно. Применение внеконтекстных процедур (функций) позволяет существенно уменьшить объем передаваемых данных при вызове серверной процедуры (функции) из среды клиентского приложения.

Отсутствие директивы компиляции перед процедурой (функцией) означает использование директивы по умолчанию. Директивой по умолчанию является &НаСервере. Не допускается использование нескольких директив компиляции перед одной процедурой (функцией). Не допускается наличие одноименных процедур (функций), отличающихся только директивами компиляции.

В модуле управляемой формы допускается использование инструкций препроцессору. Рекомендуется использовать инструкции препроцессора только внутри процедур (функций). Для понимания результата при "пересечении" инструкциями препроцессора границ процедур (функций) следует учитывать, что обработка инструкций препроцессора выполняется до обработки директив компиляции.

В модуле команды предопределенная процедура-обработчик ОбработатьКоманду должна предваряться директивой &НаКлиенте, так как выполнение команды происходит в клиентском приложении.

Модуль формы
  В модуле формы доступны директивы компиляции – &НаКлиенте, &НаСервере, &НаСервереБезКонтекста, &НаКлиентеНаСервереБезКонтекста.
Модуль команды
  В модуле команды доступны директивы компиляции – &НаКлиенте, &НаСервере, &НаКлиентеНаСервере.
Общий модуль
  В общем модуле доступны директивы компиляции – &НаКлиенте, &НаСервере.
11 Adgjj
 
10.09.13
14:04
спасибо
12 Fragster
 
модератор
10.09.13
14:05
(9) так (6) работает?
13 Adgjj
 
10.09.13
14:06
нет:
{Обработка.ЗагрузкаИзExcel.Форма.Форма(185,14)}: Процедура или функция с указанным именем не определена (СоздатьНовыйДокументНаСервере)
        Если <<?>>СоздатьНовыйДокументНаСервере() = 0 Тогда (Проверка: Толстый клиент (обычное приложение))
14 Fragster
 
модератор
10.09.13
14:09
по колесу сту.. 1с перезапускал?
15 Adgjj
 
10.09.13
14:09
ошибка появилась при сохранении в конфигураторе сейчас попробую перезапустить конф-тор
16 Adgjj
 
10.09.13
14:10
уцжас что я пишу
17 Fragster
 
модератор
10.09.13
14:11
или как вариант - очистить окно сообщений, выполнить синтакс контроль и посмотреть ВСЕ сообщения
18 1Сергей
 
10.09.13
14:12
>>Проверка: Толстый клиент (обычное приложение)

настрой проверку синтаксиса
19 Adgjj
 
10.09.13
14:12
добавила &НаКлиентеБезКонтекста сохранилось предприятие запустилось кнопка Выполнить формы не подсвечивается теперь
20 hhhh
 
10.09.13
14:12
(15)так это обычная форма или управляемая?
21 Adgjj
 
10.09.13
14:15
(17) ОчиститьСообщения(); ? только 1 сообщение

(18) как?
22 samozvanec
 
10.09.13
14:15
(19) она, наверное, в шоке от директивы
23 1Сергей
 
10.09.13
14:16
24 Adgjj
 
10.09.13
14:19
после настройки параметров ошибка при запуске обработки:
Процедура или функция с указанным именем не определена (СоздатьНовыйДокументНаСервере)
        Если <<?>>СоздатьНовыйДокументНаСервере() = 0 Тогда
25 1Сергей
 
10.09.13
14:20
(24) ты что-то не договариваешь. весь этот код в одном модуле?
26 Fragster
 
модератор
10.09.13
14:20
(24) так ошибка при запуске или при синтакс контроле в конфигураторе? я уже нифига не понимаю...
27 Adgjj
 
10.09.13
14:23
основной режим запуска: обычное приложение. Изменяю на управляемое - не сохраняется.

была ошибка при запуске. после добавления НаСервереБезКонтекста стала в конфигураторе. после настройки ппарметров снова при запуске
28 Adgjj
 
10.09.13
14:24
(25) это все из модуля формы обработки:
&НаСервереБезКонтекста
Функция СоздатьНовыйДокументНаСервере()
...
конец ф-ции

&НаКлиенте
Процедура КнопкаВыполнитьНажатие(Кнопка)
    
        // Вставить содержимое обработчика.

        Если СоздатьНовыйДокументНаСервере() = 0 Тогда
                Сообщить("Не удалось создать новый документ");
        КонецЕсли;

    КонецПроцедуры
29 vicof
 
10.09.13
14:24
(0) Не забудь КонецФункции написать ;)
30 Adgjj
 
10.09.13
14:28
(7) и вообще надо сразу сказать, что это модуль команды

НаСервереБезКонтекста значит нельзя
31 Adgjj
 
10.09.13
14:35
?
32 GROOVY
 
10.09.13
14:38
(31) Ниасилил справку по директивам компиляции?
33 vicof
 
10.09.13
14:38
(31) Модуль команды компилируется только на клиенте. Передавай управление на сервер через общие модули с галкой сервер и вызов сервера.
34 GROOVY
 
10.09.13
14:40
(33) Неправда.
35 Adgjj
 
10.09.13
14:40
ничего что обычное приложение не управляемое
36 Adgjj
 
10.09.13
14:41
модуль команды - это вызываемый щелчком по кнопке?
37 GROOVY
 
10.09.13
14:42
(35) а нафига ты директивы компиляции пишешь?
38 GROOVY
 
10.09.13
14:42
(36) нет.
39 1Сергей
 
10.09.13
14:44
(35) вот те раз
40 vicof
 
10.09.13
14:45
(34) Да, наврал(
41 Adgjj
 
10.09.13
14:46
я не знала что обычное и управляемое есть в 8.2. В 8.2 впервые зашла попросили исправить неработающую программу, там директивы были
42 Adgjj
 
11.09.13
09:06
сделала приложение управляемым через параметры
ошибка та же
43 Любопытная
 
11.09.13
09:29
(41) код без сокращений и вырезаний  в студию. А еще лучше - обработку кинь в файлопомойку, посмотрим на нее
44 Adgjj
 
11.09.13
09:32
Модуль формы обработки:

&НаСервере
Функция СоздатьНовыйДокументНаСервере()
    ДокументПроверки = 0;
//НачатьТранзакцию();
    Для Каждого НоваяСтрока из ТаблицаExcel цикл
        если  НоваяСтрока.Документ <> ДокументПроверки тогда
            //Создаем новый документ в информационной Базе
            НовыйДокумент = Документы.уатОприходованиеТоваров.СоздатьДокумент();
            
            НовыйДокумент.Дата = ТекущаяДата();
            НовыйДокумент.Организация = Справочники.Организации.НайтиПоКоду("000000001");
            НовыйДокумент.ОтражатьВБухгалтерскомУчете = Истина;
            НовыйДокумент.ОтражатьВНалоговомУчете = Истина;
            НовыйДокумент.ОтражатьВУправленческомУчете = Истина;
            НовыйДокумент.Склад = Справочники.Склады.НайтиПоНаименованию("6633");
            НовыйДокумент.ДокументСАП = НоваяСтрока.Документ;
            НовыйДокумент.ДатаДокументаСАП = НоваяСтрока.ДатаДок;
            Сообщить("Приход по документу " + НоваяСтрока.Документ + " создается");
        КонецЕсли;
        //Определяем табличную часть (ТЧ), добавим в нее строки и укажем значения реквизитов ТЧ
        ТабличнаяЧастьМатериалы=НовыйДокумент.Товары;

        СтрокаТЧ = ТабличнаяЧастьМатериалы.Добавить();
        СтрокаТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(НоваяСтрока.Материал);
        СтрокаТЧ.Количество = НоваяСтрока.Количество;
        СтрокаТЧ.Сумма = НоваяСтрока.Стоимость;
        СтрокаТЧ.Цена = НоваяСтрока.цена;
        СтрокаТЧ.Коэффициент = 1;
        СтрокаТЧ.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(НоваяСтрока.ЕИ);
        СтрокаТЧ.Заявка = НоваяСтрока.Текст;
        Попытка
                НовыйДокумент.Записать();
                //Сообщить("Приход по документу " + НоваяСтрока.Документ + " создан успешно");
                 //Возврат 1;
        Исключение
                Сообщить("Приход по документу " + НоваяСтрока.Документ + " Не СОЗДАН");
                Возврат 0;
        КонецПопытки;
        //НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
        //Сообщить("Материал" + НоваяСтрока.КраткийТекстМатериала + " добавлен ");
        ДокументПроверки = НоваяСтрока.Документ;
    КонецЦикла;
//    ЗафиксироватьТранзакцию();
    Сообщить(ТекущаяДата());
    Сообщить("Загрузка завершена");
    Возврат 1;
                      
КонецФункции    

&НаКлиенте
Процедура КнопкаВыполнитьНажатие(Кнопка)
    
        // Вставить содержимое обработчика.
        Если СоздатьНовыйДокументНаСервере() = 0 Тогда
                Сообщить("Не удалось создать новый документ");
        КонецЕсли;

    КонецПроцедуры
45 Любопытная
 
11.09.13
09:40
Скопировала, вставила в модуль обработки, ошибок нет.
Убери директивы нафиг, у тебя обычное приложение, они тут ни к чему и ни на что не влияют.
Ошибка, видимо возникает не здесь
46 hhhh
 
11.09.13
09:43
(44) ну так

#Если ТолстыйКлиентОбычноеПриложение Тогда

        Если СоздатьНовыйДокументНаСервере() = 0 Тогда
                Сообщить("Не удалось создать новый документ");
        КонецЕсли;

#КонецЕсли
47 hhhh
 
11.09.13
09:43
(46)+ блин наоборот

#Если НЕ ТолстыйКлиентОбычноеПриложение Тогда

        Если СоздатьНовыйДокументНаСервере() = 0 Тогда
                Сообщить("Не удалось создать новый документ");
        КонецЕсли;

#КонецЕсли
48 Adgjj
 
11.09.13
09:55
(47) спасибо не помогло наверно сервис, параметры настройки влияют
49 Adgjj
 
11.09.13
09:57
прошу прощения
ошибка пропала, но кнопка Выполнить не работает
50 Adgjj
 
11.09.13
09:59
скажите, пжл, в каком случае надо делать приложение обычным, а когда управляемым
51 Любопытная
 
11.09.13
10:05
(50) Если у тебя не управляемое приложение, то однозначно обычное и толстый клиент. В тонком работает только управляемое приложение.
Судя КнопкаВыполнитьНажатие() у тебя именно обычное приложение, т.к. в управляемых формах все немного по-другому.
Смотри в каком режиме у тебя конфигурация работает, в том же режиме создавай обработку
52 Adgjj
 
11.09.13
10:06
в параметрах легко меняется управляемое на обычное и наоборот
53 Adgjj
 
11.09.13
10:08
тогда как определить в каком режиме конф работает?
54 Любопытная
 
11.09.13
10:08
(52) Ну открой свою конфу в режиме управляемого приложения и посмотри, будет ли она работать.
55 hhhh
 
11.09.13
10:16
(53) там по внешнему виду можно определить. Формы разные совершенно.
56 Adgjj
 
11.09.13
10:16
Поставила в конфе в Сервис Параметры Общие Управляемое Запустила справочники открываются
57 Adgjj
 
11.09.13
10:17
те если было создано как управляемое обычным не сделать и наоборот
где это изначально задается?
58 Любопытная
 
11.09.13
10:20
Свойства конфигурации - основной режим запуска - что стоит?
Формы разные для обычного и для управляемого. Поведение разное. Они вообще разные. Можно сделать поддержку и того, и другого, но формы, сделанные для управляемого приложения не откроются в обычном и наоборот. А у тебя как раз все в форме происходит
59 hhhh
 
11.09.13
10:22
(56) если формы нет, она стандартную выводит, по умолчанию. Там все реквизиты справочника и типовые кнопки все есть.