Версия для печати темы (https://pro1c.org.ua/index.php?s=96d9fec5217f13e967c05a09e897ab3a&showtopic=43821)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ 1с 8.3 УПП 1.3 Код який працює в файловому режимі непрацює в серверному.

Автор: s.vitaliy 01.02.18, 10:07

1с 8.3 УПП 1.3
Поможіть розібратися я так розумію що

Предупреждение
в серверному варіанті неможна викликати з СпільногоМодуля. в свойствах спільного модуля стоять галочки СЕРВЕР КЛІЄНТ і ВИКЛИК СЕРВЕРА.
Додаю сам код і помилку.

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



Помилка

{ОбщийМодуль.Армор.Модуль(898,11)}: Змінна не визначена (РежимДиалогаВопрос)
Режим = <<?>>РежимДиалогаВопрос.ДаНетОтмена;
{ОбщийМодуль.Армор.Модуль(899,84)}: Змінна не визначена (РежимДиалогаВопрос)
Ответ = Вопрос("Перезаполнить существующий документ ? Иначе создадим новый.", <<?>>РежимДиалогаВопрос.ДаНет, 0);
{ОбщийМодуль.Армор.Модуль(900,19)}: Змінна не визначена (КодВозвратаДиалога)
Если Ответ = <<?>>КодВозвратаДиалога.Да Тогда
{ОбщийМодуль.Армор.Модуль(108,3)}: Процедура або функція з вказаним ім`ям не визначена (Предупреждение)
<<?>>Предупреждение("Отсутствует номенклатура с заданными критериями поиска!");
{ОбщийМодуль.Армор.Модуль(121,4)}: Процедура або функція з вказаним ім`ям не визначена (Предупреждение)
<<?>>Предупреждение("По заданным критериям поиска найдено более 50 элементов номенклатуры!
{ОбщийМодуль.Армор.Модуль(172,4)}: Процедура або функція з вказаним ім`ям не визначена (Предупреждение)
<<?>>Предупреждение("Для строки документа: " + ТекущиеДанные.НомерСтроки + " не задана единица измерения",, "Ошибка");
{ОбщийМодуль.Армор.Модуль(177,4)}: Процедура або функція з вказаним ім`ям не визначена (Предупреждение)
<<?>>Предупреждение("Для номенклатуры: " + ТекущиеДанные.Номенклатура + " не ведется учет по сериям",, "Ошибка");
{ОбщийМодуль.Армор.Модуль(188,4)}: Процедура або функція з вказаним ім`ям не визначена (Предупреждение)
<<?>>Предупреждение("Для документа не задана единица измерения продукции",, "Ошибка");
{ОбщийМодуль.Армор.Модуль(193,4)}: Процедура або функція з вказаним ім`ям не визначена (Предупреждение)
<<?>>Предупреждение("Для номенклатуры: " + ТекущиеДанные.Номенклатура + " не ведется учет по сериям",, "Ошибка");
{ОбщийМодуль.Армор.Модуль(206,3)}: Процедура або функція з вказаним ім`ям не визначена (Предупреждение)
<<?>>Предупреждение("Штрихкод " + Штрихкод + " имеет неверный формат. Должно быть не меньше " + Формат(КоличествоСимволовШтрихкода,"ЧЦ=2; ЧДЦ=; ЧН=") + " символов",, "Ошибка");
{ОбщийМодуль.Армор.Модуль(212,3)}: Процедура або функція з вказаним ім`ям не визначена (Предупреждение)
<<?>>Предупреждение("Штрихкод " + Штрихкод + " уже существует в базе для номенклатуры " + СведенияПоШтрихКоду.Номенклатура + ?(ЗначениеНЕЗаполнено(СведенияПоШтрихКоду.СерияНоменклатуры),"", " с серией " + СведенияПоШтрихКоду.СерияНоменклатуры));
{ОбщийМодуль.Армор.Модуль(201,10)}: Процедура або функція з вказаним ім`ям не визначена (ВвестиСтроку)
Если Не <<?>>ВвестиСтроку(Штрихкод,"Проскануйте штрихкод", 13, Ложь) Тогда
{ОбщийМодуль.Армор.Модуль(678,16)}: Процедура або функція з вказаним ім`ям не визначена (ПолучитьФорму)
ФормаОтчета = <<?>>ПолучитьФорму("Отчет." + СтруктураВызоваОтчета.Отчет + ".Форма");
{ОбщийМодуль.Армор.Модуль(899,14)}: Процедура або функція з вказаним ім`ям не визначена (Вопрос)
Ответ = <<?>>Вопрос("Перезаполнить существующий документ ? Иначе создадим новый.", РежимДиалогаВопрос.ДаНет, 0);


 ! 

http://pro1c.org.ua/index.php?act=announce&id=2: 5
 

Автор: podcast 01.02.18, 10:23

s.vitaliy @ Сегодня, 10:07 * ,
Скорей всего у вас не правильно стоят условия #Если Клиент Тогда, просмотрите на них, попробуйте добавить если их нету, там где у вас есть вызовы клиентских процедур.

Автор: s.vitaliy 01.02.18, 10:34

podcast @ Сегодня, 10:23 * ,
Дякую спробую.

Автор: logist 01.02.18, 10:41

Цитата(podcast @ 01.02.18, 10:23) *
Скорей всего у вас не правильно стоят условия #Если Клиент Тогда

Судя по коду они вообще не стоят, это видно из текста ошибки.

Автор: Gazulo 01.02.18, 11:39

s.vitaliy @ Сегодня, 10:07 * ,
"РежимДиалогаВопрос", "Предупреждение" все це , я так розумію, виклики вікна, які є неможливими на сервері..треба превіряти Если Клиент

Автор: Vofka 01.02.18, 13:05

Судя по описанию, в случае с серверным вариантом эта процедура выполняется на сервере. А на сервере нельзя использовать Предупреждение, ВвестиСтроку, Вопрос и прочие интерактивные фунции. Поэтому, как писали выше, нужно такие блоки кода обрамлять директивами #Если Клиент Тогда

Автор: s.vitaliy 01.02.18, 14:47

Vofka @ Сегодня, 13:05 * ,
Якщо я правильно поняв то перед кожним викликом Предупреждение потрібно вказувати #Если Клиент Тогда ?

Автор: Vofka 01.02.18, 15:23

s.vitaliy @ Сегодня, 14:47 * ,
если логика подразумевает просто вывод предупреждения, в котором счелкается ОК и код выполняется дальше, то да.

Если же что-то типа

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


то в этом случае надо обрамить весь этот блок кода. Но в этом случае вам, исходя из бизнес-логики, нужно решить стоит ли выполнять

РезервированиеТоваровОбъект = РезервированиеТоваровСсылка.ПолучитьОбъект();


или не стоит (в случае, когда пользователь спросить нету возможности)

Автор: podcast 01.02.18, 15:37

s.vitaliy @ Сегодня, 14:47 * ,
Обычно в модуле объекта сначала всех процедур связанных с печать ставят условие, и после них закрывают.

Автор: s.vitaliy 01.02.18, 15:44

s.vitaliy @ Сегодня, 14:47 * ,
Дякую за допомогу розібрався помістив всі клієнські процедури в #Если Клиент Тогда Процедура() #КонецЕсли

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua