8.х Переменная не определена

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Petrovich1984, 1 ноя 2008.

  1. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204
    У модуля ПроведениеРасчетов поставьте галку - клиент, только тогда вы сможете обратиться к этому модулю с клиента.
  2. slmmls
    Offline

    slmmls

    Регистрация:
    19 июн 2015
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Спасибо за отклик, но, вот, что выдает в данном случае:
    {ОбщийМодуль.ПроведениеРасчетов.Модуль(8,18)}: Тип не определен (Запрос)
    Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
    {ОбщийМодуль.ПроведениеРасчетов.Модуль(52,24)}: Тип не определен (Запрос)
    Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
    {ОбщийМодуль.ПроведениеРасчетов.Модуль(99,17)}: Тип не определен (Запрос)
    Запрос = Новый <<?>>Запрос( (Проверка: Тонкий клиент)
  3. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.878
    Симпатии:
    1.027
    Баллы:
    204
    Саму процедуру перерасчета необходимо запускать в серверном контексте выполнения:

    Код:
    &НаКлиенте
    Процедура Перерассчитать()
    ВыполнитьПерерасчет();
    КонецПроцедуры
    
    &НаСервере
    Процедура ВыполнитьПерерасчет()
    ПроведениеРасчетов.ПерерассчитатьНачисления(ПредопределенноеЗначение("ПланВидовРасчета.ОсновныеНачисления.Оклад"));
    ПроведениеРасчетов.ПерерассчитатьНачисления(ПредопределенноеЗначение("ПланВидовРасчета.ОсновныеНачисления.Премия"));
    КонецПроцедуры
    Процедурка в клиентском контексте нужна для создания кнопки на форме, если кнопка на форме не нужна, то и процедуру в этом контексте делать нет необходимости.
    slmmls нравится это.
  4. slmmls
    Offline

    slmmls

    Регистрация:
    19 июн 2015
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Поставила галку Клиент, поменяла управляемое приложение на обычное, и все работает - отчет формируется без проблем, а управляемое приложение даже не запускается, почему так?
    upload_2015-6-30_16-28-20.png
  5. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204
    Потому что нужно разграничивать клиентский и серверный код.
  6. slmmls
    Offline

    slmmls

    Регистрация:
    19 июн 2015
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Галки в общем модуле Клиент и Сервер. Код прописала Ваш, а выдает вот что:
    {Отчет.НачисленияСотрудникам.Форма.ФормаОтчета.Форма(9,1)}: Переменная не определена (ПроведениеРасчетов)
    <<?>>ПроведениеРасчетов.ПерерассчитатьНачисления(ПредопределенноеЗначение("ПланВидовРасчета.ОсновныеНачисления.Оклад")); (Проверка: Сервер)
    {Отчет.НачисленияСотрудникам.Форма.ФормаОтчета.Форма(10,1)}: Переменная не определена (ПроведениеРасчетов)
    <<?>>ПроведениеРасчетов.ПерерассчитатьНачисления(ПредопределенноеЗначение("ПланВидовРасчета.ОсновныеНачисления.Премия")); (Проверка: Сервер)
    {ОбщийМодуль.ПроведениеРасчетов.Модуль(8,18)}: Тип не определен (Запрос)
    Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
    {ОбщийМодуль.ПроведениеРасчетов.Модуль(52,24)}: Тип не определен (Запрос)
    Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
    {ОбщийМодуль.ПроведениеРасчетов.Модуль(99,17)}: Тип не определен (Запрос)
    Запрос = Новый <<?>>Запрос( (Проверка: Тонкий клиент)
  7. tok-alex
    Offline

    tok-alex

    Регистрация:
    3 ноя 2016
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Добрый день.
    Второй день пытаюсь разобраться с проблемой.
    1с v8.2 обычное приложение толстый клиент.
    В конфигурации бухгалтерия предприятия 2.0.14.5 пишу свой код.
    Создал документ и форму документа.
    Нужно что бы по таблице считал стоимость.
    в модуле форме код:
    &НаКлиенте
    Процедура ТехническоеОбеспечениеЦенаПриИзменении(Элемент)
    СтрокаТабличнойЧасти=Элементы.ТехническоеОбеспечение.ТекущиеДанные;
    РаботаСДокументами.РассчитатьСтоимость(СтрокаТабличнойЧасти);

    КонецПроцедуры

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

    В общем модуле РаботаСДокументами написано:
    Процедура РассчитатьСтоимость(СтрокаТабличнойЧасти) Экспорт
    СтрокаТабличнойЧасти.Стоимость = СтрокаТабличнойЧасти.Количество*СтрокаТабличнойЧасти.Цена;
    КонецПроцедуры

    Этот же код работает в пустой самописной конфигурации под тонким клиентом.
    в общем модуле стоит галка обычное приложение. все остальное отключено

    есть ошибки
    {Документ.Проект.Форма.ФормаВерсия2.Форма(4,22)}: Переменная не определена (Элементы)
    СтрокаТабличнойЧасти=<<?>>Элементы.ТехническоеОбеспечение.ТекущиеДанные; (Проверка: Толстый клиент (обычное приложение))
    {Документ.Проект.Форма.ФормаВерсия2.Форма(11,22)}: Переменная не определена (Элементы)
    СтрокаТабличнойЧасти=<<?>>Элементы.ТехническоеОбеспечение.ТекущиеДанные; (Проверка: Толстый клиент (обычное приложение))

    хотя тоже самое работает в тонком клиенте на другой конфигурации.
    upload_2016-11-3_11-0-35.png
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.878
    Симпатии:
    1.027
    Баллы:
    204
    В обычном приложении нет Элементы, есть ЭлементыФормы.
  9. tok-alex
    Offline

    tok-alex

    Регистрация:
    3 ноя 2016
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Заменил на ЭлементыФормы. ошибок нет но все равно не считает стоимость
  10. tumensvet
    Offline

    tumensvet

    Регистрация:
    11 май 2019
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Добрый день!

    Помогите, выходит ошибка:

    {Документ.ОтчетОПроведенииАудита.Форма.ФормаДокумента.Форма(336,13)}: Переменная не определена (МестоПроведенияАудитаТекст)
    Если СокрП(<<?>>МестоПроведенияАудитаТекст) = "" Тогда (Проверка: Толстый клиент (обычное приложение)

    Вот весь код:

    Процедура АудиторПриИзменении(Элемент)
    Должность = Аудитор.Должность;
    КонецПроцедуры
    Процедура Аудитор1ПриИзменении(Элемент)
    Должность1 = Аудитор1.Должность;
    КонецПроцедуры
    Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

    Если ЭтоНовый() Тогда

    Запрос = новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | Запланировано.Дата,
    | Запланировано.Подразделение
    |ИЗ
    | (ВЫБРАТЬ
    | План.Аудитор КАК Аудитор,
    | План.Дата КАК Дата,
    | План.Подразделение КАК Подразделение
    | ИЗ
    | РегистрСведений.План КАК План
    | ГДЕ
    | План.Аудитор = &Аудитор
    | И НЕ План.Выполнен) КАК Запланировано
    | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    | План.Аудитор КАК Аудитор,
    | План.Дата КАК Дата
    | ИЗ
    | РегистрСведений.План КАК План
    | ГДЕ
    | План.Выполнен
    | И План.Аудитор = &Аудитор) КАК Выполнено
    | ПО Запланировано.Аудитор = Выполнено.Аудитор
    | И Запланировано.Дата = Выполнено.Дата
    |ГДЕ
    | Выполнено.Аудитор ЕСТЬ NULL ";

    Если РольДоступна("ПолныеПрава") ИЛИ РольДоступна("ОхранаТруда") ИЛИ РольДоступна("Аудит1") Тогда
    ЗаАудитора = Справочники.Сотрудники.ПустаяСсылка();
    Если НЕ ВвестиЗначение(ЗаАудитора, "Введите аудитора, за которого собираетесь заполнить отчет: ") Тогда
    Отказ = Истина;
    Возврат;
    КонецЕсли;
    Запрос.УстановитьПараметр("Аудитор", ЗаАудитора);
    Аудитор = ЗаАудитора;
    Иначе
    Запрос.УстановитьПараметр("Аудитор", Пользователь);
    Аудитор = Пользователь;
    КонецЕсли;
    Должность = Аудитор.Должность;
    Автор = Пользователь;
    Т = Запрос.Выполнить().Выгрузить();
    //Стр = Т.Добавить();
    //Стр.Дата = ТекущаяДата();
    //Если Т.Количество() = 0 Тогда
    // Сообщить("Нет запланированных аудитов!");
    // Отказ = Истина;
    // Возврат;
    //КонецЕсли;
    Стр = Т.ВыбратьСтроку("Выберите плановую дату аудита:");
    Если Стр = Неопределено Тогда
    Отказ = Истина;
    Возврат;
    КонецЕсли;
    Если Стр.Дата = ТекущаяДата() И НЕ ЗначениеЗаполнено(Стр.Подразделение) Тогда
    ПлановаяДата = Неопределено;
    Иначе
    Если (Стр.Дата - ТекущаяДата()) / 24 / 3600 > 30 Тогда
    Сообщить("Нельзя проводить аудит раньше, чем за тридцать дней до запланированной даты!");
    Отказ = Истина;
    Возврат;
    КонецЕсли;
    ПлановаяДата = Стр.Дата;
    Подразделение = Стр.Подразделение;
    КонецЕсли;

    КонецЕсли;

    КонецПроцедуры
    Процедура ПриОткрытии()

    Если ЭтоНовый() Тогда

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

    Иначе

    Если Пользователь <> Аудитор И НЕ РольДоступна("ПолныеПрава") И НЕ РольДоступна("ОхранаТруда") Тогда

    ЭтаФорма.ТолькоПросмотр = Истина;
    ЭлементыФормы.ПодразделениеТекст.Доступность = Ложь;

    КонецЕсли;

    КонецЕсли;






    КонецПроцедуры
    Процедура КатегорияПоказательПриИзменении(Элемент)

    ТД = Элемент.ТекущиеДанные;
    Колонка = Элемент.ТекущаяКолонка.Имя;
    Если Колонка = "РискЛегкойТравмы" Тогда
    Если ТД.РискЛегкойТравмы > 0 Тогда
    ТД.РискТяжелойТравмы = 0;
    ТД.РискСмертельнойТравмы = 0;
    КонецЕсли;
    ИначеЕсли Колонка = "РискТяжелойТравмы" Тогда
    Если ТД.РискТяжелойТравмы > 0 Тогда
    ТД.РискЛегкойТравмы = 0;
    ТД.РискСмертельнойТравмы = 0;
    КонецЕсли;
    ИначеЕсли Колонка = "РискСмертельнойТравмы" Тогда
    Если ТД.РискСмертельнойТравмы > 0 Тогда
    ТД.РискТяжелойТравмы = 0;
    ТД.РискЛегкойТравмы = 0;
    КонецЕсли;
    ИначеЕсли Колонка = "ОД" Тогда
    Если ТД.ОД > 0 Тогда
    ТД.ОУ = 0;
    КонецЕсли;
    ИначеЕсли Колонка = "ОУ" Тогда
    Если ТД.ОУ > 0 Тогда
    ТД.ОД = 0;
    КонецЕсли;
    КонецЕсли;

    КонецПроцедуры
    Процедура КатегорияРеакцияРаботникаПриИзменении(Элемент)

    КатегорияПоказательПриИзменении(ЭлементыФормы.КатегорияРеакцияРаботника);

    КонецПроцедуры
    Процедура КатегорияПоложениеРаботникаПриИзменении(Элемент)

    КатегорияПоказательПриИзменении(ЭлементыФормы.КатегорияПоложениеРаботника);

    КонецПроцедуры
    Процедура КатегорияСпецодеждаИСИЗПриИзменении(Элемент)

    КатегорияПоказательПриИзменении(ЭлементыФормы.КатегорияСпецодеждаИСИЗ);

    КонецПроцедуры
    Процедура КатегорияИнструментыИОборудованиеПриИзменении(Элемент)

    КатегорияПоказательПриИзменении(ЭлементыФормы.КатегорияИнструментыИОборудование);

    КонецПроцедуры
    Процедура КатегорияИнструкцииИПравилаПриИзменении(Элемент)

    КатегорияПоказательПриИзменении(ЭлементыФормы.КатегорияИнструкцииИПравила);

    КонецПроцедуры
    Процедура КатегорияПорядокНаРабочемМестеПриИзменении(Элемент)

    КатегорияПоказательПриИзменении(ЭлементыФормы.КатегорияПорядокНаРабочемМесте);

    КонецПроцедуры
    Функция НеЗаполненоОписание(ТЧ, Описание, Категория)
    ЕстьОДОУ = Ложь;
    ЕстьРиски = Ложь;
    ЕстьДанные = Ложь;

    Для каждого Стр Из ТЧ Цикл

    Если НЕ Стр.Категория.Пустая() И
    (Стр.ОД <> 0 ИЛИ
    Стр.ОУ <> 0 ИЛИ
    Стр.РискЛегкойТравмы <> 0 ИЛИ
    Стр.РискТяжелойТравмы <> 0 ИЛИ
    Стр.РискСмертельнойТравмы <> 0)
    Тогда
    /////Условие на наличие ОД и ОУ при наличии рисков и наоборот, если есть ОД и ОУ, то должны быть риски
    Если (Стр.ОД <> 0 или Стр.ОУ <> 0)
    тогда ЕстьОДОУ=Истина;
    КонецЕсли;
    Если Стр.РискЛегкойТравмы <> 0 ИЛИ
    Стр.РискТяжелойТравмы <> 0 ИЛИ
    Стр.РискСмертельнойТравмы <> 0
    Тогда ЕстьРиски=Истина;
    КонецЕсли;
    /////

    ЕстьДанные = Истина;
    Прервать;
    КонецЕсли;

    КонецЦикла;
    /////
    Если ЕстьОДОУ и Не ЕстьРиски Тогда
    Сообщить("При наличии опасных действий или условий должны быть указаны предполагаемые риски для категории " + Категория);
    Возврат Истина;
    ИначеЕсли Не ЕстьОДОУ и ЕстьРиски тогда
    Сообщить ("При наличии рисков должны быть указаны опасные действия или риски для категории " + Категория);
    Возврат Истина;
    КонецЕсли;
    /////

    Если ЕстьДанные И СокрП(Описание) = "" Тогда

    Сообщить("Не заполнено описание для категории " + Категория);
    Возврат Истина;

    КонецЕсли;

    Возврат Ложь;

    КонецФункции
    Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

    Отказ = НеЗаполненоОписание(КатегорияРеакцияРаботника, ОписаниеРеакцияРаботника, "Реакция работника"); Если Отказ Тогда Возврат; КонецЕсли;
    Отказ = НеЗаполненоОписание(КатегорияПоложениеРаботника, ОписаниеПоложениеРаботника, "Положение работника"); Если Отказ Тогда Возврат; КонецЕсли;
    Отказ = НеЗаполненоОписание(КатегорияСпецодеждаИСИЗ, ОписаниеСпецодеждаИСИЗ, "Спецодежда и СИЗ"); Если Отказ Тогда Возврат; КонецЕсли;
    Отказ = НеЗаполненоОписание(КатегорияИнструментыИОборудование, ОписаниеИнструментыИОборудование, "Инструменты и оборудование"); Если Отказ Тогда Возврат; КонецЕсли;
    Отказ = НеЗаполненоОписание(КатегорияИнструкцииИПравила, ОписаниеИнструкцииИПравила, "Инструкции и правила"); Если Отказ Тогда Возврат; КонецЕсли;
    Отказ = НеЗаполненоОписание(КатегорияПорядокНаРабочемМесте, ОписаниеПорядокНаРабочемМесте, "Порядок на рабочем месте");

    Если НЕ ЗначениеЗаполнено(Продолжительность) Тогда
    Сообщить("Не заполнен реквизит Продолжительность!");
    Отказ = Истина;
    КонецЕсли;

    Если НЕ ЗначениеЗаполнено(Подразделение) Тогда
    Сообщить("Не заполнен реквизит Подразделение!");
    Отказ = Истина;
    КонецЕсли;
    Для каждого ст Из КорректирующиеМероприятия Цикл

    Если ст.СрокФакт > ТекущаяДата() Тогда

    Сообщить("Срок фактического выполнения """ + Формат(ст.СрокФакт,"ДФ=dd.MM.yyyy") + """ корректирующего мероприятия не должен быть больше текущей даты!");
    Отказ = Истина;
    КонецЕсли;

    КонецЦикла;

    КонецПроцедуры
    Процедура КорректирующиеМероприятияОтветственныйПриИзменении(Элемент)

    ТД = ЭлементыФормы.КорректирующиеМероприятия.ТекущиеДанные;
    ТД.Должность = ТД.Ответственный.Должность;

    КонецПроцедуры
    Процедура КоманднаяПанельКорректирующиеМероприятияКомментарийОтветственного(Кнопка)

    ТД = ЭлементыФормы.КорректирующиеМероприятия.ТекущиеДанные;
    КомментарийОтветственного = ТД.КомментарийОтветственного;
    Если ВвестиСтроку(КомментарийОтветственного, "Ответственный, введите комментарий: ",, Истина) Тогда
    ТД.КомментарийОтветственного = КомментарийОтветственного;
    КонецЕсли;

    КонецПроцедуры
    Процедура КорректирующиеМероприятияПриАктивизацииСтроки(Элемент)

    ТД = ЭлементыФормы.КорректирующиеМероприятия.ТекущиеДанные;
    ЭлементыФормы.КоманднаяПанельКорректирующиеМероприятия.Кнопки.КомментарийОтветственного.Доступность = (ТД.Ответственный = Пользователь);

    КонецПроцедуры
    Процедура ЛичныйВкладФИОПриИзменении(Элемент)

    ТД = ЭлементыФормы.ЛичныйВклад.ТекущиеДанные;
    ТД.Должность = ТД.ФИО.Должность;

    КонецПроцедуры
    Процедура ОбновлениеОтображения()

    Если Подразделение.Пустая() Тогда
    ЭлементыФормы.ПодразделениеТекст.Значение = "";
    Иначе
    ЭлементыФормы.ПодразделениеТекст.Значение = Подразделение.ПолноеНаименование();

    КонецЕсли;
    КонецПроцедуры
    Процедура ПодразделениеТекстНачалоВыбора(Элемент, СтандартнаяОбработка)

    Ф = Справочники.Подразделения.ПолучитьФормуВыбора();
    Подразделение = Ф.ОткрытьМодально();

    КонецПроцедуры
    Процедура ПодразделениеТекстПриИзменении(Элемент)

    Если СокрП(ПодразделениеТекст) = "" Тогда
    Подразделение = Справочники.Подразделения.ПустаяСсылка();
    КонецЕсли;

    КонецПроцедуры
    Процедура ОбновлениеОтображенияМестоПроведенияАудита()

    Если МестоПроведенияАудита.Пустая() Тогда
    ЭлементыФормы.МестоПроведенияАудитаТекст.Значение = "";
    Иначе
    ЭлементыФормы.МестоПроведенияАудитаТекст.Значение = МестоПроведенияАудита.ПолноеНаименование();

    КонецЕсли;
    КонецПроцедуры
    Процедура МестоПроведенияАудитаТекстНачалоВыбора(Элемент, СтандартнаяОбработка)

    Ф = Справочники.МестоПроведенияАудита.ПолучитьФормуВыбора();
    МестоПроведенияАудита = Ф.ОткрытьМодально();

    КонецПроцедуры
    Процедура МестоПроведенияАудитаТекстПриИзменении(Элемент)

    Если СокрП(МестоПроведенияАудитаТекст) = "" Тогда
    МестоПроведенияАудита = Справочники.МестоПроведенияАудита.ПустаяСсылка();
    КонецЕсли;

    КонецПроцедуры