Использование Глобальных Переменных в Модуле Объекта
Только изучаю 1С и в процессе написания кода столкнулся с необходимостью воспользоваться глобальной переменной, вот только проблема заключается в том, что мне ее банально не удается объявить, для дальнейшего использования без выскакивания ошибки. Вопрос в том как это сделать? И можно ли это сделать вообще в Модуле объекта документов.
Сам Код:
Ошибка синтаксиса:
{Документ.Вывоз_Товаров.МодульОбъекта(2,15)}: Ожидается символ ';'
Перем Гл_Перем<<?>> = 0;// Глобальная Переменная (Проверка: Сервер)
{Документ.Вывоз_Товаров.МодульОбъекта(2,16)}: Неопознанный оператор
Перем Гл_Перем <<?>>= 0;// Глобальная Переменная (Проверка: Сервер)
Сам Код:
Перем Гл_Перем = 0;// Глобальная Переменная
Процедура ОбработкаПроведения(Отказ, Режим)
// регистр НакопленияТоваров Расход
Движения.НакопленияТоваров.Записывать = Истина;
Для Каждого ТекСтрокаПеречень_товаров Из Перечень_товаров Цикл
Движение = Движения.НакопленияТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Наименование = ТекСтрокаПеречень_товаров.Название;
Движение.колличество = ТекСтрокаПеречень_товаров.Колличество;
КонецЦикла;
// регистр РегистрПродаж Приход
Движения.РегистрПродаж.Записывать = Истина;
Для Каждого ТекСтрокаПеречень_товаров Из Перечень_товаров Цикл
Движение = Движения.РегистрПродаж.Добавить();
Движение.Период = Дата;
Движение.Наименования = ТекСтрокаПеречень_товаров.Название;
Движение.Количество = ТекСтрокаПеречень_товаров.Колличество;
Движение.ЦенаПродажи = ТекСтрокаПеречень_товаров.Цена;
КонецЦикла;
КонецПроцедуры
Функция ВыведениеРегистратора (наименование,Колличество)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| РегистрОборотовТовара.Период КАК Период,
| РегистрОборотовТовара.Наименование КАК Наименование,
| РегистрОборотовТовара.Себестоимость КАК Себестоимость,
| РегистрОборотовТовара.КолличествоПроданного КАК КолличествоПроданного,
| РегистрОборотовТовара.КолличествоКупленного КАК КолличествоКупленного,
| РегистрОборотовТовара.Доход КАК Доход,
| РегистрОборотовТовара.Регистратор КАК Регистратор
|ИЗ
| РегистрНакопления.РегистрОборотовТовара КАК РегистрОборотовТовара
|ГДЕ
| РегистрОборотовТовара.Наименование = &Наименование";
Запрос.УстановитьПараметр("Наименование",Наименование);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Пока Выборка.Следующий() Цикл
Если ЗначениеЗаполнено(Выборка.КолличествоПроданого) = Ложь Тогда
Выборка.Регистратор Возврат;
Прервать;
ИначеЕсли Выборка.КолличествоКупленного - Выборка.КолличествоПроданного <> 0 Тогда
А = Выборка.КолличествоКупленного - КоличествоПроданного - Колличество;
Если А >= 0 Тогда
Выборка.Регистратор Возврат;
Иначе
Б = 0 - 1;
Гл_Перем = А * Б;
Выборка.Регистратор Возврат;
Прервать;
КонецЕсли;
КонецЦикла;
КонецФункции
ПоказатьОшибка синтаксиса:
{Документ.Вывоз_Товаров.МодульОбъекта(2,15)}: Ожидается символ ';'
Перем Гл_Перем<<?>> = 0;// Глобальная Переменная (Проверка: Сервер)
{Документ.Вывоз_Товаров.МодульОбъекта(2,16)}: Неопознанный оператор
Перем Гл_Перем <<?>>= 0;// Глобальная Переменная (Проверка: Сервер)
По теме из базы знаний
- Глобальные переменные в контексте сервера 8.2. Простое решение.
- Быстрое создание Внешних Компонент на C#. Примеры использования Глобального Контекста, IAsyncEvent, IExtWndsSupport, WinForms и WPF
- Виртуальные глобальные контейнеры переменных
- Быстрые параметры сеанса (решение проблемы глобальных переменных в контексте сервера)
- Пайплайны Jenkins - программирование и настройка. Загружаемые модули. Цикл "Многопоточный CI для 1С", часть 5
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
1. Такая необходимость сообщает о недоработках в структуре программы.
2. Ткни нас носом в то место документации/СП, где объясняется термин "глобальная переменная". особенно в применении у УФ.
столкнулся с необходимостью воспользоваться глобальной переменной
1. Такая необходимость сообщает о недоработках в структуре программы.
2. Ткни нас носом в то место документации/СП, где объясняется термин "глобальная переменная". особенно в применении у УФ.
Функция возвращает только один объект, но мне необходимо чтобы функция возвращала регистратор по которому будет происходить заполнение колонок до определенного значения, после чего остаток должен перейти в следующую подходящую строку, как избежать применения глобальной переменной? Создавать Еще одну условную функцию которая будет совершать проверку, пробегая все если и уже в зависимости от ее значения идти по нужному сценарию? Зачем столько лишнего?
Действительно Глобальная переменная была не нужна, нужно было подробнее разобраться с работой оборотов в регистре накоплений.
Всем спасибо, тема закрыта.
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
// регистр РегистрУход
Движения.РегистрУход.Записывать = Истина;
Для Каждого ТекСтрокаПеречень_товаров Из Перечень_товаров Цикл
Движение = Движения.РегистрУход.Добавить();
Движение.Период = Дата;
Движение.Наименования = ТекСтрокаПеречень_товаров.Название;
Движение.Количество = ТекСтрокаПеречень_товаров.Колличество;
Движение.Стоимость = ТекСтрокаПеречень_товаров.Стоимость;
Сделаль(Дата,ТекСтрокаПеречень_товаров.Название,ТекСтрокаПеречень_товаров.Колличество,ТекСтрокаПеречень_товаров.Стоимость);
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
&НаСервере
Процедура Сделаль(Дата,Название,Количество,Стоимость)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| РегистрПриходОбороты.Наименование КАК Наименование,
| РегистрПриходОбороты.Дата КАК Дата,
| РегистрПриходОбороты.КоличествоОборот КАК КоличествоОборот,
| РегистрПриходОбороты.СтоимостьОборот КАК СтоимостьОборот
|ИЗ
| РегистрНакопления.РегистрПриход.Обороты КАК РегистрПриходОбороты
|ГДЕ
| РегистрПриходОбороты.Наименование = &Наименование
|
|УПОРЯДОЧИТЬ ПО
| Дата" ;
Запрос.УстановитьПараметр("Наименование",Название);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.КоличествоОборот > 0 Тогда
Если Выборка.КоличествоОборот - Количество >= 0 Тогда
ЗаполнитьРегистрФИФО(Выборка.Дата,Дата,Название,Выборка.КоличествоОборот,Количество,Выборка.СтоимостьОборот,Стоимость);
ДобавитьКоличествоВыход(Выборка.Дата,Название,Количество);
Прервать;
Иначе
Остаток = (Выборка.КоличествоОборот - Количество) * (0 - 1);
А = (Количество - Остаток)/ Количество;//Отношение от общего количества Пример: 10/40 = 0,25
Количество = Количество - Остаток;//Допустимое Количество Прихода
Б = Стоимость;//Спасаем общую стоимость
Стоимость = Стоимость * А;
ЗаполнитьРегистрФИФО(Выборка.Дата,Дата,Название,Выборка.КоличествоОборот,Количество,Выборка.СтоимостьОборот,Стоимость);
ДобавитьКоличествоВыход(Выборка.Дата,Название,Количество);
Стоимость = Б * (1 - А);//Вернули Остаточное отношение
Количество = Остаток;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьРегистрФИФО(ДатаПриход,ДатаУход,Наименование,КоличествоПриход,КоличествоУход,СтоимостьПриход,СтоимостьУход)
Движения.ФИФО.Записывать = Истина;
Движение = Движения.ФИФО.Добавить();
Движение.Период = ДатаПриход;
Движение.ДатаУход = ДатаУход;
Движение.СтоимостьПриход = СтоимостьПриход;
Движение.СтоимостьУход = СтоимостьУход;
Движение.Наименование = Наименование;
Движение.КоличествоПриход =КоличествоПриход;
Движение.КоличествоУход = КоличествоУход;
КонецПроцедуры
Процедура ДобавитьКоличествоВыход (Дата,Наименование,Количество)
Движения.РегистрПриход.Записывать = Истина;
Движение = Движения.РегистрПриход.Добавить();
Движение.Период = Дата;
Движение.Дата = Дата;
Движение.Количество = 0 - Количество;
Движение.Наименование = Наименование;
КонецПроцедуры
ПоказатьВсем спасибо, тема закрыта.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот