Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.62
Second
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664
#1

Глобальная переменная - 1С

11.11.2013, 21:20. Просмотров 3463. Ответов 23
Метки нет (Все метки)

Имеется макет Отчета, чтобы не переписывать в коде каждый раз запрос, я написал функцию печати с параметром, который содержит выборку запроса.
Как правильно объявить переменную, потому что у меня запрос корректно исполняется и заполняется ТабПоле, а в функцию макета выборка через параметр не передается ?
Почему макет незаполненный ?



Выборка

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 Запрос = Новый  Запрос;
 Запрос.Текст = "ВЫБРАТЬ
|   sp0110.FAMILIA AS Посетитель,
|   sp0110.DATE AS Дата,
|   Сумма (sp0110.Summa) AS Сумма
| ИЗ
|   ВнешнийИсточникДанных.ВнешнийИсточникДанных1.Таблица.sp0110 КАК sp0110
| Where  Paylim AND DATE >= &DATE1 AND DATE <= &DATE2 
| СГРУППИРОВАТЬ ПО
|   sp0110.FAMILIA,
|   sp0110.DATE";
Запрос.УстановитьПараметр("DATE1", ЭлементыФормы.ПолеВвода1.Значение);
Запрос.УстановитьПараметр("DATE2", ЭлементыФормы.ПолеВвода2.Значение);
ТЗ = Новый ТаблицаЗначений();
ТЗ.Очистить();
ТЗ =  Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ТабличноеПоле.Значение = ТЗ; 
ТЗ.Колонки.Посетитель.Заголовок = "Посетитель";
ТЗ.Колонки.Дата.Заголовок = "Дата покупки";
ТЗ.Колонки.Сумма.Заголовок = "Сумма покупки";
ЭлементыФормы.ТабличноеПоле.СоздатьКолонки();
ЭлементыФормы.ТабличноеПоле.Колонки["Сумма"].ОтображатьИтогиВПодвале = Истина;
ЭлементыФормы.ТабличноеПоле.Колонки.Сумма.Формат =  "ЧЦ=10; ЧДЦ=2";
ЭлементыФормы.ТабличноеПоле.Колонки.Сумма.ГоризонтальноеПоложениеВПодвале = ГоризонтальноеПоложение.Право ;
Выборка = Запрос.Выполнить().Выбрать() ;
Итого = 0;
Пока Выборка.Следующий() Цикл
Итого = Итого + Выборка.Сумма; 
КонецЦикла; 
ЭлементыФормы.Надпись3.Значение = ТЗ.Итог(2) ;
Печать_Отчет(Выборка) ;







Печать макета


1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Функция Печать_Отчет(Выборка_на_печать) Экспорт
     
    ТабДок = Новый   ТабличныйДокумент;
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Истина;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.ОтображатьЗаголовки = Ложь;
    
    Макет = ПолучитьОбщийМакет("Макет");
    ОбластьМакетаЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьМакетаЗаголовок.Параметры.НачалоПериода = ЭлементыФормы.ПолеВвода1.Значение;
    ОбластьМакетаЗаголовок.Параметры.ОкончаниеПериода = ЭлементыФормы.ПолеВвода2.Значение;
    Табдок.Вывести(ОбластьМакетаЗаголовок);
    ОбластьМакетаНаименованиеСтолбцов = Макет.ПолучитьОбласть("НаименованияСтолбцов");
    Табдок.Вывести(ОбластьМакетаНаименованиеСтолбцов);
    ОбластьМакетаТабичнаяЧасть = Макет.ПолучитьОбласть("ТабличнаяЧасть");
    ОбластьМакетаИтого = Макет.ПолучитьОбласть("Итого");
        Итого = 0;
      Пока Выборка_на_печать.Следующий() Цикл
        Итого = Итого + Выборка_на_печать.Сумма; 
        ОбластьМакетаТабичнаяЧасть.Параметры.ДатаПокупки = Выборка_на_печать.Дата;
        ОбластьМакетаТабичнаяЧасть.Параметры.Клиент = Выборка_на_печать.Клиент;
        ОбластьМакетаТабичнаяЧасть.Параметры.Сумма = Выборка_на_печать.Сумма;
        Табдок.Вывести(ОбластьМакетаТабичнаяЧасть);
     КонецЦикла; 
     ОбластьМакетаИтого.Параметры.Итого = Итого;
     Табдок.Вывести(ОбластьМакетаИтого);
     ТабДок.Показать();
КонецФункции

http://www.cyberforum.ru/1c/thread2065690.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2013, 21:20
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Глобальная переменная (1С):

Переменная=Документ.имя. Сделать выборку всех документов с именем Переменная
Привет всем. У меня есть проблема и варианты решения, но они не работают. ...

Переменная
Создал константу НАЦЕНКА. Подскажите, как объявить переменную константа. ??

Переменная не определена
Короче вот в чем фишка: &amp;НаКлиенте Процедура Проверить(Команда)...

Переменная не определена
Скажите, пожалуйста, почему вот эта обработка не хочет работать? &amp;НаКлиенте...

Переменная не определена
Вот код текста: Процедура КлиентПриИзменении(Элемент) Телефоы =...

23
Dethmontt
Модератор
Эксперт 1С
2577 / 2384 / 391
Регистрация: 10.03.2011
Сообщений: 8,429
Записей в блоге: 1
Завершенные тесты: 1
11.11.2013, 21:27 #2
Цитата Сообщение от Second Посмотреть сообщение
Пока Выборка.Следующий() Цикл
Итого = Итого + Выборка.Сумма;
КонецЦикла;
Так ты уже перебрал всю выборку...

Добавлено через 1 минуту
1C
1
2
3
4
5
6
7
8
Выборка = Запрос.Выполнить().Выбрать() ;
Итого = 0;
Пока Выборка.Следующий() Цикл
Итого = Итого + Выборка.Сумма; 
КонецЦикла; 
ЭлементыФормы.Надпись3.Значение = ТЗ.Итог(2) ;
Выборка.Сбросить();
Печать_Отчет(Выборка) ;
1
Second
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664
11.11.2013, 21:49  [ТС] #3
Dethmontt

Пользователь сказал cпасибо:
Second
0
Second
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664
26.11.2013, 14:36  [ТС] #4
Апну тему.
Постепенно изучаю платформу и если первое впечатление было отталкивающим, то со временем и постепенным изучением появляется интерес, есть гибкость все-таки.

Но к сути, помогите разобраться.
Мне нужно в обработке описать глобальную переменную. Действие переменной должно быть ограниченно обработкой.
Изначально, я объявил её в Конфигурация => Модуль обычного приложения., достигнув желаемого результата, но по требования мне дали понять, что переменная должна быть объявлена в объекте(обработке).
Объявление в модулях обработки(менеджера и объекта) не принесло результатов, при которых переменная была бы видна на весь объект.

Что делать, как быть и кто виноват ?
Мне нужна глобальная переменная, чтобы передать из одной формы в другую, как её правильно объявить?
0
OrkVasya
о_____О
Эксперт 1С
219 / 219 / 36
Регистрация: 19.11.2010
Сообщений: 1,061
Завершенные тесты: 1
26.11.2013, 14:52 #5
А если в модуле объекта обработки:

1C
1
Перем МояСуперГлобальнаяПеременная Экспорт
?
0
SonicQ
173 / 173 / 16
Регистрация: 20.02.2012
Сообщений: 875
26.11.2013, 14:56 #6
1C
1
Перем мСтруктураМногострочныхРазделов Экспорт;
не ?
0
Second
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664
26.11.2013, 15:23  [ТС] #7
Цитата Сообщение от OrkVasya Посмотреть сообщение
А если в модуле объекта обработки:

1C
1
Перем МояСуперГлобальнаяПеременная Экспорт
?
Я же описывал постом выше, объявлял в таком же контексте, как у Вас.
А Вы опробовали сами этот вариант ? Работоспособно ? Мне надо передать переменную из одной формы в другую в обработке.

Добавлено через 4 минуты
Цитата Сообщение от SonicQ Посмотреть сообщение
1C
1
Перем мСтруктураМногострочныхРазделов Экспорт;
не ?
Вы укажите, ГДЕ описать надо и проверьте сами сначала работоспособность.

У меня объявление корректно было, только когда я объявил в Конфигурация: Модуль обычного приложения , но руководитель против, говорит объявляй переменную в обработке.
Где её надо объявить, чтобы она глобальная была на обработку....

Добавлено через 1 минуту
Может быть надо какие-то директивы, а-ля &НаСервере, & НаКлиенте...
0
SonicQ
173 / 173 / 16
Регистрация: 20.02.2012
Сообщений: 875
26.11.2013, 15:27 #8
Second, все работает...

Добавлено через 1 минуту
в модуле объекта...

Кликните здесь для просмотра всего текста
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Перем мТаблицаСоставПоказателей Экспорт;
 
// Хранит структуру - состав показателей отчета,
// значение которых автоматически заполняется по учетным данным.
Перем мСтруктураВариантыЗаполнения Экспорт;
 
// Хранит структуру многостраничных разделов.
Перем мСтруктураМногостраничныхРазделов Экспорт;
 
// Хранит дерево значений - структуру листов отчета.
Перем мДеревоСтраницОтчета Экспорт;
 
// Хранит признак выбора печатных листов.
Перем мЕстьВыбранные Экспорт;
 
// Хранит имя выбранной формы отчета
Перем мВыбраннаяФорма Экспорт;
 
// Хранит признак скопированной формы.
Перем мСкопированаФорма Экспорт;
 
// Хранит ссылку на документ, хранящий данные отчета
Перем мСохраненныйДок Экспорт;


и все они доступны на всех формах этой обработки

Добавлено через 2 минуты
Кликните здесь для просмотра всего текста
1C
1
2
3
4
5
6
7
8
9
10
11
12
    // установим текущие значения реквизитов документа
    мСохраненныйДок.ИсточникОтчета             = ЭтотОбъект.Метаданные().Имя;
    мСохраненныйДок.НаименованиеОтчета         = ЭтотОбъект.Метаданные().Формы.ФормаОтчета2013Кв3.Представление();
    мСохраненныйДок.ДатаНачала                 = мДатаНачалаПериодаОтчета;
    мСохраненныйДок.ДатаОкончания              = мДатаКонцаПериодаОтчета;
    мСохраненныйДок.ВыбраннаяФорма             = мВыбраннаяФорма;
    мСохраненныйДок.Организация                = Организация;
    мСохраненныйДок.ДатаПодписи                = ДатаПодписи;
    мСохраненныйДок.ЕдиницаИзмерения           = ЕдиницаИзмерения;
    мСохраненныйДок.ТочностьЕдиницыИзмерения   = 0;
    мСохраненныйДок.ВидОтчетности              = Перечисления.ВидыОтчетности.РегламентированнаяОтчетность;
    мСохраненныйДок.Вид                        = Вариант;


это в модуле формы, использование переменной "мВыбраннаяФорма"
1
OrkVasya
о_____О
Эксперт 1С
219 / 219 / 36
Регистрация: 19.11.2010
Сообщений: 1,061
Завершенные тесты: 1
26.11.2013, 15:31 #9
Или вариант попроще)
1
Вложения
Тип файла: 7z ВнешняяОбработка1.7z (3.1 Кб, 7 просмотров)
Second
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664
26.11.2013, 17:15  [ТС] #10
Вася большое спасибо действительно у Вас рабочая обработка.
У меня тоже видит в главной форме гл. переменную, но видимо мы дошли до заключительной фазы, у меня из главной формы вызывается подчиненная и в подчиненной гл. переменную не видно.
Может необходимо переобъявить в главной форме гл. перем и она будет видна в подчиненной ?
Вообщем тезисов много, но пока все не принесли результата.
Надеюсь и на дальнейшую помощь от Вас =/
0
OrkVasya
о_____О
Эксперт 1С
219 / 219 / 36
Регистрация: 19.11.2010
Сообщений: 1,061
Завершенные тесты: 1
26.11.2013, 17:20 #11
Обработку выложить можете? А то не особо понятно, что у вас не работает.
0
duk337
2948 / 1760 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
26.11.2013, 17:39 #12
Выборка.Сбросить()
0
Second
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664
26.11.2013, 17:56  [ТС] #13
Цитата Сообщение от duk337 Посмотреть сообщение
Выборка.Сбросить()
С той проблемой разобрался, там в пределах модуля в заголовке объявил с директивой Экспорт и забыл.

Добавлено через 32 секунды
Цитата Сообщение от OrkVasya Посмотреть сообщение
Обработку выложить можете? А то не особо понятно, что у вас не работает.
Да, минутку.
0
Second
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664
26.11.2013, 18:17  [ТС] #14
добавил обработку
0
Вложения
Тип файла: 7z Кибер.7z (3.7 Кб, 4 просмотров)
OrkVasya
о_____О
Эксперт 1С
219 / 219 / 36
Регистрация: 19.11.2010
Сообщений: 1,061
Завершенные тесты: 1
26.11.2013, 18:41 #15
А как вы формы обработки создавали?
У вас не указаны данные формы. Соответственно, для формы вообще по барабану, что там в модуле объекта написано.
Проще всего, наверное, просто пересоздать формы.

Посмотрите скрин, слева ваша обработка, справа моя.
0
Миниатюры
Глобальная переменная  
Second
118 / 80 / 1
Регистрация: 10.08.2011
Сообщений: 664
26.11.2013, 20:21  [ТС] #16
Цитата Сообщение от OrkVasya Посмотреть сообщение
А как вы формы обработки создавали?
Перетаскивание.



Цитата Сообщение от OrkVasya Посмотреть сообщение
У вас не указаны данные формы. Соответственно, для формы вообще по барабану, что там в модуле объекта написано.
Мне нужна глобальная переменная , о каких данных формы идет речь ? Я наверное не понимаю что-то.



Цитата Сообщение от OrkVasya Посмотреть сообщение
Проще всего, наверное, просто пересоздать формы.
И что это изменит ? Подскажите информативнее, видимо я где-то пробелы имею.

Цитата Сообщение от OrkVasya Посмотреть сообщение
Посмотрите скрин, слева ваша обработка, справа моя.
Смотрю ф книгу, вижу .....(с)
Расшифруйте, пожалуйста.
0
Dethmontt
Модератор
Эксперт 1С
2577 / 2384 / 391
Регистрация: 10.03.2011
Сообщений: 8,429
Записей в блоге: 1
Завершенные тесты: 1
26.11.2013, 23:42 #17
В реквизиты формы добавь реквизит "ПроизвольноеИмя" с типом твоей внешней обработки и через это произвольное имя тебе будет доступна экспортируемая переменная модуля объекта.
1
Fenomen
898 / 875 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
27.11.2013, 09:35 #18
А что все так за глобальную переменную ухватились? Не проще ли реквизит обработки создать?
0
OrkVasya
о_____О
Эксперт 1С
219 / 219 / 36
Регистрация: 19.11.2010
Сообщений: 1,061
Завершенные тесты: 1
27.11.2013, 11:15 #19
ТС интересовала глобальная переменная.
Лично мне пофиг, могу и реквизит.
0
Dethmontt
27.11.2013, 13:23     Глобальная переменная
  #20

Не по теме:

Давайте выражевываться правильно, в 1С нет "Глобальных" переменных только "экспортируемые"

0
27.11.2013, 13:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2013, 13:23
Привет! Вот еще темы с ответами:

СоздатьОбъект(переменная)
Я только начал изучать 1с и сразу столкнулся с проблемой, ответ на которую не...

Ошибка: переменная не определена
Перечитала все советы, все перепробовала. Никакого толка. Версия 8.2....

Переменная при инициализации
При запуске 1С она тебя спрашивает под каким пользователем хочешь войти. А где...

Переменная на клиенте и на сервере
Доброго дня. Хочу прояснить такое дело. Объявлена переменная Тест. Если я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru